Part of a Data Solution
- Explore →
Postal Codes Solution
Every worldwide postal-code dataset in one bundle — the ultimate global reference for precise postal codes.
API Access
Access dataset files directly from scripts, code, or AI agents.
Browse dataset files
API Access
Access dataset files directly from scripts, code, or AI agents.
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.
Start with these files — they give you everything you need to understand and access the dataset.
- 1. Fetch datapackage.yml to inspect schema and resources
- 2. Download data resources listed in datapackage.yml
- 3. Read README.md for full context
Data Files
Explore with AIPostal Codes Data Resource for Russian Federation, RU
| Field | Description | Title |
|---|---|---|
| country_code | ISO 3166-1 alpha-2 code for the country. | Country Code |
| postal_code | Postal code for the location. | Postal Code |
| place_name | Name of the city, town, or place. | Place Name |
| admin_name1 | Primary administrative division (e.g., state, region). | Administrative Name 1 |
| admin_code1 | Code for the primary administrative division. | Administrative Code 1 |
| admin_name2 | Secondary administrative division (e.g., county, district). | Administrative Name 2 |
| admin_code2 | Code for the secondary administrative division. | Administrative Code 2 |
| admin_name3 | Tertiary administrative division (e.g., municipality, borough). | Administrative Name 3 |
| admin_code3 | Code for the tertiary administrative division. | Administrative Code 3 |
| latitude | Latitude coordinate of the place. | Latitude |
| longitude | Longitude coordinate of the place. | Longitude |
| accuracy | Accuracy level of the latitude and longitude coordinates. | Accuracy |
| alternative_city_name | Alternative name(s) for the city or place. | Alternative City Name |
| addressable | Extra field. Source's own flag: 1 = real customer-facing postal code, 0 = internal sorting/technical facility code. | Addressable |
| facility_type | Extra field. Russian-language postal facility type (e.g. Отделение почтовой связи = post office branch). | Facility Type |
Download
Download CSVAbout
- Last updated
- 15 September 2026
- Total rows
- ...
- Format
- CSV
- File size
- 10.1 MB
About this dataset
Russia (RU) — internal licensing notes
Source research, 2026-09-15 — tier-1 check done, real official source found, licence status genuinely open
Current state on the storefront
The samples bucket (ru/ru.csv, checked directly, not the blocked main
bucket) is a stale, defect-carrying GeoNames rebuild — 100 rows,
2026-07-30. admin_code1 is "1.0" etc. — the classic float-cast defect
this project has fixed repeatedly elsewhere (JP/IN/CZ/MD/SK/PK/EE/KE all
had this same class of bug). This alone means the current live product
needs a rebuild regardless of which source is ultimately used.
Tier 1 — Pochta Rossii's own official reference: found, real, licence unresolved
pochta.ru/support/database/ops ("Эталонный справочник почтовых
индексов объектов почтовой связи" — the Reference Directory of Postal
Codes of Postal Facilities) is a genuine, actively-maintained official
source, fetched and read directly (info.pochta.ru mirror, www. domain
itself returns HTTP 417 from this environment — a server-side quirk,
not a block, since the mirror serves identical content).
Confirmed directly from the page text:
- Developed and maintained by Pochta Rossii's own "Дирекция технологий и информатизации" (Directorate of Technology and Informatization).
- Described explicitly as "официальная информация об индексах объектов почтовой связи АО «Почта России»" — official information, not a third-party aggregation.
- Current file:
Pindx.zip, 1 MB, 61,338 records, dated 2026-09-07 — direct download link, no login/paywall. - Format:
.dbf(PIndx[K].dbf), with a documented field structure (linked PDF, not yet parsed in this pass). - Updated on a real cadence: incremental
NPIndx[K].dbfupdate files are published roughly every two weeks (e.g. update 01 dated 2026-01-15), each listing only the changed records since the prior file — this is a maintained pipeline, not a one-off dump.
No licence or terms-of-use text exists anywhere on the page or in the
site footer. Checked directly: no "лицензия", "условия использования",
"правообладатель" language anywhere in the fetched HTML; the footer
carries only a generic "2026 © АО Почта России" company copyright notice,
no data-specific licence grant, no explicit permission or prohibition on
commercial redistribution. This is a genuine open question, not a solved
one — free public download without a stated licence is exactly the
pattern CLAUDE.md's Provenance & Licence Gate exists for: decision
defaults to "unresolved" here, and that is the correct state to record,
not a reason to guess either way.
A third-party mirror exists — and does NOT resolve the licence question
github.com/anpalcactus/russian-postal-codes republishes this same
official file (indexes.csv, 61,333 records — matching the official
61,338 count to within normal churn) plus a KLADR (ФНС/Federal Tax
Service address classifier) cross-reference, refreshed automatically
every two weeks in step with Pochta Rossii's own update cadence. The
repository's own README declares its compiled output CC BY 4.0
("пользуйтесь свободно, укажите источник" — use freely, cite the
source).
This does not transfer to a valid licence for the underlying data. Same reasoning already applied to Sri Lanka's GitHub mirror earlier in this project: a compiler can license their own compilation, transformation, and normalisation work, but cannot grant a redistribution right over Pochta Rossii's data that Pochta Rossii itself never granted. Unlike India's GODL-India GitHub mirror (accepted earlier in this project specifically because it was a verified 1:1 republish of a file already covered by an official OPEN licence), there is no underlying open licence here for the mirror to legitimately republish under CC BY 4.0 — the mirror's CC BY 4.0 claim rests on the compiler's own dataset-normalisation labor, not confirmed permission over Pochta Rossii's source data.
Adjacent official source — KLADR (not independently evaluated this pass)
КЛАДР (Классификатор Адресов России), the Federal Tax Service's national address classifier, is the admin-hierarchy backbone the GitHub mirror above cross-references against. It is a Russian government registry in the same general class as other government address/administrative references treated as low-risk elsewhere in this project (e.g. Angola's Lei 14/24 municipality roster), but its specific reuse terms were not independently verified in this pass — worth checking directly (FNS's own KLADR distribution page) before relying on it for an admin-hierarchy join, rather than inheriting the GitHub mirror's characterization of it.
GeoNames — confirmed viable fallback, not yet built
download.geonames.org/export/zip/RU.zip returns 200: 43,538
rows, standard postal-export format (country, postal_code, place_name, admin_name1, admin_code1, admin_name2..3, admin_code2..3, lat, lon, accuracy). No RU-specific caveat in GeoNames' own export/zip/readme.txt
(only GB, CL, CN, IE, MT, AR, BR carry one) — licence is the standard
CC BY 4.0. admin_code1 needs the same false-friend treatment already
applied to JP/CZ/KE/PK/etc. — GeoNames' own admin_code1 is a two-digit
internal number ("01", "02"…), 80 distinct values observed, and has
not yet been checked against ISO 3166-2:RU in this pass.
A real complication if a build is ever commissioned, flagged now rather than discovered mid-build: Russia's federal-subject count and ISO 3166-2:RU register are genuinely contested internationally — Crimea/ Sevastopol (annexed 2014) and the four regions annexed in 2022 (Donetsk, Luhansk, Zaporizhzhia, Kherson) are included in Russia's own official administrative count but are not universally recognized, and different authoritative sources (ISO itself, ID/UN sources, ordinary gazetteers) disagree on whether/how to code them. This needs an explicit human decision on which register to follow before any admin_code1 crosswalk is built — it is a real content decision, not a data-cleaning detail, and is flagged here specifically so it is not silently resolved one way inside a build script later.
Verdict
No build in this pass — research only, per instruction. Two real paths exist if a build is commissioned:
- Pochta Rossii's own reference (61,338 records, DBF, real named
provider, actively maintained) — richer and more current than
GeoNames, but
licence_status.decisionwould have to be recorded"unresolved"pending an explicit reuse grant; the GitHub mirror's own CC BY 4.0 claim does not resolve this. - GeoNames RU (43,538 rows, CC BY 4.0, no caveat) — immediately licence-clean and buildable today with a verified ISO 3166-2:RU name-based crosswalk (not yet done), but smaller and needs the disputed-territory admin-coding question decided first.
data_available unchanged (false). The current live sample is stale
and defect-carrying either way and should not be treated as evidence RU
is already handled correctly.
Build — EXECUTED 2026-09-15, per explicit instruction to proceed with tier 1
Built from Pochta Rossii's official reference (61,333 records) + KLADR
4.0, fetched via the verified anpalcactus/russian-postal-codes mirror
after 4 distinct direct-fetch attempts against pochta.ru itself all hit
the same WAF block ("Доступ заблокирован … подозрительной активности
… VPN") — a real network-level block from this environment, not a
licence-driven redirect and not evidence the file doesn't exist.
Result: 61,333 rows, 83/83 ISO 3166-2:RU federal subjects covered.
668 rows (Crimea 582, Sevastopol 76, Baikonur 10) carry a deliberate
blank admin_code1 — verified correct: ISO 3166-2:RU assigns no code to
Crimea/Sevastopol at all (confirmed via Wikipedia's own stated position),
and Baikonur is a Kazakh city under Russian lease, not a federal subject.
No coordinates in this source — latitude/longitude/accuracy ship empty
rather than invented. Two extra columns disclosed beyond the core 13
(addressable, facility_type) — 76.5% of rows are real customer-facing
codes, the rest are internal postal-network facility codes, kept rather
than silently dropped. Frictionless: valid: True. QA spot-checks passed:
0 duplicate postal codes (verified unique alone, no composite key
needed), 0 literal "nan" strings, all codes 6 digits, disputed-territory
blanking verified row-by-row (582+76+10 = 668, matches exactly).
licence_status.decision is "unresolved", NOT "compatible" — set
deliberately, per CLAUDE.md's Provenance & Licence Gate default, and
disclosed inside the shipped datapackage.json/ATTRIBUTION.txt
themselves (same convention as VN/JEY), not hidden. See the build
script's docstring for the full reasoning: Pochta Rossii's own page states
no licence/terms at all, and the GitHub mirror's own LICENSE file
explicitly limits its CC BY 4.0 claim to the compiler's normalisation
work, not the underlying official data.
What was NOT done (as of the initial build): datasets/ru/datapackage.yml
was left untouched pending an explicit decision. datasets/ru/scripts/publish_r2.py
existed and was validated (dry run only) but had not been run.
Final decision — 2026-09-15
Presented with the tension against this repo's own precedent (JE and VN
both ship free, not sold, specifically because their licence status
is unresolved — same class of problem, resolved the same way there), the
human decided to follow that precedent for RU: is_premium: false,
no premium_tier, datapackage.yml description states plainly "Provided
free (not sold) because the underlying licence status is unresolved."
This keeps RU consistent with JE/VN rather than introducing a
paid-despite-unresolved exception. licenses[] and sources[] updated
to name the real sources (Pochta Rossii + the KLADR/mirror route) instead
of the old generic "Multiple sources" placeholder.
Published: git (datasets/ru/{datapackage.yml,scripts/}) and the samples
bucket — full file (not a 100-row truncation), per this project's
rule that free datasets get the complete file in the samples bucket, not
a preview. Main R2 bucket publish also attempted for completeness (same
as every other pending country this session) — expected to hit the
same session-wide 403/AccessDenied blocker.