Land Zone and Restriction Check API for Tamil Nadu
Yes. The LandLens zone check API takes a latitude and longitude in Tamil Nadu and the layers you want, and returns a verdict for each: coastal regulation zone, flood inundation, water bodies, reserve forest, Ramsar sites and their buffers, eco-sensitive zones, swamps, the Red Hills catchment, aquifer recharge areas, airport height zones, HACA, ASI monuments, HT lines, railway and metro lines, quarries, burial grounds, road widening, CMDA and master plan land use, temple and Waqf registers, Bhoodan land, acquisition notices, mapped slum boundaries and more, 40 layers in all. Each layer answers safe, warning, info or not covered with the distance or zone it found, and the severe layers you did not ask about are swept anyway and reported if they flag. A call with one to a handful of layers costs 1 credit; the price rises with the number of layers and is capped.
https://verified.realestate/api/v1/tools/zone_check- Price
- 1 to 6 credits per answer
- Source
- State and central restriction maps and registers
- Coverage
- 40 layers; some Chennai or CMDA area only
- Answers in
- Usually two to five seconds; a long list of layers can take over ten
Example
curl -X POST https://verified.realestate/api/v1/tools/zone_check \
-H "Authorization: Bearer $LANDLENS_KEY" \
-H "Content-Type: application/json" \
-d '{"lat":12.901,"lng":80.2279,"checks":["flood_inundation","water_body","cmda_landuse","airport"]}'
{
"ok": true,
"status": "ok",
"data": {
"lat": 12.901,
"lng": 80.2279,
"parcel": {"survey_number": "722", "village_name": "Sholinganallur- 1", "taluk_name": "Sholinganallur", "district_name": "Chennai"},
"found": true,
"results": {
"flood_inundation": {"check": "flood_inundation", "status": "warning", "in_zone": true, "message": null, "distance_basis": "point"},
"water_body": {"check": "water_body", "status": "safe", "in_zone": false, "message": "Nearest mapped water body (no name on record) is ~124m away, measured from the parcel boundary", "nearest_distance_meters": 124, "distance_basis": "boundary", "within_15m": false},
"cmda_landuse": {"check": "cmda_landuse", "status": "info", "in_cmda": true, "landuse_type": "Road", "landuse_description": "Road", "proposed_landuse": "Road"},
"airport": {"check": "airport", "status": "info", "in_zone": true, "zone_type": "Airport Influence Zone", "message": "Airport influence zone with a height allowance of about 119 m. CMDA practice: buildings of 30.5 m or more, or above 10 floors, need an AAI NOC. Informational for ordinary construction, not a risk flag."}
},
"unasked_severe_findings": {
"swamp": {"check": "swamp", "status": "warning", "zone_name": "Pallikaranai Ramsar Site (Buffer Zone)", "message": "Property is within swamp buffer zone"}
}
},
"credits_charged": 1
}
A real answer from the API for a point in Sholinganallur, Chennai, trimmed for length: details, coverage_note and the reading notes are left out. The swamp layer was not asked for and was reported free because it flagged.
What it returns
One call. results has one entry per layer asked for; read status first.
| Field | What it holds |
|---|---|
parcel | The survey number, village, taluk and district the point resolved to. |
results.{layer}.status | safe (no match), warning or danger (inside or too close), info (a fact such as a land use zone), not_covered (no data here), inconclusive, or error. |
results.{layer}.in_zone, zone_type, zone_name, message | Whether the point is inside, which zone, and a sentence a person can read. |
results.{layer}.nearest_distance_meters, distance_basis, within_15m | For proximity layers: how far the nearest feature is, measured from the point or the parcel boundary. |
results.{layer}.landuse_type, proposed_landuse, landuse_category | For cmda_landuse and master_plan: the zone the plan gives the land. |
results.{layer}.height_ceiling_m | For airport layers: the height that can be built under the limit, where ground level could be read. |
unasked_severe_findings | Severe layers you did not ask for (ASI, reserve forest, Ramsar, swamp, flood, water body, Red Hills) that flagged at this point. Not charged. |
coverage_note | On a short list, which layers ran and that others did not. |
details | The full answer of each layer, including map outlines where the layer returns one. |
Inputs
The JSON body of the POST is the arguments. Send the point and only the layers the question is about, usually one to four.
| Argument | Type | What to send |
|---|---|---|
latrequired |
number | Latitude in decimal degrees |
lngrequired |
number | Longitude in decimal degrees |
checksrequired |
array | The layers to run, e.g. ["crz","flood_inundation","water_body"]. tools/list gives every key. ["all"] runs all 40 at the highest price. |
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/zone_check \
-H "Authorization: Bearer $LANDLENS_KEY" \
-H "Content-Type: application/json" \
-d '{"lat":12.901,"lng":80.2279,"checks":["flood_inundation","water_body","cmda_landuse","airport"]}'
import os, requests
r = requests.post(
"https://verified.realestate/api/v1/tools/zone_check",
headers={"Authorization": f"Bearer {os.environ['LANDLENS_KEY']}"},
json={
"lat": 12.901,
"lng": 80.2279,
"checks": [
"flood_inundation",
"water_body",
"cmda_landuse",
"airport"
]
},
timeout=60,
)
body = r.json()
print(body["status"], body["credits_charged"], body["data"])
const res = await fetch("https://verified.realestate/api/v1/tools/zone_check", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.LANDLENS_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"lat": 12.901,
"lng": 80.2279,
"checks": [
"flood_inundation",
"water_body",
"cmda_landuse",
"airport"
]
}),
});
const body = await res.json();
console.log(body.status, body.credits_charged, body.data);
Is my plot at 12.9010, 80.2279 in a flood zone, near a water body, or inside the Pallikaranai buffer? What does the CMDA land use map say?
Your AI picks the layers, tells you the price first and reads each verdict back.
Responses
Every answer has the same envelope. What status can say for this call:
| status | What it means |
|---|---|
ok | At least one layer returned a verdict. Charged by the number of layers asked for. |
not_found | Every layer was not covered or failed, no valid layer was named, or the point is outside Tamil Nadu. Nothing is charged. |
invalid_args | lat, lng or checks was missing. Nothing ran. |
insufficient_credits | The account has too few credits for the layers asked. Nothing ran. |
Where the data comes from
The maps and registers behind each layer: the coastal zone management plan, flood inundation mapping, the state water body and reserve forest layers, Ramsar and eco-sensitive zone notifications, the airport height zone maps, the ASI protected monument list, transmission line routes, the CMDA Second Master Plan and the state's existing master plan register, the temple, Waqf and Bhoodan land registers, state gazette acquisition notices and the state GIS slum boundary map, among others.
Most layers cover Tamil Nadu. Some map only part of it, and outside that part they answer not_covered, never safe: CBA, swamps, aquifer recharge, soil type, building footprints and Chennai Metrowater services cover Chennai; CMDA land use, road widening, the transit corridor and the metro cover the four CMDA districts; Red Hills covers Chennai and Tiruvallur; the slum map covers five corporations. The master plan register covers about 93% of the area inside the state's 121 planning areas.
Each layer is as recent as its source. Notifications such as CRZ and eco-sensitive zones change rarely; acquisition notices and the land registers are read again on their own schedules.
The point is first resolved to its parcel so name based registers (temple, Waqf, Bhoodan, acquisition) can match the village and survey number; geometry layers test the point or the parcel boundary and say which in distance_basis. A layer that names a zone while reporting no match is returned as inconclusive, not clear.
Who uses it
Plot and flat buyers
Check flood, water body, CRZ and land use at the plot before paying an advance.
Lenders and valuers
Add a restriction screen to every property file, with the layer, verdict and distance on record.
Developers
Screen land parcels for airport height, HT lines, CRZ and master plan zoning before acquisition.
Property platforms
Show flood and water body flags on listings from their map pins.
Limits and good practice
- not_covered means there is no data for this place on that layer. It is never a clear.
- safe means no match on that map, not a legal clearance. A warning is a reason to check with the authority, not a refusal.
- A slum boundary on the state GIS map is not the list notified under the Slum Areas Act.
- Temple, Waqf, Bhoodan and acquisition registers match by village and survey number. Where no parcel resolves at the point they are not assessed.
- For a full report across every layer on a resolved parcel, Verify My Land runs them in the background and is the better route.
- details can be large and carries some layers' internal codes and display markup. Read results for the verdicts.
Pricing
Priced by the number of layers asked for: one to a handful costs 1 credit, and each further block of layers adds a credit, up to a cap for ["all"]. GET /api/v1/tools gives the lowest and highest price live. Severe layers swept without being asked are free, and a call where nothing could be assessed is not charged. 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 CRZ, flood zone or water body for a plot in Tamil Nadu?
Yes. Send the point with checks ["crz","flood_inundation","water_body"] and each comes back with its verdict and distance.
Can I get the CMDA land use zone of a plot by API?
Yes. Ask for cmda_landuse inside the CMDA area, or master_plan for the other planning areas. Both return the zone at the point.
What does not_covered mean?
That layer has no data for this district. It is reported as not covered so it is never read as clear.
Why did I get a result I did not ask for?
A short list of severe layers is always swept. If one flags, it is returned under unasked_severe_findings at no charge, so a narrow question cannot hide a prohibited zone.
How much does it cost?
A call with a few layers costs 1 credit. More layers cost more, up to a cap, and the live price list gives the range.
Updated 22 Oct 2026 · OpenAPI description