Land Quality API: wet or dry, soil class, tax and government land
Yes. land_quality reads the revenue A-register's own details for a Tamil Nadu village survey, sub-division by sub-division: the land type (wet/nanjai, dry/punjai, poramboke) in English and Tamil, soil class and soil type codes, irrigation source code, whether it is recorded as cultivable, its tenure (ryotwari or government), the poramboke code, whether the register treats it as government land, the annual land tax assessed, the extent and the patta number. It is the register's answer to "is this government or poramboke land". It costs 1 credit per survey found.
https://verified.realestate/api/v1/tools/land_quality- Price
- 1 credit per answer
- Source
- Revenue A-register
- Coverage
- Village survey land
- Answers in
- Usually 1 to 5 seconds
Example
curl -X POST https://verified.realestate/api/v1/tools/land_quality \
-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","register":"rural"}'
{
"ok": true,
"status": "ok",
"data": {
"found": true,
"survey": "145",
"register": "rural",
"subdivisions": [
{
"survey": "145/1",
"land_type": "Poramboke",
"land_type_ta": "புறம்போக்கு",
"soil_class": "0",
"soil_type_primary": "0",
"soil_type_secondary": "0",
"cultivable": "No",
"tenure": "Government (அரசு)",
"poramboke": "29",
"is_government": true,
"annual_tax_rs": "0.0",
"extent_hectares": 0.085,
"patta_no": "0"
}
],
"more_subdivisions": false,
"subdivision_total": null
},
"credits_charged": 1
}
A real answer from the API (22 Oct 2026, a government poramboke parcel in Kavanoor village, Kundrathur taluk), with the reading note left out.
What it returns
One survey, a row per sub-division. found is false (status not_found) when the survey or sub-division is not in the village's register.
| Field | What it holds |
|---|---|
subdivisions | One row each: survey, land_type and land_type_ta (Wet, Dry, Poramboke), soil_class, soil_type_primary, soil_type_secondary, irrigation_source_code, cultivable, tenure, poramboke (the register's code), is_government, annual_tax_rs, extent_hectares, patta_no. |
is_government | On each row: true when the register records the land as government land. Government land is not ordinarily purchasable. |
more_subdivisions, subdivision_total | Whether the survey has more sub-divisions than were returned, and how many. |
survey, register | The survey read, and the register (rural). |
survey_not_held, message | On not_found: whether the survey or only the sub-division is missing from the register. |
Inputs
The JSON body of the POST is the arguments. The three revenue codes and the survey number are required. resolve_parcel returns them for a map point.
| Argument | Type | What to send |
|---|---|---|
district_coderequired |
string | |
taluk_coderequired |
string | |
village_coderequired |
string | |
survey_numberrequired |
string | |
sub_division |
string | |
register |
string: rural, urban | Send "urban" for town survey land: the answer then says these details do not apply, instead of reading the village that shares the town's code. |
all_subdivisions |
boolean | Return every sub-division instead of the first 20. |
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/land_quality \
-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","register":"rural"}'
import os, requests
r = requests.post(
"https://verified.realestate/api/v1/tools/land_quality",
headers={"Authorization": f"Bearer {os.environ['LANDLENS_KEY']}"},
json={
"district_code": "03",
"taluk_code": "14",
"village_code": "196",
"survey_number": "145",
"sub_division": "1",
"register": "rural"
},
timeout=30,
)
body = r.json()
print(body["status"], body["credits_charged"], body["data"])
const res = await fetch("https://verified.realestate/api/v1/tools/land_quality", {
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",
"register": "rural"
}),
});
const body = await res.json();
console.log(body.status, body.credits_charged, body.data);
Is survey 145/1 in Kavanoor village government or poramboke land? Is it wet or dry?
Your AI finds the codes, says the price, and reads the register's own classification.
Responses
Every answer has the same envelope. What status can say for this call:
| status | What it means |
|---|---|
ok | The survey is in the register. Charged 1 credit. |
not_found | The survey or sub-division is not in the village's register, or the parcel is town survey land. 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 each survey field, its land type, soil class and type, irrigation source, tenure, poramboke classification, assessment and extent.
Revenue village land across Tamil Nadu, as far as our copy of the A-register reaches. Some villages are not yet in it. Town survey land has no such columns.
Our copy of the A-register is refreshed in full about once a year. Land type and tax rarely change between refreshes; the holder can.
Read by revenue codes and survey number, with the sub-division when sent. Up to 20 sub-divisions are returned unless all_subdivisions is set.
Who uses it
Buyers and brokers
Check whether a plot is recorded as government or poramboke land before a site visit.
Agricultural land buyers
See whether a field is recorded as wet or dry, irrigated and cultivable.
Law firms
Cite the register's land type and tenure in a title opinion or a land conversion file.
Limits and good practice
- Soil class, soil type and irrigation source are register codes. They are given as recorded, without a meaning attached.
- Village survey land only. Town survey land has no such columns.
- This is our copy of the A-register. Confirm a holder with fetch_land_record.
Pricing
Each survey found costs 1 credit; nothing when it is not in the register. 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 check if land is poramboke or government land in Tamil Nadu?
Yes. land_quality returns the revenue register's own tenure, poramboke code and is_government flag for a survey.
How do I tell wet (nanjai) from dry (punjai) land by API?
land_type gives Wet, Dry or Poramboke, and land_type_ta the register's Tamil word (நஞ்சை for wet land).
How much does it cost?
1 credit per survey found. Nothing when the survey is not in the register.
What do the soil class numbers mean?
They are the register's own codes, returned as recorded. The API does not translate them.
Updated 22 Oct 2026 · OpenAPI description