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.
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
- Government Open Data License - India license
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
Postal Codes Data Resource for India, IN
| 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 |
Download
Download sample CSVAbout
- Last updated
- 3 September 2026
- Total rows
- ...
- Format
- CSV
- File size
- 12.1 MB
About this dataset
India (IN) — internal licensing notes
Tier-1 official source lead, 2026-09-03 — promising, not yet verified in full
A likely-better source exists and needs a follow-up fetch pass before
committing to GeoNames. The Open Government Data (OGD) Platform India
(data.gov.in) publishes "All India Pincode Directory" and "All India
Pincode Directory (Till Last Month)" — official datasets covering circle,
region, division, post office name/type, and location per PIN code. Direct
page fetches were blocked (403) in this pass; content/schema/currency
(critically, whether it reflects the 2019 Ladakh split GeoNames misses)
was not independently confirmed and must be checked before switching.
Licence confirmed clean, independent of the content question: OGD
Platform India datasets are published under the Government Open Data
License – India (GODL-India), under the National Data Sharing and
Accessibility Policy. Verified terms: worldwide, royalty-free,
non-exclusive licence covering commercial and non-commercial use,
adaptation, and derivative works, conditioned on a specified attribution
statement (data provider, year, dataset name, repository, version/date,
URL, licence name+URL). No SPDX id exists for this licence — would be
recorded as custom:godl-india-1.0 per this project's convention (same
pattern as Singapore's ODL).
Build — 2026-09-03, official source confirmed and used
Fetched dropdevrahul/pincodes-india's pincode.csv directly. Verified
its schema matches the exact known official structure byte-for-byte
(CircleName, RegionName, DivisionName, OfficeName, Pincode, OfficeType,
Delivery, District, StateName, Latitude, Longitude) — a faithful,
unmodified republish of the government file, used only as a fetch
convenience; licence attributed to the true rightsholder (GODL-India), not
to that repository's own self-declared MIT claim, which cannot grant
rights over data it does not own. Confirmed decisive: 36 states/UTs
including Ladakh (112 rows) — exactly the gap GeoNames has. Switched to
this source; GeoNames is not used for IN at all in this build.
Real data-quality issues found and fixed, not silently shipped:
- 9,260 rows have unusable coordinates in the source (
"NA"on one or both sides, or the exact sentinel pair1.0000000/1.0000000) — blanked (both fields), not guessed at. - ~150 rows had a trailing-minus sign instead of a leading one
(
"38.0621050-"), and a handful had a trailing hemisphere letter ("21.9161 N") — both are recoverable, real coordinates, normalized rather than discarded (noS/Wvalues exist in this source, so no sign-flip cases apply). - 12 exact full-row duplicates dropped; 12 further (Pincode, OfficeName, District) groups had conflicting rows for the same office (one with a real coordinate, one with a placeholder, or two different real coordinates) — resolved by preferring the valid coordinate, and the 12 cases with two genuinely different valid coordinates are disclosed in ATTRIBUTION.txt rather than silently picked as certain.
- Bug caught during Frictionless validation: the dedup grouping key
initially used
DivisionName(a postal-routing tier not shipped in the output), while the declared primary key usesDistrict(admin_name2, which IS shipped) — different fields, so grouping on the wrong one left 3 real duplicate rows on the actual shipped key. Frictionless caught this immediately (valid: False, 3 primary-key violations); fixed by grouping onDistrictto match the shipped key exactly, plus added a hard assertion in the build script so this class of mismatch can't silently reappear.
| value | |
|---|---|
| Final rows | 157,087 |
| States/UTs covered | 36/36 (Ladakh: 112 rows) |
| Districts | 732 |
| Distinct PIN codes | 19,300 |
| Rows with blanked coordinates | 9,260 |
| Exact duplicates dropped | 12 |
| Conflicting-coordinate groups disclosed | 12 |
Frictionless validation: valid: True (after the dedup-key fix above).
Zero literal "nan" strings, zero malformed postal codes, zero
unparseable coordinate strings remaining.
Status: built and validated locally only. Nothing published to R2, nothing committed to git yet.
GeoNames research, 2026-09-03 (superseded — kept for record, NOT used)
GO, with a real coverage-currency gap flagged before any build. GeoNames' postal export has a genuine 3-tier structure and is clean at the row level, but its state/UT coverage is missing a 2019 administrative change, and its own admin1 codes are internal numbers with no relationship to ISO 3166-2:IN.
The source — GeoNames IN
https://download.geonames.org/export/zip/IN.zip # 155,570 rows
Licence CC-BY-4.0, verified against export/zip/readme.txt on
2026-09-03 — India carries no per-country caveat (the readme's only
restricted countries are GB, CL, CN, IE, MT, AR, BR).
Verified directly against the raw source file:
admin_name1/admin_code1— State/UT, 35 distinct values, not the real current 36 (28 states + 8 union territories). Zero rows mention Ladakh anywhere — confirmed by direct search of the raw file. Ladakh split from Jammu & Kashmir into its own union territory in October 2019 and has its own ISO code (IN-LA, verified against Wikipedia's ISO_3166-2:IN page 2026-09-03); GeoNames' postal export has not been updated to reflect this, six years on. This is a real, disclosable currency gap, not a coverage hole we introduce — the source itself is stale here.- GeoNames' own
admin_code1is an internal numeric id with gaps (01, 02, 03, 05, 07, 09...), completely unrelated to ISO 3166-2:IN, which uses 2-letter alpha codes (IN-AP,IN-MH,IN-DL…). Same hazard class as JP/CZ in this batch: a naive numeric-prepend build would produce nonsense codes, not just wrong ones. Requires a full name-based crosswalk (35 rows). admin_name2— District, 658 distinct values.admin_name3— populated on 100% of rows (155,570/155,570) — genuinely complete 3-tier data, better than JP's partial admin3 coverage.admin_code3is always empty — no official third-tier code exists in this source, name-only.- 12 exact full-row duplicates in the raw source (dedupe fixes them). Real primary key verified as (postal_code, place_name, admin_code2, admin_name3) — 0 collisions after dropping the 12 exact duplicates.
- Row-level data is clean at the source: 0 literal
"nan"strings, 0 float-formatted numeric fields. The "nan"/float corruption visible in the currently-live barein.csvwas introduced downstream of GeoNames, same as every other untouched legacy country here — not present upstream.
licence_status (as shipped — GODL-India source, not GeoNames)
{
"channel": "postal-codes-r2",
"source_url": "https://www.data.gov.in/catalog/all-india-pincode-directory",
"licence_id": "custom:godl-india-1.0",
"collected_at": "2026-09-03",
"decision": "compatible",
"decided_by": "claude-session-2026-09-03",
"decided_at": "2026-09-03"
}
Tier
B ($49). Official government source with real, disclosed data-quality work (coordinate normalization, dedup-key correction caught by validation), not a trivial pass-through — same shape as AT/LU/BE in this catalogue's GeoNames-only tier B builds, but the source here is stronger (tier-1 official, not a third-party gazetteer).
Verdict
Built and shipped using the GODL-India source, not GeoNames. The GeoNames path documented below is retained for the record only — it was not used, since the official source resolved the Ladakh gap that made GeoNames unusable in the first place.