Postal Codes Dataset for Malta, MT

159
Updated:
Files:1
Size:4 kB
Rows:73
Formats:csv
License:CC-BY-4.0

Postal Codes Dataset for Malta, MT 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 →

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-mt/
https://datahub.io/logistics/postal-codes-mt/_r/-/.licensing-notes.md
https://datahub.io/logistics/postal-codes-mt/_r/-/.migration-notes.md
https://datahub.io/logistics/postal-codes-mt/_r/-/ATTRIBUTION.txt
https://datahub.io/logistics/postal-codes-mt/_r/-/README.md
https://datahub.io/logistics/postal-codes-mt/_r/-/datapackage.yaml
Key Files

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

datapackage.yaml— metadata & schema
https://datahub.io/logistics/postal-codes-mt/_r/-/datapackage.yaml
README.md— documentation
https://datahub.io/logistics/postal-codes-mt/_r/-/README.md
Typical Usage
  1. 1. Fetch datapackage.yaml to inspect schema and resources
  2. 2. Download data resources listed in datapackage.yaml
  3. 3. Read README.md for full context

Data Files

Explore with AI

postal-codes-mt

Download

Download CSV

About

Last updated
5 October 2026
Total rows
73
Format
CSV
File size
4 kB

About this dataset

Malta (MT) — internal licensing notes

Source research, 2026-09-11 — tier-1 check done before considering GeoNames

Checked MaltaPost (the official national postal operator) first: a real official postcode finder exists at maltapost.com/PostCode/, but it is a one-address-at-a-time lookup tool — no bulk export, CSV, or API found.

Why GeoNames is NOT a usable fallback here (unlike most other countries)

Fetched GeoNames MT directly (download.geonames.org/export/zip/MT.zip) to check: only 73 rows, and GeoNames' own readme.txt states explicitly: "For Malta we have only the first letters of the full postal codes (for copyright reasons)" — confirmed directly (rows look like ATD, BZN, BRG, locality-level prefixes only, not the real AAA 9999 format).

Malta's real postal codes are alphanumeric, AAA 9999 (3 letters + 4 digits), introduced 1991, revised 2007. Independent estimate: ~27,426 real postal codes across ~74 localities (GeoPostcodes' public figure, not independently verified here, cited only for scale). GeoNames' 73-row truncated file represents a ~99.7% coverage loss versus that scale — the same class of unusable-fallback finding as Jersey's GeoNames export earlier in this project.

What this means

Unlike JP/CZ/etc. in this batch, GeoNames is not even a viable fallback for Malta — it's deliberately truncated at the source for copyright reasons, not just incomplete. The only real official source (MaltaPost's lookup tool) is not bulk-fetchable with what was checked in this pass.

Verdict

No build in this pass. A real bulk source was not found — official (MaltaPost, lookup-only) and fallback (GeoNames, deliberately truncated) both fail. Options for a future pass: contact MaltaPost directly for a bulk export, or investigate whether the site's lookup tool has an underlying API that could be queried systematically (would need a separate ToS/systematic-extraction check before attempting, same diligence as the OSM/Nominatim gate elsewhere in this project). data_available unchanged (false).

Re-check, 2026-09-15 — fresh search, conclusion unchanged

Re-ran source discovery from scratch (not just re-reading the above) per a request to conclusively confirm or overturn the 2026-09-11 verdict. Checked, this pass:

  1. MaltaPost (maltapost.com/postcode/) — fetched directly again. The page is a JS-rendered SPA with an empty static body (no server-rendered content, no exposed API endpoint found in the static HTML). Still no bulk export, open-data page, or documented API. Unchanged from the prior pass.
  2. NSO Malta (nso.gov.mt) — site blocks automated fetches (Cloudflare 403 to both WebFetch and curl). Web search around it surfaced nothing suggesting NSO publishes postal codes; NSO's own publications are census/economic/demographic, not postal geography.
  3. data.gov.mt / portal.data.gov.mt — also Cloudflare-blocked to automated tools (confirmed via curl: literal Cloudflare "Attention Required" block page). site:portal.data.gov.mt web search for postal/postcode/localities returned nothing relevant.
  4. Malta GeoHub (geohub.gov.mt), run by the Planning Authority — this one IS reachable and has a real public DCAT-US API (/api/feed/dcat-us/1.1.json). Pulled the full catalog: 63 real datasets (schools, bus stops, health centres, protected areas, local council boundaries, etc.). No postal-code or address-point dataset of any kind. Malta's INSPIRE "Addresses" (AD) theme, which EU member states are formally obligated to publish, was searched for specifically (MSDI portal, INSPIRE Malta ArcGIS hub inspire-catalogue-planningmt.hub.arcgis.com) — MSDI's public offering is environmental/INSPIRE themes only (terrain, protected areas, water bodies); no Addresses theme dataset was found exposed through either portal's public catalog/API.
  5. GitHub — searched again for a complete AAA 9999-format Malta postcode repo. Found none; only Malaysia postcode repos surface for generic "postcode" GitHub searches.
  6. Re-verified the aggregators are all the same GeoNames file — fetched postal.datahub.io/mt/mt.csv (the live resource behind datasets/mt/datapackage.yml in this repo, i.e. our own existing legacy listing) directly: 73 data rows, locality-prefix codes (ATD, BZN, BRG, …), identical in shape and content to the GeoNames MT.zip export checked in the prior pass. postalcodes.info independently advertises "73 geocoded records" for Malta — same number, confirming it's the same underlying GeoNames extract resold, not an independent or more-complete source. GeoPostcodes.com advertises 27,426 Malta codes but is a paid commercial product with no accessible sample large enough to verify, and buying/relicensing a competitor's commercial extract is out of scope for a source- discovery pass.

No new source clears the bar (order-of-thousands rows, official or clearly-licensed, distinguishable from the deliberately-truncated GeoNames extract). Conclusion from 2026-09-11 stands unchanged: do not build. data_available remains false. datasets/mt/datapackage.yml was not touched.

Note for a future pass, sharper than the prior one: the one lead that hasn't been run to ground is whether MaltaPost's postcode-finder page calls an internal JSON API per-lookup that could — separately from this pass, and only after an explicit ToS/systematic-extraction review like the Nominatim gate elsewhere in this project — be queried address-by- address rather than scraped in bulk. Not attempted here: no ToS permission was found for systematic querying, and the page's JS bundle was not decompiled to find the endpoint.

Build — EXECUTED 2026-09-15, per explicit instruction to build from GeoNames anyway

The 2026-09-11/15 verdict above was that GeoNames is NOT a usable fallback because it's deliberately truncated to locality-prefix level. On explicit instruction, this was reversed: build it anyway, with the truncation disclosed prominently rather than treated as disqualifying.

Result: 73 rows, all 68/68 ISO 3166-2:MT local councils covered. postal_code = the 3-letter GeoNames locality prefix (e.g. ATD) — explicitly NOT a complete deliverable Malta postcode (real codes are AAA 9999; the 4-digit suffix does not exist in this source at all). This is disclosed in the dataset title, description, README, and ATTRIBUTION, not silently shipped as if complete.

admin_code1 required a genuinely careful crosswalk, not a numeric prepend: GeoNames' own admin_code1 ("01".."68") does NOT match ISO 3166-2:MT order past code 10 (e.g. GeoNames codes Mdina "20", ISO assigns Mdina MT-29). Two real island-disambiguation traps were resolved by name + latitude, not guessed: GeoNames' "Rabat" (Malta mainland) = ISO's "Rabat Malta" (MT-46); GeoNames' "Victoria" (Gozo) = ISO's "Rabat Għawdex" (MT-45, Victoria being the modern common name for the same place). GeoNames' two "Żebbuġ" entries (Malta mainland vs Gozo) were resolved the same way. Two English-name variants required care, not swapping: "Saint Julians" = ISO's "San Ġiljan" (MT-48); "Saint Paul's Bay" = ISO's "San Pawl il-Baħar" (MT-51). Also found and fixed a build-script bug mid-pass: GeoNames' own admin_name1 field turned out to be a Maltese-language restatement of place_name (not a real council- grouping field) — the actual stable grouping key is GeoNames' own numeric admin_code1, verified unambiguous by grouping every raw row by it before building the crosswalk.

Frictionless: valid: True. licence_status.decision: compatible (clean CC BY 4.0, no licence ambiguity here — the issue was always completeness, never rights).

Tier decision: NOT premium. Per docs/PRICING_TIERS.md's own rule ("is_premium is a separate flag… only when the full version is genuinely larger than the published 100-row sample… PR #24 stripped this from 41 datasets of 1–99 rows"), Malta's 73-row full dataset is smaller than a 100-row sample would be — the sample IS the whole dataset. is_premium left unset, no premium_tier.

Published: git (datasets/mt/{datapackage.yml,scripts/}), main R2 bucket (mt/{mt.csv,datapackage.json,README.md,ATTRIBUTION.txt,mt.zip}, byte-verified), samples bucket (full 73-row file, mt/mt.csv), and _meta/catalog.json (backed up, mutated, re-verified at 248 entries).