BYTETOOLS

PostalPincode.in API

Free Indian pincode API with no key: look up every post office for a PIN code, or find PIN codes by post office name, with district, division and state. Tested example included.

No API key requiredCORS enabledHTTPSFree tier

Endpoint tested and returned HTTP 200 on 2026-08-21

What is the PostalPincode.in API?

PostalPincode.in is a free, key-free API for Indian postal codes. Given a six-digit PIN code it returns every post office in that code with its branch type, delivery status, district, division, circle and state, and it can also search by post office name.

Indian PIN codes are not one-to-one with locations, and that is the thing to understand before building on this. A single code frequently covers many post offices — the example below returns twenty-one for central Delhi's 110001 — so the API returns an array rather than a single record, and picking the first element arbitrarily is a common bug.

The `BranchType` and `DeliveryStatus` fields carry real operational meaning. India Post distinguishes Head, Sub and Branch post offices, and marks each as delivery or non-delivery. For anything involving actual shipment — validating a delivery address, estimating serviceability — filtering to `DeliveryStatus: "Delivery"` is the difference between a correct answer and a plausible-looking wrong one. Note also that the API returns HTTP 200 with a `Status` of `Error` for a code that does not exist, so check the body rather than the status.

Quick facts

Base URL
https://api.postalpincode.in
Authentication
No API key or account. Community-run wrapper over India Post's published data.
Rate limit
No published limit; reasonable use expected. PIN code data changes rarely, so cache it.
Pricing
Free.
CORS
Enabled — callable directly from browser JavaScript
Official docs
Read the docs

How to use the PostalPincode.in API

Every request below was executed against the live API on 2026-08-21, and the response shown is the real body it returned — not an illustration.

1. Look up every post office for PIN code 110001

GET https://api.postalpincode.in/pincode/110001

curl
curl 'https://api.postalpincode.in/pincode/110001'
JavaScript (fetch)
const res = await fetch("https://api.postalpincode.in/pincode/110001");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);
Python (requests)
import requests

res = requests.get("https://api.postalpincode.in/pincode/110001", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200 (truncated)
[
  {
    "Message": "Number of pincode(s) found:21",
    "Status": "Success",
    "PostOffice": [
      {
        "Name": "Baroda House",
        "Description": null,
        "BranchType": "Sub Post Office",
        "DeliveryStatus": "Non-Delivery",
        "Circle": "Delhi",
        "District": "Central Delhi",
        "Division": "New Delhi Central",
        "Region": "Delhi",
        "Block": "New Delhi",
        "State": "Delhi",
        "Country": "India",
        "Pincode": "110001"
      },
      {
        "Name": "Bengali Market",
        "Description": null,
        "BranchType": "Sub Post Office",
        "DeliveryStatus": "Non-Delivery",
        "Circle": "Delhi",
        "District": "Central Delhi",
        "Division": "New Delhi Central",
        "Region": "Delhi",
        "Block": "New Delhi",
        "State": "Delhi",
        "Country": "India",
        "Pincode": "110001"
      },
      {
        "Name": "Bhagat Singh Market",
        "Description": null,
        "BranchType": "Sub Post Office",
        "DeliveryStatus": "Non-Delivery",
        "Circle": "Delhi",
        "District": "Central Delhi",
        "Division": "New Delhi Central",
        "Region": "Delhi",
        "Block": "New Delhi",
        "State": "Delhi",
        "Country": "India",
        "Pincode": "110001"
      },
      {
        "Name": "Connaught Place",
        "Description": null,
        "BranchType": "Sub Post Office",
        "DeliveryStatus": "Non-Delivery",
        "Circle": "Delhi",
        "District": "Central Delhi",
        "Division": "New Delhi Central",
        "Region":

Parameters

ParameterTypeRequiredDescription
pincodepath segmentRequiredSix-digit Indian PIN code, on the `/pincode/{code}` path. 110001
postofficepath segmentOptionalOn the `/postoffice/{name}` path, search by post office name instead. Baroda House

Response fields

Statusstring
`Success` or `Error`. The API returns HTTP 200 either way, so check this field rather than the status code.
Messagestring
Human-readable result, including the count of post offices found.
PostOfficearray
Every post office under that PIN code — often many. Null when the status is Error.
PostOffice[].Namestring
Post office name.
PostOffice[].BranchTypestring
`Head Post Office`, `Sub Post Office` or `Branch Post Office` — India Post's operational hierarchy.
PostOffice[].DeliveryStatusstring
`Delivery` or `Non-Delivery`. Filter on this for anything involving actual shipment.
PostOffice[].District / Division / Region / Circlestring
India Post's administrative hierarchy, which does not always match civil administrative boundaries.
PostOffice[].Statestring
State or union territory.

What you can build with the PostalPincode.in API

  • Auto-fill city, district and state from a PIN code at checkout
  • Validate that a delivery address PIN code is serviceable
  • Build a post office locator for a logistics application
  • Normalise Indian address data in an existing customer database

Common errors and how to fix them

HTTP 200 with Status: Error

The PIN code does not exist.

Fix: Always check the `Status` field. The API never signals a miss through the HTTP status code.

Many results for one PIN code

Not an error — codes cover multiple post offices.

Fix: Do not take the first element blindly. Filter by `DeliveryStatus` or present the options.

Slow response

Community-run service on modest hosting.

Fix: Cache aggressively. PIN code data changes rarely, so a long cache is entirely safe.

PostalPincode.in API — frequently asked questions

Is the India pincode API free?

Yes, free with no API key or account. It is a community-run wrapper over India Post's published postal data.

Why does one PIN code return many post offices?

Because Indian PIN codes are not one-to-one with locations — central Delhi's 110001 covers twenty-one post offices. The API returns an array, and taking the first element arbitrarily is a common source of wrong addresses.

What does DeliveryStatus mean?

It marks whether the post office actually delivers mail or only handles it. For validating a shipping address or checking serviceability, filter to `Delivery` — non-delivery offices will produce a plausible but wrong answer.

How do I detect an invalid PIN code?

Read the `Status` field in the response body. The API returns HTTP 200 even for a code that does not exist, setting `Status` to `Error` instead, so branching on the HTTP status alone will silently mis-handle it.

Tools that pair with this API

PostalPincode.in is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-21; always check the official documentation before relying on this API in production, as terms and limits can change.