Country
Albania (AL)
Request Type
New country support
Description
Add support for Albanian postal codes (4-digit, no prefix, introduced 2006) mapping to NUTS-2024 codes. Albania is in NUTS-2024 as a candidate-country statistical region with the full hierarchy: 1 SR-1 (AL), 3 SR-2 regions (North/Central/South), 12 SR-3 qarqe (counties), and 61 LAU-1 bashki (municipalities). However, like Montenegro, GISCO does not currently publish a TERCET flat file for Albania, so a TERCET-only implementation would yield zero exact matches. A practical implementation can ingest GeoNames' AL postal codes (494 rows covering 31 of 61 bashki) via the existing extra_sources mechanism with a 12-row qarku-name → AL0xx lookup table.
See Research analysis below for the full data-source survey, format details, and the open questions before implementation can start.
Example Postal Codes
1001 Tirana (central)
1017 Tirana (Tirana 17)
3501 Korçë
9700 Sarandë (southern coast)
1700 (special: Transit)
1800 (special: EMS)
All examples 4 digits, no internal separator. No AL- prefix used by Posta Shqiptare.
Data Sources
Research analysis (2026-04-29)
1. Postal code format (Kodi Postar)
- Format: 4 digits, no letters, no separator. Regex
^\d{4}$.
- Adopted: Council of Ministers Decision No. 676, 4 October 2006; rolled out from late 2006, operational from 2007.
- Structure: First 2 digits = district-level branch; last 2 digits = post office serving a bashki (municipality). Range observed
1000 (Tirana) to 9700 (Sarandë). Special codes 1700 (Transit) and 1800 (EMS).
- Variations: No
AL- or SH- prefix is used by Posta Shqiptare or in Wikipedia/Grokipedia documentation. Nonetheless, an optional AL[\s\-.]* capture group should be allowed defensively, mirroring the existing patterns for MK/RS.
- Suggested regex (consistent with project style):
"AL": {
"regex": "^(?:AL[\\s\\-–—.]*)?([0-9]{4})$",
"example": "1001, AL-1001, 9700, 3501",
"expected_digits": 4
}
2. Country prefix / addressing convention
- Posta Shqiptare (
eposta.postashqiptare.al/postalcodes) lists raw 4-digit codes without prefix.
- UPU addressing template places the 4-digit postcode on its own line above the locality name (Albania UPU sheet
albEn.pdf).
- Google libaddressinput (
https://chromium-i18n.appspot.com/ssl-address/data/AL) returns:
{"id":"data/AL","key":"AL","name":"ALBANIA","fmt":"%N%n%O%n%A%n%Z%n%C","zip":"\\d{4}","zipex":"1001,1017,3501"}
No require, no sub_keys — Google does not enforce subdivision selection for AL.
- GeoNames uses bare 4-digit codes (no prefix).
3. GISCO TERCET availability
- The TERCET browser at
https://gisco-services.ec.europa.eu/tercet/flat-files is a JavaScript SPA; the directory itself returns the SPA index (855 bytes HTML) for both missing files and unrelated paths.
- Probing the canonical filename pattern used by
_guess_zip_urls_for_country() for AL across every plausible variant:
pc{2020..2025}_AL_NUTS-2024_v{1.0..4.0}.zip → all return the SPA fallback (Content-Type text/html, 855 B).
pc{2020,2021}_AL_NUTS-2021_v1.0.zip → also SPA fallback.
- Control:
pc2020_MK_NUTS-2021_v1.0.zip returns a real ZIP (Content-Type application/zip, 600 B) confirming the probe distinguishes "exists" vs "missing".
Conclusion: Eurostat GISCO does not currently publish a TERCET postal-code-to-NUTS file for AL under NUTS-2024 or NUTS-2021. AL is treated like Montenegro/Bosnia in TERCET — absent.
4. NUTS / statistical regions
Albania is in NUTS-2024 as Statistical Regions:
- AL (SR1): 1 unit (whole country)
- Rajoneve statistikore (SR2): 3 units — North (Dibër, Durrës, Kukës, Lezhë, Shkodër), Central (Elbasan, Tiranë), South (Berat, Fier, Gjirokastër, Korçë, Vlorë)
- Qarqe (SR3): 12 units (administrative counties)
- Bashki (LAU): 61 units
Authoritative file: Correspondence-table-2024-NUTS-SR-EN-DE-FR.xlsx on ec.europa.eu/eurostat/web/nuts/correspondence-tables. Codes follow the AL0…/AL01…/AL011… convention used for other candidates.
5. Alternative data sources
- GeoNames
AL.zip (download, 8.7 KB): 494 rows, tab-delimited, covers all 12 qarqe and 31 of 61 bashki with lat/lng. Includes county name (col 4) directly mappable to AL0-x NUTS3. CC-BY 4.0.
- Google libaddressinput: format/regex only, no postcode list.
- Posta Shqiptare lookup UI exists but no published CSV/API; would require scraping.
- Spotzi / GeoPostcodes / postcodebase.com: commercial datasets for 4-digit AL boundaries — not free.
- OSM:
addr:postcode coverage exists but is sparse and inconsistent.
6. Architecture fit
Adding AL to app/settings.json countries and app/postal_patterns.json is mechanically trivial, but the existing GISCO loader will silently fail discovery (Strategy 1) and exhaust Strategy 2 guesses for AL. Two viable paths:
- A. GISCO-only (current architecture): add AL to
countries, accept zero entries until Eurostat publishes a TERCET AL file. Net result: pattern validation works, lookups return not_found. Aligned with how the project handles missing data.
- B. Parallel loader (like UK/NSPL): ingest GeoNames
AL.zip via extra_source_urls mechanism with a new transformer mapping qarku-name → AL0xx NUTS3 code (12-row static map). Reuses cache/DB/overwrite plumbing — no new top-level loader needed.
Option B is the lowest-effort productive path and matches the "extra source" hook already in the loader.
7. Open questions
- Coverage threshold: is 494 GeoNames rows / 31 of 61 bashki acceptable, or should AL wait for Eurostat to publish TERCET?
- NUTS3 code mapping authority: which AL NUTS-2024 code list should be the source of truth — the Eurostat correspondence XLSX, or the labels INSTAT publishes? (Names need normalisation: GeoNames uses
Qarku i Beratit, NUTS uses Berat.)
- Confidence tier: GeoNames-derived rows should likely map to
medium or low in confidence_map (settings.json) rather than the high tier reserved for GISCO-validated codes.
- Prefix handling: should the regex also tolerate
SH- (an occasionally-seen colloquial prefix from "Shqipëria") or stay strict to AL-? like Google/UPU?
Source URLs
Country
Albania (AL)
Request Type
New country support
Description
Add support for Albanian postal codes (4-digit, no prefix, introduced 2006) mapping to NUTS-2024 codes. Albania is in NUTS-2024 as a candidate-country statistical region with the full hierarchy: 1 SR-1 (
AL), 3 SR-2 regions (North/Central/South), 12 SR-3 qarqe (counties), and 61 LAU-1 bashki (municipalities). However, like Montenegro, GISCO does not currently publish a TERCET flat file for Albania, so a TERCET-only implementation would yield zero exact matches. A practical implementation can ingest GeoNames' AL postal codes (494 rows covering 31 of 61 bashki) via the existingextra_sourcesmechanism with a 12-row qarku-name →AL0xxlookup table.See Research analysis below for the full data-source survey, format details, and the open questions before implementation can start.
Example Postal Codes
All examples 4 digits, no internal separator. No
AL-prefix used by Posta Shqiptare.Data Sources
AL0xxcodes for qarqeAL.zip— 494 rows with lat/lng + qarku name (CC-BY 4.0); covers all 12 qarqe and 31 of 61 bashki\d{4}, examples1001, 1017, 3501Research analysis (2026-04-29)
1. Postal code format (Kodi Postar)
^\d{4}$.1000(Tirana) to9700(Sarandë). Special codes1700(Transit) and1800(EMS).AL-orSH-prefix is used by Posta Shqiptare or in Wikipedia/Grokipedia documentation. Nonetheless, an optionalAL[\s\-.]*capture group should be allowed defensively, mirroring the existing patterns for MK/RS.2. Country prefix / addressing convention
eposta.postashqiptare.al/postalcodes) lists raw 4-digit codes without prefix.albEn.pdf).https://chromium-i18n.appspot.com/ssl-address/data/AL) returns:{"id":"data/AL","key":"AL","name":"ALBANIA","fmt":"%N%n%O%n%A%n%Z%n%C","zip":"\\d{4}","zipex":"1001,1017,3501"}No
require, nosub_keys— Google does not enforce subdivision selection for AL.3. GISCO TERCET availability
https://gisco-services.ec.europa.eu/tercet/flat-filesis a JavaScript SPA; the directory itself returns the SPA index (855 bytes HTML) for both missing files and unrelated paths._guess_zip_urls_for_country()for AL across every plausible variant:pc{2020..2025}_AL_NUTS-2024_v{1.0..4.0}.zip→ all return the SPA fallback (Content-Typetext/html, 855 B).pc{2020,2021}_AL_NUTS-2021_v1.0.zip→ also SPA fallback.pc2020_MK_NUTS-2021_v1.0.zipreturns a real ZIP (Content-Typeapplication/zip, 600 B) confirming the probe distinguishes "exists" vs "missing".Conclusion: Eurostat GISCO does not currently publish a TERCET postal-code-to-NUTS file for AL under NUTS-2024 or NUTS-2021. AL is treated like Montenegro/Bosnia in TERCET — absent.
4. NUTS / statistical regions
Albania is in NUTS-2024 as Statistical Regions:
Authoritative file:
Correspondence-table-2024-NUTS-SR-EN-DE-FR.xlsxonec.europa.eu/eurostat/web/nuts/correspondence-tables. Codes follow theAL0…/AL01…/AL011…convention used for other candidates.5. Alternative data sources
AL.zip(download, 8.7 KB): 494 rows, tab-delimited, covers all 12 qarqe and 31 of 61 bashki with lat/lng. Includes county name (col 4) directly mappable to AL0-x NUTS3. CC-BY 4.0.addr:postcodecoverage exists but is sparse and inconsistent.6. Architecture fit
Adding AL to
app/settings.jsoncountriesandapp/postal_patterns.jsonis mechanically trivial, but the existing GISCO loader will silently fail discovery (Strategy 1) and exhaust Strategy 2 guesses for AL. Two viable paths:countries, accept zero entries until Eurostat publishes a TERCET AL file. Net result: pattern validation works, lookups returnnot_found. Aligned with how the project handles missing data.AL.zipviaextra_source_urlsmechanism with a new transformer mapping qarku-name →AL0xxNUTS3 code (12-row static map). Reuses cache/DB/overwrite plumbing — no new top-level loader needed.Option B is the lowest-effort productive path and matches the "extra source" hook already in the loader.
7. Open questions
Qarku i Beratit, NUTS usesBerat.)mediumorlowinconfidence_map(settings.json) rather than thehightier reserved for GISCO-validated codes.SH-(an occasionally-seen colloquial prefix from "Shqipëria") or stay strict toAL-?like Google/UPU?Source URLs