LLegiScoreSearch API
Get an API key
Get started
IntroductionAuthenticationQuickstartSearch lifecycleErrorsWebhooksCreditsGet an API key
API reference
Credit balancegetCataloggetLookupsgetSearchespost
States
All states
All Maharashtra searchesIndex-II (Suchi Kramank 2)Index-II by Property (survey / gat / CTS)7/12 Extract (Satbara)8A Holding ExtractProperty Card (urban, by CTS number)heldPlot Map (Mahabhunakasha)Mutation Notices (Aapli Chawdi)Mutation Status (Aapli Chawdi)Revenue Court Cases (e-QJCourts)District Court Cases by Party Name (eCourts)MahaRERA CheckRERA Project Record + Documents (MahaRERA)RERA Orders and Judgements (MahaRERA)RERA Complaints (MahaRERA)
View as Markdownllms-full.txt
States / Maharashtra / Index-II by Property (survey / gat / CTS)

Maharashtra search

Index-II by Property (survey / gat / CTS) LIVE

Every registered document the registrar lists against one survey, gat or CTS number in a village, for any range of years from 1985, 20 credits per year (a range over ten years runs as one search per year). Rest of Maharashtra by default; Mumbai and city areas each have their own form.

Typical time
up to 20 min
Source status
No recent runs
search_type
index2_property
Register search: found:false is not a clear title

This search reads a register published for an area, not a per-property answer. found: false means no per-property match was computed. The documents are the deliverable, so read them.

What you get

One row per registered document (year, document number, parties, office), plus the Index-II abstract of each as a PDF (up to 25 per search). Busy places can time out; a year that times out is shown as not searched, never as no documents found.

Request parameters

These are the keys of params in the request body. A value shown as from lookup is a code you get by searching for the item by name first, not text you type.

NameTypeRequiredExampleComes from
district_namestringConditionalfrom lookup “district”mh_igr_district lookup, option meta “value”
tahsil_namestringConditionalfrom lookup “tahsil”mh_igr_tahsil lookup, option meta “value”
village_namestringConditionalfrom lookup “village”mh_igr_village lookup, option meta “value”
property_nostringRequired498/2field "property_no"
year_fromnumberRequired2024field "year_from"
match_textstringOptionalE-5, 304, Bramhafield "match_text"

Field details

FieldTypeNotes
tab
Area
selectOptional. Blank searches the Rest of Maharashtra. Values: rest (Rest of Maharashtra (village, by tahsil)), mumbai (Mumbai City or Mumbai Suburban), urban (City areas outside Mumbai (wards and peths)).
district
District
lookupOnly when tab is "" or "rest".
tahsil
Tahsil
lookupOnly when tab is "" or "rest".
village
Village
lookupNamed in Marathi, as the registrar’s portal lists it. Only when tab is "" or "rest".
mumbai_district
District
selectValues: Mumbai City (Mumbai City), Mumbai Suburban (Mumbai Suburban). Only when tab is "mumbai".
urban_district
District
selectValues: Ahmednagar (Ahmednagar), Akola (Akola), Amravati (Amravati), Aurangabad (Aurangabad), Beed (Beed), Bhandara (Bhandara), Buldhana (Buldhana), Chandrapur (Chandrapur), Dhule (Dhule), Gadchiroli (Gadchiroli), Gondia (Gondia), Hingoli (Hingoli), Jalgaon (Jalgaon), Jalna (Jalna), Kolhapur (Kolhapur), Latur (Latur), Nagpur (Nagpur), Nanded (Nanded), Nandurbar (Nandurbar), Nashik (Nashik), Osmanabad (Osmanabad), Palghar (Palghar), Parbhani (Parbhani), Pune (Pune), Raigad (Raigad), Ratnagiri (Ratnagiri), Sangli (Sangli), Satara (Satara), Sindhudurg (Sindhudurg), Solapur (Solapur), Thane (Thane), Wardha (Wardha), Washim (Washim), Yavatmal (Yavatmal). Only when tab is "urban".
area_name
Village / Area
textIn English, as the registrar’s portal writes it (Fort, Chembur, Kasaba Peth). A name it does not list is refused with the names it does list. Only when tab is "mumbai" or "urban". Max 80 characters.
property_no
Survey / Gat / CTS Number
textMax 40 characters.
year_from
From Year
year
year_to
To Year
yearOptional. Any range from 1985. 20 credits per year. Long ranges take longer; for a busy survey number, search one year at a time for the most complete result. Busy places, such as large Mumbai villages, can time out at the government site. A year that times out is shown as not searched, never as no documents found. Search fewer years at a time there.
match_text
Building / flat match (optional)
textType the building, flat or society, e.g. E-5, 304, Bramha. Matching documents come first and get their Index-II copy. Max 120 characters.

Resolve names to codes

Search for each item by name, take the code from the match and pass it in params. A lookup needs a query of at least 2 characters and returns at most 10 matches (details).

FieldLookupNeeds firstExample call
districtmh_igr_district-GET /api/v1/search/lookups?state=maharashtra&dim=mh_igr_district&q=<name>
tahsilmh_igr_tahsildistrictGET /api/v1/search/lookups?state=maharashtra&dim=mh_igr_tahsil&q=<name>&district=<code>
villagemh_igr_villagedistrict, tahsilGET /api/v1/search/lookups?state=maharashtra&dim=mh_igr_village&q=<name>&district=<code>&tahsil=<code>

Example request

Replace each <...> with the value from its lookup match, and the sample values with your own.

curl -X POST "https://legiscore.in/api/v1/search" \
  -H "Authorization: Bearer lsk_your_api_key" \
  -H "Idempotency-Key: los-case-8841" \
  -H "Content-Type: application/json" \
  -d '{
  "state": "maharashtra",
  "search_type": "index2_property",
  "params": {
    "district_name": "<district.value>",
    "tahsil_name": "<tahsil.value>",
    "village_name": "<village.value>",
    "property_no": "498/2",
    "year_from": 2024,
    "match_text": "E-5, 304, Bramha"
  },
  "label": "Index-II by Property (survey / gat / CTS) - case 8841"
}'
import requests

resp = requests.post(
    "https://legiscore.in/api/v1/search",
    headers={"Authorization": "Bearer lsk_your_api_key", "Idempotency-Key": "los-case-8841"},
    json={
      "state": "maharashtra",
      "search_type": "index2_property",
      "params": {
        "district_name": "<district.value>",
        "tahsil_name": "<tahsil.value>",
        "village_name": "<village.value>",
        "property_no": "498/2",
        "year_from": 2024,
        "match_text": "E-5, 304, Bramha"
      },
      "label": "Index-II by Property (survey / gat / CTS) - case 8841"
    },
)
resp.raise_for_status()
print(resp.json())
const resp = await fetch("https://legiscore.in/api/v1/search", {
  method: "POST",
  headers: { Authorization: "Bearer lsk_your_api_key", "Idempotency-Key": "los-case-8841", "Content-Type": "application/json" },
  body: JSON.stringify({
    "state": "maharashtra",
    "search_type": "index2_property",
    "params": {
      "district_name": "<district.value>",
      "tahsil_name": "<tahsil.value>",
      "village_name": "<village.value>",
      "property_no": "498/2",
      "year_from": 2024,
      "match_text": "E-5, 304, Bramha"
    },
    "label": "Index-II by Property (survey / gat / CTS) - case 8841"
  }),
});
if (!resp.ok) throw new Error(await resp.text());
console.log(await resp.json());

Sample responses

202 Accepted, at submit

json
{
  "data": {
    "searches": [
      {
        "id": "SRCH-2026-A1B2C3D4",
        "state": "maharashtra",
        "search_type": "index2_property",
        "label": "Index-II by Property (survey / gat / CTS) - case 8841",
        "status": "queued",
        "progress": 0,
        "note": null,
        "found": null,
        "records": null,
        "record_count": null,
        "documents": [],
        "error": null,
        "refunded": false,
        "replayed": false,
        "batch_id": null,
        "recovery_of": null,
        "source": "api",
        "created_at": "2026-10-05T10:00:00Z",
        "completed_at": null
      }
    ],
    "rejected": [],
    "replayed": {
      "free": 0,
      "billed": 0,
      "idempotent": 0
    },
    "batch_id": null
  }
}

200 OK, GET /api/v1/search/{id} once finished

json
{
  "data": {
    "id": "SRCH-2026-A1B2C3D4",
    "state": "maharashtra",
    "search_type": "index2_property",
    "label": "Index-II by Property (survey / gat / CTS) - case 8841",
    "status": "succeeded",
    "progress": 100,
    "note": null,
    "found": true,
    "records": [
      {
        "...": "one object per row the source returned; shape varies by search"
      }
    ],
    "record_count": 1,
    "documents": [
      {
        "filename": "result.pdf",
        "content_type": "application/pdf",
        "bytes": 184233,
        "withheld": false
      }
    ],
    "error": null,
    "refunded": false,
    "replayed": false,
    "batch_id": null,
    "recovery_of": null,
    "source": "api",
    "created_at": "2026-10-05T10:00:00Z",
    "completed_at": "2026-10-05T10:03:12Z"
  }
}

records holds one object per row the source returned. Its shape is specific to this search. Documents are fetched with GET /api/v1/search/{id}/documents/{filename}.

PreviousIndex-II (Suchi Kramank 2)Next7/12 Extract (Satbara)