Plot Owner API: recorded holder of a Tamil Nadu survey number
Yes. plot_owner names the recorded holder of a Tamil Nadu survey number from the revenue A-register (village land) or the Town Survey Land Register (town land), with the patta number, the land type, the extent and whether the land is government land. It reads our copy of the registers, so it answers in a second or two and keeps answering when the government patta service is down. With all_subdivisions it lists every sub-division on the survey with its own holders. It costs 1 credit for one parcel, and nothing when the register holds no holder for it.
https://verified.realestate/api/v1/tools/plot_owner- Price
- 1 credit per answer
- Source
- Revenue A-register and town survey register
- Coverage
- Village and town survey land
- Answers in
- Usually 1 to 5 seconds
Example
curl -X POST https://verified.realestate/api/v1/tools/plot_owner \
-H "Authorization: Bearer $LANDLENS_KEY" \
-H "Content-Type: application/json" \
-d '{"district_code":"03","taluk_code":"14","village_code":"196","survey_number":"145","sub_division":"1"}'
{
"ok": true,
"status": "ok",
"data": {
"found": true,
"source": "revenue A-register",
"rural_urban": "rural",
"survey": "145/1",
"is_govt": true,
"land_type": "Poramboke",
"patta_no": null,
"extent_acres": 0.21,
"owners": [],
"note": "From the revenue A-register, which does not depend on the government portal, so it answers even when the patta portal is down. Confirm against the official live patta when the portal is available."
},
"credits_charged": 1
}
A real answer from the API (22 Oct 2026, Kavanoor village, Kundrathur taluk): a government poramboke parcel, so no holder is named.
What it returns
One parcel by default. found is false (status not_found) when the register holds no holder for it, or when the survey number is not in the village at all.
| Field | What it holds |
|---|---|
owners | The recorded holders, each with name_en and name_ta. Empty for government land that names no holder. |
is_govt | true when the register records the land as government land. |
land_type | The register's land type: Wet, Dry, Poramboke and so on. |
patta_no | The patta number the holding is entered under. |
extent_acres | The recorded extent in acres (village land). |
survey, rural_urban, source | The survey read, the register, and the register named in words. |
ward_code, block_code, street, door_number, extent_sqm | Town survey land: where the parcel is filed, its street and door number where recorded, and its extent in square metres. |
holdings, subdivision_count, distinct_owner_names, government_subdivisions, total_extent_acres | With all_subdivisions: every sub-division on the survey with its own holders, patta number and extent, and totals for the whole survey. |
page, showing_from, showing_to, remaining, next_page | With all_subdivisions: paging through a survey with many holdings. |
note | Where the answer came from, ready to show. |
Ways to call it
Name the holder of one parcel, or list every holding on a survey.
One parcel
The revenue codes come free from resolve_parcel (a map point) or resolve_revenue_codes (names).
{"district_code": "03","taluk_code": "14","village_code": "196","survey_number": "145","sub_division": "1"}
Every sub-division on a survey
Lists each holding with its own holders. The first page has up to 200; the price scales with the number of holdings and the reply prices the next page.
{"district_code": "03","taluk_code": "14","village_code": "196","survey_number": "145","all_subdivisions": true}
Inputs
The JSON body of the POST is the arguments. The three revenue codes and the survey number are required.
| Argument | Type | What to send |
|---|---|---|
district_coderequired |
string | |
taluk_coderequired |
string | |
village_coderequired |
string | |
survey_numberrequired |
string | Survey number, e.g. "178" or "178/1C" |
sub_division |
string | Sub-division, if any (e.g. "1C") |
register |
string: rural, urban | "urban" for town survey land. The two registers number their villages and towns separately, so the same code is a different place in each. |
ward_code |
string | Town surveys only: the ward, e.g. "001". A town survey number repeats across wards and blocks, so pass the ward and block whenever they are known. |
block_code |
string | Town surveys only: the block, e.g. "0001". |
all_subdivisions |
boolean | List every holding on the survey instead of naming one holder. Costs more than one parcel, scaled to the number of holdings. |
page |
integer | With all_subdivisions, which page of holdings to return. Page 1 (the default) gives the first 200. Each later page gives 50 more and costs 1 credit, so only ask for one when the user has seen the reply and wants more. The previous reply's next_page tells you the number to pass. |
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/plot_owner \
-H "Authorization: Bearer $LANDLENS_KEY" \
-H "Content-Type: application/json" \
-d '{"district_code":"03","taluk_code":"14","village_code":"196","survey_number":"145","sub_division":"1"}'
import os, requests
r = requests.post(
"https://verified.realestate/api/v1/tools/plot_owner",
headers={"Authorization": f"Bearer {os.environ['LANDLENS_KEY']}"},
json={
"district_code": "03",
"taluk_code": "14",
"village_code": "196",
"survey_number": "145",
"sub_division": "1"
},
timeout=30,
)
body = r.json()
print(body["status"], body["credits_charged"], body["data"])
const res = await fetch("https://verified.realestate/api/v1/tools/plot_owner", {
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",
"survey_number": "145",
"sub_division": "1"
}),
});
const body = await res.json();
console.log(body.status, body.credits_charged, body.data);
Who is the recorded owner of survey 145/1 in Kavanoor village, Kundrathur taluk? Is it government land?
Your AI finds the revenue codes, says the price, and reads the register for you.
Responses
Every answer has the same envelope. What status can say for this call:
| status | What it means |
|---|---|
ok | The register names a holder, or records the land as government land. Charged 1 credit for one parcel. |
not_found | The register holds no holder for the parcel, the survey is not in the village, or the page asked for is past the end. Nothing is charged. |
invalid_args | A revenue code or the survey number is missing. |
Where the data comes from
The Tamil Nadu revenue department's A-register for village land and its Town Survey Land Register for town survey land, as held in our copy of both.
Village and town survey land across Tamil Nadu, as far as our copy of the registers reaches. Some villages are not yet in our copy of the village register.
Our copy of the registers is refreshed in full about once a year. Holders change on every sale, so confirm against the live patta (fetch_land_record) before relying on a name.
Read by revenue codes, survey number and sub-division. For town survey land, the ward and block pick the right parcel, since one town survey number repeats across wards and blocks.
Who uses it
Buyers and brokers
Check in a second whether a plot sits on government or poramboke land before a site visit.
Law firms
List every holding on a survey before a partition or a large purchase, with each sub-division's holder and patta number.
Property platforms
Name the recorded holder when the government patta service is down.
Limits and good practice
- This is our copy of the register, not a live extract. Confirm the holder with fetch_land_record before relying on it.
- Holder names in English are transliterated from the register's Tamil; the Tamil is given alongside.
- A name here is the recorded holder of that sub-division, not of any spot on the map. With all_subdivisions, read each holder with its own sub-division.
- all_subdivisions costs more than one parcel, scaled to the number of holdings on the survey.
Pricing
One parcel costs 1 credit; nothing when the register holds no holder for it. Listing every sub-division with all_subdivisions costs more, scaled to the number of holdings, and each later page is priced in the reply. 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 the owner of a Tamil Nadu survey number?
Yes. plot_owner names the recorded holder from the revenue A-register or the town survey register. fetch_land_record reads the live patta instead.
How much does it cost?
1 credit for one parcel. Nothing when the register holds no holder. Listing every sub-division costs more, scaled to the size of the survey.
Can it tell me if the land is government land?
Yes. is_govt is true when the register records the land as government land, and land_type says Poramboke where it is.
What is the difference between plot_owner and fetch_land_record?
plot_owner reads our copy of the register: fast, and it works when the government service is down. fetch_land_record reads the government register live and returns the official record.
Updated 22 Oct 2026 · OpenAPI description