Building Approvals by Street, Address or Name API
Yes. The LandLens approval identifier API searches the consolidated approvals register by what is written on the permit rather than the land under it: street, locality, village, plot or door number, PIN code, block, ward, the applicant or promoter, a permit number, the authority, the kind of record and a year range. Filters combine, and each match comes back with its authority, kind, permit number and date, the address parts, the party and a link to the record. It covers about 171,000 CMDA, DTCP, panchayat and RERA records. A search that carries a permit number costs 1 credit; a search by address or name alone costs more, as the live price list shows. Nothing is charged when nothing matches.
https://verified.realestate/api/v1/tools/approval_identifier_search- Price
- 1 to 4 credits per answer
- Source
- CMDA, DTCP, panchayat and RERA registers, combined
- Coverage
- About 171,000 records with an address, party or number
- Answers in
- Usually under half a second
Example
curl -X POST https://verified.realestate/api/v1/tools/approval_identifier_search \
-H "Authorization: Bearer $LANDLENS_KEY" \
-H "Content-Type: application/json" \
-d '{"street":"2nd Avenue","locality":"Anna Nagar"}'
{
"ok": true,
"status": "ok",
"data": {
"found": true,
"filters": ["street", "locality"],
"total": 72,
"shown": 72,
"records": [
{
"authority": "CMDA",
"kind": null,
"kind_label": "Building plan approval",
"permit_number": "OL-03411",
"permit_date": "2026-08-10",
"year": "2026",
"plot": "700",
"door": "12",
"street": "2nd Avenue Extension",
"street_confirmed": false,
"locality": "Anna Nagar East",
"block": "6",
"village": "Periyakudal",
"party": null,
"also_by_survey": true,
"read_from": "Read from the scanned approval letter",
"record_url": "https://verified.realestate/landlens/mini/approvals/cmda/30601"
}
],
"note": null,
"years_swapped": false,
"status": "found"
},
"credits_charged": 4
}
A real answer from the API, trimmed to one of the 72 records, with empty address fields left out.
What it returns
One call returns up to 200 records, newest permit year first. total says how many matched in all.
| Field | What it holds |
|---|---|
total, shown, filters | How many matched, how many came back, and which filters were applied. |
records[].authority, kind, kind_label | CMDA, DTCP, Rural Panchayat, Town Panchayat or RERA, and the kind of record in words (building plan approval, layout approval, completion certificate, RERA registration). |
records[].permit_number, permit_date, year | The permit or certificate number and its date. |
records[].plot, door, street, locality, pincode, block, ward, village | The address as written on the record. |
records[].street_confirmed | true when the street was matched to a named street on the map. |
records[].party | The applicant or promoter, with any phone number or email masked. |
records[].also_by_survey | true when the same record can also be found by survey number with approval_search. |
records[].read_from | Where the address was read from, for example the scanned approval letter. |
records[].record_url | The record's page in LandLens. |
note, years_swapped | Whether the list was capped, and whether a year range sent backwards was turned round. |
Inputs
The JSON body of the POST is the arguments. Send at least one filter; two weak ones together (a street and a locality) narrow far better than one.
| Argument | Type | What to send |
|---|---|---|
street |
string | Street or road name, e.g. "4th Avenue". |
locality |
string | Locality or neighbourhood, e.g. "Anna Nagar". |
village |
string | Revenue village or town. |
plot |
string | Plot number as written on the permit. |
door |
string | Door or house number. |
pincode |
string | Six digit PIN code. |
block |
string | Block number. |
ward |
string | Ward number. |
party |
string | Applicant, owner or promoter named on the permit. |
permit_number |
string | Permit, approval or file number, whole or partial. |
authority |
string | CMDA, DTCP, Rural Panchayat, Town Panchayat or RERA, written exactly so. |
kind |
string | building, layout, completion_certificate, rera_registration or rera_regularisation. |
year_from |
integer | Earliest permit year. |
year_to |
integer | Latest permit year. |
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/approval_identifier_search \
-H "Authorization: Bearer $LANDLENS_KEY" \
-H "Content-Type: application/json" \
-d '{"street":"2nd Avenue","locality":"Anna Nagar"}'
import os, requests
r = requests.post(
"https://verified.realestate/api/v1/tools/approval_identifier_search",
headers={"Authorization": f"Bearer {os.environ['LANDLENS_KEY']}"},
json={
"street": "2nd Avenue",
"locality": "Anna Nagar"
},
timeout=20,
)
body = r.json()
print(body["status"], body["credits_charged"], body["data"])
const res = await fetch("https://verified.realestate/api/v1/tools/approval_identifier_search", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.LANDLENS_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"street": "2nd Avenue",
"locality": "Anna Nagar"
}),
});
const body = await res.json();
console.log(body.status, body.credits_charged, body.data);
What has CMDA approved on 2nd Avenue, Anna Nagar since 2020? Any completion certificates?
Your AI searches the approvals register by street and tells you the price first.
Responses
Every answer has the same envelope. What status can say for this call:
| status | What it means |
|---|---|
ok | One or more records matched. Charged the price for the kind of search. |
not_found | Nothing matched, or no filter was sent. Nothing is charged. |
invalid_args | A phone number was written into a field. Nothing ran. |
insufficient_credits | The account has too few credits. Nothing ran. |
Where the data comes from
Our consolidated approvals register, indexed by the address, party and number each record was written with: CMDA planning permissions and completion certificates, DTCP, town panchayat and rural panchayat permits, and the state real estate register's registrations and regularisations.
About 171,000 records: about 96,000 rural and town panchayat permits, 48,000 CMDA records (6,265 of them completion certificates), 23,700 RERA registrations and regularisations, and 3,300 DTCP permits.
Follows the underlying registers, which are read every week (CMDA certificates nightly). Addresses read from new approval letters are added as the letters are read.
Each text filter matches from the start of the field or from the start of any word in it, word by word in order, so "nhrb/n/1138" finds PP/NHRB/N/1138/2019 and a party name matches whatever comes before it. Plot, door, PIN code, block, ward, authority and kind match exactly. Where a street could be placed on the map, the matched street name is returned.
Who uses it
Flat buyers
Find the permit and completion certificate for a building from its door number and street, when nobody can tell you the survey number.
Due diligence teams
List every permit and RERA record that names a promoter, across authorities.
Analysts
Pull the approvals on a street or in a locality over a year range to see how it is being redeveloped.
Limits and good practice
- Words match as the permit spells them. An initial written out, or a street called by its old name, will not match; try fewer words.
- authority and kind must be sent exactly as listed above.
- Up to 200 records come back. Add a filter to narrow a larger result.
- No match is not proof that no approval exists. To search by the land itself, use approval_search.
Pricing
A search that carries a permit or approval number costs 1 credit. A search by street, locality, village, plot, door, PIN code or name alone is priced higher; GET /api/v1/tools gives both figures live. Nothing is charged when nothing 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 to find a building approval by address?
Yes. Send the street with the locality, door or plot number, and the API returns the CMDA, DTCP, panchayat and RERA records written with that address.
Can I look up a CMDA permit number?
Yes. Send it as permit_number, whole or in part; "nhrb/n/1138" finds PP/NHRB/N/1138/2019. A number search is the cheaper price.
Can I search by owner or builder name?
Yes, with party. It matches the applicant or promoter as the register wrote them.
How is this different from approval_search?
approval_search starts from the land, a survey number or a map point. This starts from what is written on the permit, which is the way in when there is no survey number.
How much does it cost?
A search with a permit number costs 1 credit; a search by address or name alone costs more, and the live price list gives the figure. Nothing is charged when nothing matches.
Updated 22 Oct 2026 · OpenAPI description