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.
Premium
You're viewing a free sample
Get the complete dataset — all rows and files — delivered instantly after checkout, with lifetime access to the latest version.
- Secure checkout via Stripe
- Instant download after payment
- Lifetime access to the latest version
- Creative Commons Attribution 4.0 International license
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
postal-codes-ar-sample
| Field | Type | Description | Constraints | Title |
|---|---|---|---|---|
| country_code | string | ISO 3166-1 alpha-2 -- always AR | Country Code | |
| postal_code | string | LEGACY 4-digit Argentine postal code (pre-1999) -- NOT the modern 8-character alphanumeric CPA | { "pattern": "^\\d{4}$" } | Postal Code |
| place_name | string | Locality/place name | Place Name | |
| admin_name1 | string | Province -- 23/24 ISO subdivisions covered (Ciudad Autonoma de Buenos Aires, AR-C, has zero rows in this legacy-format export) | Administrative Name 1 | |
| admin_code1 | string | ISO 3166-2:AR code | Administrative Code 1 | |
| admin_name2 | string | Not populated -- source carries no department/partido tier | Administrative Name 2 | |
| admin_code2 | string | Not populated | Administrative Code 2 | |
| admin_name3 | string | Not populated | Administrative Name 3 | |
| admin_code3 | string | Not populated | Administrative Code 3 | |
| latitude | number | GeoNames-estimated latitude (WGS84) | Latitude | |
| longitude | number | GeoNames-estimated longitude (WGS84) | Longitude | |
| accuracy | string | GeoNames accuracy of latitude/longitude. GeoNames documents 1=estimated, 4=geonameid, 6=centroid of addresses or shape; other values (e.g. 3) occur upstream without documentation. Empty where GeoNames gives none. | Accuracy | |
| alternative_city_name | string | Not populated in this release | Alternative City Name |
Download
Download sample CSVAbout
- Last updated
- 6 October 2026
- Total rows
- 100
- Format
- CSV
- File size
- 6.71 kB
About this dataset
Argentina (AR): migration notes
Internal record of the P5 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 in the zip.
- Issue: pc-28e.7.2 (closed 2026-10-02)
- Commit:
9eed544(worktree commit803a5c3, same content), landed in batch 1 - Parity verdict:
explained(row_orderonly); user signed off 2026-10-02 - Producer:
custom, refresh disabled
Sources
| Input | URL | Notes |
|---|---|---|
| GeoNames postal export | https://download.geonames.org/export/zip/AR.zip | The only input. Legacy 4-digit codes, not the 8-character CPA |
Parity against the live zip (2026-10-02)
Rows: 20,260 live and 20,260 fresh, none only on one side. 0 changed cells. One class: row_order ×1. The sorted row sets are identical; 16,724 row positions differ.
| Change | Example | Cause |
|---|---|---|
| Rows reordered within postal codes | 4126 (Salta): live has TALA, RUIZ DE LOS LLANOS, CEIBAL; fresh has BRETE, TALA, RUIZ DE LOS LLANOS | Attributed to GeoNames reordering its export (the old builder kept source order). Not traced to a specific earlier GeoNames file |
The public sample at postal.datahub.io/ar/ar.csv came out unexplained (informational only). It starts at code 1601, while the live premium CSV starts with 4126, so it is probably an older build.
Decisions
| Decision | By | Basis |
|---|---|---|
Accept row_order | User, 2026-10-02 (session 2479b1c9) | "I sign off on the row order"; recorded in the sign-off section of docs/parity/p5.md |
| Refuse any AR-C (Ciudad Autonoma de Buenos Aires) row; require the other 23 letters | Agent | AR-C has no rows in the legacy numbering; a refusal makes the docs get updated if one appears |
| Drop the exact 20,260 row-count assert | Orchestrator instruction | Batch brief |
| Remove row and distinct-code counts from README and descriptor; "15 (postal_code, place_name) pairs are not unique" → "Some …"; keep "23 of 24 provinces" | Orchestrator instruction; the wording is the agent's | README counts rule (user, 2026-10-02, session 068ca403). The old builder said 14, the README 15 |
| Accuracy description replaced with the shared GeoNames wording | Orchestrator, after the user's "fix the small doc problems" (session 2479b1c9) | b7fb93b, 5311ad3 |
Transforms carried over
From build_postal_codes_product.py:
admin_code1→ ISO 3166-2:AR by addingAR-(GeoNames' letters are the ISO letters, checked against Wikipedia 2026-08-30).admin_name2/admin_code2blanked;alternative_city_nameempty.- Old asserts are
ProducerErrors: unknown letter, literal "nan", duplicate (postal_code, place_name, admin_code1).
Open questions
ATTRIBUTION.txtstill says "20,260 rows"; left for the end-of-epic sweep (pc-hfz).
Provenance
Reconstructed 2026-10-05 from the agent transcript 2479b1c9-c4dd-47e5-be82-34ccf8d49a80/subagents/agent-a28dd8e83e4a693b0.jsonl, the orchestrator sessions 2479b1c9-… (batch 1, sign-off) and 068ca403-… (README counts rule), the commit message and the bd close reason.