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 — postal layer (GeoNames) 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-id-sample
| Field | Type | Description | Constraints | Title |
|---|---|---|---|---|
| country_code | string | ISO 3166-1 alpha-2 country code — always ID | { "pattern": "^ID$", "required": true } | Country Code |
| postal_code | string | Five-digit Indonesian kodepos. Leading zeros are significant: read via this descriptor or pass dtype=str. | { "pattern": "^\\d{5}$", "required": true } | Postal Code |
| place_name | string | Desa (village) or Kelurahan (urban ward) — the tier kodepos are assigned at. Where the administrative columns are empty this is the postal source's own place name, unverified against the official register. | { "required": true } | Place Name |
| admin_name1 | string | Provinsi (province). Empty on rows the postal source could not be tied to an official village — empty means unknown, and is never filled with a placeholder. | Administrative Name 1 | |
| admin_code1 | string | ISO 3166-2:ID subdivision code, ID- prefix stripped | Administrative Code 1 | |
| admin_name2 | string | Kabupaten (regency) or Kota (city) | Administrative Name 2 | |
| admin_code2 | string | Kemendagri regency/city code (NN.NN) | { "pattern": "^\\d{2}\\.\\d{2}$" } | Administrative Code 2 |
| admin_name3 | string | Kecamatan (district) | Administrative Name 3 | |
| admin_code3 | string | Kemendagri district code (NN.NN.NN) | { "pattern": "^\\d{2}\\.\\d{2}\\.\\d{2}$" } | Administrative Code 3 |
| latitude | number | WGS84 latitude, decimal degrees, max 5 dp | Latitude | |
| longitude | number | WGS84 longitude, decimal degrees, max 5 dp | 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 | Pipe-separated source spellings of the village name that differ from the official Kemendagri spelling | Alternative City Name |
Download
Download sample CSVAbout
- Last updated
- 6 October 2026
- Total rows
- 100
- Format
- CSV
- File size
- 9.72 kB
About this dataset
Indonesia (ID) — internal licensing notes
Not mentioned in datahub-next#941 — no known licensing flag on this
country. Sources: cahyadsn/wilayah + wilayah_kodepos (GitHub, MIT —
Indonesian administrative hierarchy and village-to-postcode mapping) +
GeoNames ID (CC BY 4.0).
Session finding, 2026-08-19
Fixed id/scripts/ from hardcoded other-repo paths to self-contained.
Added the buyer-facing README as a committed static template
(delivery_README_template.md) — nothing generated it before, and
run_qa.py's zip step silently skipped it if absent.
Verified end-to-end from a fresh fetch, entirely within this repo: 38
provinsi / 514 kab-kota / 7,285 kecamatan / 83,762 desa (exact match to
documented counts), 81,044 final rows, cross-check agreement 69.2%/30.8%
between the two admin sources (exact match to documented figures). Final
id.csv MD5-identical to live R2
(f8535e27c7cced5181606a65e3233b8c, 7,656,248 bytes).
No further licensing review — this was a code-reproducibility audit.
CLOSED — 2026-08-24 (datahub-next#941 §4)
Added standalone id/ATTRIBUTION.txt (GeoNames CC BY 4.0 for the postal
layer; Kepmendagri decree — public domain under UU No. 28/2014 Pasal 42 —
for the administrative layer) — now in R2 and inside id.zip. run_qa.py
updated to write and zip it on every run. _meta/catalog.json's ID entry
rebuilt to include it. No pre-existing defect found.