API reference
Catalog
Everything that can be searched, the fields each search needs, and whether it is live right now. No API key needed.
GET/api/v1/search/catalog
| Parameter | Description |
|---|---|
state | Optional. Return one state only, for example karnataka. |
curl "https://legiscore.in/api/v1/search/catalog?state=andhra"import requests
resp = requests.get(
"https://legiscore.in/api/v1/search/catalog?state=andhra",
headers={},
)
resp.raise_for_status()
print(resp.json())const resp = await fetch("https://legiscore.in/api/v1/search/catalog?state=andhra", {
method: "GET",
headers: { },
});
if (!resp.ok) throw new Error(await resp.text());
console.log(await resp.json());{
"data": {
"live_states": [
"andhra",
"telangana",
"maharashtra",
"..."
],
"source": {
"status": "operational",
"checked_at": "2026-10-05T10:00:00Z"
},
"searches": [
{
"state": "andhra",
"search_type": "ec",
"status": "operational",
"coming_soon": false,
"unavailable_reason": null,
"label": "Encumbrance Certificate",
"blurb": "Every registered transaction recorded against a property at the sub-registrar office.",
"yields": "Transaction rows plus the official EC certificate PDF.",
"typical_seconds": 300,
"fields": [
{
"name": "sro",
"label": "Sub-Registrar Office",
"type": "lookup",
"required": true,
"help": "The office where the property is registered.",
"lookup": {
"dim": "sro"
}
},
"..."
],
"one_of": [
{
"fields": [
"doc_no",
"year"
],
"message": "Give both the document number and its year of registration.",
"pairRequired": true
}
]
},
"..."
]
}
}Status values
| status | Meaning |
|---|---|
operational | Recent runs against this source are succeeding. |
degraded | Some recent runs failed. Failed searches are refunded. |
down | Most recent runs failed. Failed searches are refunded. |
unknown | No runs in the last 7 days, so there is nothing to judge from. |
unavailable | Held on purpose (coming_soon: true) or the service is unreachable. A held search is refused at submit with 422 before any charge, and unavailable_reason says why. |
The catalog is the source of truth for holds. The state pages in these docs are generated from the same data.