Postal Codes Dataset for Finland, FI

284
Updated:
Files:1
Size:316 kB
Rows:3,786
Formats:csv

Postal Codes Dataset for Finland, FI 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
  • Posti Postal Code Services terms of use (2015-01-01) license
20% off
$99.90$79.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-fi/
https://datahub.io/logistics/postal-codes-fi/_r/-/.licensing-notes.md
https://datahub.io/logistics/postal-codes-fi/_r/-/.migration-notes.md
https://datahub.io/logistics/postal-codes-fi/_r/-/ATTRIBUTION.txt
https://datahub.io/logistics/postal-codes-fi/_r/-/README.md
https://datahub.io/logistics/postal-codes-fi/_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-fi/_r/-/datapackage.yaml
README.md— documentation
https://datahub.io/logistics/postal-codes-fi/_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

postal-codes-fi-sample


About this dataset

Finland (FI): migration notes

Internal record of the P5 migration from the old scripts to the producer: the discrepancies found, their causes, and who decided what. This is a dated record, so the numbers are as of the migration and not kept current. It is not shipped in the zip.

  • Issue: pc-28e.7.21 (closed 2026-10-03)
  • Commit: ef9825a (worktree commit e9b2489, same content), landed in batch 3
  • Parity verdict: unexplained (1 row only in fresh); accepted by the user as upstream drift
  • Producer: custom, refresh disabled

Sources

InputURLNotes
Posti Postal Code File (PCF)https://www.posti.fi/webpcode/ → PCF_YYYYMMDD.zipFixed-width ISO-8859-1, 220 chars per record, published daily; older days under webpcode/arch/
GeoNames postal exporthttps://download.geonames.org/export/zip/FI.zipSeutukunta tier and coordinates only
  • The old builder read a hand-downloaded webpcode/unzip/PCF_20260828.dat. The file name is dated, so the producer reads the directory listing and takes the single top-level PCF_*.zip (PCF_20261002.zip at migration time). The resolved URL is recorded in fi.inputs.json; --no-fetch reuses it.

Parity against the live zip (2026-10-02)

Rows: 3,784 live and 3,785 fresh. 0 changed cells, 0 rows only in live, no row_order class.

RowsChangeCause
1Only in fresh: FI,96401,Rovaniemi,Lappi,FI1D7,Rovaniemi,191,Rovaniemi,698,,,,Posti added this code after 2026-08-28 (3,784 records in PCF_20260828, 3,785 in PCF_20261002). GeoNames has no coordinates for it, so latitude/longitude/accuracy are empty

Check of the transform: run on the archived webpcode/arch/PCF_20260828.zip (the snapshot the old builder used) with the current GeoNames file, the producer reproduces the live fi.csv line for line.

The informational sample check against https://postal.datahub.io/fi/fi.csv came back unexplained (leading_zero_restored 9, unclassified 6, float_suffix_dropped 3). It is outside the gate and was not traced.

Decisions

DecisionByBasis
Accept the +1 row (96401) and landUser, 2026-10-03 ("Accept both", for ch and fi, session 2479b1c9-…)Upstream drift with verified logic; recorded in the sign-off section of docs/parity/p5.md
Generate the Posti download date into README/ATTRIBUTION at build time instead of the hardcoded 2026-08-28User, 2026-10-03 ("Generate at build", session 2479b1c9-…)Posti's terms require the actual download date to go with the data; filed as pc-ypg, not done in this commit
Resolve the current PCF from the directory listingAgentThe file name is dated; the old builder's URL was today's date
Remove row and fill counts from README, descriptor and the admin_name2, latitude, alternative_city_name descriptions; keep 19 regions, 308 municipalities, 13 municipality codes without a GeoNames counterpartOrchestrator instruction (user's README counts rule)Also replaced the stale licence_status.decision sentence with plain words; standard accuracy wording

Transforms carried over

From build_postal_codes_product.py (2026-08-28):

  • Fixed-width ISO-8859-1 PCF parse. From Posti: postal_code, place_name (Finnish), admin_name1/admin_code1 (maakunta / NUTS3), admin_name3/admin_code3 (kunta).
  • place_name, admin_name3 and the Swedish name title-cased; the Swedish name goes to alternative_city_name only where it differs.
  • admin_name2/admin_code2 (seutukunta) joined from GeoNames by municipality code; coordinates and accuracy by postal code. First GeoNames row wins; empty when absent.
  • A repeated (postal_code, place_name) keeps the first record. Rows keep Posti's file order.
  • The old asserts are now ProducerErrors: 220-char PONOT records, 5-digit postal codes, 3-digit municipality codes, known NUTS3 region codes, all 19 regions present, unique primary key. No row-count assert.

Open questions

  • Download date (pc-ypg). ATTRIBUTION.txt and the README "Source snapshot date" still say 2026-08-28. pc-ypg must land before fi is published after the merge.
  • README/ATTRIBUTION count sweep (pc-hfz), which waits on pc-ypg.

Provenance

Reconstructed 2026-10-05 from the agent transcript 2479b1c9-c4dd-47e5-be82-34ccf8d49a80/subagents/agent-abf97d099d430fba7.jsonl, the orchestrator session 2479b1c9-… (also checked 068ca403-…, d33e1b7e-…, 7df0c5be-…: no further fi decisions), the commit message, the bd close reason and pc-ypg.