Haryana search
Holdings by Owner Name HELD
Every khewat an owner holds in a village, from the current jamabandi, with the khasras of each holding.
This search is temporarily unavailable. A submit is refused with 422 search_unavailable and nothing is charged. This page updates when the hold is lifted.
What you get
Each holding’s khewat and khatoni with the owner as listed, the khasras and areas of up to 10 holdings, and the portal’s pages as a PDF.
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_code | string | Required | from lookup “district” | hr_district lookup, option meta “value” |
tehsil_code | string | Required | from lookup “tehsil” | hr_tehsil lookup, option meta “value” |
village_code | string | Required | from lookup “village” | hr_village lookup, option meta “value” |
owner_name | string | Required | रिन्कु | field "owner_name" |
owner_type | string | Optional | 1 | field "owner_type" |
max_details | number | Optional | 5 | field "max_details" |
Field details
| Field | Type | Notes |
|---|---|---|
districtDistrict | lookup | |
tehsilTehsil | lookup | |
villageVillage | lookup | Type in English or Hindi. The village as the jamabandi names it. |
owner_nameOwner Name (in Hindi) | text | In Devanagari, as the jamabandi spells it. A close spelling is refused with the names the village lists. Max 60 characters. |
owner_typeOwner Type | select | Leave as Private unless the land is government, panchayat or company land. Values: 1 (Private (निजी)), 4 (Haryana Government (हरियाणा सरकार)), 8 (Gram Panchayat (ग्राम पंचायत)), 13 (Shamlat Deh (शामलात देह)), 21 (Company (कम्पनी)), 99 (Other (अन्य कुछ)). |
max_detailsHoldings to Detail | text | Optional, 0 to 10. Each detailed holding adds its khasras (and a captcha) to the run. Max 2 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).
| Field | Lookup | Needs first | Example call |
|---|---|---|---|
district | hr_district | - | GET /api/v1/search/lookups?state=haryana&dim=hr_district&q=<name> |
tehsil | hr_tehsil | district | GET /api/v1/search/lookups?state=haryana&dim=hr_tehsil&q=<name>&district=<code> |
village | hr_village | district, tehsil | GET /api/v1/search/lookups?state=haryana&dim=hr_village&q=<name>&district=<code>&tehsil=<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": "haryana",
"search_type": "search_by_owner",
"params": {
"district_code": "<district.value>",
"tehsil_code": "<tehsil.value>",
"village_code": "<village.value>",
"owner_name": "रिन्कु",
"owner_type": "1",
"max_details": 5
},
"label": "Holdings by Owner Name - 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": "haryana",
"search_type": "search_by_owner",
"params": {
"district_code": "<district.value>",
"tehsil_code": "<tehsil.value>",
"village_code": "<village.value>",
"owner_name": "रिन्कु",
"owner_type": "1",
"max_details": 5
},
"label": "Holdings by Owner Name - 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": "haryana",
"search_type": "search_by_owner",
"params": {
"district_code": "<district.value>",
"tehsil_code": "<tehsil.value>",
"village_code": "<village.value>",
"owner_name": "रिन्कु",
"owner_type": "1",
"max_details": 5
},
"label": "Holdings by Owner Name - 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": "haryana",
"search_type": "search_by_owner",
"label": "Holdings by Owner Name - 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": "haryana",
"search_type": "search_by_owner",
"label": "Holdings by Owner Name - 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}.