Karnataka search
Encumbrance Certificate (Kaveri 2.0) LIVE
Every registered transaction against a property since 1 January 2004, from the Karnataka sub-registrar records on Kaveri 2.0.
What you get
Each registered document with its parties, dates and values, plus the portal’s own EC (Form 15, or Form 16 when nothing is registered).
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.
| Name | Type | Required | Example | Comes from |
|---|---|---|---|---|
district | string | Required | from lookup “district” | kaveri_district lookup, option meta “value” |
taluk | string | Required | from lookup “taluk” | kaveri_taluk lookup, option meta “value” |
hobli | string | Required | from lookup “hobli” | kaveri_hobli lookup, option meta “value” |
village | string | Required | from lookup “village” | kaveri_village lookup, option meta “value” |
property_kind | string | Required | agricultural | field "property_kind" |
survey_number | string | Conditional | 201/1 | field "survey_number" |
from_date | string | Optional | 2024-01-01 | field "from_date" |
to_date | string | Optional | 2024-01-01 | field "to_date" |
Field details
| Field | Type | Notes |
|---|---|---|
districtDistrict | lookup | As Kaveri lists it. Bengaluru is split into registration districts such as Basavanagudi, Jayanagar and Shivajinagar. |
talukTaluk | lookup | |
hobliHobli | lookup | |
villageVillage | lookup | |
property_kindProperty Type | select | Values: agricultural (Agricultural land (survey number)), non_agricultural (Non-agricultural (site, flat, house, khata)). |
survey_numberSurvey and Hissa Number | text | Survey and hissa together, exactly as on the deed, e.g. 201/1. Kaveri matches it as written. Only when property_kind is "agricultural". Max 60 characters. |
property_number_typeProperty Number Type | lookup | What the number below is: Site No, Flat No, Khata No, BBMP PID and so on. Only when property_kind is "non_agricultural". |
property_numberProperty Number | text | As written on the deed. Kaveri matches it as written. Only when property_kind is "non_agricultural". Max 100 characters. |
from_dateFrom | date | Optional. 1 January 2004 if left blank, the earliest Kaveri searches online. Earliest 2004-01-01. |
to_dateTo | date | Optional. Today if left blank. Earliest 2004-01-01. |
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).
| Field | Lookup | Needs first | Example call |
|---|---|---|---|
district | kaveri_district | - | GET /api/v1/search/lookups?state=karnataka&dim=kaveri_district&q=<name> |
taluk | kaveri_taluk | district | GET /api/v1/search/lookups?state=karnataka&dim=kaveri_taluk&q=<name>&district=<code> |
hobli | kaveri_hobli | district, taluk | GET /api/v1/search/lookups?state=karnataka&dim=kaveri_hobli&q=<name>&district=<code>&taluk=<code> |
village | kaveri_village | district, taluk, hobli | GET /api/v1/search/lookups?state=karnataka&dim=kaveri_village&q=<name>&district=<code>&taluk=<code>&hobli=<code> |
property_number_type | kaveri_property_type | - | GET /api/v1/search/lookups?state=karnataka&dim=kaveri_property_type&q=<name> |
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": "karnataka",
"search_type": "ec",
"params": {
"district": "<district.value>",
"taluk": "<taluk.value>",
"hobli": "<hobli.value>",
"village": "<village.value>",
"property_kind": "agricultural",
"survey_number": "201/1",
"from_date": "2024-01-01",
"to_date": "2024-01-01"
},
"label": "Encumbrance Certificate (Kaveri 2.0) - 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": "karnataka",
"search_type": "ec",
"params": {
"district": "<district.value>",
"taluk": "<taluk.value>",
"hobli": "<hobli.value>",
"village": "<village.value>",
"property_kind": "agricultural",
"survey_number": "201/1",
"from_date": "2024-01-01",
"to_date": "2024-01-01"
},
"label": "Encumbrance Certificate (Kaveri 2.0) - 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": "karnataka",
"search_type": "ec",
"params": {
"district": "<district.value>",
"taluk": "<taluk.value>",
"hobli": "<hobli.value>",
"village": "<village.value>",
"property_kind": "agricultural",
"survey_number": "201/1",
"from_date": "2024-01-01",
"to_date": "2024-01-01"
},
"label": "Encumbrance Certificate (Kaveri 2.0) - case 8841"
}),
});
if (!resp.ok) throw new Error(await resp.text());
console.log(await resp.json());Sample responses
202 Accepted, at submit
{
"data": {
"searches": [
{
"id": "SRCH-2026-A1B2C3D4",
"state": "karnataka",
"search_type": "ec",
"label": "Encumbrance Certificate (Kaveri 2.0) - 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
{
"data": {
"id": "SRCH-2026-A1B2C3D4",
"state": "karnataka",
"search_type": "ec",
"label": "Encumbrance Certificate (Kaveri 2.0) - 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}.