Part of a Data Solution
- Explore →
Postal Codes Solution
Every worldwide postal-code dataset in one bundle — the ultimate global reference for precise postal codes.
API Access
Access dataset files directly from scripts, code, or AI agents.
Browse dataset files
API Access
Access dataset files directly from scripts, code, or AI agents.
Each file has a stable URL (r-link) that you can use directly in scripts, apps, or AI agents. These URLs are permanent and safe to hardcode.
Start with these files — they give you everything you need to understand and access the dataset.
- 1. Fetch datapackage.yaml to inspect schema and resources
- 2. Download data resources listed in datapackage.yaml
- 3. Read README.md for full context
Data Files
Explore with AIpostal-codes-sc
| Field | Type | Description | Title |
|---|---|---|---|
| country_code | string | ISO 3166-1 alpha-2 code for the country. | Country Code |
| postal_code | string | Postal code for the location. | Postal Code |
| place_name | string | Name of the city, town, or place. | Place Name |
| admin_name1 | string | Primary administrative division (e.g., state, region). | Administrative Name 1 |
| admin_code1 | string | Code for the primary administrative division. | Administrative Code 1 |
| admin_name2 | string | Secondary administrative division (e.g., county, district). | Administrative Name 2 |
| admin_code2 | string | Code for the secondary administrative division. | Administrative Code 2 |
| admin_name3 | string | Tertiary administrative division (e.g., municipality, borough). | Administrative Name 3 |
| admin_code3 | string | Code for the tertiary administrative division. | Administrative Code 3 |
| latitude | number | Latitude coordinate of the place. | Latitude |
| longitude | number | Longitude coordinate of the place. | Longitude |
| accuracy | string | Accuracy level of the latitude and longitude coordinates. | Accuracy |
| alternative_city_name | string | Alternative name(s) for the city or place. | Alternative City Name |
Download
Download CSVAbout
- Last updated
- 6 October 2026
- Total rows
- 27
- Format
- CSV
- File size
- 1.23 kB
About this dataset
Seychelles (SC): migration notes
Internal record of the P6 migration from the old script to the producer: the discrepancies found, their causes, and who decided what. This is a dated record, so the numbers are as of the migration and not kept current. It is not shipped.
- Issue: pc-28e.8.19
- Commit: the P6 sc commit on feat/single-source-of-truth (base
e797eb1) - Parity verdict:
format-only(CRLF→LF only), gate pass, exit 0 - Producer:
custom, refresh disabled,postal_code_required: false
Sources
| Input | URL | Notes |
|---|---|---|
| Wikipedia "ISO 3166-2:SC" | https://en.wikipedia.org/w/api.php?action=parse&page=ISO_3166-2%3ASC&prop=wikitext%7Crevid&format=json&formatversion=2 | "Current codes" table: code + English subdivision name. revid 1361255239 at migration time |
- The old builder read
sources/fedex_seychelles_9col.csv, a snapshot offedex-agents-prototype/countries/SYC/data/Seychelles.csv, which its docstring says was built from Wikipedia's "Districts of Seychelles" and "ISO 3166-2:SC". That snapshot is gone. Per plan D1 (FedEx-derived datasets) the producer goes back to Wikipedia via the MediaWiki API. - The API always returns the current revision. The page's
revidis recorded indata/sc.inputs.jsonso a run can be reproduced. - Only ISO 3166-2:SC is fetched. Its English names and codes reproduce the live CSV exactly, including the spellings ("Grand Anse Mahe", "Ile Perseverance I", "Pointe Larue", "Roche Caiman"). "Districts of Seychelles" (revid 1359363125 on 2026-10-05) contributes nothing the live CSV has: its table is older (no SC-26/SC-27; "Grand'Anse", "Pointe La Rue", "Roche Caïman") and the live CSV has no coordinates, area or population. The descriptor still lists it under
sources:for attribution, unchanged.
Parity against the live public CSV (2026-10-05)
Rows: 27 live and 27 fresh, none only on one side, 0 changed cells, no cell classes. The only byte difference is CRLF (live) → LF (fresh): live 1,259 bytes, fresh 1,231 bytes (27 data rows + header = 28 line endings).
Decisions
| Decision | By | Basis |
|---|---|---|
| Fetch ISO 3166-2:SC only, not Districts of Seychelles | Agent: port choice | ISO page alone reproduces every live value; the Districts table is older and structurally different (see Sources) |
admin_code1 is the two-digit code without "SC-" ("01") | Agent: faithful port | That is what the old CSV carried (FedEx stateCode) |
Rows sorted by admin_code1 | Agent: faithful port | Live order; the ISO page lists them alphabetically |
alternative_city_name stays empty | Agent: faithful port | The live CSV has none, although the ISO page has French and Creole names. Filling them would be a content change (see open questions) |
| CRLF→LF accepted | Standing rule (P5/P6 sign-off: row_order/CRLF-only) | Equal rows, 0 changed cells |
latitude/longitude typed number; accuracy stays string; primaryKey: [admin_name1] | Standing rule (real types, as ad) + agent | Coordinates are empty on every row, so number validates; accuracy is not a GeoNames field and is empty. admin_name1 was the old builder's primary key and is unique in the produced CSV (the producer checks it) |
pipeline.postal_code_required: false | Plan rule (bj precedent) | postal_code is empty on every row |
| README "complete dataset (27 rows)" → "(one row per district)" | Brief doc rule (no row counts) | The district count stays |
Transforms carried over
From build_postal_codes_product.py:
place_name=admin_name1= district name;admin_code1= code.postal_code, admin tiers 2-3, coordinates and accuracy empty.- Old asserts →
ProducerError: unique district names (old primary key). The exact 27-row assert and the FedEx "00000" placeholder assert are dropped (no FedEx input any more). New structural checks: codes unique, two-digit, and a contiguous SC-01..SC-NN run, so a missing or mis-parsed row stops the build.
Not ported
publish_r2.py(P6: no R2 writes; publishing is the shared pipeline's job).- The old builder's generated
datapackage.json, README and ATTRIBUTION text: the descriptor and README are hand-maintained now.
Open questions
alternative_city_name. The old builder's field description said "French / Creole alternate name, where available", but the FedEx CSV it read had none, so live is empty. The ISO page has French and Creole names. Filling them is a content change, so it is pending your call; not done.- ATTRIBUTION.txt is missing. The descriptor
descriptionand README both say "see ATTRIBUTION.txt", butdatasets/sc/has none (the old builder generated it intodata/). Left for the pc-hfz sweep; pending. .licensing-notes.mdstill says "27 rows" (historical). Left alone for pc-hfz.