Postal Codes Dataset for Belgium, BE

202
Updated:
Files:1
Size:233 kB
Formats:csv
License:CC-BY-4.0

Postal Codes Dataset for Belgium, BE including name of the city, town, or place, various administrative divisions and alternative city names.

Part of a Data Solution

  • Postal Codes Solution

    Every worldwide postal-code dataset in one bundle — the ultimate global reference for precise postal codes.

    Explore →

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
20% off
$49.90$39.92
one-time payment

API Access

Access dataset files directly from scripts, code, or AI agents.

Browse dataset files
Dataset Files

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.

/logistics/postal-codes-be/
https://datahub.io/logistics/postal-codes-be/_r/-/.licensing-notes.md
https://datahub.io/logistics/postal-codes-be/_r/-/README.md
https://datahub.io/logistics/postal-codes-be/_r/-/datapackage.yml
Key Files

Start with these files — they give you everything you need to understand and access the dataset.

datapackage.ymlmetadata & schema
https://datahub.io/logistics/postal-codes-be/_r/-/datapackage.yml
README.mddocumentation
https://datahub.io/logistics/postal-codes-be/_r/-/README.md
Typical Usage
  1. 1. Fetch datapackage.yml to inspect schema and resources
  2. 2. Download data resources listed in datapackage.yml
  3. 3. Read README.md for full context

Data Files

Postal Codes Data Resource for Belgium, BE

About

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), codes BRU/VLG/WAL.
  • admin_name2/admin_code2 — Province, 11 distinct values, codes VAN/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 rows2,781
Regions covered3/3
Provinces11
Arrondissements43
Distinct communes/localities2,726
Distinct postal codes1,146
(postal_code, place_name) collisions0

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).