India Property Register
On this page
API documentation

India Property Register API

JSON over HTTPS for the land and property register of India: every state, district, tehsil and village with LGD codes, boundaries and pincodes, the portals that hold each state's land records, and plots as they are loaded. Plus an MCP server for AI tools.

Base URL https://indiapropertyregister.com/api/v1. Machine-readable spec: openapi.json

Get an API key: ₹50 free

Authentication

Every request needs an API key of your account in a header. Sign up with your email (₹50 of free credit, no approval) and make keys under API keys. MCP clients can sign in with OAuth instead (MCP server).

Header
Authorization: Bearer YOUR_KEY
# or
X-API-Key: YOUR_KEY
Keep keys secret: calls made with a key are billed to your wallet. Revoke a key and make a new one at any time on your dashboard.

Quick start

  1. Create an account and copy your key (₹50 of free credit to start).
  2. Find a place: GET /api/v1/search?q=....
  3. Read the village: GET /api/v1/village/{lgd}, with ?geometry=geojson for its boundary.
  4. Ask where its land records are: GET /api/v1/sources?state={lgd}.
GET/api/v1/village/{lgd}

Village

One village by LGD code: Census 2011 code, pincode, area, centre point, state, district, tehsil, block and gram panchayat with their LGD codes, neighbouring villages, the government portals that hold its land records, and plots on the register. Add geometry=geojson for the boundary.

ParameterInTypeRequiredDescription
lgdpathintegerYesLGD village code
e.g. 125245
geometryquerystringNogeojson: include the boundary as a GeoJSON MultiPolygon
Example request
curl -H "Authorization: Bearer YOUR_KEY" \
  "https://indiapropertyregister.com/api/v1/village/125245?geometry=geojson"
Example response, 200 OK (abridged)
{
  "lgd": 125245, "name": "...", "census2011": "...", "pincode": "...", "area_hectares": 412.6,
  "centre": { "lat": 28.81, "lon": 79.02 }, "state": { "lgd": 9, "name": "Uttar Pradesh" },
  "district": { "lgd": 158, "name": "..." }, "tehsil": { "lgd": 780, "name": "..." },
  "block": { "lgd": 0, "name": "..." }, "gram_panchayat": { "lgd": 0, "name": "..." }, "plots": 0,
  "neighbours": [ { "lgd": 0, "name": "...", "tehsil": "..." } ],
  "land_record_sources": [ { "id": "up_bhulekh_ror", "layer": "ror", "name": "UP Bhulekh", "url": "https://upbhulekh.gov.in/", "access": "captcha", "records": ["Khatauni"] } ],
  "geometry": { "type": "MultiPolygon", "coordinates": [ ... ] }, "url": "https://indiapropertyregister.com/village/...",
  "note": "Revenue records are not proof of title and this is not a certified copy. Verify with the issuing office."
}
GET/api/v1/states

States and union territories

All 36 with LGD codes, Census 2011 codes, counts of districts, villages and plots, and whether land records are online.

Example request
curl -H "Authorization: Bearer YOUR_KEY" \
  "https://indiapropertyregister.com/api/v1/states"
Example response, 200 OK (abridged)
{ "count": 36, "states": [ { "lgd": 9, "name": "Uttar Pradesh", "kind": "state", "districts": 75, "villages": 96061, "plots": 0, "land_records_status": "online", "url": "..." } ] }
GET/api/v1/state/{lgd}/districts

Districts of a state

Districts with LGD and Census codes, tehsil and village counts.

ParameterInTypeRequiredDescription
lgdpathintegerYesLGD state code
e.g. 9
Example request
curl -H "Authorization: Bearer YOUR_KEY" \
  "https://indiapropertyregister.com/api/v1/state/9/districts"
Example response, 200 OK (abridged)
{ "state": { "lgd": 9, "name": "Uttar Pradesh" }, "count": 75, "districts": [ { "lgd": 158, "name": "...", "tehsils": 5, "villages": 1150, "url": "..." } ] }
GET/api/v1/district/{lgd}/tehsils

Tehsils of a district

Tehsils (talukas, mandals, circles, anchals) with LGD codes and village counts.

ParameterInTypeRequiredDescription
lgdpathintegerYesLGD district code
Example request
curl -H "Authorization: Bearer YOUR_KEY" \
  "https://indiapropertyregister.com/api/v1/district/158/tehsils"
Example response, 200 OK (abridged)
{ "district": { "lgd": 158, "name": "...", "state": "Uttar Pradesh" }, "count": 5, "tehsils": [ { "lgd": 780, "name": "...", "villages": 240, "url": "..." } ] }
GET/api/v1/tehsil/{lgd}/villages

Villages of a tehsil

Every village of a tehsil with LGD code, pincode, gram panchayat, area and plots on the register.

ParameterInTypeRequiredDescription
lgdpathintegerYesLGD sub-district code
Example request
curl -H "Authorization: Bearer YOUR_KEY" \
  "https://indiapropertyregister.com/api/v1/tehsil/780/villages"
Example response, 200 OK (abridged)
{ "tehsil": { "lgd": 780, "name": "...", "district": "...", "state": "..." }, "count": 240, "villages": [ { "lgd": 125245, "name": "...", "pincode": "...", "gram_panchayat": "...", "area_hectares": 412.6, "plots": 0, "url": "..." } ] }
GET/api/v1/pincode/{pin}

Pincode

A pincode area (office, division, region, circle, district and state) and the villages inside it.

ParameterInTypeRequiredDescription
pinpathstringYes6-digit pincode
e.g. 244901
Example request
curl -H "Authorization: Bearer YOUR_KEY" \
  "https://indiapropertyregister.com/api/v1/pincode/244901"
Example response, 200 OK (abridged)
{ "pin": "244901", "office": "...", "division": "...", "district_lgd": 158, "state_lgd": 9, "villages": [ { "lgd": 125245, "name": "...", "tehsil": "...", "district": "..." } ] }
GET/api/v1/sources

Land record sources

Government portals for land records, maps, registration, encumbrance, RERA, circle rates, property tax and more, with access details. With state, also how that state keeps its land records: record names, admin hierarchy, plot identifier terms and a glossary.

ParameterInTypeRequiredDescription
statequeryintegerNoLGD state code
e.g. 27
layerquerystringNoror, map, registration, ec, rera, circle_rate, tax, property_card, notice, charge, court, revenue_court, acquisition, restricted, geo, programme
Example request
curl -H "Authorization: Bearer YOUR_KEY" \
  "https://indiapropertyregister.com/api/v1/sources?state=27"
Example response, 200 OK (abridged)
{ "state": { "lgd": 27, "name": "Maharashtra" }, "land_records": { "records": [ { "name": "7/12 (Satbara)", "what": "..." } ], "hierarchy": ["District","Taluka","Village","Survey / Gat number"], "glossary": [ ... ] },
  "count": 14, "sources": [ { "id": "mh_mahabhulekh_ror", "layer": "ror", "name": "Mahabhulekh", "url": "https://bhulekh.mahabhumi.gov.in/", "access": "captcha", "on_register": false } ] }
GET/api/v1/stats

Coverage counts

How many states, districts, tehsils, villages, pincodes, towns, wards and plots the register holds.

Example request
curl -H "Authorization: Bearer YOUR_KEY" \
  "https://indiapropertyregister.com/api/v1/stats"
Example response, 200 OK (abridged)
{ "states": 36, "districts": 785, "tehsils": 6471, "villages": 546000, "pincodes": 19312, "ulbs": 3360, "wards": 70415, "parcels": 0, "data_date": "2026-10-12" }

Errors

Errors are JSON: {"error": "code", "message": "what to fix", "docs": "https://indiapropertyregister.com/api/docs"}.

StatusCodeMeaning
400invalid_* / unknown_parameter / missing_qA parameter is missing, malformed or not allowed on this endpoint. The message lists what is allowed.
401api_key_requiredNo key, or the key is unknown, revoked or expired.
402insufficient_balanceThe wallet cannot pay for the call (₹0.16). Top up on /account/payments or with POST /account/topup.
404not_foundNo record with that identifier.
422individualCourt searches are not run on the names of private individuals.
403account_suspendedThe account is suspended. Write to [email protected].
429quota_exceededThe key reached its daily safety cap (100,000 calls by default). Resets at midnight IST.
503cases_unavailable / parse_unavailableAn upstream service did not answer in time. Retry after a minute.

Billing and limits

Your account has a prepaid wallet. Each successful call (HTTP 200) costs ₹0.16, including searches that find nothing; errors (400, 404, 422, 503), refused calls and the account endpoints are free. A page of a list is one call. When the wallet cannot pay, calls return 402 insufficient_balance until you top up with ₹500, ₹5,000 or ₹50,000 (plus 18% GST) on your dashboard. Every call, billed or not, is in your usage log with a CSV download. GST invoices are issued by Billion Insights Ventures Pvt. Ltd.: for one, email [email protected] or call +91 87004 99972.

Each key also has a daily safety cap (100,000 calls by default; 429 past it, resets at midnight IST). List endpoints return at most 100 records per call. For higher caps or bulk deliveries, write to [email protected].

Account and wallet (free)

The same key reads its own account. None of these calls is billed.

Balance, price and packs
curl -H "Authorization: Bearer YOUR_KEY" https://indiapropertyregister.com/api/v1/account
Start a top-up (returns pay_url for the account owner)
curl -X POST -H "Authorization: Bearer YOUR_KEY" -H "Content-Type: application/json" \
  -d '{"amount": 500}' https://indiapropertyregister.com/api/v1/account/topup
Payment status, recent calls
curl -H "Authorization: Bearer YOUR_KEY" https://indiapropertyregister.com/api/v1/account/payments/{payment_id}
curl -H "Authorization: Bearer YOUR_KEY" "https://indiapropertyregister.com/api/v1/account/usage?limit=50"

For AI agents

Agents can sign a person up, connect, check the wallet and start a top-up without a browser. The protocol is in /auth.md: the agent posts the person's email to /agent/identity, we email them a code, and the agent exchanges it at /agent/identity/claim for an API key. MCP clients use OAuth 2.1 (discovery at /.well-known/oauth-authorization-server). Top-ups are also offered as UCP and ACP checkout sessions; the person always pays on a Razorpay page, never the agent. Discovery: API catalog, MCP server card, A2A agent card, agent skills. Any page is available as Markdown with Accept: text/markdown.

Enum reference

Source layers

ror record of rights, map cadastral maps, registration, ec encumbrance certificate, rera, circle_rate, tax municipal property tax, property_card, notice, charge, court, revenue_court, acquisition, restricted, geo, programme.

Access

open, captcha, login, otp, paid, api, g2g (government only), na (not online).

Codes

Places use Local Government Directory (LGD) codes: state, district, sub-district (tehsil), block, village and gram panchayat. Census 2011 codes are given where known.

MCP server

Server URL https://indiapropertyregister.com/mcp (Streamable HTTP). Clients that support OAuth (Claude, ChatGPT and others) sign in with your India Property Register account when you add the URL: no key to copy. Others take an API key as a header. Tool calls are billed like API calls.

Claude Code
claude mcp add --transport http indiapropertyregister https://indiapropertyregister.com/mcp --header "Authorization: Bearer YOUR_KEY"
mcp.json (Claude Desktop, Cursor, others)
{
  "mcpServers": {
    "indiapropertyregister": {
      "type": "http",
      "url": "https://indiapropertyregister.com/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_KEY"
      }
    }
  }
}

Tools: search_places, get_village, list_states, list_districts, list_tehsils, list_villages, get_land_record_sources, and the free wallet tools get_wallet, top_up_wallet and get_payment.

Code examples

cURL
curl -H "Authorization: Bearer YOUR_KEY" \
  "https://indiapropertyregister.com/api/v1/search?q=Rampur"

Best practices

  • Cache what you repeat: the place hierarchy changes rarely.
  • Store LGD codes, not names: names are spelled differently by every portal.
  • Show the source and date of any land record you display, and never present it as proof of title.