Parcel at a Pin API: survey number and revenue codes from a coordinate
Yes. ownership_lookup takes a latitude and longitude and returns the Tamil Nadu land parcel under it: survey number and sub-division, village, taluk and district with their revenue codes, whether it sits in the village (rural) or town survey (urban) register, its ULPIN, and its measured extent. It is the first step of a "who owns this land" question: it locates the parcel and gives you the codes, and the recorded holder then comes from fetch_land_record. It costs 1 credit per parcel found, and nothing when no mapped parcel lies under the point.
https://verified.realestate/api/v1/tools/ownership_lookup- Price
- 1 credit per answer
- Source
- State cadastral boundary layer
- Coverage
- Tamil Nadu
- Answers in
- Usually under 5 seconds
Example
curl -X POST https://verified.realestate/api/v1/tools/ownership_lookup \
-H "Authorization: Bearer $LANDLENS_KEY" \
-H "Content-Type: application/json" \
-d '{"lat":12.901,"lng":80.2279}'
{
"ok": true,
"status": "ok",
"data": {
"found": true,
"ownership": {
"district_code": "02",
"district_name": "Chennai",
"taluk_code": "11",
"taluk_name": "Sholinganallur",
"village_code": "013",
"village_name": "Sholinganallur- 1",
"survey_number": "722",
"sub_division": "",
"rural_urban": "rural",
"firka_ward_number": null,
"urban_block_number": null,
"ulpin": "74S3B0DD73P3H0",
"centroid": "12.899352,80.227803",
"extent_sqm": 19342.7355201617,
"extent_source": "measured",
"patta_district_code": "02",
"patta_taluk_code": "11/Y",
"patta_village_code": "013",
"latitude": 12.901,
"longitude": 80.2279
}
},
"credits_charged": 1
}
A real answer from the API (22 Oct 2026, a point in Sholinganallur, Chennai), with two internal extent fields left out.
What it returns
One point, one parcel, under ownership. It locates the land; it does not name the owner.
| Field | What it holds |
|---|---|
district_code, taluk_code, village_code | The revenue codes the land record tools take. |
district_name, taluk_name, village_name | Where the parcel is. |
survey_number, sub_division | The survey number of the parcel under the point. |
rural_urban | rural for village survey land, urban for town survey land, so you know which record to ask for (patta or TSLR). |
firka_ward_number, urban_block_number | For town survey land: the ward and block. |
ulpin | The parcel's Unique Land Parcel Identification Number. |
centroid | A point inside the parcel, as "lat,lng". |
extent_sqm, extent_source | The parcel's extent in square metres, and where it came from (measured from the boundary). |
patta_district_code, patta_taluk_code, patta_village_code | The codes as the revenue register writes them for a patta request. |
latitude, longitude | The point you sent. |
Inputs
The JSON body of the POST is the arguments. A point in decimal degrees.
| Argument | Type | What to send |
|---|---|---|
latrequired |
number | Latitude in decimal degrees |
lngrequired |
number | Longitude in decimal degrees |
Code
Set LANDLENS_KEY to your key. In an AI app, connect https://verified.realestate/mcp once and ask in plain words instead. In Postman, download this API's collection, import it (File, Import) and set apiKey.
curl -X POST https://verified.realestate/api/v1/tools/ownership_lookup \
-H "Authorization: Bearer $LANDLENS_KEY" \
-H "Content-Type: application/json" \
-d '{"lat":12.901,"lng":80.2279}'
import os, requests
r = requests.post(
"https://verified.realestate/api/v1/tools/ownership_lookup",
headers={"Authorization": f"Bearer {os.environ['LANDLENS_KEY']}"},
json={
"lat": 12.901,
"lng": 80.2279
},
timeout=60,
)
body = r.json()
print(body["status"], body["credits_charged"], body["data"])
const res = await fetch("https://verified.realestate/api/v1/tools/ownership_lookup", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.LANDLENS_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"lat": 12.901,
"lng": 80.2279
}),
});
const body = await res.json();
console.log(body.status, body.credits_charged, body.data);
Who owns the land at 12.9010, 80.2279?
Your AI finds the survey number under the point, then fetches the patta for the recorded holder, and says the price of each step.
Responses
Every answer has the same envelope. What status can say for this call:
| status | What it means |
|---|---|
ok | A mapped parcel lies under the point. Charged 1 credit. |
not_found | No mapped parcel under the point, or the point is outside Tamil Nadu. Nothing is charged. |
invalid_args | lat or lng is missing. |
Where the data comes from
The state cadastral boundary layer (FMB) for Tamil Nadu, joined to the revenue department's village and town codes.
Tamil Nadu, wherever the cadastral map covers the spot. A point outside the state is refused at once.
Read from the copy of the state cadastral layer we hold. A point that falls in a gap of that copy is resolved live at the pin.
The parcel whose boundary contains the point. The extent is measured from that boundary.
Who uses it
Property platforms
Turn a listing's map pin into the survey number and revenue codes a land record check needs.
Lenders
Confirm that the survey number in a loan file is the one under the site the valuer visited.
Field apps
Identify the parcel a surveyor or agent is standing on.
Limits and good practice
- It locates the parcel. It does not name the owner: call fetch_land_record with the codes it returns.
- A point on or near a boundary can fall in the neighbouring parcel. Place it well inside the plot.
- Where the cadastral map does not cover the spot, nothing is returned and nothing is charged.
Pricing
Each parcel found costs 1 credit; nothing when no mapped parcel lies under the point. Credits come from the same LandLens wallet as the chat and the minis. How billing works.
For thousands of calls a month, a portfolio sweep or a platform built on these registers, we quote a customised bulk price, with invoicing to match.
Questions
Is there an API to get a Tamil Nadu survey number from latitude and longitude?
Yes. This one returns the survey number, village, revenue codes, register, ULPIN and extent of the parcel under a point. resolve_parcel does the same job for free with more parcel detail.
Does it return the owner's name?
No. It returns what you need to ask for the owner: the revenue codes and the register. fetch_land_record then reads the patta (village land) or TSLR (town survey land), and owner_at_point does both steps in one call.
How much does it cost?
1 credit per parcel found. Nothing when no parcel lies under the point.
Does it work in Chennai and other cities?
Yes. Town survey land comes back with rural_urban urban and, where recorded, its ward and block.
Updated 22 Oct 2026 · OpenAPI description