Autocomplete, validate and search addresses with a developer-friendly API. Look up any Indian PIN code, geocode a locality, and bulk-import your own address data from Excel or CSV.
GET /api/v1/pincode/226010
X-API-Key: YOUR_API_KEY
{
"success": true,
"pincode": "226010",
"state": "Uttar Pradesh",
"district": "Lucknow",
"city": "Lucknow",
"localities": ["Gomti Nagar", "Vibhuti Khand"]
}
One API for lookup and validation, plus a dashboard for managing your own address database at scale.
Ranked type-ahead that understands "gomti nagar luc" — locality first, then city, district and state.
Resolve any Indian PIN code to its state, district, city, post offices and localities.
Score an address against reference data and get a corrected, canonical version back.
Forward and reverse geocoding with rooftop, locality and PIN centroid precision levels.
Every query path is index-backed, cached and paginated. No full scans, at any table size.
Versioned REST, predictable JSON envelopes, request IDs on every response, and a live playground.
Upload .xlsx, .xls or .csv. Preview before committing, choose how duplicates are handled, download an error report.
Filter by state, district, city, PIN or date, then export to Excel or CSV as a background job.
Authenticate with an X-API-Key
header or a bearer token. Every response carries a request ID, and every
rate-limited response tells you exactly when to retry.
curl "https://address.s2coder.com/api/v1/pincode/226010" \
-H "X-API-Key: YOUR_API_KEY"
$response = Http::withHeaders([
'X-API-Key' => env('S2_ADDRESS_KEY'),
])->get('https://address.s2coder.com/api/v1/address/autocomplete', [
'q' => 'gomti nagar luc',
]);
$suggestions = $response->json('data');
const res = await fetch(
'https://address.s2coder.com/api/v1/address/autocomplete?q=gomti+nagar+luc',
{ headers: { 'X-API-Key': process.env.S2_ADDRESS_KEY } }
);
const { data } = await res.json();
import requests
res = requests.get(
"https://address.s2coder.com/api/v1/address/validate",
headers={"X-API-Key": API_KEY},
json={"address": "Gomti Nagar Lucknow", "pincode": "226010"},
)
print(res.json()["confidence"])
Start free. Every plan uses the same API and the same data.
Free
For evaluation and side projects.
₹2,499 /month
For production apps with moderate traffic.
₹14,999 /month
For high-volume checkout and logistics workloads.
Custom
Custom quotas, dedicated capacity and an SLA.
Quotas are enforced per API key and can be raised at any time from your dashboard.
Reference data (states, districts, PIN codes and localities) comes from openly licensed government datasets and properly licensed commercial providers. We do not scrape third-party address databases. Anything you import stays yours and is never shared with other customers.
They are stored against your account only, and are visible to your API keys alone. Your original row is preserved verbatim alongside the normalised version, so nothing you send us is ever destroyed.
Uploads are capped at 100 MB by default, and files are streamed in chunks by a background worker rather than being loaded into memory. Millions of rows per file is a normal workload.
The API returns HTTP 429 with a Retry-After header and a body telling you which window (minute, day or month) was exceeded and when it resets. Rate-limited calls are still recorded in your logs so you can see the pattern.
Yes. Pass city, district, state or pincode alongside q on the autocomplete endpoint to constrain the result set.
Any time, in .xlsx or .csv, filtered however you like. Exports run as background jobs and appear in your export history with a download link.
Create an account and your first API key is issued immediately. No card required.