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-cw
| 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. Always empty -- Curaçao has no postal code system. | Postal Code |
| place_name | string | Name of the city, town, or place. | Place Name |
| admin_name1 | string | Primary administrative division (e.g., state, region). Always empty -- Curaçao has no ISO 3166-2 subdivisions. | 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 | Always empty -- the GeoNames gazetteer dump this directory is built from has no accuracy scale. | 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
- 100
- Format
- CSV
- File size
- 4.14 kB
About this dataset
Curaçao (CW): migration notes
Internal record of the P6 migration from the old scripts 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.7
- Commit: see the
P6 cw:commit on feat/single-source-of-truth - Parity verdict:
format-only(gate: pass, exit 0) against the live public CSV - Producer:
custom, refresh disabled,postal_code_required: false
Sources
| Input | URL | Notes |
|---|---|---|
| GeoNames gazetteer dump | https://download.geonames.org/export/dump/CW.zip | Member CW.txt. Stable, unversioned URL; the old builder read a local copy of it (sources/CW_dump.txt) |
- There is no GeoNames postal export for Curaçao (
export/zip/CW.zipis a 404) and no postal code system; see.licensing-notes.md.
Parity against the live public CSV (2026-10-05)
Rows: 100 live and 100 fresh, none only on one side, 0 changed cells, no cell classes. The bytes differ only in line endings: live is CRLF, the producer writes LF. Row order is identical.
No discrepancies to explain.
Decisions
| Decision | By | Basis |
|---|---|---|
pipeline.postal_code_required: false | Plan (SST plan, P6: "covers the directories with no postcode system") | build.py otherwise rejects the intentionally empty postal_code |
primaryKey: [place_name, latitude, longitude] | Agent, from the old builder's uniqueness assert | place_name alone repeats (e.g. Bandabou, San Pedro); the triple is unique in the produced CSV, and postal_code can't be in a key since it is always empty |
latitude/longitude typed number; accuracy stays string | Standing rule (real types, as in ad) | accuracy is always empty here, not numeric; its description now says so (the old builder's own description said the dump has no accuracy scale). The GeoNames accuracy wording doesn't apply: this dataset has no GeoNames accuracy values |
| Drop the "at least 90 places" assert | Brief (no hardcoded row counts) | Replaced by "at least one populated place" plus the structural checks |
| CRLF → LF | Standing sign-off (format-only) | Pre-approved |
Transforms carried over
From build_postal_codes_product.py (2026-09-04):
- Keep feature class
P(populated places) only. place_name= the dump'sname;latitude/longitudeverbatim.postal_code, alladmin_*,accuracy,alternative_city_nameempty.- Sort by
place_name, ties in dump order (stable sort). - Asserts are now
ProducerErrors: every row isCW, no literalnan, unique (place_name, latitude, longitude). Added: 19-column rows, non-empty name, numeric coordinates.
Not ported
- The old builder's own
datapackage.json,README.md,ATTRIBUTION.txtand zip output: those are build.py's and the descriptor's job now, and free datasets get no zip. publish_r2.py: removed, publishing is handled centrally.
Open questions
- None for parity.
.licensing-notes.mdstill records "Final rows | 100"; that historical count is left for the pc-hfz sweep.