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 (ABS Local Government Area component) 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-au-sample
| Field | Type | Description | Constraints | Title |
|---|---|---|---|---|
| country_code | string | ISO 3166-1 country code — always AU | { "pattern": "^AU$", "required": true } | Country Code |
| postal_code | string | Four-digit Australian postcode (leading zeros significant) | { "pattern": "^\\d{4}$", "required": true } | Postal Code |
| place_name | string | First locality listed for the postcode in the source | Place Name | |
| admin_name1 | string | State / territory name | Administrative Name 1 | |
| admin_code1 | string | State / territory abbreviation (NSW/VIC/QLD/SA/WA/TAS/NT/ACT/OT) | Administrative Code 1 | |
| admin_name2 | string | Local Government Area (LGA) name | Administrative Name 2 | |
| admin_code2 | string | ABS Local Government Area code | Administrative Code 2 | |
| admin_name3 | string | Reserved — not populated for Australia | Administrative Name 3 | |
| admin_code3 | string | Reserved — not populated for Australia | Administrative Code 3 | |
| latitude | number | Postcode centroid latitude (WGS84, decimal degrees) | Latitude | |
| longitude | number | Postcode centroid longitude (WGS84, decimal degrees) | Longitude | |
| accuracy | string | Reserved — not populated for Australia | Accuracy | |
| alternative_city_name | string | Pipe-separated additional localities sharing the postcode | Alternative City Name |
Download
Download sample CSVAbout
- Last updated
- 11 October 2026
- Total rows
- 100
- Format
- CSV
- File size
- 12.3 kB
About this dataset
Australia (AU): migration notes
Internal record of the P5 migration. This is a dated record (2026-10-11) and is not shipped in the zip.
- Issue: datopian/postal-codes#41
- Producer:
scripts/produce.py(+test_produce.py),pipeline: producer: custom, refresh disabled - Parity: unexplained, by design. This is a rebuild from Proctor's current file, not a reproduction of the earlier published file: 3,175 rows each, same postcodes, 2,673 rows changed (place_name 1,521, alternative_city_name 1,948, coordinates 2,640, state 8, LGA 1)
Why this is a rebuild, not a port
The builder that made the earlier au.csv was never committed and its input snapshot is gone. The old scripts here (fetch_source.py, build_base.py) were a 2026-08-19 reconstruction, and measured on 2026-10-11 they differed from the published file in 84% of rows. No selection rule I tried recovers the old place names (first / last / lowest id / highest id / alphabetical / first "Delivery Area" = 29 / 19 / 32 / 16 / 29 / 29%), and the old coordinates equal a coordinate in Proctor's file exactly for only 532 of 3,172 postcodes; none of Proctor's 23 GitHub versions reproduces them either. The earlier claim in .licensing-notes.md that all coordinates match within 0.001° is withdrawn.
Owner decision 2026-10-11: publish a rebuild from Proctor's current file and accept the differences ("if upstream sources change then it's ok").
Verification before publishing (2026-10-11)
Random 100 postcodes (seed 20261011), each checked against the raw source independently of the producer: place_name is the title-cased first locality, state and LGA name/code equal that row, coordinates equal the source and lie in Australia, every alternative name is a locality of that postcode and none repeats: 100 of 100 pass. Against an independent file (GeoNames AU, used only to check), state agreed on all 100 and coordinates had median 2.8 km, p90 15.4 km; the three above 25 km are PO-Box postcodes 1215 and 3632 (same coordinates as the earlier file; the independent file's PO-Box points are approximate) and 2440 (a rural postcode whose first source locality, Aldavilla, sits at the edge).
Whole file: first-row coordinates are closer to the postcode's median than the earlier file's (median 0.0 vs 3.3 km; more than 25 km away: 44 vs 189 of 2,149 multi-locality postcodes).
Decisions
| Decision | By | Basis |
|---|---|---|
| Publish a rebuild from Proctor's current file | User, 2026-10-11 | Source drift accepted; builder and snapshot unrecoverable |
| 0,0 coordinates → blank (6947, 6958, 6965) | Agent | Source writes 0,0 for "none"; the earlier file also blank. No coordinate is taken from another row |
| 2899, 6798, 6799 → "OT" / Other Territories | Agent | External territories (Norfolk, Christmas, Cocos); the earlier file had them OT; the source labels them NSW/WA |
yaml place_name description: "First locality listed for the postcode in the source" | Agent | The earlier "most common in the postcode" was not what any builder did |
Side effect worth knowing: 8 postcodes change state because the source is now right and the earlier file was not (4375, 4377, 4380, 4385 NSW → QLD; 3691, 3707 NSW → VIC; 4825 NT → QLD; 2611 ACT → NSW).
R2 (2026-10-11)
Two different live objects existed: au/consolidated/latest/au.zip (2026-07-30, the one premium_source_key points to) and au/au.zip (2026-08-24, same csv, adds ATTRIBUTION.txt). Only the first, and the public sample au/au.csv, were replaced. au/au.zip is untouched and now stale. Neither old object is regenerable, so both were saved locally before the write.
Other records, unchanged
- Licence: CC-BY-4.0 for the ABS LGA component; ATTRIBUTION.txt credits Proctor (public domain) and ABS (pc-9qt, 2026-10-06).
- Proctor's coordinates derive from Australia Post's database, whose own file is commercially licensed. Owner decision 2026-10-06 (pc-93s): accept Proctor's public-domain position.
- Proctor's site answers intermittently (HTTP 522); rerun the producer if a fetch fails.