Chennai Utility Dues API: property tax, water tax and EB
Yes. The LandLens utility dues API searches the Greater Chennai Corporation property tax register and the CMWSSB water tax and customer registers by a bill number, a CMWSSB consumer number, a corporation GIS id or words of the address. It returns the assessee, address, annual value and dues of the property tax assessment (read live from the corporation portal when the bill number points at one property), the water and sewer connection, rainwater harvesting, borewell and flat count from the water board register, and, with a TNEB consumer number, the electricity bill read live. It costs 1 credit, waived when nothing matches.
https://verified.realestate/api/v1/tools/utility_dues- Price
- 1 credit per answer
- Source
- Chennai corporation and water board registers; EB read live
- Coverage
- Greater Chennai Corporation area
- Answers in
- Usually 3 to 16 seconds
Example
curl -X POST https://verified.realestate/api/v1/tools/utility_dues \
-H "Authorization: Bearer $LANDLENS_KEY" \
-H "Content-Type: application/json" \
-d '{"bill_no":"02-015-22203-000","cmwssb_id":"1730194"}'
{
"ok": true,
"status": "ok",
"data": {
"found": true,
"bill_number_read_as": "Bill No",
"bill_number_matches": [
{ "bill_no": "02-015-22203-000", "new_bill_no": "02-015-022058", "matched": "Bill No" }
],
"dues_are_live": true,
"assessment_deactivated": true,
"property_tax": [
{
"bill_no": "02-015-22203-000",
"new_bill_no_gcc": "02-015-022058",
"zone_number": "02",
"ward_number": "015",
"owner_name": "...",
"property_address": "...",
"annual_value": null,
"total_tax_due": null,
"dues_source": "live",
"dues_as_of": "2026-10-22T21:42:27+05:30",
"assessment_deactivated": true
}
],
"cmwssb": [
{
"cmwssb_id": 1730194,
"bill_no": "044013",
"zone_no": "15",
"ward_no": "197",
"cus_name": "...",
"cus_addr": "...",
"annual_value": 46888,
"half_yearly_tax": 1641,
"is_water_connected": false,
"is_sewer_connected": false,
"status": "A",
"scraped_at": "2026-09-13T10:15:54.24831"
}
],
"note": "The corporation portal marks this property tax assessment as DEACTIVATED, so it holds no dues, payments or demand for it. Say exactly that, never that the dues could not be read. A deactivated assessment was usually closed, merged or reassessed; the owner or the zonal office can say which. Owner names are shown; phone/email are never returned, and an assessment is not proof of ownership."
},
"credits_charged": 1
}
A real answer from the API. Names and addresses are left out here, and several null or repeated fields, and the balance lists, are trimmed. The two numbers sent belong to different properties, so both registers answered.
What it returns
One call, every register that matched. found is false (status not_found, nothing charged) when nothing matched.
| Field | What it holds |
|---|---|
property_tax[] | Up to 3 assessments: bill_no, new_bill_no_gcc, zone_number, ward_number, owner_name, property_address, annual_value, current_tax, current_tax_due, total_arrears, total_tax_due, dues_source (live or register snapshot) and dues_as_of or register_dues_as_of. |
bill_number_read_as, bill_number_matches | Which series the bill number was read as, and which series each property matched on. |
dues_are_live, assessment_deactivated | Whether the dues were read live just now, and whether the corporation marks the assessment deactivated (no dues exist). |
cmwssb[] | Water board customers: cmwssb_id, bill_no, zone_no, ward_no, cus_name, cus_addr, annual_value, half_yearly_tax, is_water_connected, is_sewer_connected, is_rwh (rainwater harvesting), is_bw (borewell), is_govt, cat_desc, flat_no, msb_no_of_flats, status, credit_balances, demand_balances and scraped_at. |
water_tax[] | Water tax rows: bill_no, cmwssb_id, cus_name, cus_addr, annual_value, half_yearly_tax, total_dues, class_desc, the connection flags and status. |
eb, eb_error | The electricity bill read live for eb_number, or why it was not. |
not_searched, note | Identifiers that were sent but not searched, and how to read the figures. |
Inputs
The JSON body of the POST is the arguments. Send any one of bill_no, cmwssb_id, gcc_gis_id or address (6 characters or more), and eb_number for the electricity bill. A bill number decides the search; address words sent with it are not searched.
| Argument | Type | What to send |
|---|---|---|
bill_no |
string | GCC bill number EXACTLY as the user gave it, dashes included: a Bill No looks like 05-049-00880-000, a New Bill No like 05-049-000880. Never convert one into the other: they are separate series and the same digits in the other series are usually a different property. |
cmwssb_id |
string | CMWSSB consumer number |
gcc_gis_id |
string | |
address |
string | Address words (min 6 chars), e.g. "21 Singara Garden" |
eb_number |
string | TNEB consumer number (10-15 digits) for a live bill check |
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/utility_dues \
-H "Authorization: Bearer $LANDLENS_KEY" \
-H "Content-Type: application/json" \
-d '{"bill_no":"02-015-22203-000","cmwssb_id":"1730194"}'
import os, requests
r = requests.post(
"https://verified.realestate/api/v1/tools/utility_dues",
headers={"Authorization": f"Bearer {os.environ['LANDLENS_KEY']}"},
json={
"bill_no": "02-015-22203-000",
"cmwssb_id": "1730194"
},
timeout=30,
)
body = r.json()
print(body["status"], body["credits_charged"], body["data"])
const res = await fetch("https://verified.realestate/api/v1/tools/utility_dues", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.LANDLENS_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"bill_no": "02-015-22203-000",
"cmwssb_id": "1730194"
}),
});
const body = await res.json();
console.log(body.status, body.credits_charged, body.data);
Is any property tax or water tax pending on 21 Singara Garden, Chennai?
Your AI searches the corporation and water board registers by the address and tells you which figures are live and which are as of a date.
Responses
Every answer has the same envelope. What status can say for this call:
| status | What it means |
|---|---|
ok | At least one register matched. Charged. |
not_found | No register entry matched, or nothing searchable was sent (an EB number that is not 10 to 15 digits, address words under 6 characters). Nothing is charged. |
insufficient_credits | HTTP 402: the balance does not cover the call, with the credits needed and your balance. |
Where the data comes from
Our copies of the Greater Chennai Corporation property tax register and the CMWSSB water tax and customer registers, the corporation's live property tax portal for current dues, and the electricity distribution company's live bill enquiry.
Properties in the Greater Chennai Corporation's 15 zones. Water board records cover its consumers in the city. The EB bill works for any TNEB low-tension consumer number.
Property tax dues are read live when the bill number points at one property (dues_are_live); otherwise every figure carries the date it was captured. Water board figures are from the stored register, with the date of capture on each row. The EB bill is always live.
A bill number is read by its shape as a Bill No or a New Bill No (the two are separate series and the same digits can be two properties); the water registers are reached through the property's own numbers. Address words are matched in order with punctuation ignored. Owner names are shown; phone numbers and emails never are. The registers are never searched by owner name.
Who uses it
Buyers and tenants in Chennai
Check that property tax, water tax and the EB bill are clear on a flat or house before paying an advance.
Advocates
Record the assessee, the water and sewer connection and the dues in a title report.
Property managers
Find the water board record and connections of a building from its address.
Limits and good practice
- Chennai corporation area only. Other towns are ulb_tax_lookup.
- Never searched by owner name.
- Property tax dues are live only when the bill number points at one property. Otherwise they are as of the date on the row; read them live with tax_bill_lookup.
- Water board figures are from the stored register, not live.
- An assessment is not proof of ownership.
Pricing
Each call costs 1 credit, and nothing when no register matches. 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 Chennai property tax and water tax dues?
Yes, this one. It searches the corporation and water board registers by bill number, consumer number or address, and reads the property tax dues live when it can.
Can I check an EB bill?
Yes. Add eb_number, the 10 to 15 digit TNEB consumer number, and the bill is read live.
Are the dues current?
Property tax dues are read live from the corporation when the bill number identifies one property; dues_are_live says so. Everything else carries the date it was captured.
Can I search by the owner's name?
No. Search by bill number, consumer number or address.
How is this different from tax_bill_lookup?
tax_bill_lookup reads one bill live from the portal by zone, ward and number. This searches the registers more widely (address, water board, EB) in one call.
Updated 22 Oct 2026 · OpenAPI description