Postal Codes Dataset for India, IN

210
Updated:
Files:1
Size:12.1 MB
Formats:csv

Postal Codes Dataset for India, IN 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
  • Government Open Data License - India license
20% off
$49.90$39.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-in/
https://datahub.io/logistics/postal-codes-in/_r/-/.licensing-notes.md
https://datahub.io/logistics/postal-codes-in/_r/-/README.md
https://datahub.io/logistics/postal-codes-in/_r/-/datapackage.yml
Key Files

Start with these files — they give you everything you need to understand and access the dataset.

datapackage.ymlmetadata & schema
https://datahub.io/logistics/postal-codes-in/_r/-/datapackage.yml
README.mddocumentation
https://datahub.io/logistics/postal-codes-in/_r/-/README.md
Typical Usage
  1. 1. Fetch datapackage.yml to inspect schema and resources
  2. 2. Download data resources listed in datapackage.yml
  3. 3. Read README.md for full context

Data Files

Postal Codes Data Resource for India, IN

About

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 pair 1.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 (no S/W values 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 uses District (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 on District to 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 rows157,087
States/UTs covered36/36 (Ladakh: 112 rows)
Districts732
Distinct PIN codes19,300
Rows with blanked coordinates9,260
Exact duplicates dropped12
Conflicting-coordinate groups disclosed12

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_code1 is 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_code3 is 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 bare in.csv was 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.