Land Parcel Search API by village, taluk or district
Yes. The LandLens area sweep lists the survey parcels across a named Tamil Nadu revenue area (a village, a taluk or a whole district) that meet your filters: a minimum or maximum size in acres, and exclusions for industrial zones, eco-sensitive zones, the flood layer, reserve forest, aquifer recharge areas, road widening lines and government land. Results come 30 to a page, largest first, each with its survey number, revenue codes, area in acres and hectares, its boundary as GeoJSON and, where the revenue register holds one, the recorded owner. A sweep costs 4 credits, and a sweep that finds nothing is not charged.
https://verified.realestate/api/v1/tools/area_discovery- Price
- 4 credits per sweep
- Source
- State cadastral boundary layer (FMB)
- Coverage
- Mapped survey parcels across Tamil Nadu
- Answers in
- Usually 1 to 2 seconds
Example
curl -X POST https://verified.realestate/api/v1/tools/area_discovery \
-H "Authorization: Bearer $LANDLENS_KEY" \
-H "Content-Type: application/json" \
-d '{"district_code":"03","taluk_code":"14","village_code":"196","min_area_acres":2}'
{
"ok": true,
"status": "ok",
"data": {
"found": true,
"scope": "village",
"page": 1,
"page_size": 30,
"total": 5,
"capped": false,
"area_unit": "acres",
"sorted_by": "largest parcel first",
"filters_applied": ["at least 2 acres"],
"unfiltered": false,
"parcels": [
{
"survey": "254/1",
"survey_number": "254",
"sub_division": "1",
"district_code": "3",
"taluk_code": "14",
"village_code": "196",
"area_acres": 16.556,
"area_hectares": 6.7,
"is_govt": true,
"boundary_geojson": "{\"type\":\"Polygon\",\"coordinates\":[[[80.0237437,12.8229393], ...]]}",
"rural_urban": "rural"
},
{
"survey": "254/3G",
"survey_number": "254",
"sub_division": "3G",
"district_code": "3",
"taluk_code": "14",
"village_code": "196",
"area_acres": 3.396,
"area_hectares": 1.375,
"is_govt": false,
"boundary_geojson": "{\"type\":\"Polygon\",\"coordinates\":[[[80.0245282,12.8258826], ...]]}",
"rural_urban": "rural"
}
]
},
"credits_quoted": 4,
"credits_charged": 4,
"credits_waived": 0
}
A real answer for Kavanoor village, trimmed: two of five parcels, boundaries cut short, and the patta_no, cannot_filter_by and filter_note fields left out.
What it returns
One call, one page of up to 30 parcels. found is false (status not_found) when no parcel matches, and message says whether the filters or the mapping explain it.
| Field | What it holds |
|---|---|
parcels[] | Each parcel: survey (with sub-division), survey_number, sub_division, district_code, taluk_code, village_code, area_acres, area_hectares, is_govt, boundary_geojson and rural_urban. |
owner_name, owner_name_ta, owner_source | Where the revenue register holds the parcel: the recorded owner in English and Tamil ("+N more" when there are several) and which register it came from. |
govt_by_holder | Set when a parcel was marked government because its recorded holder is a government body. |
total, page, page_size, capped | How many parcels match, which page this is, and whether the sweep stopped at its cap (the count is then a floor). |
scope, sorted_by | village, taluk or district, and the order (largest parcel first). |
filters_applied, unfiltered, cannot_filter_by, filter_note | Exactly which filters were applied, and what this sweep cannot filter by (zoning, vacancy, water body distance, guideline value, ownership). |
coverage_note, message | A line when the sweep was capped, or when nothing matched and why. |
Inputs
The JSON body of the POST is the arguments. district_code is required. A whole district with no taluk, village, size or exclusion is refused, uncharged: send at least one filter.
| Argument | Type | What to send |
|---|---|---|
district_coderequired |
string | Revenue district code, e.g. 03. resolve_revenue_codes turns a place name into codes for free. |
taluk_code |
string | Revenue taluk code, to narrow to one taluk. |
village_code |
string | Revenue village code, to narrow to one village. |
min_area_acres |
number | Smallest parcel to list, in acres. |
max_area_acres |
number | Largest parcel to list, in acres. |
exclude |
array | Leave out parcels touching any of: industrial, eco_sensitive, flood, reserve_forest, aquifer, road_widening, govt. |
page |
integer | Page number, 30 parcels a page. Default 1. |
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/area_discovery \
-H "Authorization: Bearer $LANDLENS_KEY" \
-H "Content-Type: application/json" \
-d '{"district_code":"03","taluk_code":"14","village_code":"196","min_area_acres":2}'
import os, requests
r = requests.post(
"https://verified.realestate/api/v1/tools/area_discovery",
headers={"Authorization": f"Bearer {os.environ['LANDLENS_KEY']}"},
json={
"district_code": "03",
"taluk_code": "14",
"village_code": "196",
"min_area_acres": 2
},
timeout=30,
)
body = r.json()
print(body["status"], body["credits_charged"], body["data"])
const res = await fetch("https://verified.realestate/api/v1/tools/area_discovery", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.LANDLENS_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"district_code": "03",
"taluk_code": "14",
"village_code": "196",
"min_area_acres": 2
}),
});
const body = await res.json();
console.log(body.status, body.credits_charged, body.data);
List every parcel of 2 acres or more in Kavanoor village, Kundrathur taluk, and leave out government land and anything on a road widening line.
Your AI finds the village codes, runs the sweep with those filters, and tells you which filters it could not apply.
Responses
Every answer has the same envelope. What status can say for this call:
| status | What it means |
|---|---|
ok | At least one parcel matched. Charged for a sweep (see pricing). |
not_found | No parcel matched, no district_code was sent, or the register did not answer. message or error says which. Not charged. |
scope_denied | A whole district with no filter at all. Narrow it by size, taluk, village or an exclusion. Not charged. |
insufficient_credits | HTTP 402, with the credits needed, your balance and where to top up. |
error | The call failed on our side. Nothing is charged. |
Where the data comes from
The state cadastral boundary layer (the FMB survey parcels), with owners from the revenue A-register and the town survey register, and government land from the register's own classification.
Survey parcels mapped in the state cadastral layer across Tamil Nadu. The layer does not cover every village evenly, so a thinly mapped area returns fewer parcels than it holds.
Read from our copy of the state cadastral layer, downloaded again about once a year, and our copy of the revenue registers for owners.
Parcels are picked by their district, taluk and village codes rather than by drawing, then filtered by size and by the exclusion layers you name, and sorted largest first. Owners are attached from the revenue register by survey and sub-division. A parcel is marked government when the register classifies it so, or when its recorded holder is a government body.
Who uses it
Land aggregators
List every parcel above 5 acres in a target taluk, outside flood and aquifer zones, as a starting map for an approach.
Developers and warehousing firms
Find large private parcels in a village before a site visit, with boundaries to plot and owners to trace.
Investment and research desks
Count and size the parcel stock in a growth corridor, village by village.
Limits and good practice
- No land use, wet or dry, vacancy or guideline value filter. Check classification per parcel afterwards with igr_classification or zone_check.
- The cadastral layer is uneven across the state. Few results can mean a thinly mapped area, not an empty one.
- An owner shown is the name in the revenue register, not a title opinion. Read the patta and the EC before approaching anyone.
- When capped is true the total is a floor. Narrow by taluk, village or size for an exact count.
- patta_no is often empty or 0 in the layer; read the patta number from the land record instead.
Pricing
A sweep costs 4 credits, charged on the first page that returns parcels. The next pages of the same sweep are free up to the fifth; each further block of five pages carries a smaller charge, shown in credits_charged. A sweep that finds nothing, or is refused, is not charged. 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 find land parcels by size in Tamil Nadu?
Yes. LandLens lists the survey parcels in a village, taluk or district that meet a size filter, largest first, with boundaries and recorded owners, over plain HTTPS or as an MCP tool.
How much does a sweep cost?
A sweep costs 4 credits, which covers its first five pages. A sweep that finds nothing is not charged.
Can I list a whole district?
Only with a filter: a minimum size, a taluk or village, or an exclusion. An unfiltered district is refused and not charged.
Can it filter out agricultural or wet land?
No. It filters by size and by seven zones (industrial, eco-sensitive, flood, reserve forest, aquifer, road widening, government). Check land classification on the parcels it returns.
Do I need the revenue codes?
Yes. Turn a district, taluk or village name into codes free with resolve_revenue_codes, then sweep.
Updated 22 Oct 2026 · OpenAPI description