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 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.yml to inspect schema and resources
- 2. Download data resources listed in datapackage.yml
- 3. Read README.md for full context
Data Files
Postal Codes Data Resource for Belgium, BE
| Field | Description | Title |
|---|---|---|
| country_code | ISO 3166-1 alpha-2 code for the country. | Country Code |
| postal_code | Postal code for the location. | Postal Code |
| place_name | Name of the city, town, or place. | Place Name |
| admin_name1 | Primary administrative division (e.g., state, region). | Administrative Name 1 |
| admin_code1 | Code for the primary administrative division. | Administrative Code 1 |
| admin_name2 | Secondary administrative division (e.g., county, district). | Administrative Name 2 |
| admin_code2 | Code for the secondary administrative division. | Administrative Code 2 |
| admin_name3 | Tertiary administrative division (e.g., municipality, borough). | Administrative Name 3 |
| admin_code3 | Code for the tertiary administrative division. | Administrative Code 3 |
| latitude | Latitude coordinate of the place. | Latitude |
| longitude | Longitude coordinate of the place. | Longitude |
| accuracy | Accuracy level of the latitude and longitude coordinates. | Accuracy |
| alternative_city_name | Alternative name(s) for the city or place. | Alternative City Name |
Download
Download sample CSVAbout
- Last updated
- 3 September 2026
- Total rows
- ...
- Format
- CSV
- File size
- 233 kB
About this dataset
Belgium (BE) — internal licensing notes
Source research, 2026-09-03 — sellability + reproducibility audit
Clean GO. GeoNames' postal export carries all three official admin tiers Belgium has above commune level (Region, Province, Arrondissement) – no gap to fill, no second source needed. Even cleaner than AT/LU: 0 (postal_code, place_name) collisions, and admin_code3 (arrondissement) is globally unique across all 43 values (no cross-province code reuse to disambiguate).
The source — GeoNames BE
https://download.geonames.org/export/zip/BE.zip # 2,781 rows
Licence CC-BY-4.0, verified against export/zip/readme.txt on
2026-09-03 — Belgium 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— Region, 3/3 covered (Bruxelles-Capitale, Vlaanderen, Wallonie), codesBRU/VLG/WAL.admin_name2/admin_code2— Province, 11 distinct values, codesVAN/VBR/WBR/BRU/VWV/VOV/WHT/VLI/WLG/WLX/WNA. Brussels' province-tier code duplicates its region code (BRU) – Brussels-Capital Region has no province subdivision, treated as province-equivalent.admin_name3/admin_code3— Arrondissement, 43 distinct values, code globally unique (no province shares a code with another).place_name— commune/locality (e.g. Bruxelles, Laeken, Schaerbeek — Brussels' 19 communes each get their own row under the same region/province/arrondissement).
ISO 3166-2:BE derivation verified 2026-09-03 against Wikipedia's
ISO_3166-2:BE page: GeoNames' own region AND province codes both map 1:1,
letter-for-letter, onto the ISO codes (just prepend BE-) — same
mechanism as LU's cantons, applied at two tiers here instead of one.
Cross-check against the independently-built FedEx-schema BEL dataset
fedex-agents-prototype/countries/BEL/data/Belgium.csv (1,189 rows, 1,185
distinct postal codes) was built independently from a different, official
source: bpost's own postal-codes-belgium dataset via the Wallonia open
data portal (ODWB), backfilled from a Tier-2 Wallonia source because Tier 1
alone only covered ~44% of expected codes. Its province code set
(BRU, VAN, VBR, VLI, VOV, VWV, WBR, WHT, WLG, WLX, WNA) is identical
to GeoNames' — an independent confirmation the province crosswalk here is
correct.
Coverage diff, computed directly: GeoNames (this build) has 1,146
distinct postal codes; the FedEx/bpost build has 1,185. Set difference:
40 codes exist in the bpost-sourced build but not in GeoNames (mostly
in the 1000–1199 Brussels range — EU institutions, NATO, government
bodies, and other single-address special-purpose codes bpost's research
explicitly flagged as special_code). Only 1 code exists in GeoNames but
not in the FedEx build.
Not fixed in this pass. The bpost/ODWB source's own licence was not verified in this audit — importing 40 rows from it without confirming that would repeat the "no licence check" failure this gate exists to prevent. Disclosed here as a known, quantified gap rather than silently shipped or silently ignored. If reclaiming those 40 institutional codes is wanted later, verify the ODWB dataset's licence first, then backfill by postal_code only (do not touch the other 2,781 GeoNames-sourced rows).
licence_status
{
"channel": "postal-codes-r2",
"source_url": "https://download.geonames.org/export/zip/BE.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 official-quality source (GeoNames) normalised in place, two ISO-code derivations (region + province) – real work but no second authoritative provider consolidated onto it. Same shape as AT/LU/ IT/PH. Not tier A/C: not a genuinely hard multi-source consolidation, and not a trivial pass-through either (the region/province ISO derivation and the coverage cross-check are real work).
What was already live before this rebuild
The prior be/be.csv on R2 (233,732 bytes, dated 2026-07-30) was already
structurally clean, unmodified GeoNames data — 0 "nan" strings, correct
regions, 0 duplicates. It was missing the packaging layer entirely: no
datapackage.json, no README.md, no ATTRIBUTION.txt, no licence_status,
no zip. This rebuild adds that packaging and the ISO code derivations; it
does not fix data corruption the way the AT/IE/LU rebuilds did, because
there wasn't any.
Verdict
Build it. No licensing obstacle, no coverage gap that isn't already disclosed and quantified above.
Build — 2026-09-03 (local only, not published)
Built via datasets/be/scripts/build_postal_codes_product.py.
| value | |
|---|---|
| Final rows | 2,781 |
| Regions covered | 3/3 |
| Provinces | 11 |
| Arrondissements | 43 |
| Distinct communes/localities | 2,726 |
| Distinct postal codes | 1,146 |
| (postal_code, place_name) collisions | 0 |
Frictionless validation: valid: True. Zero literal "nan" strings, zero
float-formatted accuracy values, zero duplicates on the primary key
(postal_code, place_name).
Status: built and validated locally only. Nothing published to R2,
nothing committed to git. datasets/be/README.md and datapackage.yml
updated in place (tier B, premium_source_key: be/be.zip, real
sources/licenses/licence_status).