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-cz-sample
| Field | Type | Description | Constraints | Title |
|---|---|---|---|---|
| country_code | string | ISO 3166-1 alpha-2 -- always CZ | Country Code | |
| postal_code | string | Czech postal code (PSC, 5 digits with a space, NNN NN) | { "pattern": "^\\d{3} \\d{2}$" } | Postal Code |
| place_name | string | Locality/place name | Place Name | |
| admin_name1 | string | Kraj (region) -- 14/14 covered | Administrative Name 1 | |
| admin_code1 | string | ISO 3166-2:CZ code | Administrative Code 1 | |
| admin_name2 | string | Okres (district) -- 77 distinct values (76 real okresy plus Prague, a district-equivalent statutory city) | Administrative Name 2 | |
| admin_code2 | string | GeoNames' own internal district code -- not an official ISO code | Administrative Code 2 | |
| admin_name3 | string | Not populated -- no third admin tier in this source | Administrative Name 3 | |
| admin_code3 | string | Not populated | Administrative Code 3 | |
| latitude | number | GeoNames latitude (WGS84) | Latitude | |
| longitude | number | GeoNames 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
- 9.97 kB
About this dataset
Czechia (CZ) — internal licensing notes
Tier-1/2 official source found, 2026-09-03 — stronger than GeoNames, larger engineering lift
A genuinely official, CC-BY-4.0 source exists and is worth pursuing as
a future upgrade, but it is address-point granularity, not postal-code
granularity — a real rebuild, not a drop-in swap. ČÚZK (the Czech
Office for Surveying, Mapping and Cadastre — a government body, tier
1/2 in this project's Source Authority Hierarchy) publishes RÚIAN
(Register of Territorial Identification, Addresses and Real Estate) —
per-address-point CSV covering the whole country, via its Geoportal
(geoportal.cuzk.cz).
Confirmed fields: address-point code, municipality code and name, postal code (PSČ), building/orientation numbers, and coordinates in the S-JTSK system (would need reprojection to WGS84) — genuinely richer and more current than GeoNames, and government-official rather than a third-party gazetteer.
Licence: CC BY 4.0, same family already used throughout this catalogue — no new licence complexity.
Why not switched to immediately — confirmed scope, 2026-09-03: fetched
the actual file (vdp.cuzk.gov.cz/vymenny_format/csv/20260831_OB_ADR_csv.zip,
63 MB compressed, 354 MB uncompressed) to scope the real lift rather than
guess. It is 6,258 separate per-municipality CSVs (cp1250-encoded,
semicolon-delimited), one row per address point, with PSČ (postal code)
but no district/region columns at all — only a bare municipality code.
A real RÚIAN-based build needs: (1) parsing ~7-8M address-point rows
across 6,258 files, (2) aggregating to postal-code level (mean coordinate,
representative municipality), (3) a SEPARATE fetch of an official
municipality→district→region crosswalk (not in this file) to reconstruct
the kraj/okres hierarchy GeoNames already gives for free, and (4)
reprojecting coordinates from S-JTSK (EPSG:5514) to WGS84 — a real
transform, not a trivial swap. This is a multi-source GIS pipeline, not a
drop-in replacement, and materially larger than every other build in this
session's queue. Deferred, not because GeoNames is preferred by default,
but because the confirmed scope here is disproportionate relative to a
10-country backlog — flagged as a genuine future upgrade for whoever has
the time to build the aggregation + crosswalk + reprojection pipeline
properly, not something to rush.
GeoNames research, 2026-09-03 (current fallback — clean and small,
just needs the crosswalk fix below)
Clean GO, with one dangerous false-friend crosswalk hazard flagged.
GeoNames' postal export is clean and complete at 2 tiers, but its own
admin_code1 numbering happens to also be 2-digit numbers that look like
ISO 3166-2:CZ codes and are NOT — a naive prepend would silently ship
wrong-but-plausible codes on every row.
The source — GeoNames CZ
https://download.geonames.org/export/zip/CZ.zip # 15,507 rows
Licence CC-BY-4.0, verified against export/zip/readme.txt on
2026-09-03 — Czechia carries no per-country caveat (the readme's only
restricted countries are GB, CL, CN, IE, MT, AR, BR).
Verified directly against the raw source file:
admin_name1/admin_code1— Kraj (region), 14/14 covered (13 regions + Prague). GeoNames' own codes (52,78–90) are internal and numerically overlap ISO 3166-2:CZ's own numbering space without matching it — e.g. GeoNames52= Hlavní město Praha, but the realCZ-52= Královéhradecký kraj, a completely different region. Verified against Wikipedia's ISO_3166-2:CZ page 2026-09-03. This is a more dangerous hazard than JP/IN's numeric mismatch, because both the wrong and right codes are valid-looking 2-digit numbers in the same range — a rebuild that doesn't check this by name would ship confidently wrong data. Requires a full name-based crosswalk (14 rows).admin_name2— Okres (district), 77 distinct values: the real 76 okresy plus Prague itself, which stands outside the okres system as a district-equivalent statutory city. Not a data error, a real structural nuance worth stating plainly in the README.admin_name3— empty on all 15,507 rows. Czechia's postal source has no third admin tier, same shape as LU.- 0 exact duplicate rows, 0 (postal_code, place_name) collisions, 0
literal
"nan"strings, clean integer accuracy values (1/3/4) at the source. Primary key is simply (postal_code, place_name) — cleanest structure in this research batch.
licence_status (proposed — needs a build pass before shipping)
{
"channel": "postal-codes-r2",
"source_url": "https://download.geonames.org/export/zip/CZ.zip",
"licence_id": "CC-BY-4.0",
"collected_at": "2026-09-03",
"decision": "compatible",
"decided_by": "claude-session-2026-09-03",
"decided_at": "2026-09-03"
}
Proposed tier
B ($49). Single source, structurally the cleanest of this batch (0 collisions, 0 duplicates, 2 clean tiers), but the region-code false-friend crosswalk is real, disclosure-critical work — the kind of mistake that ships looking completely fine until someone checks the actual region names.
Build — 2026-09-03, GeoNames-only (RÚIAN path scoped and deferred, see above)
Built via datasets/cz/scripts/build_postal_codes_product.py.
| value | |
|---|---|
| Final rows | 15,507 |
| Kraje covered | 14/14 |
| Okresy | 77 (76 real + Prague as district-equivalent) |
| Distinct postal codes | 2,694 |
| (postal_code, place_name) collisions | 0 |
All 14 admin_code1 values verified as the real ISO 3166-2:CZ codes
(CZ-10…CZ-80), crosswalked by region NAME, not GeoNames' own
numbering. Frictionless validation: valid: True. Zero literal "nan"
strings, zero float-formatted accuracy, zero duplicates.
Status: built and validated locally only. Nothing published to R2,
nothing committed to git yet. Existing live cz.csv (15,507 rows, bare
CSV, no datapackage/README/zip) has the standard "nan" corruption seen
elsewhere in this catalogue (introduced downstream of GeoNames, not
present upstream).