Postal Codes Dataset for Romania, RO

316
Updated:
Files:1
Size:3.55 MB
Rows:54,096
Formats:csv
License:OGL-ROU-1.0

Postal Codes Dataset for Romania, RO 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
  • Open Government Licence Romania v1.0 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-ro/
https://datahub.io/logistics/postal-codes-ro/_r/-/.licensing-notes.md
https://datahub.io/logistics/postal-codes-ro/_r/-/.migration-notes.md
https://datahub.io/logistics/postal-codes-ro/_r/-/ATTRIBUTION.txt
https://datahub.io/logistics/postal-codes-ro/_r/-/README.md
https://datahub.io/logistics/postal-codes-ro/_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-ro/_r/-/datapackage.yaml
README.md— documentation
https://datahub.io/logistics/postal-codes-ro/_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-ro-sample

About

Last updated
2 October 2026
Total rows
100
Format
CSV
File size
7.8 kB

About this dataset

Romania (RO): 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.48 (closed 2026-10-02)
  • Commit: cae46e1 (worktree commit 391bf6b), landed in batch 3; plus 83fe026 (xlrd in requirements-producers.txt, by the orchestrator)
  • Parity verdict: format-only (gate passes)
  • Producer: custom, refresh disabled

Sources

InputURLNotes
Poșta Română postal-code workbook infocod-cu-siruta-mai-2016.xlshttps://data.gov.ro/dataset/3eb7dc31-e53e-4c09-b2e2-87c909e68fb6/resource/4f83414b-d697-4768-845d-c31bd9173734/download/infocod-cu-siruta-mai-2016.xlsThe CKAN resource the old builder used. OGL-ROU-1.0
  • The CKAN package_show API (checked 2026-10-02) lists nothing newer than September 2016, so there is no "latest" to resolve. The catalogue has a second resource with the same file name (29a5c89e-…, dated 2016-09-06); the producer keeps the old builder's 4f83414b-….
  • GeoNames is not fetched. The orchestrator's prompt said ro also used the GeoNames export and dump, but build_geonames_alternative.py was a fallback that never shipped (its docstring and the "Final decision" in .licensing-notes.md, 2026-08-28). The live zip matches the data.gov.ro build exactly.
  • Reading .xls needs xlrd (2.0.1), imported lazily so tests run without it.

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

Rows: 54,096 live and 54,096 fresh, none only on one side, 0 changed cells. With CRs stripped, the fresh CSV is byte-identical to live (cmp). The only difference is CRLF→LF.

The informational sample check reported unexplained against postal.datahub.io/ro/ro.csv. It doesn't feed the gate, and the cause was not traced.

Decisions

DecisionByBasis
Accept CRLF→LFStanding rule (line-ending-only, user, 2026-10-02)format-only passes the gate
Don't fetch GeoNames; drop build_geonames_alternative.pyAgent; landed by the orchestrator without changeIt never shipped; the live data comes only from the data.gov.ro workbook
Add xlrd==2.0.1 to requirements-producers.txtOrchestrator (commit 83fe026)The agent couldn't edit outside datasets/ro/. A re-run from the main venv reproduced ro exactly, and the build was a no-op
Remove row counts from README and description; replace the licence_status.decision sentence with "Cleared for commercial sale."Orchestrator instruction (README counts rule, plan §4 P5); the wording is the agent'sCounts drift

Transforms carried over

From build_postal_codes_product.py (now removed, with build_geonames_alternative.py and publish_r2.py):

  • Three sheets, three shapes: "Bucuresti" and "Localitati peste 50.000 loc" at street level, "Localitati sub 50.000 loc" at locality level.
  • place_name = "Tip artera" + "Denumire artera", with only the ends stripped (inner double spaces are kept, as shipped); Localitate on the locality sheet.
  • admin_code1 = ISO 3166-2:RO code without the "RO-" prefix, from an ASCII-folded crosswalk of the 41 județe (cedilla and comma-below both match); București = B. An unmapped județ is an error.
  • București rows get "Sector N" in admin_name2. SIRUTA / SIRUTA SECTOR → admin_code2, SIRSUP → admin_code3, as plain integers (never "179141.0"). Postal codes zero-padded to 6 digits.
  • The house-number column has no place in the schema; rows that become exact duplicates without it collapse to the first.
  • No coordinates, accuracy or alternative names: the source has none.
  • The old asserts are now ProducerErrors: known județ, 6-digit postal code, unique (postal_code, place_name), every județ plus București present, expected sheets and columns. No row-count assert.

Open questions

  • Resolved (user, 2026-10-05, pc-28e.7.59): dropping GeoNames and building from the data.gov.ro workbook only is accepted.
  • The source is dated 2016 and has no newer release; staleness is disclosed in the README and ATTRIBUTION.txt. If it becomes unacceptable, the .licensing-notes.md fallback (GeoNames) would be a source switch and needs your decision.
  • .licensing-notes.md still contains counts (e.g. "37,915 rows", "55,407 rows"); it is left for the end-of-epic sweep (pc-hfz).

Provenance

Reconstructed 2026-10-05 from the agent transcript 2479b1c9-c4dd-47e5-be82-34ccf8d49a80/subagents/agent-ae7e06c045a1334d0.jsonl (the run was cut off by a rate limit and resumed), the orchestrator session 2479b1c9-…, the commit messages (cae46e1, 83fe026), docs/parity/p5.md and the bd close reason.