Postal Codes Dataset for Luxembourg, LU

200
Updated:
Files:1
Size:340 kB
Formats:csv
License:CC-BY-4.0

Postal Codes Dataset for Luxembourg, LU 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
10% off
$49.90$44.91
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-lu/
https://datahub.io/logistics/postal-codes-lu/_r/-/.licensing-notes.md
https://datahub.io/logistics/postal-codes-lu/_r/-/README.md
https://datahub.io/logistics/postal-codes-lu/_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-lu/_r/-/datapackage.yml
README.mddocumentation
https://datahub.io/logistics/postal-codes-lu/_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 Luxembourg, LU

About

Last updated
2 September 2026
Total rows
...
Format
CSV
File size
340 kB

About this dataset

Luxembourg (LU) — internal licensing notes

Source research, 2026-09-02 — sellability + reproducibility audit

Clean GO. GeoNames' postal export carries both admin tiers Luxembourg has (canton, commune) — no gap to fill, no second source needed. Same shape as AT's audit.

The source — GeoNames LU

https://download.geonames.org/export/zip/LU.zip      # 4,519 rows

Licence CC-BY-4.0, verified against export/zip/readme.txt on 2026-09-02 — Luxembourg 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 — Canton, 12/12 covered (Capellen…Wiltz), GeoNames' own 2-letter code (CAWI).
  • admin_name2 — Commune, 105 distinct values, admin_code2 is a per-canton sequence number (e.g. "01" repeats across many different cantons) — not a globally unique commune code, so it cannot be used alone as part of a primary key.
  • admin_name3/admin_code3always empty. Luxembourg's postal source has no third admin tier at all (unlike AT, which has Gemeinde as admin3) — confirmed empty on all 4,519 rows, not a partial-coverage gap.
  • 1 (postal_code, place_name) pair collides: "Blumenthal" at L-7639 is listed twice — once under Bech/Echternach canton, once under Junglinster/Grevenmacher canton — a real border locality straddling a commune/canton boundary, same pattern as AT's Weissenbach. Real primary key is (postal_code, place_name, admin_name2), verified unique across all 4,519 rows.

ISO 3166-2:LU derivation verified 2026-09-02 against Wikipedia's ISO_3166-2:LU page: GeoNames' own canton codes (CA, CL, DI, EC, ES, GR, LU, ME, RD, RM, VD, WI) map 1:1, letter-for-letter, onto the ISO codes (just prepend LU-) — even simpler than AT's numeric crosswalk, no ambiguity.

licence_status

{
  "channel": "postal-codes-r2",
  "source_url": "https://download.geonames.org/export/zip/LU.zip",
  "licence_id": "CC-BY-4.0",
  "collected_at": "2026-09-02",
  "decision": "compatible",
  "decided_by": "claude-session-2026-09-02",
  "decided_at": "2026-09-02"
}

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/IT/PH.

What was already live before this rebuild

The prior lu/lu.csv on R2 (381,661 bytes, dated 2026-07-30) was NOT the "100-row sample, contact sales" placeholder the old datapackage.yml/ README.md claimed — it was the full 4,519-row GeoNames extract, just with the standard legacy corruption: literal "nan" strings in every row's admin_name3 (round-tripped through pandas from an empty upstream field), and float-formatted accuracy ("4.0"/"6.0" instead of "4"/"6"). No .licensing-notes.md, no licence_status, no ATTRIBUTION.txt existed before this pass — LU had never been through this project's proper rebuild.

Verdict

Build it. No licensing obstacle, no coverage gap.

Build — 2026-09-02 (local only, not published)

Built via datasets/lu/scripts/build_postal_codes_product.py.

value
Final rows4,519
Cantons covered12/12
Communes105
Distinct postal codes4,330
Rows with empty admin20
Rows with empty admin34,519 (no third tier exists in the source at all)

Frictionless validation: valid: True. Zero literal "nan" strings, zero float-formatted accuracy values, zero duplicates on the real primary key (postal_code, place_name, admin_name2).

Status: built and validated locally only. Nothing published to R2, nothing committed to git. datasets/lu/README.md and datapackage.yml updated in place (tier B, premium_source_key: lu/lu.zip, real sources/licenses/licence_status, replacing the stale "100-row sample" placeholder text).