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-at-sample
| Field | Type | Description | Constraints | Title |
|---|---|---|---|---|
| country_code | string | ISO 3166-1 alpha-2 -- always AT | Country Code | |
| postal_code | string | Austrian postal code (4 digits) | { "pattern": "^\\d{4}$" } | Postal Code |
| place_name | string | Locality/place name | Place Name | |
| admin_name1 | string | Bundesland (state) -- 9/9 covered | Administrative Name 1 | |
| admin_code1 | string | ISO 3166-2:AT code | Administrative Code 1 | |
| admin_name2 | string | Politischer Bezirk (political district) -- 94 distinct values | Administrative Name 2 | |
| admin_code2 | string | GeoNames' own district code | Administrative Code 2 | |
| admin_name3 | string | Gemeinde (municipality) -- 2120 distinct values | Administrative Name 3 | |
| admin_code3 | string | Gemeindekennziffer (official 5-digit municipality code) | 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
- 10.9 kB
About this dataset
Austria (AT) — internal licensing notes
Source research, 2026-08-29 — sellability + reproducibility audit
Clean GO. GeoNames' postal export already carries all three admin tiers for Austria — no gap to fill, no second source needed. This is a stronger starting point than most single-source builds in this catalogue (compare AL/ZA, which needed a gazetteer join or shipped with columns empty).
The source — GeoNames AT
https://download.geonames.org/export/zip/AT.zip # 264 KB, 19,225 rows
Licence CC-BY-4.0, verified against export/zip/readme.txt on
2026-08-29 — Austria 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: all three admin tiers are genuinely populated, not empty like South Africa's:
admin_name1/admin_code1— Bundesland (state), 9/9 covered (Burgenland…Wien), GeoNames' own numeric code (01…09).admin_name2— Politischer Bezirk (political district), 94 distinct values.admin_name3/admin_code3— Gemeinde (municipality), 2,117 distinct values, with GeoNames' own 5-digit Gemeindekennziffer asadmin_code3.- 124 of 19,225 rows have empty admin2/admin3 — not investigated further in this pass (likely PO-box/special codes with no municipality), disclose rather than guess if the actual build hits this.
ISO 3166-2:AT derivation verified 2026-08-29 against Wikipedia's
ISO_3166-2:AT page: GeoNames' own Bundesland numbering (01…09) maps
1:1, in the same order, to AT-1…AT-9 (Burgenland=1, Kärnten=2,
Niederösterreich=3, Oberösterreich=4, Salzburg=5, Steiermark=6, Tirol=7,
Vorarlberg=8, Wien=9). Trivial crosswalk, no ambiguity.
A possibly-better official alternative — noted, not pursued this pass
Austria's telecom/postal regulator RTR (Rundfunk und Telekom
Regulierungs-GmbH) publishes the official PLZ-Verzeichnis as genuine open
data (csv/xlsx/xml/json, updated monthly) via data.gv.at
(katalog/dataset/f76ed887-00d6-450f-a158-9f8b1cbbeebf). This is likely a
stronger official byline than GeoNames and worth checking before a real
build — but the licence field on that dataset page did not resolve during
this research pass (empty JS-rendered fetch, and a direct CKAN API call
also returned nothing) and was not independently confirmed. Do not
assume it is open without checking — data.gv.at datasets are usually
CC BY 4.0 (Austria's standard open-government licence) but this specific
one needs its own verification before switching away from the
already-verified GeoNames path.
licence_status (proposed — needs human sign-off before shipping)
{
"channel": "postal-codes-r2",
"source_url": "https://download.geonames.org/export/zip/AT.zip",
"licence_id": "CC-BY-4.0",
"collected_at": "2026-08-29",
"decision": "compatible",
"decided_by": "claude-session-2026-08-29",
"decided_at": "2026-08-29"
}
Proposed tier
B ($49). Single official-quality source (GeoNames) normalised in place — real work (ISO code derivation, admin-tier cleanup) but no second authoritative provider consolidated onto it. Same shape as AT's neighbours in this tier: IT (single-source GeoNames rebuild with ISO code derivation), PH.
Verdict
Build it. No licensing obstacle, no coverage gap — Austria is one of the few countries in this batch where the postal export alone already carries a complete 3-tier admin hierarchy.
Build — 2026-08-30 (local only, not published)
Built via datasets/at/scripts/build_postal_codes_product.py. One thing
not caught in research: 220 (postal_code, place_name) pairs collide (444
rows) — real border localities listed once per municipality they touch
(e.g. "Weissenbach", postal code 9500, spans both Villach Stadt and
Villach Land). Real primary key is (postal_code, place_name, admin_code3),
verified unique across all 19,225 rows.
| value | |
|---|---|
| Final rows | 19,225 |
| Bundeslaender covered | 9/9 |
| Political districts | 94 |
| Municipalities (Gemeindekennziffer) | 2,120 |
| Distinct postal codes | 2,501 |
| Rows with empty admin2/admin3 | 124 (likely PO-box/special codes) |
ISO 3166-2:AT crosswalk used as already verified in research (GeoNames' 01-09 -> AT-1..AT-9, same order).
Frictionless validation: valid: True.
Status: built and validated locally only. Nothing published to R2,
nothing committed to git. datasets/at/README.md and datapackage.yml
updated in place (tier B, premium_source_key: at/at.zip, real
sources/licenses, replacing the "Multiple sources" placeholder).