---
title: "Survey to location"
method: POST
path: "/api/v1/tools/survey_to_location"
---

# Survey to location

`POST /api/v1/tools/survey_to_location`

## Request

- Base URL: `https://verified.realestate`
- URL: `https://verified.realestate/api/v1/tools/survey_to_location`
- Auth: HTTP bearer

Look up a parcel from its survey number and revenue codes, and place it on the map: returns village/taluk/district, boundary and extent. Use to map a plot found by another tool (owner search or discovery rows carry these codes) or after the parcel lookup. Needs the revenue district_code, taluk_code and village_code; if you do not have them, ask the user for a map pin instead of guessing. Multi-part towns (Mylapore Part 1/2 style) are handled: a miss automatically retries every sibling part and the result names the part that holds the survey, so use the returned codes for record fetches. SEVERAL SURVEYS AT ONCE: pass "surveys" (up to 30) and every one is looked up in ONE call, returning parcels[] for those found and missing[] for the rest; when the user names several surveys, use this once, never one call per survey across turns. A bare PARENT survey that is divided comes back found:false with needs_subdivision:true and its subdivisions[] listed: report the split and which subdivisions exist, do not retry the parent. Free.

## Request body

- object
  - `survey_number` string: Survey number, e.g. 226 or 226/11C (one survey; use surveys for several)
  - `sub_division` string: Sub-division, if separate from the survey number
  - `district_code` string, required: Revenue district code
  - `taluk_code` string, required: Revenue taluk code
  - `village_code` string, required: Revenue village / town code
  - `ward_code` string: Urban ward number. A TOWN survey number repeats across blocks, so pass ward and block whenever the user has named them or an earlier result carried them.
  - `block_code` string: Urban block number, e.g. 0025. Use with ward_code. Without it a town survey recorded in several blocks comes back needs_block with the blocks listed.
  - `rural_urban` 'rural' | 'urban': Which register the codes belong to: pass the "register" the place-name lookup returned, or the parcel's rural_urban. A taluk numbers its villages and its towns separately and the codes overlap (in Madhavaram taluk, 001 is Kosapur village and also Madhavaram town), so a town survey looked up as a village is not found. Omit only when unknown.
  - `surveys` object[]: Several surveys in one call (up to 30). Each entry: survey_number (may carry the subdivision, "637/2B1"), optional sub_division, and optional district_code/taluk_code/village_code which default to the top-level codes, so surveys in different villages can be mixed.
    - `survey_number` string, required
    - `sub_division` string
    - `district_code` string
    - `taluk_code` string
    - `village_code` string
    - `rural_urban` 'rural' | 'urban'

## Response `200`

The envelope: ok, status, data, credits_charged, balance_after, request_id

## Other responses

- `401`: No valid credential
- `402`: Not enough credits
- `429`: Rate limit

---

[API](https://skmtc.dev/verified/apis/landlens-tool-api.md) · [All operations](https://skmtc.dev/verified/apis/landlens-tool-api/llms.txt) · [OpenAPI document](https://skmtc.dev/verified/apis/landlens-tool-api/revisions/7923c1c24431?raw)
