Survey Number from Location API for Tamil Nadu
Yes. The LandLens parcel lookup takes a latitude and longitude anywhere in Tamil Nadu and returns the land parcel under it: survey number and sub-division, village, taluk and district with their revenue codes, whether it is village land or town survey land, the ULPIN, the extent and the parcel boundary as GeoJSON. For town survey land it also returns the ward and block. It is the first call before almost every other land record call, and it costs nothing.
https://verified.realestate/api/v1/tools/resolve_parcel- Price
- Free
- Source
- State cadastral boundary map
- Coverage
- All of Tamil Nadu, village and town land
- Answers in
- Usually under a second
Example
curl -X POST https://verified.realestate/api/v1/tools/resolve_parcel \
-H "Authorization: Bearer $LANDLENS_KEY" \
-H "Content-Type: application/json" \
-d '{"lat":12.842117,"lng":80.030955}'
{
"ok": true,
"status": "ok",
"data": {
"found": true,
"lat": 12.842117,
"lng": 80.030955,
"survey_number": "65",
"sub_division": "4B",
"rural_urban": "rural",
"ulpin": "74QA3LDD0UTRH0",
"district_code": "03",
"taluk_code": "14",
"village_code": "196",
"firka_ward_number": null,
"urban_block_number": null,
"district_name": "Kancheepuram",
"taluk_name": "Kundrathur",
"village_name": "Kavanoor",
"extent": "0.05",
"extent_unit": "hectares",
"extent_hectares": 0.05,
"extent_acres": 0.124,
"extent_source": "recorded",
"land_data": {
"district_code": "03",
"district_name": "Kancheepuram",
"taluk_code": "14",
"taluk_name": "Kundrathur",
"village_code": "196",
"village_name": "Kavanoor",
"survey_number": "65",
"sub_division": "4B",
"rural_urban": "rural",
"firka_ward_number": null,
"urban_block_number": null,
"ulpin": "74QA3LDD0UTRH0",
"geojson_geom": "{\"type\":\"Polygon\",\"coordinates\":[[[80.030925673,12.842313841],[80.031065013,12.842301679],…]]}",
"centroid": "12.842117,80.030955",
"patta_no": "2883",
"land_type": "Wet",
"extent_ares": "5",
"extent_hectares": "0.05"
}
},
"credits_charged": 0
}
A real answer from the API (22 Oct 2026). The boundary coordinates are shortened.
What it returns
One call, one parcel. found is false (status not_found) when no parcel is mapped at the point, for example water, a road, or a point outside Tamil Nadu.
| Field | What it holds |
|---|---|
survey_number, sub_division | The survey number and its sub-division, e.g. 65 and 4B. sub_division is empty when the survey is not divided. |
district_code, taluk_code, village_code | The revenue codes every other land record call takes. For town survey land village_code is the town code. |
district_name, taluk_name, village_name | Where the parcel is, in the register's spelling. |
rural_urban | rural for village survey land (patta, chitta, A-register), urban for town survey land. |
firka_ward_number, urban_block_number | For town survey land: the ward and block. A town survey number is unique only within its block, so pass these on as ward_code and block_code. |
ulpin | The 14-character Unique Land Parcel Identification Number, where the state map carries one. |
extent_hectares, extent_acres, extent_unit | The parcel's extent in hectares and acres. |
extent_source, extent_note | recorded when the extent is read from a land record; measured when it was traced off the map because no record states one. A measured extent comes with extent_note. |
land_data | The full parcel record: the boundary as GeoJSON (geojson_geom), a point inside it (centroid), and for village land the patta number, land type (Wet, Dry, Poramboke) and the register's extent in ares and hectares where we hold them. |
is_parcel, match_level, matched_area_acres | Set when the only boundary at the point is a village-sized area rather than a plot. Do not treat that survey number as the property's identity. |
identity_ambiguous, identity_warning | Set when the map sheet at the point is filed under a different village serial from the one on the row, so the village name and codes may belong to a neighbouring village. |
Inputs
The JSON body of the POST is the arguments. A real point inside the plot. For a place name, use resolve_revenue_codes or places_search first and call this on the point they return.
| Argument | Type | What to send |
|---|---|---|
latrequired |
number | Latitude in decimal degrees, from a map pin, a shared location or an earlier call. Never an estimate for a place name. |
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/resolve_parcel \
-H "Authorization: Bearer $LANDLENS_KEY" \
-H "Content-Type: application/json" \
-d '{"lat":12.842117,"lng":80.030955}'
import os, requests
r = requests.post(
"https://verified.realestate/api/v1/tools/resolve_parcel",
headers={"Authorization": f"Bearer {os.environ['LANDLENS_KEY']}"},
json={
"lat": 12.842117,
"lng": 80.030955
},
timeout=30,
)
body = r.json()
print(body["status"], body["credits_charged"], body["data"])
const res = await fetch("https://verified.realestate/api/v1/tools/resolve_parcel", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.LANDLENS_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"lat": 12.842117,
"lng": 80.030955
}),
});
const body = await res.json();
console.log(body.status, body.credits_charged, body.data);
What survey number is the land at 12.842117, 80.030955, and how big is it?
Your AI calls the free parcel lookup and reads back the survey number, village and extent.
Responses
Every answer has the same envelope. What status can say for this call:
| status | What it means |
|---|---|
ok | A parcel was found at the point. Check extent_source, and is_parcel when it is present. |
not_found | No parcel is mapped at the point (water, a road, ground the state map does not cover), or the point is outside Tamil Nadu. message or note says which. |
invalid_args | lat or lng is missing. |
free_limit_reached | The account has used its free calls for the hour or the day. retry_after says how many seconds to wait; paid calls keep working. |
Where the data comes from
The Tamil Nadu cadastral boundary layer (the FMB parcel map published by the state GIS), joined to the revenue A-register for village land and the town survey land register for urban land.
Every district of Tamil Nadu, village survey land and town survey land. A point outside Tamil Nadu is answered as not found at once. Where a town has not yet been mapped parcel by parcel, the point can fall on a larger parent area, and the answer says so.
Read from our copy of the state parcel map, refreshed from the state GIS, with the state service as a fallback when our copy has no parcel at the point. Boundaries change only when the survey department redraws them.
The point is placed in the parcel polygon that contains it. The extent is the one a land record states where we hold it (extent_source recorded); where no record states one, it is measured from the mapped boundary (extent_source measured) and the answer says so.
Who uses it
Property platforms
Show the survey number and village of a listing from its map pin, and link straight to its land record.
Lenders
Confirm that the survey number in the loan file is the parcel at the site the valuer visited.
Developers
Get the revenue codes once, then chain them into the land record, FMB sketch, guideline value and EC calls.
Advocates
Check that the survey number in a deed matches the ground the client points to on the map.
Limits and good practice
- The answer is only as good as the point. A pin near a boundary can land on the neighbouring parcel; place it in the middle of the plot.
- A measured extent is a map tracing, not the registered extent. The two routinely differ by 10 to 15 percent.
- This identifies the parcel. The owner and the register entry are the separate land record call.
- For town survey land always carry firka_ward_number and urban_block_number forward. Without the block, a town survey number can point to a different plot.
Pricing
The parcel lookup costs nothing. Free calls have their own allowance per hour and per day, counted across every key and connected app on the account. Credits come from the same LandLens wallet as the chat and the minis. How billing works.
Free calls have an hourly and daily allowance. For more than that, or a platform built on these registers, we set up limits and a plan to match.
Questions
Is there an API to find a survey number from latitude and longitude in Tamil Nadu?
Yes, this one. Send lat and lng and you get the survey number, sub-division, village, taluk, district, revenue codes, ULPIN, extent and boundary of the parcel under the point, as JSON over HTTPS or as an MCP tool.
Does it give the owner's name?
No. It identifies the parcel. The patta holder comes from fetch_land_record, which takes the codes this call returns.
Does it work for city land?
Yes. Town survey parcels come back with rural_urban urban and the ward and block, which the town survey register needs.
Why is the extent marked measured?
No land record we hold states an extent for that parcel, so it was measured from the mapped boundary. Quote it as an approximate mapped area, not the registered extent.
What does it cost?
It costs nothing, within the account's free call allowance.
Updated 22 Oct 2026 · OpenAPI description