Chennai Property Tax and Water Tax Bill API
Yes. The LandLens tax bill API reads a Greater Chennai Corporation property tax bill, or a Chennai Metro Water (CMWSSB) water tax bill, live from the government portal using the numbers printed on it: the zone, ward and bill number, or the whole printed bill number. A property tax answer carries the assessee's name, the property address, both bill numbers, the annual value, the current tax, the current dues, arrears and the total due, so it reflects payments recorded today. It costs nothing.
https://verified.realestate/api/v1/tools/tax_bill_lookup- Price
- Free
- Source
- Greater Chennai Corporation and CMWSSB portals, live
- Coverage
- All 15 zones of the Chennai corporation
- Answers in
- Usually 4 to 7 seconds
Example
curl -X POST https://verified.realestate/api/v1/tools/tax_bill_lookup \
-H "Authorization: Bearer $LANDLENS_KEY" \
-H "Content-Type: application/json" \
-d '{"tax_type":"property_tax","printed_bill_number":"02-015-022203"}'
{
"ok": true,
"status": "ok",
"data": {
"found": true,
"tax_type": "property_tax",
"source": "Greater Chennai Corporation property tax portal",
"zone_no": "02",
"ward_no": "015",
"bill_format": "new",
"bill_no": "022203",
"result": {
"new_bill_no": "02-015-022203",
"bill_no": "02-015-27381-000",
"old_bill_no": "N/A",
"parent_bill_nos": "02-015-04820-000 ,",
"owner_name": "...",
"property_address": "...",
"annual_value": "Rs. 20,126.00",
"current_tax": "Rs. 2500",
"current_tax_due": "Rs. -182",
"total_arrears": "Rs. 0",
"total_tax_due": "Rs. -182",
"annual_value_numeric": 20126,
"current_tax_numeric": 2500,
"current_tax_due_numeric": -182,
"total_arrears_numeric": 0,
"total_tax_due_numeric": -182
},
"note": "Read live from the government portal, so it reflects payments already recorded there. An amount shown as due can still lag a very recent payment, and the assessment itself is not proof of ownership."
},
"credits_charged": 0
}
A real answer from the API. The assessee's name and address are left out here, and the *_formatted copies of each figure are trimmed.
What it returns
One call, one bill. found is false (status not_found) when the portal holds no such bill, or when it could not be read, which the answer marks with portal_unavailable so it is never taken for an absence.
| Field | What it holds |
|---|---|
result.owner_name, result.property_address | The assessee and the property, as the corporation records them. |
result.new_bill_no, result.bill_no, result.old_bill_no, result.parent_bill_nos | The bill in both numbering series, any older number, and the assessments it was split from. |
result.annual_value, result.current_tax | The annual value the tax is assessed on, and the current tax demand. |
result.current_tax_due, result.total_arrears, result.total_tax_due | What is due now, the arrears and the total. A negative figure is a credit. Each also comes as a number (*_numeric). |
result.deactivated | Set when the corporation marks the assessment as deactivated, with its notice; the note says how to read it. |
tax_type, source, zone_no, ward_no, bill_format, bill_no | What was searched, and where. |
portal_unavailable | Set on a not_found when the portal gave no usable answer: the bill was not checked. |
Inputs
The JSON body of the POST is the arguments. Send tax_type and the printed bill number. Or send zone_no, ward_no and bill_no, with bill_format old, old_bill_no and sub_code for an old-format bill.
| Argument | Type | What to send |
|---|---|---|
tax_typerequired |
string: property_tax, water_tax | property_tax (GCC) or water_tax (CMWSSB) |
printed_bill_number |
string | The whole bill number exactly as printed, dashes included: 05-049-00880-000 (Bill No) or 05-049-000880 (New Bill No). The simplest input; zone, ward and format are read from it. |
zone_no |
string | Zone number from the bill, 1 to 15 |
ward_no |
string | Ward number from the bill |
bill_no |
string | Bill number for the current (new) format |
bill_format |
string: new, old | Default new. Use old for a pre-revision bill number. |
old_bill_no |
string | Old-format bill number, required when bill_format is old |
sub_code |
string | Sub code for an old-format bill, defaults to 000 |
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/tax_bill_lookup \
-H "Authorization: Bearer $LANDLENS_KEY" \
-H "Content-Type: application/json" \
-d '{"tax_type":"property_tax","printed_bill_number":"02-015-022203"}'
import os, requests
r = requests.post(
"https://verified.realestate/api/v1/tools/tax_bill_lookup",
headers={"Authorization": f"Bearer {os.environ['LANDLENS_KEY']}"},
json={
"tax_type": "property_tax",
"printed_bill_number": "02-015-022203"
},
timeout=30,
)
body = r.json()
print(body["status"], body["credits_charged"], body["data"])
const res = await fetch("https://verified.realestate/api/v1/tools/tax_bill_lookup", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.LANDLENS_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"tax_type": "property_tax",
"printed_bill_number": "02-015-022203"
}),
});
const body = await res.json();
console.log(body.status, body.credits_charged, body.data);
Check the property tax for Chennai bill 02-015-022203. Is anything due?
Your AI reads the bill live from the corporation portal and tells you the dues. It is free.
Responses
Every answer has the same envelope. What status can say for this call:
| status | What it means |
|---|---|
ok | The bill was read. Check total_tax_due, or deactivated. |
not_found | The portal holds no such bill, or the numbers are not a valid bill (zone 1 to 15, ward 1 to 200), or the portal could not be read (portal_unavailable is then true and the bill was not checked). |
invalid_args | tax_type 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 property tax assessment register of the Greater Chennai Corporation, and the water and sewerage tax register of the Chennai Metropolitan Water Supply and Sewerage Board, read on their public portals.
Every property tax assessment in the Greater Chennai Corporation's 15 zones and 200 wards, in both the current and the old bill numbering, and every CMWSSB water tax bill.
Live. Each call reads the portal at that moment, so a payment recorded there today shows. A very recent payment can still lag.
The bill's series is read from the shape of the printed number (05-049-00880-000 is the old Bill No, 05-049-000880 the New Bill No), so the two are never mixed. The zone and ward are checked before the portal is asked. The portal's answer must carry the number searched, or it is not shown. The water portal's mobile number and email for the consumer are dropped from every answer.
Who uses it
Buyers and their advocates
Confirm the seller's property tax is paid up, and that the assessee and address match the deed, before registration.
Lenders
Check tax dues on the security property from the bill number on the file.
Property managers
Read the dues on every Chennai property you manage, on the day you pay.
Limits and good practice
- Greater Chennai Corporation and CMWSSB only. Other towns are ulb_tax_lookup.
- You need the bill number. To start from a map point, use chennai_utility.
- The government portal is often down out of hours. An unavailable portal is reported as such, never as a missing bill; try again later.
- A tax assessment is not proof of ownership.
Pricing
A bill lookup costs nothing. Free calls have their own allowance per hour and per day, counted across every key and connected app on the account, and it is larger once the account has bought credits. 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 for Chennai property tax?
Yes, this one. It reads a Greater Chennai Corporation property tax bill live by its bill number and returns the assessee, annual value, tax and dues.
What is the difference between Bill No and New Bill No?
They are two separate numbering series printed on the same bill. 05-049-00880-000 is a Bill No, 05-049-000880 a New Bill No. Send the one you have exactly as printed; re-padding one into the other searches a different property.
Is it live?
Yes. Each call reads the corporation portal, so a payment recorded there today shows.
Can I get the water tax too?
Yes. Set tax_type to water_tax and send the CMWSSB bill's zone, ward and number.
Why is the due negative?
A negative figure is a credit: more has been paid than is due for the period.
Updated 22 Oct 2026 · OpenAPI description