Vacant Land Tax and Property Tax API for Tamil Nadu towns
Yes. The LandLens municipal tax API reads the property tax and vacant land tax register of any Tamil Nadu corporation, municipality or town panchayat outside Chennai, by the assessment number printed on the tax receipt (like 162/028/910060). You get the local body, ward and zone, the assessee and address, the assessed area, the survey number the assessment is recorded against (checked against yours if you send it), every demand period with vacant land tax shown apart from building tax, what was collected and what is outstanding. It costs 1 credit, waived when nothing is found.
https://verified.realestate/api/v1/tools/ulb_tax_lookup- Price
- 1 credit per answer
- Source
- Urban local bodies' property tax register
- Coverage
- Every urban local body outside Chennai
- Answers in
- Usually under a second when recently read; a few seconds otherwise
Example
curl -X POST https://verified.realestate/api/v1/tools/ulb_tax_lookup \
-H "Authorization: Bearer $LANDLENS_KEY" \
-H "Content-Type: application/json" \
-d '{"assessment_number":"162/028/910060","survey_number":"59/1"}'
{
"ok": true,
"status": "ok",
"data": {
"found": true,
"source": "Municipal property tax register",
"assessment_number": "162/028/910060",
"local_body": "COIMBATORE",
"district": "COIMBATORE",
"ward": "WARD-028",
"zone": "NORTH ZONE",
"assessee": "...",
"address": "...",
"assessed_area_sq_ft": "2178",
"register_survey": "SF NO 36 PART",
"survey_match": "mismatch",
"vacant_land_tax": {
"assessed": true,
"rows": [
{ "period": "2026-2027-I", "tax_type": "VLT", "demand": 2770, "collected": 2770, "balance": 0, "paid_status": "Yes" },
{ "period": "2026-2027-II", "tax_type": "VLT", "demand": 2770, "collected": 2770, "balance": 0, "paid_status": "Yes" }
],
"outstanding": 0
},
"other_demands": [],
"outstanding_total": 0,
"is_paid": true,
"read_from_cache": false,
"note": "The register carries a vacant land tax demand on this assessment, shown paid. Vacant land tax is a municipal levy under the Urban Local Bodies Act; it is not the Revenue Department's Urban Land Tax and it is not land revenue (kist). A tax assessment is not proof of ownership. The register records this assessment against survey SF NO 36 PART, not the survey asked about: the receipt may belong to a different plot."
},
"credits_charged": 1
}
A real answer from the API. The assessee's name and address are left out here. The survey sent (59/1) differs from the register's on purpose, to show survey_match.
What it returns
One call, one assessment. found is false (status not_found, nothing charged) when the register has no such assessment, or could not be reached; error says which.
| Field | What it holds |
|---|---|
local_body, district, ward, zone | Where the assessment is. |
assessee, address, assessed_area_sq_ft | Who it is assessed to, the property address and the assessed area, as the register records them. |
register_survey, survey_match | The survey number the assessment is recorded against, and match, mismatch or unknown against the survey_number you sent. |
vacant_land_tax | assessed (whether any vacant land tax demand exists), rows and outstanding. |
vacant_land_tax.rows[], other_demands[] | Each demand: period, tax_type, demand, collected, balance and paid_status. |
outstanding_total, is_paid | The total outstanding on the assessment, and whether the register shows it paid. |
read_from_cache, note | Whether the answer is from the day's copy, and how to read it (including a survey mismatch). |
Inputs
The JSON body of the POST is the arguments.
| Argument | Type | What to send |
|---|---|---|
assessment_numberrequired |
string | The assessment number on the receipt: local body, ward and serial, like 162/028/910060. |
survey_number |
string | Optional: the survey of the plot you are checking. The register's survey is compared with it. |
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/ulb_tax_lookup \
-H "Authorization: Bearer $LANDLENS_KEY" \
-H "Content-Type: application/json" \
-d '{"assessment_number":"162/028/910060","survey_number":"59/1"}'
import os, requests
r = requests.post(
"https://verified.realestate/api/v1/tools/ulb_tax_lookup",
headers={"Authorization": f"Bearer {os.environ['LANDLENS_KEY']}"},
json={
"assessment_number": "162/028/910060",
"survey_number": "59/1"
},
timeout=30,
)
body = r.json()
print(body["status"], body["credits_charged"], body["data"])
const res = await fetch("https://verified.realestate/api/v1/tools/ulb_tax_lookup", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.LANDLENS_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"assessment_number": "162/028/910060",
"survey_number": "59/1"
}),
});
const body = await res.json();
console.log(body.status, body.credits_charged, body.data);
Is vacant land tax paid on assessment 162/028/910060 in Coimbatore? Is it recorded against survey 59/1?
Your AI reads the municipal register, separates vacant land tax from building tax, and checks the survey.
Responses
Every answer has the same envelope. What status can say for this call:
| status | What it means |
|---|---|
ok | The assessment was read. Charged. |
not_found | No assessment by that number, a number that is not an assessment number (or is a Chennai bill), or the register could not be reached. error says which. Nothing is charged. |
invalid_args | assessment_number is missing. |
insufficient_credits | HTTP 402: the balance does not cover the call, with the credits needed and your balance. |
Where the data comes from
The property tax register of Tamil Nadu's urban local bodies (corporations, municipalities and town panchayats), which carries both building property tax and vacant land tax assessments.
Every corporation, municipality and town panchayat in Tamil Nadu except the Greater Chennai Corporation, whose bills are read by tax_bill_lookup.
Read from the register when asked, and kept for a day; read_from_cache says when an answer is from that day's copy.
The number is checked for shape first (local body, ward and serial, separated by slashes; dashes are accepted). A Chennai bill number is turned away with where to look instead. Demand rows whose type is vacant land tax are kept apart from the rest and their outstanding balance added up. An unreachable register is never reported as a missing assessment.
Who uses it
Plot buyers
Check the seller has paid vacant land tax on the plot, and that the assessment is recorded against the same survey number as the deed.
Advocates
Note the municipal assessment and its dues in a title opinion on town land.
Lenders
Confirm tax is paid on the security property before release.
Limits and good practice
- Outside Chennai only. Chennai corporation bills are tax_bill_lookup.
- You need the assessment number from a receipt. The register is not searched by name or address.
- Vacant land tax is a municipal levy. It is not the Revenue Department's urban land tax, and not land revenue (kist), which has no online record.
- A tax assessment is not proof of ownership.
Pricing
Each call costs 1 credit, and nothing when no assessment is found or the register cannot be reached. 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 for vacant land tax in Tamil Nadu?
Yes, this one. It reads the municipal register by assessment number and shows vacant land tax demands apart from building tax, with what is outstanding.
Which towns are covered?
Every corporation, municipality and town panchayat in Tamil Nadu except the Greater Chennai Corporation.
What does survey_match mismatch mean?
The register records the assessment against a different survey number from the one you sent. The receipt may belong to another plot, or the register's survey may be written differently; compare them with the deed.
Can I search by owner name?
No. Send the assessment number from the receipt.
Updated 22 Oct 2026 · OpenAPI description