# LegiScore Search API: full documentation Setup prompt for AI agents: ```text You are integrating the LegiScore Search API: government land and property record searches across Indian states. Full documentation (read it before writing code): https://legiscore.in/docs Machine-readable: https://legiscore.in/docs/llms-full.txt (all pages) and https://legiscore.in/docs/llms.txt (index). Any page as Markdown: https://legiscore.in/docs/md/. BASE URL https://legiscore.in/api/v1 AUTHENTICATION - Send "Authorization: Bearer " (or "X-API-Key: ") on every request. Keys start with "lsk_". - Read the key from the environment variable LEGISCORE_API_KEY. Never hardcode it, never log it, never ship it to a browser or mobile app. - Only GET /api/v1/search/catalog works without a key. FLOW: SUBMIT, POLL, RESULT 1. Find the search in the catalog: GET /api/v1/search/catalog?state=. It lists each search_type, its fields, and whether it is live or held. 2. Submit: POST /api/v1/search with {"state", "search_type", "params", "label"?, "callback_url"?}. Add an Idempotency-Key header so a retry never double-charges. You get 202 and a search id (SRCH-...). 3. Poll GET /api/v1/search/{id} every 5 to 10 seconds, or pass an https callback_url and verify the X-LegiScore-Signature HMAC header. Stop when status is succeeded, failed or cancelled. 4. Read found, records and documents. Download a document with GET /api/v1/search/{id}/documents/{filename} (302 to a one-hour signed URL). - found:false on a search marked "Register" does NOT mean the property is clear. Read the documents. - Some searches use an OTP. LegiScore handles it; the status may show awaiting_otp for a short time. Do nothing. LOOKUPS: SEARCH BY NAME, THEN SEARCH - Where a field needs a place or office code, find it by NAME with GET /api/v1/search/lookups?state=&dim=&q=. The lookup type is named on each search page. - Send q (2 characters or more). At most 10 matches return. Rate limit: 120 lookups a minute per key. - Take the code from the chosen match's "meta" and pass it in params. - NEVER try to list everything in a lookup, page through it, or loop over letters to enumerate it. That is not supported and will be refused or rate limited. ERRORS AND REFUNDS - Every error is {"error": {"code", "message"}}. 422 invalid_params and 429 follow RFC 9457; read invalid_params[] and fix the named field. A 422 is never charged. - 429: wait Retry-After seconds, then retry. 402 insufficient_credits: stop and tell the user to top up. - A search that fails or is cancelled is refunded automatically. A search that is HELD is refused with 422 search_unavailable before any charge. - Check GET /api/v1/search/credits for the wallet balance. When unsure about a search's parameters, fetch its page: https://legiscore.in/docs/states//. ``` --- Source: https://legiscore.in/docs # Government land and property records, one REST API Search official registers across Indian states. Submit a search, poll or receive a webhook, and fetch the result with its source documents. Credits are charged per search and refunded automatically when a search fails. Base URL: `https://legiscore.in/api/v1` Success is `{ "data": ... }`. A failure is `{ "error": { "code", "message" } }`. 422 and 429 follow RFC 9457 problem details. ## How it works 1. Find the search: browse [States](https://legiscore.in/docs/states) or call the public [catalog](https://legiscore.in/docs/api/catalog). 2. Resolve names to codes with a [lookup](https://legiscore.in/docs/api/lookups) and pass the code it returns. 3. Submit: `POST /api/v1/search` returns a search id straight away. 4. Poll `GET /api/v1/search/{id}` or give a `callback_url`. Download source documents from the result. On searches marked Register, `found: false` only means no per-property match was computed. The documents are the deliverable. ## Copy setup instructions ```text You are integrating the LegiScore Search API: government land and property record searches across Indian states. Full documentation (read it before writing code): https://legiscore.in/docs Machine-readable: https://legiscore.in/docs/llms-full.txt (all pages) and https://legiscore.in/docs/llms.txt (index). Any page as Markdown: https://legiscore.in/docs/md/. BASE URL https://legiscore.in/api/v1 AUTHENTICATION - Send "Authorization: Bearer " (or "X-API-Key: ") on every request. Keys start with "lsk_". - Read the key from the environment variable LEGISCORE_API_KEY. Never hardcode it, never log it, never ship it to a browser or mobile app. - Only GET /api/v1/search/catalog works without a key. FLOW: SUBMIT, POLL, RESULT 1. Find the search in the catalog: GET /api/v1/search/catalog?state=. It lists each search_type, its fields, and whether it is live or held. 2. Submit: POST /api/v1/search with {"state", "search_type", "params", "label"?, "callback_url"?}. Add an Idempotency-Key header so a retry never double-charges. You get 202 and a search id (SRCH-...). 3. Poll GET /api/v1/search/{id} every 5 to 10 seconds, or pass an https callback_url and verify the X-LegiScore-Signature HMAC header. Stop when status is succeeded, failed or cancelled. 4. Read found, records and documents. Download a document with GET /api/v1/search/{id}/documents/{filename} (302 to a one-hour signed URL). - found:false on a search marked "Register" does NOT mean the property is clear. Read the documents. - Some searches use an OTP. LegiScore handles it; the status may show awaiting_otp for a short time. Do nothing. LOOKUPS: SEARCH BY NAME, THEN SEARCH - Where a field needs a place or office code, find it by NAME with GET /api/v1/search/lookups?state=&dim=&q=. The lookup type is named on each search page. - Send q (2 characters or more). At most 10 matches return. Rate limit: 120 lookups a minute per key. - Take the code from the chosen match's "meta" and pass it in params. - NEVER try to list everything in a lookup, page through it, or loop over letters to enumerate it. That is not supported and will be refused or rate limited. ERRORS AND REFUNDS - Every error is {"error": {"code", "message"}}. 422 invalid_params and 429 follow RFC 9457; read invalid_params[] and fix the named field. A 422 is never charged. - 429: wait Retry-After seconds, then retry. 402 insufficient_credits: stop and tell the user to top up. - A search that fails or is cancelled is refunded automatically. A search that is HELD is refused with 422 search_unavailable before any charge. - Check GET /api/v1/search/credits for the wallet balance. When unsure about a search's parameters, fetch its page: https://legiscore.in/docs/states//. ``` --- Source: https://legiscore.in/docs/authentication # Authentication Send your API key on every request, as a Bearer token or in an X-API-Key header. The key decides which workspace wallet pays. ```http Authorization: Bearer lsk_your_api_key # or X-API-Key: lsk_your_api_key ``` | Property | Behaviour | | --- | --- | | Workspace | A key belongs to one workspace. Searches it submits are charged to that workspace's search wallet. | | Revocation | A deactivated key is refused immediately with 401. | | Rate limits | Per key. See Errors. | | Domain-restricted keys | Requests must carry an Origin or Referer header from an allowed domain. Use an unrestricted key for server-to-server calls. | 401 body: `{ "error": { "code": "unauthorized", "message": "API key not found" } }`. Messages: Invalid API key format, API key not found, API key is deactivated, Domain not allowed, Origin header required for domain-restricted keys. Keep keys on your server. Never ship an lsk_ key in a browser or mobile app. The only unauthenticated endpoint is the public [catalog](https://legiscore.in/docs/api/catalog). Get a key: https://legiscore.in/docs/get-an-api-key --- Source: https://legiscore.in/docs/quickstart # Quickstart Run your first search in three calls: check your balance, submit, then fetch the result. You need an API key and credits in your search wallet. ## 1. Check your balance **curl** ```bash curl "https://legiscore.in/api/v1/search/credits" \ -H "Authorization: Bearer lsk_your_api_key" ``` **Python** ```python import requests resp = requests.get( "https://legiscore.in/api/v1/search/credits", headers={"Authorization": "Bearer lsk_your_api_key"}, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js const resp = await fetch("https://legiscore.in/api/v1/search/credits", { method: "GET", headers: { Authorization: "Bearer lsk_your_api_key" }, }); if (!resp.ok) throw new Error(await resp.text()); console.log(await resp.json()); ``` ## 2. Submit a search This looks up a housing project on the Andhra Pradesh RERA register by name. It takes plain text, so no lookup is needed. **curl** ```bash curl -X POST "https://legiscore.in/api/v1/search" \ -H "Authorization: Bearer lsk_your_api_key" \ -H "Content-Type: application/json" \ -d '{ "state": "andhra", "search_type": "rera", "params": { "search_term": "Aparna Amaravati One" }, "label": "Quickstart test" }' ``` **Python** ```python import requests resp = requests.post( "https://legiscore.in/api/v1/search", headers={"Authorization": "Bearer lsk_your_api_key"}, json={ "state": "andhra", "search_type": "rera", "params": { "search_term": "Aparna Amaravati One" }, "label": "Quickstart test" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js const resp = await fetch("https://legiscore.in/api/v1/search", { method: "POST", headers: { Authorization: "Bearer lsk_your_api_key", "Content-Type": "application/json" }, body: JSON.stringify({ "state": "andhra", "search_type": "rera", "params": { "search_term": "Aparna Amaravati One" }, "label": "Quickstart test" }), }); if (!resp.ok) throw new Error(await resp.text()); console.log(await resp.json()); ``` You get 202 Accepted and a search object. Keep the id (for example SRCH-2026-A1B2C3D4), status is queued. ## 3. Fetch the result Poll every 5 to 10 seconds until status is succeeded, failed or cancelled, or pass a callback_url when you submit. **curl** ```bash curl "https://legiscore.in/api/v1/search/SRCH-2026-A1B2C3D4" \ -H "Authorization: Bearer lsk_your_api_key" ``` **Python** ```python import requests resp = requests.get( "https://legiscore.in/api/v1/search/SRCH-2026-A1B2C3D4", headers={"Authorization": "Bearer lsk_your_api_key"}, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js const resp = await fetch("https://legiscore.in/api/v1/search/SRCH-2026-A1B2C3D4", { method: "GET", headers: { Authorization: "Bearer lsk_your_api_key" }, }); if (!resp.ok) throw new Error(await resp.text()); console.log(await resp.json()); ``` Add an Idempotency-Key header to the submit call. A retry with the same key within 24 hours returns the original search and charges nothing. ## Copy setup instructions ```text You are integrating the LegiScore Search API: government land and property record searches across Indian states. Full documentation (read it before writing code): https://legiscore.in/docs Machine-readable: https://legiscore.in/docs/llms-full.txt (all pages) and https://legiscore.in/docs/llms.txt (index). Any page as Markdown: https://legiscore.in/docs/md/. BASE URL https://legiscore.in/api/v1 AUTHENTICATION - Send "Authorization: Bearer " (or "X-API-Key: ") on every request. Keys start with "lsk_". - Read the key from the environment variable LEGISCORE_API_KEY. Never hardcode it, never log it, never ship it to a browser or mobile app. - Only GET /api/v1/search/catalog works without a key. FLOW: SUBMIT, POLL, RESULT 1. Find the search in the catalog: GET /api/v1/search/catalog?state=. It lists each search_type, its fields, and whether it is live or held. 2. Submit: POST /api/v1/search with {"state", "search_type", "params", "label"?, "callback_url"?}. Add an Idempotency-Key header so a retry never double-charges. You get 202 and a search id (SRCH-...). 3. Poll GET /api/v1/search/{id} every 5 to 10 seconds, or pass an https callback_url and verify the X-LegiScore-Signature HMAC header. Stop when status is succeeded, failed or cancelled. 4. Read found, records and documents. Download a document with GET /api/v1/search/{id}/documents/{filename} (302 to a one-hour signed URL). - found:false on a search marked "Register" does NOT mean the property is clear. Read the documents. - Some searches use an OTP. LegiScore handles it; the status may show awaiting_otp for a short time. Do nothing. LOOKUPS: SEARCH BY NAME, THEN SEARCH - Where a field needs a place or office code, find it by NAME with GET /api/v1/search/lookups?state=&dim=&q=. The lookup type is named on each search page. - Send q (2 characters or more). At most 10 matches return. Rate limit: 120 lookups a minute per key. - Take the code from the chosen match's "meta" and pass it in params. - NEVER try to list everything in a lookup, page through it, or loop over letters to enumerate it. That is not supported and will be refused or rate limited. ERRORS AND REFUNDS - Every error is {"error": {"code", "message"}}. 422 invalid_params and 429 follow RFC 9457; read invalid_params[] and fix the named field. A 422 is never charged. - 429: wait Retry-After seconds, then retry. 402 insufficient_credits: stop and tell the user to top up. - A search that fails or is cancelled is refunded automatically. A search that is HELD is refused with 422 search_unavailable before any charge. - Check GET /api/v1/search/credits for the wallet balance. When unsure about a search's parameters, fetch its page: https://legiscore.in/docs/states//. ``` --- Source: https://legiscore.in/docs/search-lifecycle # Search lifecycle A search is asynchronous: submit it, it runs against the official source, read the result when it finishes. ```text POST /api/v1/search -> 202 { id, status: "queued" } GET /api/v1/search/{id} -> queued -> running -> succeeded | failed | cancelled GET /api/v1/search/{id}/documents/{filename} -> 302 to a short-lived signed URL ``` ## Submit `POST /api/v1/search` takes one search, or up to 25 in `searches[]`. The charge is taken at submit. A request that fails validation returns 422 and charges nothing. ```json { "state": "telangana", "search_type": "ec", "params": { "...": "see the search page" }, "label": "Case 8841 EC", "callback_url": "https://your-app.example.com/hooks/legiscore" } ``` In a batch each item is accepted or refused on its own. Refused items return in `rejected[]` as { index, code, message, retry_after? } and are not charged. ## Statuses | status | Meaning | Terminal | | --- | --- | --- | | queued | Accepted and charged. Waiting for a slot. | No | | running | The source is being queried. progress is an estimate 0-100. | No | | awaiting_otp | The source asked for a one-time code. See OTP. | No | | succeeded | Finished. found, records and documents are filled in. | Yes | | failed | The source could not answer. Refunded. error says why. | Yes | | cancelled | You cancelled it. Refunded when confirmed. | Yes | A search not terminal after 3 hours is failed and refunded automatically. Poll every 5 to 10 seconds or use a webhook. ## Reading the result | Field | Meaning | | --- | --- | | found | null until finished. false means the source answered and holds nothing under that query. | | records[] | Rows the source returned. Shape depends on the search. | | documents[] | { filename, content_type, bytes, withheld }. Download with the documents route. | | note | A coverage caveat from the source, when there is one. | | error | { kind, message } on a failed search. | | refunded | Whether this search was refunded. | Register searches: found:false is not a clear title. It means no per-property match was computed. Read the documents. Failure kinds: portal_blocked (retry later), portal_timeout (retry), portal_changed (report to us), captcha_failed (retry), otp_timeout (retry), invalid_input (do not retry, fix parameters), internal (retry, then contact us). ## Documents `GET /api/v1/search/{id}/documents/{filename}` answers 302 to a signed URL valid for one hour. A file that failed its integrity check returns 410 withheld. ## OTP Some sources verify with a one-time code (searches marked OTP). LegiScore handles it, so the search may sit in awaiting_otp briefly and continue. If a search needs a code sent to your own registered mobile: `POST /api/v1/search/{id}/otp` with { "otp": "123456" } (4 to 8 digits). Not waiting returns 409 not_waiting. ## Cancel `DELETE /api/v1/search/{id}` cancels an unfinished search. A finished one returns 409 already_finished. ## Idempotency and repeats | Situation | Charge | Result | | --- | --- | --- | | Same Idempotency-Key within 24 hours | Free | Original returned, header Idempotent-Replayed: true, HTTP 200 | | Same search again by the same person within 24 hours | Free | Same id, replayed: true | | Same search by a colleague in the same workspace within 24 hours | Charged | Served from the recent result with a new id | Idempotency-Key: 1 to 255 printable ASCII characters, no spaces. Reuse with a different body returns 409 idempotency_key_reused. ## List `GET /api/v1/search?limit=50&offset=0&status=succeeded&batch_id=...`, newest first, limit at most 200. --- Source: https://legiscore.in/docs/errors # Errors Every failure carries error.code and error.message. 422 and 429 also follow RFC 9457 problem details. | HTTP | error.code | When | | --- | --- | --- | | 400 | invalid_body, too_many, invalid_idempotency_key, invalid_otp | Malformed request, more than 25 searches in a batch, or a bad idempotency key or OTP. | | 401 | unauthorized | Missing, unknown or deactivated key. | | 402 | insufficient_credits | Whole request refused, nothing charged. | | 404 | not_found, unknown_dim, unsupported_state | No such search, lookup or state. | | 409 | already_finished, not_waiting, not_finished, already_recovery, idempotency_key_reused | The search is not in a state that allows this call. | | 410 | withheld | A document failed its integrity check. | | 422 | invalid_params, search_unavailable | Parameters cannot be answered, or the search is held. Nothing charged. | | 429 | rate_limited, too_many_open_searches, upstream_busy | Slow down. Honour Retry-After. | | 502/503 | assist_failed, recovery_failed, recovery_unavailable, place_search_unavailable | Retry later. | | 500 | internal | Unexpected. Safe to retry. | ## 422 invalid_params Parameters are checked before anything is charged. Every problem is listed with field, value and reason; lookup names the lookup that resolves it. ```json { "type": "https://legiscore.in/docs/errors#invalid-params", "title": "Unprocessable search parameters", "status": 422, "detail": "sro_code 9999 is not a registered office for telangana.", "invalid_params": [ { "index": 0, "field": "sro", "value": "9999", "reason": "sro_code 9999 is not a registered office for telangana.", "lookup": "sro" } ], "error": { "code": "invalid_params", "message": "sro_code 9999 is not a registered office for telangana." } } ``` 422 search_unavailable: the search is HELD. Refused before any charge. Check the catalog. ## 429 too many requests Three limits, one retry path. Response has Retry-After (seconds) and X-RateLimit-Limit / X-RateLimit-Remaining. | Limit | Default | Applies to | | --- | --- | --- | | Submit | 120 searches per minute per key; a batch of 25 spends 25 | POST /api/v1/search | | Reads | 10 times the submit budget per key | GET search and list | | Open searches | 100 queued or running per workspace | POST /api/v1/search | | Lookups | 120 calls per minute per key | GET lookups and places | upstream_busy: the search service is at capacity. Nothing charged. Retry after the interval. --- Source: https://legiscore.in/docs/webhooks # Webhooks Give a callback_url and we POST the finished search to you, signed. Add callback_url to a search, or once at the top of a batch. It must be https with no username or password. Without one, your workspace's webhook subscriptions receive the same events. Events: search.completed (succeeded), search.failed (failed or cancelled). ```json { "delivery_id": "dlv_7f3a...", "event": "search.completed", "api_version": "2026-04-26", "occurred_at": "2026-10-05T10:03:12Z", "data": { "search": { "id": "SRCH-2026-A1B2C3D4", "status": "succeeded", "found": true }, "links": { "self": "/api/v1/search/SRCH-2026-A1B2C3D4", "documents": [ "/api/v1/search/SRCH-2026-A1B2C3D4/documents/result.pdf" ] } } } ``` Links are paths, not signed URLs; call them with your API key. ## Verify the signature Headers: X-LegiScore-Event, X-LegiScore-Delivery (unique, de-duplicate on it), X-LegiScore-Timestamp, X-LegiScore-Signature = "sha256=" + hex HMAC-SHA256 of "." keyed with your webhook secret. Verify against the raw body before parsing. Reject old timestamps. ```js import crypto from "node:crypto"; export function verify(rawBody, headers, secret) { const timestamp = headers["x-legiscore-timestamp"]; const received = headers["x-legiscore-signature"]; const expected = "sha256=" + crypto.createHmac("sha256", secret).update(`${timestamp}.${rawBody}`).digest("hex"); const a = Buffer.from(received); const b = Buffer.from(expected); return a.length === b.length && crypto.timingSafeEqual(a, b); } ``` ## Delivery and retries - Answer any 2xx within 30 seconds. - Otherwise retried after 60, 120, 240, 480 and 960 seconds (6 attempts). - The same delivery can arrive twice. De-duplicate on X-LegiScore-Delivery. - Polling GET /api/v1/search/{id} always gives the truth. --- Source: https://legiscore.in/docs/credits # Credits Searches are paid from a credit wallet on your workspace. Credits are charged per search and refunded in full if the search fails for any reason. | Event | Charge | | --- | --- | | Search submitted | Charged at submit. | | Maharashtra Index-II by property | 20 credits per year searched (year_to defaults to year_from). 1 to 10 years: one search. 11 or more years: one search per year, returned together under one batch_id. Years the portal never answered are refunded. | | Search fails for any reason, or is cancelled | Refunded in full. | | Request refused (422, 402, 429) | Nothing charged. | | Search is HELD | Refused with 422 search_unavailable before any charge. | | Same search again by the same person within 24 hours | Free. Same id returned. | | Same search by a colleague in the workspace within 24 hours | Charged. Served from the recent result. | | Retry with the same Idempotency-Key within 24 hours | Free. | | A batch that would exceed your balance | Refused whole with 402. Nothing charged. | Optional layers: AI Assist (`POST /api/v1/search/assist`, charged only when something was extracted) and AI Recovery (`POST /api/v1/search/{id}/recover`, refunded if nothing defensible to try, not available for OTP searches). Check your balance with `GET /api/v1/search/credits`. This is the search wallet, separate from report credits. Credits are added by LegiScore: contact info@legiscore.in. --- Source: https://legiscore.in/docs/get-an-api-key # Get an API key Keys are issued per workspace. If you have a LegiScore workspace: sign in, open Organization > API Keys (https://legiscore.in/v1/org?tab=api-keys) or Profile > API Keys (https://legiscore.in/v1/profile?item=api-keys), create a key and copy it (starts with lsk_, shown once). Ask us to add credits to the search wallet. New to LegiScore: email info@legiscore.in with your company name, the states you need and a rough monthly volume. --- Source: https://legiscore.in/docs/api/credits # Credit balance `GET /api/v1/search/credits?limit=20` (limit at most 100). Reads your search wallet. **curl** ```bash curl "https://legiscore.in/api/v1/search/credits?limit=20" \ -H "Authorization: Bearer lsk_your_api_key" ``` **Python** ```python import requests resp = requests.get( "https://legiscore.in/api/v1/search/credits?limit=20", headers={"Authorization": "Bearer lsk_your_api_key"}, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js const resp = await fetch("https://legiscore.in/api/v1/search/credits?limit=20", { method: "GET", headers: { Authorization: "Bearer lsk_your_api_key" }, }); if (!resp.ok) throw new Error(await resp.text()); console.log(await resp.json()); ``` ```json { "data": { "scope": "organization", "balance": 1180, "spendable": 1180, "postpaid": { "enabled": false, "limit": 0 }, "ledger": [ { "type": "charge", "balance_after": 1180, "cost_key": "search.andhra.rera", "note": null, "at": "2026-10-05T10:00:00Z" } ] } } ``` | Field | Meaning | | --- | --- | | scope | organization for a workspace key, personal otherwise. | | balance | Credits in the wallet. | | spendable | What you can spend now, including postpaid headroom. | | postpaid | Whether the workspace is billed after the fact, and its limit. | | ledger[] | Newest first. type is charge, refund, topup or adjust. | --- Source: https://legiscore.in/docs/api/searches # Searches ## Submit `POST /api/v1/search` | Body field | Type | Required | Description | | --- | --- | --- | --- | | state | string | Yes | State key, for example telangana. | | search_type | string | Yes | Search key, for example ec. | | params | object | Yes | The search parameters. Each search page lists them. | | label | string | No | Your own reference. | | callback_url | string | No | HTTPS URL to receive the result. | | searches | array | Batch | Up to 25 items of the same shape. | Header Idempotency-Key (optional): a retry within 24 hours is free and returns the original. Returns 202 with data.searches[] and data.rejected[]; 200 when every item was an idempotent replay; 400 when nothing was accepted. ## Get / list / cancel / documents - `GET /api/v1/search/{id}`: the search object (id like SRCH-2026-A1B2C3D4). - `GET /api/v1/search?limit=50&offset=0&status=&batch_id=`: newest first, limit at most 200. - `DELETE /api/v1/search/{id}`: cancel; 409 already_finished once done. - `GET /api/v1/search/{id}/documents/{filename}`: 302 to a one-hour signed URL; 410 withheld on a failed integrity check. - `POST /api/v1/search/{id}/otp` { "otp": "123456" }: only for a search awaiting an OTP sent to your own mobile. - `POST /api/v1/search/{id}/recover`: AI Recovery; returns a new search with recovery_of set. - `POST /api/v1/search/assist`: AI Assist; multipart state plus file (PDF or image, up to 20 MB) or text; proposes parameters, never submits. See also: https://legiscore.in/docs/api/credits, https://legiscore.in/docs/api/catalog, https://legiscore.in/docs/api/lookups. --- Source: https://legiscore.in/docs/api/catalog # Catalog `GET /api/v1/search/catalog[?state=karnataka]`. Public, no key. Everything that can be searched, the fields each needs, and whether it is live right now. ```bash curl "https://legiscore.in/api/v1/search/catalog?state=andhra" ``` Each entry: state, search_type, status (operational, degraded, down, unknown, unavailable), coming_soon, unavailable_reason, label, blurb, yields, typical_seconds, fields[], one_of[]. A held search has status unavailable and is refused at submit with 422 before any charge. ## Searches now | State | search_type | Search | Status | | --- | --- | --- | --- | | Andhra Pradesh | ec | Encumbrance Certificate | Operational | | Andhra Pradesh | prohibited | Prohibitory Orders (22A) | Degraded | | Andhra Pradesh | ror | Record of Rights (1-B / Adangal) | No recent runs | | Andhra Pradesh | property_tax | Property Tax | Operational | | Andhra Pradesh | rera | RERA Projects (AP RERA) | No recent runs | | Andhra Pradesh | rera_single | RERA Project Record + Documents (AP RERA) | No recent runs | | Telangana | ec | Encumbrance Certificate | Operational | | Telangana | prohibited | Prohibitory Orders (22A) | Operational | | Telangana | property_tax | Property Tax | No recent runs | | Telangana | ghmc_property_tax | Property Tax (Greater Hyderabad) | held | | Maharashtra | index2 | Index-II (Suchi Kramank 2) | No recent runs | | Maharashtra | index2_property | Index-II by Property (survey / gat / CTS) | No recent runs | | Maharashtra | satbara_712 | 7/12 Extract (Satbara) | No recent runs | | Maharashtra | eight_a | 8A Holding Extract | No recent runs | | Maharashtra | property_card | Property Card (urban, by CTS number) | held | | Maharashtra | bhunaksha | Plot Map (Mahabhunakasha) | No recent runs | | Maharashtra | mutation_notices | Mutation Notices (Aapli Chawdi) | No recent runs | | Maharashtra | mutation_status | Mutation Status (Aapli Chawdi) | No recent runs | | Maharashtra | revenue_court | Revenue Court Cases (e-QJCourts) | No recent runs | | Maharashtra | court_cases | District Court Cases by Party Name (eCourts) | No recent runs | | Maharashtra | rera_check | MahaRERA Check | No recent runs | | Maharashtra | rera_single | RERA Project Record + Documents (MahaRERA) | No recent runs | | Maharashtra | rera_orders | RERA Orders and Judgements (MahaRERA) | No recent runs | | Maharashtra | rera_complaints | RERA Complaints (MahaRERA) | No recent runs | | Karnataka | revenue_cases | Revenue Court Cases (RCCMS) | No recent runs | | Karnataka | ec | Encumbrance Certificate (Kaveri 2.0) | No recent runs | | Karnataka | eswathu | Rural Property Record (e-Swathu) | No recent runs | | Karnataka | rtc | RTC / Pahani (Bhoomi) | held | | Karnataka | akarband | Akarband / Survey Sketch (Bhoomojini) | No recent runs | | Karnataka | village_map | Village Map (Bhoomi) | No recent runs | | Karnataka | mutation | Mutation register extracts (Bhoomi) | No recent runs | | Karnataka | mutation_history | Mutation history (Bhoomi) | No recent runs | | Karnataka | echawadi_pending | Pending mutations & cases (eChawadi) | No recent runs | | Karnataka | land_conversion_status | Land conversion status (DC) | No recent runs | | Karnataka | land_conversion_order | Final land conversion order (DC) | No recent runs | | Karnataka | land_conversion_mutation | Land conversion order, any year (Bhoomi mutation register) | No recent runs | | Karnataka | form57_applications | Form 57 applications (govt land regularisation) | No recent runs | | Karnataka | mojini_status | Survey applications (Mojini) | No recent runs | | Karnataka | survey_sketch | Digitised survey sketch (Bhoomi) | No recent runs | | Karnataka | survey_documents | Scanned survey records (Bhoomi) | No recent runs | | Karnataka | rdgis_parcel | Land Details report (Bhoomi Land Stack) | No recent runs | | Karnataka | rdgis_tippan | Original Tippan scans (Bhoomi Land Stack) | No recent runs | | Karnataka | bbmp_khata_download | Bengaluru Khata by PID (BBMP) | No recent runs | | Karnataka | bbmp_kaveri_properties | Bengaluru registrability check by PID (BBMP) | No recent runs | | Karnataka | bbmp_form3_view | Bengaluru e-Khata by Document No (BBMP) | No recent runs | | Karnataka | bda_landuse | Land Use / Zoning (BDA and BMRDA master plan) | No recent runs | | Karnataka | survey_lookup | Survey Number at a Map Point | No recent runs | | Karnataka | eaasthi_form3 | Urban e-Khata Form-3 (e-Aasthi) | No recent runs | | Karnataka | eaasthi_registrability | Urban property: can it be registered? (e-Aasthi) | No recent runs | | Karnataka | gba_eaasthi | Bengaluru e-Khata by ePID (GBA) | No recent runs | | Rajasthan | ec | Encumbrance / Registered Documents (E-Panjiyan e-Search) | No recent runs | | Rajasthan | prohibited | Prohibited Property / Court Stay (E-Panjiyan) | No recent runs | | Rajasthan | court_stay | Court Case / Stay Order on a Property (E-Panjiyan) | No recent runs | | Rajasthan | document_search | Document Status by Number (E-Panjiyan Track Document Status) | No recent runs | | Rajasthan | property_tax | Municipal Property Tax | No recent runs | | Rajasthan | ror | Jamabandi / Record of Rights (Apna Khata) | No recent runs | | Rajasthan | ror_lookup | Khasra / Khata on the Jamabandi Register (Apna Khata) | No recent runs | | Rajasthan | industrial | RIICO Industrial Plot Allottees | No recent runs | | Rajasthan | urban_land | JDA Jaipur Urban Plots | No recent runs | | Delhi | khasra_khatauni | Khasra Khatauni (DLR Act) | No recent runs | | Delhi | jamabandi | Jamabandi (PLR Act) | No recent runs | | Tamil Nadu | ec_document | Encumbrance Certificate by Document Number (TNREGINET) | held | | Tamil Nadu | guideline_value | Guideline Value (Stamp Duty) | held | | Tamil Nadu | property_tax | Property Tax (TN Urban ePay) | No recent runs | | Uttar Pradesh | bhulekh | Khatauni / Record of Rights (UP Bhulekh) | No recent runs | | Uttar Pradesh | bhunaksha | Plot Owners from the Map (UP Bhunaksha) | No recent runs | | Uttar Pradesh | property_tax | Property Tax Record (e-NagarSewa) | No recent runs | | Uttar Pradesh | revenue_court | Revenue Court Cases on a Plot (RCCMS) | No recent runs | | Uttar Pradesh | rera_projects | RERA Registered Projects (UP RERA) | No recent runs | | Uttar Pradesh | circle_rate | Circle Rate List (IGRSUP) | No recent runs | | Haryana | jamabandi | Jamabandi Nakal (Record of Rights) | held | | Haryana | search_by_owner | Holdings by Owner Name | held | | Haryana | search_property | Khewat / Khatoni Details | held | | Haryana | naksha | Plot Report from the Map (BhuNaksha) | No recent runs | | Haryana | village_map | Village Map (Shajra, BhuNaksha) | No recent runs | | Kerala | fair_value | Fair Value of Land (IGR) | No recent runs | | Kerala | land_tax | Land Tax & Ownership (ReLIS) | No recent runs | | Kerala | bhunaksha | Digital Survey Parcel Map (Ente Bhoomi) | No recent runs | | Odisha | bhunaksha | Plot Map and Plot Details (Odisha BhuNaksha) | No recent runs | | Odisha | ror | Record of Rights (Odisha Bhulekh Khatiyan) | No recent runs | | Goa | land_info | Record of Rights, Form I & XIV (Goa Online) | No recent runs | | Goa | bhunaksha | Survey Plan (Goa Bhunaksha) | No recent runs | | Goa | mutation_notices | Public Mutation Notices (Goa) | No recent runs | | Gujarat | utara_712 | 7/12 Utara (current record of rights) | No recent runs | | Gujarat | khata_8a | 8A Khata (holdings of one account) | No recent runs | | Gujarat | ferfar_6a | Ferfar (VF-6 mutation entry) | No recent runs | | Gujarat | old_ferfar_6a | Old Ferfar (scanned VF-6 entry) | No recent runs | | Gujarat | old_satbar_712 | Old 7/12 (scanned, by year range) | No recent runs | | Gujarat | property_card | Property Card (urban, e-milkat) | No recent runs | | Madhya Pradesh | bhu_abhilekh | Land Record by Khasra (WebGIS 2.0) | No recent runs | | Madhya Pradesh | record_room | Record Room Documents (WebGIS 2.0) | No recent runs | | Madhya Pradesh | rcms | Civil Court Cases on a Parcel (WebGIS 2.0) | No recent runs | | Madhya Pradesh | aabadi_adhikar_abhilekh | Habitation (Aabadi) Rights Record | held | | West Bengal | deed_search | Registered Deeds by Party Name (WB Registration) | No recent runs | | West Bengal | deed_details | Deed Details by Deed or Query Number (WB Registration) | No recent runs | | West Bengal | court_cases | District Court Cases by Party Name (eCourts) | No recent runs | | West Bengal | property_tax | Kolkata Property Tax (KMC) | No recent runs | | West Bengal | ror | Record of Rights (Khatian, Banglarbhumi) | No recent runs | | West Bengal | plot | Plot (Dag) Information (Banglarbhumi) | No recent runs | | West Bengal | rs_lr_plot | RS ↔ LR Plot Map (Banglarbhumi) | No recent runs | | West Bengal | mutation | Mutation (Namjari) Status (Banglarbhumi) | No recent runs | | West Bengal | apartment_market_value | Market Value of a Flat (WB Registration) | No recent runs | --- Source: https://legiscore.in/docs/api/lookups # Lookups Search for an item by name, get its code, and pass that code into the search. Rules: send q, at least 2 characters. At most 10 matches return. Rate limited to 120 calls per minute per key. Lists are not available. Never try to enumerate a lookup. `GET /api/v1/search/lookups?state=telangana&dim=sro&q=hayat` | Parameter | Required | Description | | --- | --- | --- | | state | Yes | State key. | | dim | Yes | The lookup type the search field uses (named on each search page). | | q | Yes | The name or part of it, at least 2 characters. Alias: search. | | parent | If the field has parents | Code chosen for the level above; ancestors also go under their own field names. | | limit | No | Up to 10. | Response: { "data": { "options": [ { "value", "label", "meta": { ...code fields } } ] } }. Copy the meta keys into params of the search. Place finder: `GET /api/v1/search/places?state=karnataka&dim=ka_place&q=bendigana`, same rules. Errors: 400 missing_parent, 404 unknown_dim, 429 rate_limited. ## Lookup types ### Andhra Pradesh | Lookup type (dim) | Needs first | Used by | | --- | --- | --- | | sro | - | Encumbrance Certificate (sro) | | district | - | Prohibitory Orders (22A) (district) | | mandal | district | Prohibitory Orders (22A) (mandal) | | village | district, mandal | Prohibitory Orders (22A) (village) | | ror_district | - | Record of Rights (1-B / Adangal) (district) | | ror_mandal | district | Record of Rights (1-B / Adangal) (mandal) | | ror_village | district, mandal | Record of Rights (1-B / Adangal) (village) | | tax_district | - | Property Tax (district) | | municipality | district | Property Tax (municipality) | ### Telangana | Lookup type (dim) | Needs first | Used by | | --- | --- | --- | | sro | - | Encumbrance Certificate (sro) | | district | - | Prohibitory Orders (22A) (district) | | mandal | district | Prohibitory Orders (22A) (mandal) | | village | district, mandal | Prohibitory Orders (22A) (village) | | tax_district | - | Property Tax (district) | | municipality | district | Property Tax (municipality) | ### Maharashtra | Lookup type (dim) | Needs first | Used by | | --- | --- | --- | | mh_district | - | Index-II (Suchi Kramank 2) (district) | | mh_sro | district | Index-II (Suchi Kramank 2) (sro) | | mh_igr_district | - | Index-II by Property (survey / gat / CTS) (district) | | mh_igr_tahsil | district | Index-II by Property (survey / gat / CTS) (tahsil) | | mh_igr_village | district, tahsil | Index-II by Property (survey / gat / CTS) (village) | | mh_bhulekh_district | - | 7/12 Extract (Satbara) (district); 8A Holding Extract (district); Property Card (urban, by CTS number) (district); Plot Map (Mahabhunakasha) (district); Mutation Notices (Aapli Chawdi) (district); Mutation Status (Aapli Chawdi) (district) | | mh_bhulekh_taluka | district | 7/12 Extract (Satbara) (taluka); 8A Holding Extract (taluka); Plot Map (Mahabhunakasha) (taluka); Mutation Notices (Aapli Chawdi) (taluka); Mutation Status (Aapli Chawdi) (taluka) | | mh_bhulekh_village | district, taluka | 7/12 Extract (Satbara) (village); 8A Holding Extract (village); Plot Map (Mahabhunakasha) (village); Mutation Notices (Aapli Chawdi) (village); Mutation Status (Aapli Chawdi) (village) | | mh_bhulekh_office | district | Property Card (urban, by CTS number) (office) | | mh_bhulekh_ward | district, office | Property Card (urban, by CTS number) (ward) | ### Karnataka | Lookup type (dim) | Needs first | Used by | | --- | --- | --- | | ka_district | - | Revenue Court Cases (RCCMS) (district) | | ka_subdivision | district | Revenue Court Cases (RCCMS) (subdivision) | | ka_taluk | district, subdivision | Revenue Court Cases (RCCMS) (taluk) | | ka_hobli | district, subdivision, taluk | Revenue Court Cases (RCCMS) (hobli) | | ka_village | district, subdivision, taluk, hobli | Revenue Court Cases (RCCMS) (village) | | kaveri_district | - | Encumbrance Certificate (Kaveri 2.0) (district) | | kaveri_taluk | district | Encumbrance Certificate (Kaveri 2.0) (taluk) | | kaveri_hobli | district, taluk | Encumbrance Certificate (Kaveri 2.0) (hobli) | | kaveri_village | district, taluk, hobli | Encumbrance Certificate (Kaveri 2.0) (village) | | kaveri_property_type | - | Encumbrance Certificate (Kaveri 2.0) (property_number_type) | | eswathu_district | - | Rural Property Record (e-Swathu) (district) | | eswathu_taluk | district | Rural Property Record (e-Swathu) (taluk) | | eswathu_gram_panchayat | district, taluk | Rural Property Record (e-Swathu) (gram_panchayat) | | eswathu_village | district, taluk, gram_panchayat | Rural Property Record (e-Swathu) (village) | | bhoomi_district | - | RTC / Pahani (Bhoomi) (district); Akarband / Survey Sketch (Bhoomojini) (district); Village Map (Bhoomi) (district); Mutation register extracts (Bhoomi) (district); Mutation history (Bhoomi) (district); Pending mutations & cases (eChawadi) (district); Land conversion status (DC) (district); Final land conversion order (DC) (district); Land conversion order, any year (Bhoomi mutation register) (district); Form 57 applications (govt land regularisation) (district); Survey applications (Mojini) (district); Digitised survey sketch (Bhoomi) (district); Scanned survey records (Bhoomi) (district); Land Details report (Bhoomi Land Stack) (district); Original Tippan scans (Bhoomi Land Stack) (district) | | bhoomi_taluk | district | RTC / Pahani (Bhoomi) (taluk); Akarband / Survey Sketch (Bhoomojini) (taluk); Village Map (Bhoomi) (taluk); Mutation register extracts (Bhoomi) (taluk); Mutation history (Bhoomi) (taluk); Pending mutations & cases (eChawadi) (taluk); Land conversion status (DC) (taluk); Final land conversion order (DC) (taluk); Land conversion order, any year (Bhoomi mutation register) (taluk); Form 57 applications (govt land regularisation) (taluk); Survey applications (Mojini) (taluk); Digitised survey sketch (Bhoomi) (taluk); Scanned survey records (Bhoomi) (taluk); Land Details report (Bhoomi Land Stack) (taluk); Original Tippan scans (Bhoomi Land Stack) (taluk) | | bhoomi_hobli | district, taluk | RTC / Pahani (Bhoomi) (hobli); Akarband / Survey Sketch (Bhoomojini) (hobli); Village Map (Bhoomi) (hobli); Mutation register extracts (Bhoomi) (hobli); Mutation history (Bhoomi) (hobli); Pending mutations & cases (eChawadi) (hobli); Land conversion status (DC) (hobli); Final land conversion order (DC) (hobli); Land conversion order, any year (Bhoomi mutation register) (hobli); Form 57 applications (govt land regularisation) (hobli); Survey applications (Mojini) (hobli); Digitised survey sketch (Bhoomi) (hobli); Scanned survey records (Bhoomi) (hobli); Land Details report (Bhoomi Land Stack) (hobli); Original Tippan scans (Bhoomi Land Stack) (hobli) | | bhoomi_village | district, taluk, hobli | RTC / Pahani (Bhoomi) (village); Akarband / Survey Sketch (Bhoomojini) (village); Village Map (Bhoomi) (village); Mutation register extracts (Bhoomi) (village); Mutation history (Bhoomi) (village); Pending mutations & cases (eChawadi) (village); Land conversion status (DC) (village); Final land conversion order (DC) (village); Land conversion order, any year (Bhoomi mutation register) (village); Form 57 applications (govt land regularisation) (village); Survey applications (Mojini) (village); Digitised survey sketch (Bhoomi) (village); Scanned survey records (Bhoomi) (village); Land Details report (Bhoomi Land Stack) (village); Original Tippan scans (Bhoomi Land Stack) (village) | ### Rajasthan | Lookup type (dim) | Needs first | Used by | | --- | --- | --- | | rj_district | - | Encumbrance / Registered Documents (E-Panjiyan e-Search) (district); Prohibited Property / Court Stay (E-Panjiyan) (district); Court Case / Stay Order on a Property (E-Panjiyan) (district) | | rj_tehsil | district | Encumbrance / Registered Documents (E-Panjiyan e-Search) (tehsil) | | rj_sro | district, tehsil | Encumbrance / Registered Documents (E-Panjiyan e-Search) (sro) | | rj_financial_year | - | Encumbrance / Registered Documents (E-Panjiyan e-Search) (financial_year) | | rj_document_type | - | Encumbrance / Registered Documents (E-Panjiyan e-Search) (doc_type) | | rj_sro_by_district | district | Prohibited Property / Court Stay (E-Panjiyan) (sro); Court Case / Stay Order on a Property (E-Panjiyan) (sro) | | rj_ulb | - | Municipal Property Tax (ulb) | | rj_ak_district | - | Jamabandi / Record of Rights (Apna Khata) (district); Khasra / Khata on the Jamabandi Register (Apna Khata) (district) | | rj_riico_unit | - | RIICO Industrial Plot Allottees (unit_id) | ### Delhi | Lookup type (dim) | Needs first | Used by | | --- | --- | --- | | dlr_district | - | Khasra Khatauni (DLR Act) (district) | | dlr_subdivision | district | Khasra Khatauni (DLR Act) (subdivision) | | dlr_village | district, subdivision | Khasra Khatauni (DLR Act) (village) | | plr_district | - | Jamabandi (PLR Act) (district) | | plr_subdivision | district | Jamabandi (PLR Act) (subdivision) | | plr_village | district, subdivision | Jamabandi (PLR Act) (village) | ### Uttar Pradesh | Lookup type (dim) | Needs first | Used by | | --- | --- | --- | | uttarpradesh_district | - | Khatauni / Record of Rights (UP Bhulekh) (district); Plot Owners from the Map (UP Bhunaksha) (district) | | uttarpradesh_tehsil | district | Khatauni / Record of Rights (UP Bhulekh) (tehsil); Plot Owners from the Map (UP Bhunaksha) (tehsil) | | uttarpradesh_village | district, tehsil | Khatauni / Record of Rights (UP Bhulekh) (village); Plot Owners from the Map (UP Bhunaksha) (village) | | uttarpradesh_enagarsewa_ulb | - | Property Tax Record (e-NagarSewa) (ulb) | | uttarpradesh_rccms_district | - | Revenue Court Cases on a Plot (RCCMS) (district) | | uttarpradesh_rccms_tehsil | district | Revenue Court Cases on a Plot (RCCMS) (tehsil) | | uttarpradesh_rccms_pargana | district, tehsil | Revenue Court Cases on a Plot (RCCMS) (pargana_code) | | uttarpradesh_rccms_village | district, tehsil | Revenue Court Cases on a Plot (RCCMS) (village) | | uttarpradesh_rera_district | - | RERA Registered Projects (UP RERA) (district) | | uttarpradesh_rera_promoter | - | RERA Registered Projects (UP RERA) (promoter_code) | | uttarpradesh_igrsup_district | - | Circle Rate List (IGRSUP) (district) | | uttarpradesh_igrsup_sro | district | Circle Rate List (IGRSUP) (sro) | ### Haryana | Lookup type (dim) | Needs first | Used by | | --- | --- | --- | | hr_district | - | Jamabandi Nakal (Record of Rights) (district); Holdings by Owner Name (district); Khewat / Khatoni Details (district); Plot Report from the Map (BhuNaksha) (district); Village Map (Shajra, BhuNaksha) (district) | | hr_tehsil | district | Jamabandi Nakal (Record of Rights) (tehsil); Holdings by Owner Name (tehsil); Khewat / Khatoni Details (tehsil); Plot Report from the Map (BhuNaksha) (tehsil); Village Map (Shajra, BhuNaksha) (tehsil) | | hr_village | district, tehsil | Jamabandi Nakal (Record of Rights) (village); Holdings by Owner Name (village); Khewat / Khatoni Details (village); Plot Report from the Map (BhuNaksha) (village); Village Map (Shajra, BhuNaksha) (village) | ### Kerala | Lookup type (dim) | Needs first | Used by | | --- | --- | --- | | kerala_igr_district | - | Fair Value of Land (IGR) (district) | | kerala_igr_taluk | district | Fair Value of Land (IGR) (taluk) | | kerala_igr_village | district, taluk | Fair Value of Land (IGR) (village) | | kerala_relis_district | - | Land Tax & Ownership (ReLIS) (district); Digital Survey Parcel Map (Ente Bhoomi) (district) | | kerala_relis_taluk | district | Land Tax & Ownership (ReLIS) (taluk); Digital Survey Parcel Map (Ente Bhoomi) (taluk) | | kerala_relis_village | district, taluk | Land Tax & Ownership (ReLIS) (village); Digital Survey Parcel Map (Ente Bhoomi) (village) | ### Odisha | Lookup type (dim) | Needs first | Used by | | --- | --- | --- | | odisha_district | - | Plot Map and Plot Details (Odisha BhuNaksha) (district); Record of Rights (Odisha Bhulekh Khatiyan) (district) | | odisha_tehsil | district | Plot Map and Plot Details (Odisha BhuNaksha) (tehsil); Record of Rights (Odisha Bhulekh Khatiyan) (tehsil) | | odisha_ri | district, tehsil | Plot Map and Plot Details (Odisha BhuNaksha) (ri); Record of Rights (Odisha Bhulekh Khatiyan) (ri) | | odisha_village | district, tehsil, ri | Plot Map and Plot Details (Odisha BhuNaksha) (village); Record of Rights (Odisha Bhulekh Khatiyan) (village) | ### Goa | Lookup type (dim) | Needs first | Used by | | --- | --- | --- | | goa_taluka | - | Record of Rights, Form I & XIV (Goa Online) (taluka); Survey Plan (Goa Bhunaksha) (taluka); Public Mutation Notices (Goa) (taluka) | | goa_village | taluka | Record of Rights, Form I & XIV (Goa Online) (village); Survey Plan (Goa Bhunaksha) (village); Public Mutation Notices (Goa) (village) | ### Gujarat | Lookup type (dim) | Needs first | Used by | | --- | --- | --- | | gj_district | - | 7/12 Utara (current record of rights) (district); 8A Khata (holdings of one account) (district); Ferfar (VF-6 mutation entry) (district); Old Ferfar (scanned VF-6 entry) (district); Old 7/12 (scanned, by year range) (district) | | gj_taluka | district | 7/12 Utara (current record of rights) (taluka); 8A Khata (holdings of one account) (taluka); Ferfar (VF-6 mutation entry) (taluka); Old Ferfar (scanned VF-6 entry) (taluka); Old 7/12 (scanned, by year range) (taluka) | | gj_village | district, taluka | 7/12 Utara (current record of rights) (village); 8A Khata (holdings of one account) (village); Ferfar (VF-6 mutation entry) (village); Old Ferfar (scanned VF-6 entry) (village); Old 7/12 (scanned, by year range) (village) | | gj_emilkat_district | - | Property Card (urban, e-milkat) (district) | | gj_city_survey_office | district | Property Card (urban, e-milkat) (city_survey_office) | | gj_ward | district, city_survey_office | Property Card (urban, e-milkat) (ward) | ### Madhya Pradesh | Lookup type (dim) | Needs first | Used by | | --- | --- | --- | | mp_district | - | Land Record by Khasra (WebGIS 2.0) (district); Record Room Documents (WebGIS 2.0) (district); Civil Court Cases on a Parcel (WebGIS 2.0) (district) | | mp_tehsil | district | Land Record by Khasra (WebGIS 2.0) (tehsil); Record Room Documents (WebGIS 2.0) (tehsil); Civil Court Cases on a Parcel (WebGIS 2.0) (tehsil) | | mp_village | district, tehsil | Land Record by Khasra (WebGIS 2.0) (loc_id); Record Room Documents (WebGIS 2.0) (loc_id); Civil Court Cases on a Parcel (WebGIS 2.0) (loc_id) | | mp_aabadi_district | - | Habitation (Aabadi) Rights Record (district) | | mp_aabadi_tehsil | district | Habitation (Aabadi) Rights Record (tehsil) | | mp_aabadi_village | district, tehsil | Habitation (Aabadi) Rights Record (loc_id) | ### West Bengal | Lookup type (dim) | Needs first | Used by | | --- | --- | --- | | west_bengal_registration_district | - | Registered Deeds by Party Name (WB Registration) (district); Deed Details by Deed or Query Number (WB Registration) (district) | | west_bengal_registration_office | district | Deed Details by Deed or Query Number (WB Registration) (registration_office) | | west_bengal_court_district | - | District Court Cases by Party Name (eCourts) (district) | --- Source: https://legiscore.in/docs/states # Searches by state | State | Searches | Held | | --- | --- | --- | | [Andhra Pradesh](https://legiscore.in/docs/states/andhra) | 6 | 0 | | [Telangana](https://legiscore.in/docs/states/telangana) | 4 | 1 | | [Maharashtra](https://legiscore.in/docs/states/maharashtra) | 14 | 1 | | [Karnataka](https://legiscore.in/docs/states/karnataka) | 26 | 1 | | [Rajasthan](https://legiscore.in/docs/states/rajasthan) | 9 | 0 | | [Delhi](https://legiscore.in/docs/states/delhi) | 2 | 0 | | [Tamil Nadu](https://legiscore.in/docs/states/tamilnadu) | 3 | 2 | | [Uttar Pradesh](https://legiscore.in/docs/states/uttarpradesh) | 6 | 0 | | [Haryana](https://legiscore.in/docs/states/haryana) | 5 | 3 | | [Kerala](https://legiscore.in/docs/states/kerala) | 3 | 0 | | [Odisha](https://legiscore.in/docs/states/odisha) | 2 | 0 | | [Goa](https://legiscore.in/docs/states/goa) | 3 | 0 | | [Gujarat](https://legiscore.in/docs/states/gujarat) | 6 | 0 | | [Madhya Pradesh](https://legiscore.in/docs/states/madhya_pradesh) | 4 | 1 | | [West Bengal](https://legiscore.in/docs/states/west_bengal) | 9 | 0 | --- Source: https://legiscore.in/docs/states/andhra # Andhra Pradesh | Search | search_type | What it does | Status | Notes | | --- | --- | --- | --- | --- | | [Encumbrance Certificate](https://legiscore.in/docs/states/andhra/ec) | ec | Every registered transaction recorded against a property at the sub-registrar office. | LIVE | OTP | | [Prohibitory Orders (22A)](https://legiscore.in/docs/states/andhra/prohibited) | prohibited | Whether the land sits on the Section 22A prohibited list -- government, endowment or assigned land that cannot be registered. | LIVE | - | | [Record of Rights (1-B / Adangal)](https://legiscore.in/docs/states/andhra/ror) | ror | Who the revenue department records as the pattadar of a piece of land, and how that land is classified. | LIVE | OTP | | [Property Tax](https://legiscore.in/docs/states/andhra/property-tax) | property_tax | The municipal tax account for a property, and whether anything is outstanding on it. | LIVE | - | | [RERA Projects (AP RERA)](https://legiscore.in/docs/states/andhra/rera) | rera | Whether a housing project or promoter is on the AP RERA register. Search by project name, promoter, registration number or application number. | LIVE | Register | | [RERA Project Record + Documents (AP RERA)](https://legiscore.in/docs/states/andhra/rera-single) | rera_single | One registered project’s full AP RERA record and every document the promoter filed: approvals, plans, title, encumbrance, certificates. | LIVE | OTP | --- Source: https://legiscore.in/docs/states/andhra/ec # Encumbrance Certificate (Andhra Pradesh) Every registered transaction recorded against a property at the sub-registrar office. Status: LIVE. Source status: Operational. Typical time: up to 5 min. state: `andhra`, search_type: `ec`. Uses an OTP: LegiScore handles the code; the search may show awaiting_otp briefly. AI Recovery does not run on this search. ## What you get Transaction rows plus the official EC certificate PDF. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). - Both together `doc_no`, `year`: Give both the document number and its year of registration. | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `sro_name` | string | required | from lookup "sro" | sro lookup (https://legiscore.in/docs/api/lookups#andhra-sro) | | `sro_code` | string | required | from lookup "sro" | sro lookup (https://legiscore.in/docs/api/lookups#andhra-sro) | | `sro_full_name` | string | required | from lookup "sro" | sro lookup (https://legiscore.in/docs/api/lookups#andhra-sro) | | `doc_no` | string | one of | 1234 | field "doc_no" | | `year` | string | one of | 2024 | field "year" | | `applicant_name` | string | optional | Printed on the certificate | field "applicant_name" | | `extract_detailed` | boolean | optional | true | fixed by the search | ## Field details | Field | Type | Notes | | --- | --- | --- | | `sro` (Sub-Registrar Office) | lookup | The office where the property is registered. | | `doc_no` (Document Number) | text | | | `year` (Year of Registration) | year | | | `applicant_name` (Applicant Name) | text | Optional. Appears on the certificate the portal issues. | ## Resolve names to codes | Field | Lookup | Needs first | | --- | --- | --- | | sro | sro | - | q is required (2+ characters), at most 10 matches. ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "andhra", "search_type": "ec", "params": { "sro_name": "", "sro_code": "", "sro_full_name": "", "doc_no": "1234", "year": "2024", "applicant_name": "Printed on the certificate", "extract_detailed": true }, "label": "Encumbrance Certificate - case 8841" }' ``` **Python** ```python 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": "andhra", "search_type": "ec", "params": { "sro_name": "", "sro_code": "", "sro_full_name": "", "doc_no": "1234", "year": "2024", "applicant_name": "Printed on the certificate", "extract_detailed": true }, "label": "Encumbrance Certificate - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "andhra", "search_type": "ec", "params": { "sro_name": "", "sro_code": "", "sro_full_name": "", "doc_no": "1234", "year": "2024", "applicant_name": "Printed on the certificate", "extract_detailed": true }, "label": "Encumbrance Certificate - 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": "andhra", "search_type": "ec", "label": "Encumbrance Certificate - 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": "andhra", "search_type": "ec", "label": "Encumbrance Certificate - 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" } } ``` --- Source: https://legiscore.in/docs/states/andhra/prohibited # Prohibitory Orders (22A) (Andhra Pradesh) Whether the land sits on the Section 22A prohibited list -- government, endowment or assigned land that cannot be registered. Status: LIVE. Source status: Degraded. Typical time: up to 3 min. state: `andhra`, search_type: `prohibited`. ## What you get Matching prohibited-property rows plus a stamped PDF. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `district_code` | string | required | from lookup "district" | district lookup (https://legiscore.in/docs/api/lookups#andhra-district) | | `district_name` | string | required | from lookup "district" | district lookup (https://legiscore.in/docs/api/lookups#andhra-district) | | `mandal_code` | string | required | from lookup "mandal" | mandal lookup (https://legiscore.in/docs/api/lookups#andhra-mandal) | | `mandal_name` | string | required | from lookup "mandal" | mandal lookup (https://legiscore.in/docs/api/lookups#andhra-mandal) | | `village_code` | string | required | from lookup "village" | village lookup (https://legiscore.in/docs/api/lookups#andhra-village) | | `village_name` | string | required | from lookup "village" | village lookup (https://legiscore.in/docs/api/lookups#andhra-village) | | `search_numbers` | string[] | required | ["25/1B, 25/2 — or * for the whole village"] | field "search_numbers" | | `property_type` | string | required | urban | field "property_type" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `district` (District) | lookup | | | `mandal` (Mandal) | lookup | | | `village` (Village) | lookup | | | `property_type` (Land Type) | select | Chooses which prohibited register is searched. The two are separate lists, not a filter. Values: urban (Urban — town or municipal property (door numbers)), rural (Rural — agricultural land (survey numbers)). | | `search_numbers` (Door / Survey Numbers) | tags | One entry per number. Use * to list every prohibited record in the village. | ## Resolve names to codes | Field | Lookup | Needs first | | --- | --- | --- | | district | district | - | | mandal | mandal | district | | village | village | district, mandal | q is required (2+ characters), at most 10 matches. ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "andhra", "search_type": "prohibited", "params": { "district_code": "", "district_name": "", "mandal_code": "", "mandal_name": "", "village_code": "", "village_name": "", "search_numbers": [ "25/1B, 25/2 — or * for the whole village" ], "property_type": "urban" }, "label": "Prohibitory Orders (22A) - case 8841" }' ``` **Python** ```python 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": "andhra", "search_type": "prohibited", "params": { "district_code": "", "district_name": "", "mandal_code": "", "mandal_name": "", "village_code": "", "village_name": "", "search_numbers": [ "25/1B, 25/2 — or * for the whole village" ], "property_type": "urban" }, "label": "Prohibitory Orders (22A) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "andhra", "search_type": "prohibited", "params": { "district_code": "", "district_name": "", "mandal_code": "", "mandal_name": "", "village_code": "", "village_name": "", "search_numbers": [ "25/1B, 25/2 — or * for the whole village" ], "property_type": "urban" }, "label": "Prohibitory Orders (22A) - 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": "andhra", "search_type": "prohibited", "label": "Prohibitory Orders (22A) - 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": "andhra", "search_type": "prohibited", "label": "Prohibitory Orders (22A) - 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" } } ``` --- Source: https://legiscore.in/docs/states/andhra/ror # Record of Rights (1-B / Adangal) (Andhra Pradesh) Who the revenue department records as the pattadar of a piece of land, and how that land is classified. Status: LIVE. Source status: No recent runs. Typical time: up to 5 min. state: `andhra`, search_type: `ror`. Uses an OTP: LegiScore handles the code; the search may show awaiting_otp briefly. AI Recovery does not run on this search. ## What you get The pattadar rows for the khata or parcel, plus the Mee Bhoomi report as a PDF. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `district_id` | string | required | from lookup "district" | ror_district lookup (https://legiscore.in/docs/api/lookups#andhra-ror_district) | | `district_name` | string | required | from lookup "district" | ror_district lookup (https://legiscore.in/docs/api/lookups#andhra-ror_district) | | `mandal_id` | string | required | from lookup "mandal" | ror_mandal lookup (https://legiscore.in/docs/api/lookups#andhra-ror_mandal) | | `mandal_name` | string | required | from lookup "mandal" | ror_mandal lookup (https://legiscore.in/docs/api/lookups#andhra-ror_mandal) | | `village_code` | string | required | from lookup "village" | ror_village lookup (https://legiscore.in/docs/api/lookups#andhra-ror_village) | | `village_name` | string | required | from lookup "village" | ror_village lookup (https://legiscore.in/docs/api/lookups#andhra-ror_village) | | `search_number` | string | required | 102 | field "search_number" | | `record_type` | string | required | ror_1b | field "record_type" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `district` (District) | lookup | | | `mandal` (Mandal) | lookup | | | `village` (Village) | lookup | | | `record_type` (Record) | select | Chooses the register, and with it what the number below means. Values: ror_1b (ROR 1-B — ownership by khata number), adangal (Adangal — one parcel by L.P number). | | `search_number` (Khata / L.P Number) | text | Must be a number the village actually holds — the portal offers no others. | ## Resolve names to codes | Field | Lookup | Needs first | | --- | --- | --- | | district | ror_district | - | | mandal | ror_mandal | district | | village | ror_village | district, mandal | q is required (2+ characters), at most 10 matches. ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "andhra", "search_type": "ror", "params": { "district_id": "", "district_name": "", "mandal_id": "", "mandal_name": "", "village_code": "", "village_name": "", "search_number": "102", "record_type": "ror_1b" }, "label": "Record of Rights (1-B / Adangal) - case 8841" }' ``` **Python** ```python 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": "andhra", "search_type": "ror", "params": { "district_id": "", "district_name": "", "mandal_id": "", "mandal_name": "", "village_code": "", "village_name": "", "search_number": "102", "record_type": "ror_1b" }, "label": "Record of Rights (1-B / Adangal) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "andhra", "search_type": "ror", "params": { "district_id": "", "district_name": "", "mandal_id": "", "mandal_name": "", "village_code": "", "village_name": "", "search_number": "102", "record_type": "ror_1b" }, "label": "Record of Rights (1-B / Adangal) - 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": "andhra", "search_type": "ror", "label": "Record of Rights (1-B / Adangal) - 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": "andhra", "search_type": "ror", "label": "Record of Rights (1-B / Adangal) - 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" } } ``` --- Source: https://legiscore.in/docs/states/andhra/property-tax # Property Tax (Andhra Pradesh) The municipal tax account for a property, and whether anything is outstanding on it. Status: LIVE. Source status: Operational. Typical time: up to 3 min. state: `andhra`, search_type: `property_tax`. ## What you get Assessment details, owner of record and dues, plus a receipt PDF. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). - At least one of `assessment_no`, `door_no`: Give an assessment number or a door number. | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `municipality_url` | string | required | from lookup "municipality" | municipality lookup (https://legiscore.in/docs/api/lookups#andhra-municipality) | | `municipality_name` | string | required | from lookup "municipality" | municipality lookup (https://legiscore.in/docs/api/lookups#andhra-municipality) | | `district_name` | string | required | from lookup "district" | tax_district lookup (https://legiscore.in/docs/api/lookups#andhra-tax_district) | | `assessment_no` | string | one of | 1010012345 | field "assessment_no" | | `door_no` | string | one of | 12-3-45/A | field "door_no" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `district` (District) | lookup | | | `municipality` (Municipality) | lookup | | | `assessment_no` (Assessment Number) | text | | | `door_no` (Door Number) | text | | ## Resolve names to codes | Field | Lookup | Needs first | | --- | --- | --- | | district | tax_district | - | | municipality | municipality | district | q is required (2+ characters), at most 10 matches. ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "andhra", "search_type": "property_tax", "params": { "municipality_url": "", "municipality_name": "", "district_name": "", "assessment_no": "1010012345", "door_no": "12-3-45/A" }, "label": "Property Tax - case 8841" }' ``` **Python** ```python 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": "andhra", "search_type": "property_tax", "params": { "municipality_url": "", "municipality_name": "", "district_name": "", "assessment_no": "1010012345", "door_no": "12-3-45/A" }, "label": "Property Tax - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "andhra", "search_type": "property_tax", "params": { "municipality_url": "", "municipality_name": "", "district_name": "", "assessment_no": "1010012345", "door_no": "12-3-45/A" }, "label": "Property Tax - 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": "andhra", "search_type": "property_tax", "label": "Property Tax - 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": "andhra", "search_type": "property_tax", "label": "Property Tax - 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" } } ``` --- Source: https://legiscore.in/docs/states/andhra/rera # RERA Projects (AP RERA) (Andhra Pradesh) Whether a housing project or promoter is on the AP RERA register. Search by project name, promoter, registration number or application number. Status: LIVE. Source status: No recent runs. Typical time: up to 2 min. state: `andhra`, search_type: `rera`. Register search: found:false is not a clear title. Read the documents. ## What you get Each matching project with its registration and application numbers, promoter, place and status. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `search_term` | string | required | Aparna Amaravati One or P07110030185 | field "search_term" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `search_term` (Project, Promoter or Number) | text | At least 3 letters. Spelling must match the register: a partial name works better than a guessed full one. Max 150 characters. | ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "andhra", "search_type": "rera", "params": { "search_term": "Aparna Amaravati One or P07110030185" }, "label": "RERA Projects (AP RERA) - case 8841" }' ``` **Python** ```python 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": "andhra", "search_type": "rera", "params": { "search_term": "Aparna Amaravati One or P07110030185" }, "label": "RERA Projects (AP RERA) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "andhra", "search_type": "rera", "params": { "search_term": "Aparna Amaravati One or P07110030185" }, "label": "RERA Projects (AP RERA) - 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": "andhra", "search_type": "rera", "label": "RERA Projects (AP RERA) - 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": "andhra", "search_type": "rera", "label": "RERA Projects (AP RERA) - 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" } } ``` --- Source: https://legiscore.in/docs/states/andhra/rera-single # RERA Project Record + Documents (AP RERA) (Andhra Pradesh) One registered project’s full AP RERA record and every document the promoter filed: approvals, plans, title, encumbrance, certificates. Status: LIVE. Source status: No recent runs. Typical time: up to 12 min. state: `andhra`, search_type: `rera_single`. Uses an OTP: LegiScore handles the code; the search may show awaiting_otp briefly. AI Recovery does not run on this search. ## What you get The project’s details (promoter, site, approvals, units, professionals) plus one zip of every document the portal offers, with a manifest. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). - At least one of `registration_no`, `application_no`: Give the RERA registration number or the application number. | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `registration_no` | string | one of | P07110030185 | field "registration_no" | | `application_no` | string | one of | 120218124353 | field "application_no" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `registration_no` (RERA Registration Number) | text | Max 12 characters. | | `application_no` (Application Number) | text | Only if there is no registration number yet. Max 12 characters. | ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "andhra", "search_type": "rera_single", "params": { "registration_no": "P07110030185", "application_no": "120218124353" }, "label": "RERA Project Record + Documents (AP RERA) - case 8841" }' ``` **Python** ```python 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": "andhra", "search_type": "rera_single", "params": { "registration_no": "P07110030185", "application_no": "120218124353" }, "label": "RERA Project Record + Documents (AP RERA) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "andhra", "search_type": "rera_single", "params": { "registration_no": "P07110030185", "application_no": "120218124353" }, "label": "RERA Project Record + Documents (AP RERA) - 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": "andhra", "search_type": "rera_single", "label": "RERA Project Record + Documents (AP RERA) - 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": "andhra", "search_type": "rera_single", "label": "RERA Project Record + Documents (AP RERA) - 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" } } ``` --- Source: https://legiscore.in/docs/states/telangana # Telangana | Search | search_type | What it does | Status | Notes | | --- | --- | --- | --- | --- | | [Encumbrance Certificate](https://legiscore.in/docs/states/telangana/ec) | ec | Every registered transaction recorded against a property at the sub-registrar office. | LIVE | OTP | | [Prohibitory Orders (22A)](https://legiscore.in/docs/states/telangana/prohibited) | prohibited | The Section 22A registers published for a village -- government, assigned, waqf and endowment land, and land under court order. | LIVE | Register | | [Property Tax](https://legiscore.in/docs/states/telangana/property-tax) | property_tax | The municipal tax account for a property, and whether anything is outstanding on it. Covers the CDMA municipalities outside Greater Hyderabad (cdma.cgg.gov.in); Greater Hyderabad, including the outer-ring towns now under GHMC, runs a separate system and is not searched here. | LIVE | - | | [Property Tax (Greater Hyderabad)](https://legiscore.in/docs/states/telangana/ghmc-property-tax) | ghmc_property_tax | The GHMC tax account for a property in Greater Hyderabad, and whether anything is outstanding on it. | HELD | - | --- Source: https://legiscore.in/docs/states/telangana/ec # Encumbrance Certificate (Telangana) Every registered transaction recorded against a property at the sub-registrar office. Status: LIVE. Source status: Operational. Typical time: up to 10 min. state: `telangana`, search_type: `ec`. Uses an OTP: LegiScore handles the code; the search may show awaiting_otp briefly. AI Recovery does not run on this search. ## What you get Transaction rows plus the official EC statement PDF. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). - Both together `doc_no`, `year`: Give both the document number and its year of registration. | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `sro_name` | string | required | from lookup "sro" | sro lookup (https://legiscore.in/docs/api/lookups#telangana-sro) | | `sro_code` | string | required | from lookup "sro" | sro lookup (https://legiscore.in/docs/api/lookups#telangana-sro) | | `sro_full_name` | string | required | from lookup "sro" | sro lookup (https://legiscore.in/docs/api/lookups#telangana-sro) | | `doc_no` | string | one of | 3579 | field "doc_no" | | `year` | string | one of | 2024 | field "year" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `sro` (Sub-Registrar Office) | lookup | The office where the property is registered. All 166 offices are served the same way. | | `doc_no` (Document Number) | text | | | `year` (Year of Registration) | year | | ## Resolve names to codes | Field | Lookup | Needs first | | --- | --- | --- | | sro | sro | - | q is required (2+ characters), at most 10 matches. ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "telangana", "search_type": "ec", "params": { "sro_name": "", "sro_code": "", "sro_full_name": "", "doc_no": "3579", "year": "2024" }, "label": "Encumbrance Certificate - case 8841" }' ``` **Python** ```python 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": "telangana", "search_type": "ec", "params": { "sro_name": "", "sro_code": "", "sro_full_name": "", "doc_no": "3579", "year": "2024" }, "label": "Encumbrance Certificate - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "telangana", "search_type": "ec", "params": { "sro_name": "", "sro_code": "", "sro_full_name": "", "doc_no": "3579", "year": "2024" }, "label": "Encumbrance Certificate - 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": "telangana", "search_type": "ec", "label": "Encumbrance Certificate - 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": "telangana", "search_type": "ec", "label": "Encumbrance Certificate - 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" } } ``` --- Source: https://legiscore.in/docs/states/telangana/prohibited # Prohibitory Orders (22A) (Telangana) The Section 22A registers published for a village -- government, assigned, waqf and endowment land, and land under court order. Status: LIVE. Source status: Operational. Typical time: up to 10 min. state: `telangana`, search_type: `prohibited`. Register search: found:false is not a clear title. Read the documents. ## What you get Every published register for the village as a PDF, plus a manifest of what was fetched. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `district_code` | string | required | from lookup "district" | district lookup (https://legiscore.in/docs/api/lookups#telangana-district) | | `district_name` | string | required | from lookup "district" | district lookup (https://legiscore.in/docs/api/lookups#telangana-district) | | `mandal_code` | string | required | from lookup "mandal" | mandal lookup (https://legiscore.in/docs/api/lookups#telangana-mandal) | | `mandal_name` | string | required | from lookup "mandal" | mandal lookup (https://legiscore.in/docs/api/lookups#telangana-mandal) | | `village_code` | string | required | from lookup "village" | village lookup (https://legiscore.in/docs/api/lookups#telangana-village) | | `village_name` | string | required | from lookup "village" | village lookup (https://legiscore.in/docs/api/lookups#telangana-village) | | `subject_numbers` | string[] | optional | ["1132-1A, 25/2"] | field "subject_numbers" | | `prohibited_register` | string | optional | AGRI | fixed by the search | ## Field details | Field | Type | Notes | | --- | --- | --- | | `district` (District) | lookup | Hyderabad is absent: it is GHMC, organised in wards, and has no register published here. | | `mandal` (Mandal) | lookup | | | `village` (Village) | lookup | | | `subject_numbers` (Door / Survey Numbers) | tags | Optional. Printed on the manifest so the file records what was being checked. The portal has no number filter -- it publishes whole registers. | ## Resolve names to codes | Field | Lookup | Needs first | | --- | --- | --- | | district | district | - | | mandal | mandal | district | | village | village | district, mandal | q is required (2+ characters), at most 10 matches. ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "telangana", "search_type": "prohibited", "params": { "district_code": "", "district_name": "", "mandal_code": "", "mandal_name": "", "village_code": "", "village_name": "", "subject_numbers": [ "1132-1A, 25/2" ], "prohibited_register": "AGRI" }, "label": "Prohibitory Orders (22A) - case 8841" }' ``` **Python** ```python 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": "telangana", "search_type": "prohibited", "params": { "district_code": "", "district_name": "", "mandal_code": "", "mandal_name": "", "village_code": "", "village_name": "", "subject_numbers": [ "1132-1A, 25/2" ], "prohibited_register": "AGRI" }, "label": "Prohibitory Orders (22A) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "telangana", "search_type": "prohibited", "params": { "district_code": "", "district_name": "", "mandal_code": "", "mandal_name": "", "village_code": "", "village_name": "", "subject_numbers": [ "1132-1A, 25/2" ], "prohibited_register": "AGRI" }, "label": "Prohibitory Orders (22A) - 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": "telangana", "search_type": "prohibited", "label": "Prohibitory Orders (22A) - 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": "telangana", "search_type": "prohibited", "label": "Prohibitory Orders (22A) - 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" } } ``` --- Source: https://legiscore.in/docs/states/telangana/property-tax # Property Tax (Telangana) The municipal tax account for a property, and whether anything is outstanding on it. Covers the CDMA municipalities outside Greater Hyderabad (cdma.cgg.gov.in); Greater Hyderabad, including the outer-ring towns now under GHMC, runs a separate system and is not searched here. Status: LIVE. Source status: No recent runs. Typical time: up to 4 min. state: `telangana`, search_type: `property_tax`. ## What you get Assessment details, owner of record and dues, plus a receipt PDF per property. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). - At least one of `ptin`, `door_no`: Give a PTIN or a door number. | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `district_code` | string | required | from lookup "district" | tax_district lookup (https://legiscore.in/docs/api/lookups#telangana-tax_district) | | `district_name` | string | required | from lookup "district" | tax_district lookup (https://legiscore.in/docs/api/lookups#telangana-tax_district) | | `municipality_code` | string | required | from lookup "municipality" | municipality lookup (https://legiscore.in/docs/api/lookups#telangana-municipality) | | `municipality_name` | string | required | from lookup "municipality" | municipality lookup (https://legiscore.in/docs/api/lookups#telangana-municipality) | | `ptin` | string | one of | 1112007423 | field "ptin" | | `door_no` | string | one of | 8-3-231/A/1 | field "door_no" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `district` (District) | lookup | | | `municipality` (Municipality) | lookup | | | `ptin` (PTIN) | text | The portal’s own name for the assessment number. Ten digits. | | `door_no` (Door Number) | text | No commas. A door number pasted off a deed often carries one -- drop everything from the comma onwards. | ## Resolve names to codes | Field | Lookup | Needs first | | --- | --- | --- | | district | tax_district | - | | municipality | municipality | district | q is required (2+ characters), at most 10 matches. ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "telangana", "search_type": "property_tax", "params": { "district_code": "", "district_name": "", "municipality_code": "", "municipality_name": "", "ptin": "1112007423", "door_no": "8-3-231/A/1" }, "label": "Property Tax - case 8841" }' ``` **Python** ```python 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": "telangana", "search_type": "property_tax", "params": { "district_code": "", "district_name": "", "municipality_code": "", "municipality_name": "", "ptin": "1112007423", "door_no": "8-3-231/A/1" }, "label": "Property Tax - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "telangana", "search_type": "property_tax", "params": { "district_code": "", "district_name": "", "municipality_code": "", "municipality_name": "", "ptin": "1112007423", "door_no": "8-3-231/A/1" }, "label": "Property Tax - 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": "telangana", "search_type": "property_tax", "label": "Property Tax - 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": "telangana", "search_type": "property_tax", "label": "Property Tax - 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" } } ``` --- Source: https://legiscore.in/docs/states/telangana/ghmc-property-tax # Property Tax (Greater Hyderabad) (Telangana) The GHMC tax account for a property in Greater Hyderabad, and whether anything is outstanding on it. Status: HELD. Source status: Held. Typical time: up to 5 min. state: `telangana`, search_type: `ghmc_property_tax`. HELD: temporarily unavailable. A submit is refused with 422 search_unavailable and nothing is charged. ## What you get Assessment details, owner of record and dues per PTIN, plus the portal’s page as a PDF. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). - At least one of `ptin`, `door_no`, `owner_name`: Give a PTIN, a door number or an owner name. | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `circle_code` | string | required | 1201 | field "circle_code" | | `mobile` | string | required | 9876543210 | field "mobile" | | `ptin` | string | one of | 1201234567 | field "ptin" | | `door_no` | string | one of | 1-2-3/4 | field "door_no" | | `owner_name` | string | one of | | field "owner_name" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `circle_code` (GHMC Circle Code) | text | Max 6 characters. | | `mobile` (Registered Mobile) | text | Max 10 characters. | | `ptin` (PTIN) | text | Max 10 characters. | | `door_no` (Door Number) | text | | | `owner_name` (Owner Name) | text | | ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "telangana", "search_type": "ghmc_property_tax", "params": { "circle_code": "1201", "mobile": "9876543210", "ptin": "1201234567", "door_no": "1-2-3/4", "owner_name": "" }, "label": "Property Tax (Greater Hyderabad) - case 8841" }' ``` **Python** ```python 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": "telangana", "search_type": "ghmc_property_tax", "params": { "circle_code": "1201", "mobile": "9876543210", "ptin": "1201234567", "door_no": "1-2-3/4", "owner_name": "" }, "label": "Property Tax (Greater Hyderabad) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "telangana", "search_type": "ghmc_property_tax", "params": { "circle_code": "1201", "mobile": "9876543210", "ptin": "1201234567", "door_no": "1-2-3/4", "owner_name": "" }, "label": "Property Tax (Greater Hyderabad) - 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": "telangana", "search_type": "ghmc_property_tax", "label": "Property Tax (Greater Hyderabad) - 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": "telangana", "search_type": "ghmc_property_tax", "label": "Property Tax (Greater Hyderabad) - 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" } } ``` --- Source: https://legiscore.in/docs/states/maharashtra # Maharashtra | Search | search_type | What it does | Status | Notes | | --- | --- | --- | --- | --- | | [Index-II (Suchi Kramank 2)](https://legiscore.in/docs/states/maharashtra/index2) | index2 | The registration abstract for one registered document — the parties, the property, the consideration and the stamp duty paid. | LIVE | - | | [Index-II by Property (survey / gat / CTS)](https://legiscore.in/docs/states/maharashtra/index2-property) | index2_property | 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. | LIVE | Register | | [7/12 Extract (Satbara)](https://legiscore.in/docs/states/maharashtra/satbara-712) | satbara_712 | The current record of rights for a survey or gat number: holders, area, cultivation and the rights and liabilities column. | LIVE | - | | [8A Holding Extract](https://legiscore.in/docs/states/maharashtra/eight-a) | eight_a | Every survey number one account (khata) holds in a village, with the area and assessment of each. | LIVE | - | | [Property Card (urban, by CTS number)](https://legiscore.in/docs/states/maharashtra/property-card) | property_card | The city survey record for a CTS number: holder, area, tenure and the encumbrance entries the survey office has made. | HELD | - | | [Plot Map (Mahabhunakasha)](https://legiscore.in/docs/states/maharashtra/bhunaksha) | bhunaksha | The plot on the state land map for a survey or gat number: its area, its outline and where it is. | LIVE | - | | [Mutation Notices (Aapli Chawdi)](https://legiscore.in/docs/states/maharashtra/mutation-notices) | mutation_notices | The mutations (ferfar) now open for objection or still pending in a village, from the notice board of the revenue office. | LIVE | - | | [Mutation Status (Aapli Chawdi)](https://legiscore.in/docs/states/maharashtra/mutation-status) | mutation_status | Where one mutation (ferfar) stands: certified, not certified or rejected, and each step it has passed. | LIVE | - | | [Revenue Court Cases (e-QJCourts)](https://legiscore.in/docs/states/maharashtra/revenue-court) | revenue_court | Cases in the revenue and land records courts (Tahsildar, SDO, Collector, land records officers) by survey number, by party name or by case number. | LIVE | - | | [District Court Cases by Party Name (eCourts)](https://legiscore.in/docs/states/maharashtra/court-cases) | court_cases | Pending and disposed cases naming a person in every court complex of a Maharashtra district, read from the district court’s own site year by year. | LIVE | - | | [MahaRERA Check](https://legiscore.in/docs/states/maharashtra/rera-check) | rera_check | One MahaRERA project by its RERA number or exact name: a project summary and the title documents a legal review needs. | LIVE | - | | [RERA Project Record + Documents (MahaRERA)](https://legiscore.in/docs/states/maharashtra/rera-single) | rera_single | One project’s MahaRERA record and its documents: the registration certificate, commencement certificates and the application. | LIVE | - | | [RERA Orders and Judgements (MahaRERA)](https://legiscore.in/docs/states/maharashtra/rera-orders) | rera_orders | Orders and judgements of MahaRERA on complaints, by project, complaint number or party name. | LIVE | - | | [RERA Complaints (MahaRERA)](https://legiscore.in/docs/states/maharashtra/rera-complaints) | rera_complaints | Complaints filed with MahaRERA, by project registration number, complaint number or party name. | LIVE | - | --- Source: https://legiscore.in/docs/states/maharashtra/index2 # Index-II (Suchi Kramank 2) (Maharashtra) The registration abstract for one registered document — the parties, the property, the consideration and the stamp duty paid. Status: LIVE. Source status: No recent runs. Typical time: up to 4 min. state: `maharashtra`, search_type: `index2`. ## What you get The Index-II abstract as the registrar issues it, as a PDF. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `district_name` | string | required | from lookup "district" | mh_district lookup (https://legiscore.in/docs/api/lookups#maharashtra-mh_district) | | `sro_name` | string | required | from lookup "sro" | mh_sro lookup (https://legiscore.in/docs/api/lookups#maharashtra-mh_sro) | | `year` | string | required | 2024 | field "year" | | `doc_no` | string | required | 4600 | field "doc_no" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `district` (District) | lookup | Named in Marathi, exactly as the registrar’s portal spells it. | | `sro` (Sub-Registrar Office) | lookup | The office that registered the document. Some carry their former name in brackets. | | `year` (Year of Registration) | year | | | `doc_no` (Document Number) | text | Just the number — a document written 4600/2019 is 4600, with 2019 as the year above. | ## Resolve names to codes | Field | Lookup | Needs first | | --- | --- | --- | | district | mh_district | - | | sro | mh_sro | district | q is required (2+ characters), at most 10 matches. ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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", "params": { "district_name": "", "sro_name": "", "year": "2024", "doc_no": "4600" }, "label": "Index-II (Suchi Kramank 2) - case 8841" }' ``` **Python** ```python 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", "params": { "district_name": "", "sro_name": "", "year": "2024", "doc_no": "4600" }, "label": "Index-II (Suchi Kramank 2) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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", "params": { "district_name": "", "sro_name": "", "year": "2024", "doc_no": "4600" }, "label": "Index-II (Suchi Kramank 2) - 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", "label": "Index-II (Suchi Kramank 2) - 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", "label": "Index-II (Suchi Kramank 2) - 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" } } ``` --- Source: https://legiscore.in/docs/states/maharashtra/index2-property # Index-II by Property (survey / gat / CTS) (Maharashtra) 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. Status: LIVE. Source status: No recent runs. Typical time: up to 20 min. state: `maharashtra`, search_type: `index2_property`. Register search: found:false is not a clear title. Read the documents. ## 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 Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `district_name` | string | conditional | from lookup "district" | mh_igr_district lookup (https://legiscore.in/docs/api/lookups#maharashtra-mh_igr_district) | | `tahsil_name` | string | conditional | from lookup "tahsil" | mh_igr_tahsil lookup (https://legiscore.in/docs/api/lookups#maharashtra-mh_igr_tahsil) | | `village_name` | string | conditional | from lookup "village" | mh_igr_village lookup (https://legiscore.in/docs/api/lookups#maharashtra-mh_igr_village) | | `property_no` | string | required | 498/2 | field "property_no" | | `year_from` | number | required | 2024 | field "year_from" | | `match_text` | string | optional | E-5, 304, Bramha | field "match_text" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `tab` (Area) | select | Optional. 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) | lookup | Only when tab is "" or "rest". | | `tahsil` (Tahsil) | lookup | Only when tab is "" or "rest". | | `village` (Village) | lookup | Named in Marathi, as the registrar’s portal lists it. Only when tab is "" or "rest". | | `mumbai_district` (District) | select | Values: Mumbai City (Mumbai City), Mumbai Suburban (Mumbai Suburban). Only when tab is "mumbai". | | `urban_district` (District) | select | Values: 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) | text | In 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) | text | Max 40 characters. | | `year_from` (From Year) | year | | | `year_to` (To Year) | year | Optional. 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)) | text | Type 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 | Field | Lookup | Needs first | | --- | --- | --- | | district | mh_igr_district | - | | tahsil | mh_igr_tahsil | district | | village | mh_igr_village | district, tahsil | q is required (2+ characters), at most 10 matches. ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "", "tahsil_name": "", "village_name": "", "property_no": "498/2", "year_from": 2024, "match_text": "E-5, 304, Bramha" }, "label": "Index-II by Property (survey / gat / CTS) - case 8841" }' ``` **Python** ```python 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": "", "tahsil_name": "", "village_name": "", "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()) ``` **Node** ```js 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": "", "tahsil_name": "", "village_name": "", "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" } } ``` --- Source: https://legiscore.in/docs/states/maharashtra/satbara-712 # 7/12 Extract (Satbara) (Maharashtra) The current record of rights for a survey or gat number: holders, area, cultivation and the rights and liabilities column. Status: LIVE. Source status: No recent runs. Typical time: up to 5 min. state: `maharashtra`, search_type: `satbara_712`. ## What you get The 7/12 as the portal renders it, as a PDF. A number held only as sub-divisions (320 → 320/1, 320/2) returns each one, never a neighbour. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `district_code` | string | required | from lookup "district" | mh_bhulekh_district lookup (https://legiscore.in/docs/api/lookups#maharashtra-mh_bhulekh_district) | | `taluka_code` | string | required | from lookup "taluka" | mh_bhulekh_taluka lookup (https://legiscore.in/docs/api/lookups#maharashtra-mh_bhulekh_taluka) | | `village_code` | string | required | from lookup "village" | mh_bhulekh_village lookup (https://legiscore.in/docs/api/lookups#maharashtra-mh_bhulekh_village) | | `survey_no` | string | required | 320/1 | field "survey_no" | | `max_records` | number | optional | 5 | field "max_records" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `district` (District) | lookup | | | `taluka` (Taluka) | lookup | | | `village` (Village) | lookup | | | `survey_no` (Survey / Gat Number) | text | Max 40 characters. | | `max_records` (Max Records) | text | Optional, 1 to 10. A number held only as sub-divisions returns this many of them. Max 2 characters. | ## Resolve names to codes | Field | Lookup | Needs first | | --- | --- | --- | | district | mh_bhulekh_district | - | | taluka | mh_bhulekh_taluka | district | | village | mh_bhulekh_village | district, taluka | q is required (2+ characters), at most 10 matches. ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "satbara_712", "params": { "district_code": "", "taluka_code": "", "village_code": "", "survey_no": "320/1", "max_records": 5 }, "label": "7/12 Extract (Satbara) - case 8841" }' ``` **Python** ```python 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": "satbara_712", "params": { "district_code": "", "taluka_code": "", "village_code": "", "survey_no": "320/1", "max_records": 5 }, "label": "7/12 Extract (Satbara) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "satbara_712", "params": { "district_code": "", "taluka_code": "", "village_code": "", "survey_no": "320/1", "max_records": 5 }, "label": "7/12 Extract (Satbara) - 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": "satbara_712", "label": "7/12 Extract (Satbara) - 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": "satbara_712", "label": "7/12 Extract (Satbara) - 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" } } ``` --- Source: https://legiscore.in/docs/states/maharashtra/eight-a # 8A Holding Extract (Maharashtra) Every survey number one account (khata) holds in a village, with the area and assessment of each. Status: LIVE. Source status: No recent runs. Typical time: up to 2 min. state: `maharashtra`, search_type: `eight_a`. ## What you get The 8A as the portal renders it, as a PDF. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `district_code` | string | required | from lookup "district" | mh_bhulekh_district lookup (https://legiscore.in/docs/api/lookups#maharashtra-mh_bhulekh_district) | | `taluka_code` | string | required | from lookup "taluka" | mh_bhulekh_taluka lookup (https://legiscore.in/docs/api/lookups#maharashtra-mh_bhulekh_taluka) | | `village_code` | string | required | from lookup "village" | mh_bhulekh_village lookup (https://legiscore.in/docs/api/lookups#maharashtra-mh_bhulekh_village) | | `khata_no` | string | required | 1234 | field "khata_no" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `district` (District) | lookup | | | `taluka` (Taluka) | lookup | | | `village` (Village) | lookup | | | `khata_no` (Khata Number) | text | Max 20 characters. | ## Resolve names to codes | Field | Lookup | Needs first | | --- | --- | --- | | district | mh_bhulekh_district | - | | taluka | mh_bhulekh_taluka | district | | village | mh_bhulekh_village | district, taluka | q is required (2+ characters), at most 10 matches. ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "eight_a", "params": { "district_code": "", "taluka_code": "", "village_code": "", "khata_no": "1234" }, "label": "8A Holding Extract - case 8841" }' ``` **Python** ```python 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": "eight_a", "params": { "district_code": "", "taluka_code": "", "village_code": "", "khata_no": "1234" }, "label": "8A Holding Extract - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "eight_a", "params": { "district_code": "", "taluka_code": "", "village_code": "", "khata_no": "1234" }, "label": "8A Holding Extract - 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": "eight_a", "label": "8A Holding Extract - 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": "eight_a", "label": "8A Holding Extract - 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" } } ``` --- Source: https://legiscore.in/docs/states/maharashtra/property-card # Property Card (urban, by CTS number) (Maharashtra) The city survey record for a CTS number: holder, area, tenure and the encumbrance entries the survey office has made. Status: HELD. Source status: Held. Typical time: up to 5 min. state: `maharashtra`, search_type: `property_card`. HELD: temporarily unavailable. A submit is refused with 422 search_unavailable and nothing is charged. ## What you get The Property Card as the portal renders it, as a PDF. A CTS held only as sub-divisions returns each one. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `district_code` | string | required | from lookup "district" | mh_bhulekh_district lookup (https://legiscore.in/docs/api/lookups#maharashtra-mh_bhulekh_district) | | `office_code` | string | required | from lookup "office" | mh_bhulekh_office lookup (https://legiscore.in/docs/api/lookups#maharashtra-mh_bhulekh_office) | | `ward_code` | string | required | from lookup "ward" | mh_bhulekh_ward lookup (https://legiscore.in/docs/api/lookups#maharashtra-mh_bhulekh_ward) | | `cts_no` | string | required | 1021 | field "cts_no" | | `max_records` | number | optional | 5 | field "max_records" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `district` (District) | lookup | | | `office` (City Survey Office) | lookup | | | `ward` (Village / Ward) | lookup | | | `cts_no` (CTS Number) | text | Max 40 characters. | | `max_records` (Max Records) | text | Optional, 1 to 10. A number held only as sub-divisions returns this many of them. Max 2 characters. | ## Resolve names to codes | Field | Lookup | Needs first | | --- | --- | --- | | district | mh_bhulekh_district | - | | office | mh_bhulekh_office | district | | ward | mh_bhulekh_ward | district, office | q is required (2+ characters), at most 10 matches. ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "property_card", "params": { "district_code": "", "office_code": "", "ward_code": "", "cts_no": "1021", "max_records": 5 }, "label": "Property Card (urban, by CTS number) - case 8841" }' ``` **Python** ```python 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": "property_card", "params": { "district_code": "", "office_code": "", "ward_code": "", "cts_no": "1021", "max_records": 5 }, "label": "Property Card (urban, by CTS number) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "property_card", "params": { "district_code": "", "office_code": "", "ward_code": "", "cts_no": "1021", "max_records": 5 }, "label": "Property Card (urban, by CTS number) - 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": "property_card", "label": "Property Card (urban, by CTS number) - 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": "property_card", "label": "Property Card (urban, by CTS number) - 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" } } ``` --- Source: https://legiscore.in/docs/states/maharashtra/bhunaksha # Plot Map (Mahabhunakasha) (Maharashtra) The plot on the state land map for a survey or gat number: its area, its outline and where it is. Status: LIVE. Source status: No recent runs. Typical time: up to 2 min. state: `maharashtra`, search_type: `bhunaksha`. Coverage note: The map does not show this number for this village. The map can differ from the 7/12, so check the number on the 7/12 before you rely on this. ## What you get The map area in square metres and hectares, the plot outline with its latitude and longitude, and the khata entries the map shows, as a page you can open. The map is for viewing only: a certified map copy comes from the taluka land records office. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `district_code` | string | required | from lookup "district" | mh_bhulekh_district lookup (https://legiscore.in/docs/api/lookups#maharashtra-mh_bhulekh_district) | | `taluka_code` | string | required | from lookup "taluka" | mh_bhulekh_taluka lookup (https://legiscore.in/docs/api/lookups#maharashtra-mh_bhulekh_taluka) | | `village_code` | string | required | from lookup "village" | mh_bhulekh_village lookup (https://legiscore.in/docs/api/lookups#maharashtra-mh_bhulekh_village) | | `survey_no` | string | required | 20/1 | field "survey_no" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `district` (District) | lookup | | | `taluka` (Taluka) | lookup | | | `village` (Village) | lookup | | | `survey_no` (Survey / Gat Number) | text | One number, as the 7/12 writes it. No ranges or lists. Max 20 characters. | ## Resolve names to codes | Field | Lookup | Needs first | | --- | --- | --- | | district | mh_bhulekh_district | - | | taluka | mh_bhulekh_taluka | district | | village | mh_bhulekh_village | district, taluka | q is required (2+ characters), at most 10 matches. ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "bhunaksha", "params": { "district_code": "", "taluka_code": "", "village_code": "", "survey_no": "20/1" }, "label": "Plot Map (Mahabhunakasha) - case 8841" }' ``` **Python** ```python 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": "bhunaksha", "params": { "district_code": "", "taluka_code": "", "village_code": "", "survey_no": "20/1" }, "label": "Plot Map (Mahabhunakasha) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "bhunaksha", "params": { "district_code": "", "taluka_code": "", "village_code": "", "survey_no": "20/1" }, "label": "Plot Map (Mahabhunakasha) - 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": "bhunaksha", "label": "Plot Map (Mahabhunakasha) - 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": "bhunaksha", "label": "Plot Map (Mahabhunakasha) - 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" } } ``` --- Source: https://legiscore.in/docs/states/maharashtra/mutation-notices # Mutation Notices (Aapli Chawdi) (Maharashtra) The mutations (ferfar) now open for objection or still pending in a village, from the notice board of the revenue office. Status: LIVE. Source status: No recent runs. Typical time: up to 5 min. state: `maharashtra`, search_type: `mutation_notices`. Coverage note: The notice board shows no open or pending mutation here. A decided mutation leaves the board, so this does not mean the land never had a mutation. Check the 7/12 for past mutations. ## What you get One row per mutation with its number, type, date, survey numbers and the last date for objections, a summary PDF, and a zip of the Form 9 notices (up to 25). ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `board` | string | optional | satbara | fixed by the search | | `district_code` | string | required | from lookup "district" | mh_bhulekh_district lookup (https://legiscore.in/docs/api/lookups#maharashtra-mh_bhulekh_district) | | `taluka_code` | string | required | from lookup "taluka" | mh_bhulekh_taluka lookup (https://legiscore.in/docs/api/lookups#maharashtra-mh_bhulekh_taluka) | | `village_code` | string | required | from lookup "village" | mh_bhulekh_village lookup (https://legiscore.in/docs/api/lookups#maharashtra-mh_bhulekh_village) | | `survey_no` | string | optional | 77 | field "survey_no" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `district` (District) | lookup | | | `taluka` (Taluka) | lookup | | | `village` (Village) | lookup | | | `survey_no` (Survey / Gat Number) | text | Optional. Blank lists the whole village. 77 also finds 77/2, never 770. Max 40 characters. | ## Resolve names to codes | Field | Lookup | Needs first | | --- | --- | --- | | district | mh_bhulekh_district | - | | taluka | mh_bhulekh_taluka | district | | village | mh_bhulekh_village | district, taluka | q is required (2+ characters), at most 10 matches. ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "mutation_notices", "params": { "board": "satbara", "district_code": "", "taluka_code": "", "village_code": "", "survey_no": "77" }, "label": "Mutation Notices (Aapli Chawdi) - case 8841" }' ``` **Python** ```python 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": "mutation_notices", "params": { "board": "satbara", "district_code": "", "taluka_code": "", "village_code": "", "survey_no": "77" }, "label": "Mutation Notices (Aapli Chawdi) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "mutation_notices", "params": { "board": "satbara", "district_code": "", "taluka_code": "", "village_code": "", "survey_no": "77" }, "label": "Mutation Notices (Aapli Chawdi) - 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": "mutation_notices", "label": "Mutation Notices (Aapli Chawdi) - 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": "mutation_notices", "label": "Mutation Notices (Aapli Chawdi) - 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" } } ``` --- Source: https://legiscore.in/docs/states/maharashtra/mutation-status # Mutation Status (Aapli Chawdi) (Maharashtra) Where one mutation (ferfar) stands: certified, not certified or rejected, and each step it has passed. Status: LIVE. Source status: No recent runs. Typical time: up to 2 min. state: `maharashtra`, search_type: `mutation_status`. Coverage note: The status page has no entry for this number. Check the number on the 7/12 or the receipt and search again. ## What you get For a 7/12 mutation: the status, the decision date and the dates of each step (entry, Form 9 notice, objection period), per survey number. For a Property Card application: its status and history. With a PDF of the page. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `board` | string | required | satbara | field "board" | | `district_code` | string | conditional | from lookup "district" | mh_bhulekh_district lookup (https://legiscore.in/docs/api/lookups#maharashtra-mh_bhulekh_district) | | `taluka_code` | string | conditional | from lookup "taluka" | mh_bhulekh_taluka lookup (https://legiscore.in/docs/api/lookups#maharashtra-mh_bhulekh_taluka) | | `village_code` | string | conditional | from lookup "village" | mh_bhulekh_village lookup (https://legiscore.in/docs/api/lookups#maharashtra-mh_bhulekh_village) | | `mutation_no` | string | conditional | 1900 | field "mutation_no" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `board` (Record) | select | Values: satbara (7/12 mutation (village and mutation number)), property_card (Property Card application (inward number)). | | `district` (District) | lookup | Only when board is "satbara". | | `taluka` (Taluka) | lookup | Only when board is "satbara". | | `village` (Village) | lookup | Only when board is "satbara". | | `mutation_no` (Mutation Number) | text | The ferfar number, digits only, as the 7/12 writes it. Only when board is "satbara". Max 6 characters. | | `inward_no` (Inward Number) | text | From the city survey office receipt: 15 digits, written with or without the slashes. Only when board is "property_card". Max 24 characters. | ## Resolve names to codes | Field | Lookup | Needs first | | --- | --- | --- | | district | mh_bhulekh_district | - | | taluka | mh_bhulekh_taluka | district | | village | mh_bhulekh_village | district, taluka | q is required (2+ characters), at most 10 matches. ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "mutation_status", "params": { "board": "satbara", "district_code": "", "taluka_code": "", "village_code": "", "mutation_no": "1900" }, "label": "Mutation Status (Aapli Chawdi) - case 8841" }' ``` **Python** ```python 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": "mutation_status", "params": { "board": "satbara", "district_code": "", "taluka_code": "", "village_code": "", "mutation_no": "1900" }, "label": "Mutation Status (Aapli Chawdi) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "mutation_status", "params": { "board": "satbara", "district_code": "", "taluka_code": "", "village_code": "", "mutation_no": "1900" }, "label": "Mutation Status (Aapli Chawdi) - 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": "mutation_status", "label": "Mutation Status (Aapli Chawdi) - 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": "mutation_status", "label": "Mutation Status (Aapli Chawdi) - 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" } } ``` --- Source: https://legiscore.in/docs/states/maharashtra/revenue-court # Revenue Court Cases (e-QJCourts) (Maharashtra) Cases in the revenue and land records courts (Tahsildar, SDO, Collector, land records officers) by survey number, by party name or by case number. Status: LIVE. Source status: No recent runs. Typical time: up to 5 min. state: `maharashtra`, search_type: `revenue_court`. Coverage note: e-QJCourts lists no revenue or land records case for this search. It covers only cases the revenue courts entered online, and the Revenue Tribunal is not searched. ## What you get Each case with its court, number and year, filing date, the dispute, the status and the parties, a PDF of each case page, and a zip of the orders the court uploaded (up to 20 cases). ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `district_code` | string | optional | Ahmednagar | fixed by the search | | `tahsil_code` | string | conditional | Baramati | field "tahsil_code" | | `village_code` | string | conditional | Baramati Rural | field "village" | | `survey_no` | string | conditional | 145 | field "survey_no" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `district` (District) | select | Values: 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), Mumbai City (Mumbai City), Mumbai Suburban (Mumbai Suburban), 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). | | `search_by` (Search By) | select | Values: survey (Survey number), party (Party name), case (Case number). | | `tahsil_code` (Tahsil) | text | In English, as e-QJCourts writes it. Only when search_by is "survey". Max 80 characters. | | `village` (Village) | text | In English, as e-QJCourts writes it. A name it does not list is refused with the names it does list. Only when search_by is "survey". Max 80 characters. | | `survey_no` (Survey Number) | text | Only when search_by is "survey". Max 20 characters. | | `party_name` (Party Name) | text | Petitioner or respondent, in Marathi or English. Part of a name also matches, so check each case page for the right person. Only when search_by is "party". Max 120 characters. | | `case_number` (Case Number) | text | Only when search_by is "case". Max 5 characters. | | `case_year` (Case Year) | year | Only when search_by is "case". | ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "revenue_court", "params": { "district_code": "Ahmednagar", "tahsil_code": "Baramati", "village_code": "Baramati Rural", "survey_no": "145" }, "label": "Revenue Court Cases (e-QJCourts) - case 8841" }' ``` **Python** ```python 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": "revenue_court", "params": { "district_code": "Ahmednagar", "tahsil_code": "Baramati", "village_code": "Baramati Rural", "survey_no": "145" }, "label": "Revenue Court Cases (e-QJCourts) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "revenue_court", "params": { "district_code": "Ahmednagar", "tahsil_code": "Baramati", "village_code": "Baramati Rural", "survey_no": "145" }, "label": "Revenue Court Cases (e-QJCourts) - 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": "revenue_court", "label": "Revenue Court Cases (e-QJCourts) - 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": "revenue_court", "label": "Revenue Court Cases (e-QJCourts) - 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" } } ``` --- Source: https://legiscore.in/docs/states/maharashtra/court-cases # District Court Cases by Party Name (eCourts) (Maharashtra) Pending and disposed cases naming a person in every court complex of a Maharashtra district, read from the district court’s own site year by year. Status: LIVE. Source status: No recent runs. Typical time: up to 12 min. state: `maharashtra`, search_type: `court_cases`. Coverage note: The district court site lists no case with this name in these years. It covers cases the courts entered online from 2000, and it matches the name as written, so try the spelling on the court papers too. ## What you get Each case with its court, number, parties and CNR, and where the site shows them its status, hearings and orders, a summary PDF and a zip of the order and judgment PDFs. On long lists, results may be incomplete. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `party_name` | string | required | Vasant Genu Kadu | field "party_name" | | `district` | string | required | Ahmednagar | field "district" | | `from_year` | string | optional | 2024 | field "from_year" | | `to_year` | string | optional | 2024 | field "to_year" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `party_name` (Party Name) | text | Petitioner or respondent, in English letters, at least 3. A common name can give a long list. The court site can skip some cases when it shows a long list page by page, so results may be incomplete. Use the full name to keep the list short. Max 50 characters. | | `district` (District Court) | select | Palghar’s courts are on the Thane site. Mumbai has three: City Civil Court, CMM Court and Small Causes Court. Values: Ahmednagar (Ahmednagar), Akola (Akola), Amravati (Amravati), Aurangabad (Aurangabad), Beed (Beed), Bhandara (Bhandara), Buldhana (Buldhana), Chandrapur (Chandrapur), Dhule (Dhule), Gadchiroli (Gadchiroli), Gondia (Gondia), Jalgaon (Jalgaon), Jalna (Jalna), Kolhapur (Kolhapur), Latur (Latur), Mumbai City Civil Court (Mumbai City Civil Court), Mumbai CMM Court (Mumbai CMM Court), Mumbai Small Causes Court (Mumbai Small Causes Court), Nagpur (Nagpur), Nanded (Nanded), Nandurbar (Nandurbar), Nashik (Nashik), Osmanabad (Osmanabad), Parbhani (Parbhani), Pune (Pune), Raigad (Raigad), Ratnagiri (Ratnagiri), Sangli (Sangli), Satara (Satara), Sindhudurg (Sindhudurg), Solapur (Solapur), Thane (Thane), Wardha (Wardha), Washim (Washim), Yavatmal (Yavatmal). | | `from_year` (From Year) | year | | | `to_year` (To Year) | year | Optional. Blank searches the last 13 years. At most 30 years, from 2000. | ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "court_cases", "params": { "party_name": "Vasant Genu Kadu", "district": "Ahmednagar", "from_year": "2024", "to_year": "2024" }, "label": "District Court Cases by Party Name (eCourts) - case 8841" }' ``` **Python** ```python 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": "court_cases", "params": { "party_name": "Vasant Genu Kadu", "district": "Ahmednagar", "from_year": "2024", "to_year": "2024" }, "label": "District Court Cases by Party Name (eCourts) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "court_cases", "params": { "party_name": "Vasant Genu Kadu", "district": "Ahmednagar", "from_year": "2024", "to_year": "2024" }, "label": "District Court Cases by Party Name (eCourts) - 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": "court_cases", "label": "District Court Cases by Party Name (eCourts) - 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": "court_cases", "label": "District Court Cases by Party Name (eCourts) - 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" } } ``` --- Source: https://legiscore.in/docs/states/maharashtra/rera-check # MahaRERA Check (Maharashtra) One MahaRERA project by its RERA number or exact name: a project summary and the title documents a legal review needs. Status: LIVE. Source status: No recent runs. Typical time: up to 10 min. state: `maharashtra`, search_type: `rera_check`. Coverage note: MahaRERA has no registered or revoked project with this RERA number or exact name. ## What you get A summary PDF (completion dates, complaints, appeals, litigation, landowners, charges) and each title document as its own named PDF: legal title report, encumbrances, layout approval, commencement certificate or NA order, the latest sold-inventory disclosure and sale agreement format, CERSAI reports, development agreements and landowner papers. A name that fits several projects returns them as a list to pick from, and nothing is charged. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). - At least one of `rera_number`, `project_name`: Give the RERA number or the exact project name. | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `rera_number` | string | one of | P51700048408 | field "rera_number" | | `project_name` | string | one of | Lodha Panacea III | field "project_name" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `rera_number` (RERA Number) | text | As printed on the MahaRERA registration certificate. Max 20 characters. | | `project_name` (Project Name) | text | Only if you do not have the RERA number: the exact registered name. Max 150 characters. | ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "rera_check", "params": { "rera_number": "P51700048408", "project_name": "Lodha Panacea III" }, "label": "MahaRERA Check - case 8841" }' ``` **Python** ```python 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": "rera_check", "params": { "rera_number": "P51700048408", "project_name": "Lodha Panacea III" }, "label": "MahaRERA Check - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "rera_check", "params": { "rera_number": "P51700048408", "project_name": "Lodha Panacea III" }, "label": "MahaRERA Check - 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": "rera_check", "label": "MahaRERA Check - 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": "rera_check", "label": "MahaRERA Check - 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": "MahaRERA Project Summary - P51800099999 - Sample Heights.pdf", "content_type": "application/pdf", "bytes": 81950, "withheld": false }, { "filename": "Legal Title Report - P51800099999 - Sample Heights.pdf", "content_type": "application/pdf", "bytes": 816050, "withheld": false }, { "filename": "Details of Encumbrances - P51800099999, Finance - Sample Heights.pdf", "content_type": "application/pdf", "bytes": 24428, "withheld": false }, { "filename": "Layout Approval - P51800099999 - Sample Heights (1 of 2).pdf", "content_type": "application/pdf", "bytes": 412300, "withheld": false }, { "filename": "Layout Approval - P51800099999 - Sample Heights (2 of 2).pdf", "content_type": "application/pdf", "bytes": 398114, "withheld": false }, { "filename": "Commencement Certificate or NA Order - P51800099999 - Sample Heights.pdf", "content_type": "application/pdf", "bytes": 220512, "withheld": false }, { "filename": "Disclosure of Sold-Booked Inventory - P51800099999, latest 2025-07-18 - Sample Heights.pdf", "content_type": "application/pdf", "bytes": 61220, "withheld": false }, { "filename": "Proforma Agreement for Sale - P51800099999, latest 2022-11-21 - Sample Heights.pdf", "content_type": "application/pdf", "bytes": 1450331, "withheld": false }, { "filename": "Financial Encumbrance Document - P51800099999, CERSAI Report - Sample Heights.pdf", "content_type": "application/pdf", "bytes": 98004, "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" } } ``` --- Source: https://legiscore.in/docs/states/maharashtra/rera-single # RERA Project Record + Documents (MahaRERA) (Maharashtra) One project’s MahaRERA record and its documents: the registration certificate, commencement certificates and the application. Status: LIVE. Source status: No recent runs. Typical time: up to 10 min. state: `maharashtra`, search_type: `rera_single`. Replaced by search_type `rera_check`. This search still runs; new integrations should use `rera_check`. Coverage note: MahaRERA has no registered or revoked project with this number. Check the number on the certificate. ## What you get The project’s details from its public page, and one zip of every document the portal offers, with a list of the files. A file over 19 MB is listed but not downloaded. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). - At least one of `registration_no`, `certificate_id`: Give the MahaRERA registration number or the project ID. | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `registration_no` | string | one of | P51700048408 | field "registration_no" | | `certificate_id` | number | one of | 42244 | field "certificate_id" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `registration_no` (MahaRERA Registration Number) | text | As printed on the registration certificate. Max 16 characters. | | `certificate_id` (MahaRERA Project ID) | text | Only if you do not have the registration number: the number at the end of the project’s MahaRERA page address. Max 9 characters. | ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "rera_single", "params": { "registration_no": "P51700048408", "certificate_id": 42244 }, "label": "RERA Project Record + Documents (MahaRERA) - case 8841" }' ``` **Python** ```python 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": "rera_single", "params": { "registration_no": "P51700048408", "certificate_id": 42244 }, "label": "RERA Project Record + Documents (MahaRERA) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "rera_single", "params": { "registration_no": "P51700048408", "certificate_id": 42244 }, "label": "RERA Project Record + Documents (MahaRERA) - 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": "rera_single", "label": "RERA Project Record + Documents (MahaRERA) - 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": "rera_single", "label": "RERA Project Record + Documents (MahaRERA) - 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" } } ``` --- Source: https://legiscore.in/docs/states/maharashtra/rera-orders # RERA Orders and Judgements (MahaRERA) (Maharashtra) Orders and judgements of MahaRERA on complaints, by project, complaint number or party name. Status: LIVE. Source status: No recent runs. Typical time: up to 15 min. state: `maharashtra`, search_type: `rera_orders`. Coverage note: MahaRERA shows no order for this search in this category. Orders in other categories are not searched: choose another category or All categories. ## What you get Each order with its type, complaint number, project, parties and date, and the order PDFs in one zip. Only the first 10 orders show: the portal shows one page of a search. Choose an order type or a date range to see other orders. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). - At least one of `registration_no`, `project_name`, `complaint_number`, `complainant_name`, `respondent_name`: Give a project, a complaint number or a party name. | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `registration_no` | string | one of | P51900005378 | field "registration_no" | | `project_name` | string | one of | Lodha Venezia | field "project_name" | | `complaint_number` | string | one of | CC006000000056656 | field "complaint_number" | | `complainant_name` | string | one of | | field "complainant_name" | | `respondent_name` | string | one of | | field "respondent_name" | | `complaint_type` | string | optional | rulings_of_MahaRERA | field "complaint_type" | | `order_type` | string | optional | all | field "order_type" | | `from_date` | string | optional | 01-01-2024 | field "from_date" | | `to_date` | string | optional | 01-01-2024 | field "to_date" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `complaint_type` (Order Category) | select | Blank searches Rulings of MahaRERA, final orders. All categories can take up to 15 minutes. Values: rulings_of_MahaRERA (Rulings of MahaRERA), judgements_by_adjudicating_officers (Judgements by Adjudicating Officers), non_registration_rulings (Rulings on unregistered projects), all (All categories (slow)). | | `registration_no` (Project Registration Number) | text | Max 16 characters. | | `project_name` (Project Name) | text | Max 150 characters. | | `complaint_number` (Complaint Number) | text | Max 40 characters. | | `complainant_name` (Complainant Name) | text | Max 150 characters. | | `respondent_name` (Respondent Name) | text | Max 150 characters. | | `order_type` (Order Type) | select | Optional. Blank searches final orders. Values: all (All order types), interim (Interim orders), final (Final orders), non_compliance (Non-compliance orders). | | `from_date` (From) | date | Optional. With a To date, at most one year. | | `to_date` (To) | date | | ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "rera_orders", "params": { "registration_no": "P51900005378", "project_name": "Lodha Venezia", "complaint_number": "CC006000000056656", "complainant_name": "", "respondent_name": "", "complaint_type": "rulings_of_MahaRERA", "order_type": "all", "from_date": "01-01-2024", "to_date": "01-01-2024" }, "label": "RERA Orders and Judgements (MahaRERA) - case 8841" }' ``` **Python** ```python 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": "rera_orders", "params": { "registration_no": "P51900005378", "project_name": "Lodha Venezia", "complaint_number": "CC006000000056656", "complainant_name": "", "respondent_name": "", "complaint_type": "rulings_of_MahaRERA", "order_type": "all", "from_date": "01-01-2024", "to_date": "01-01-2024" }, "label": "RERA Orders and Judgements (MahaRERA) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "rera_orders", "params": { "registration_no": "P51900005378", "project_name": "Lodha Venezia", "complaint_number": "CC006000000056656", "complainant_name": "", "respondent_name": "", "complaint_type": "rulings_of_MahaRERA", "order_type": "all", "from_date": "01-01-2024", "to_date": "01-01-2024" }, "label": "RERA Orders and Judgements (MahaRERA) - 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": "rera_orders", "label": "RERA Orders and Judgements (MahaRERA) - 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": "rera_orders", "label": "RERA Orders and Judgements (MahaRERA) - 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" } } ``` --- Source: https://legiscore.in/docs/states/maharashtra/rera-complaints # RERA Complaints (MahaRERA) (Maharashtra) Complaints filed with MahaRERA, by project registration number, complaint number or party name. Status: LIVE. Source status: No recent runs. Typical time: up to 5 min. state: `maharashtra`, search_type: `rera_complaints`. Coverage note: MahaRERA lists no complaint for this search in this register. Other registers are not searched: choose All registers to search them too. ## What you get Each complaint with its number, complainant and respondent. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). - At least one of `registration_no`, `complaint_number`, `complainant_name`, `respondent_name`: Give a registration number, a complaint number or a party name. | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `registration_no` | string | one of | P51700048408 | field "registration_no" | | `complaint_number` | string | one of | CC12605104 | field "complaint_number" | | `complainant_name` | string | one of | | field "complainant_name" | | `respondent_name` | string | one of | Lodha Developers | field "respondent_name" | | `complaint_register` | string | optional | registered | field "complaint_register" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `registration_no` (Project Registration Number) | text | The portal does not search complaints by project name. Use the registration number. Max 16 characters. | | `complaint_number` (Complaint Number) | text | Max 40 characters. | | `complainant_name` (Complainant Name) | text | Max 150 characters. | | `respondent_name` (Respondent Name) | text | Max 150 characters. | | `complaint_register` (Register) | select | Optional. Blank searches complaints on registered projects. Values: registered (Complaints on registered projects), unregistered (Complaints on unregistered projects), conciliation (Conciliation), all (All registers). | ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "rera_complaints", "params": { "registration_no": "P51700048408", "complaint_number": "CC12605104", "complainant_name": "", "respondent_name": "Lodha Developers", "complaint_register": "registered" }, "label": "RERA Complaints (MahaRERA) - case 8841" }' ``` **Python** ```python 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": "rera_complaints", "params": { "registration_no": "P51700048408", "complaint_number": "CC12605104", "complainant_name": "", "respondent_name": "Lodha Developers", "complaint_register": "registered" }, "label": "RERA Complaints (MahaRERA) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "rera_complaints", "params": { "registration_no": "P51700048408", "complaint_number": "CC12605104", "complainant_name": "", "respondent_name": "Lodha Developers", "complaint_register": "registered" }, "label": "RERA Complaints (MahaRERA) - 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": "rera_complaints", "label": "RERA Complaints (MahaRERA) - 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": "rera_complaints", "label": "RERA Complaints (MahaRERA) - 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" } } ``` --- Source: https://legiscore.in/docs/states/karnataka # Karnataka | Search | search_type | What it does | Status | Notes | | --- | --- | --- | --- | --- | | [Revenue Court Cases (RCCMS)](https://legiscore.in/docs/states/karnataka/revenue-cases) | revenue_cases | Revenue court cases recorded against a survey number — who is contesting it, in which court, and how far it has got. | LIVE | - | | [Encumbrance Certificate (Kaveri 2.0)](https://legiscore.in/docs/states/karnataka/ec) | ec | Every registered transaction against a property since 1 January 2004, from the Karnataka sub-registrar records on Kaveri 2.0. | LIVE | - | | [Rural Property Record (e-Swathu)](https://legiscore.in/docs/states/karnataka/eswathu) | eswathu | Gram Panchayat property records (Form 9 / e-Khata) for rural Karnataka, by owner name, asset number or property ID. | LIVE | - | | [RTC / Pahani (Bhoomi)](https://legiscore.in/docs/states/karnataka/rtc) | rtc | The Record of Rights, Tenancy and Crops for a survey number: who holds the land today, the extent, and any restriction or stay the record carries. | HELD | - | | [Akarband / Survey Sketch (Bhoomojini)](https://legiscore.in/docs/states/karnataka/akarband) | akarband | The survey sketch (FMB) of a survey number, drawn by the Survey Department. | LIVE | - | | [Village Map (Bhoomi)](https://legiscore.in/docs/states/karnataka/village-map) | village_map | The published cadastral map of a whole village, with every survey number drawn on it. | LIVE | - | | [Mutation register extracts (Bhoomi)](https://legiscore.in/docs/states/karnataka/mutation) | mutation | Every mutation (Form 12) filed against a survey number in Bhoomi -- who the record of rights changed to, and when. | LIVE | - | | [Mutation history (Bhoomi)](https://legiscore.in/docs/states/karnataka/mutation-history) | mutation_history | Every mutation on a survey number since Bhoomi began, with who gave and who took what (Form 12), in one report. | LIVE | - | | [Pending mutations & cases (eChawadi)](https://legiscore.in/docs/states/karnataka/echawadi-pending) | echawadi_pending | Deals and cases in progress that the RTC does not show yet: pending mutations with their registration number, revenue court cases, conversions and inheritance changes. | LIVE | - | | [Land conversion status (DC)](https://legiscore.in/docs/states/karnataka/land-conversion-status) | land_conversion_status | Whether the land on a survey number has a Deputy Commissioner land-conversion request, and where it stands. | LIVE | - | | [Final land conversion order (DC)](https://legiscore.in/docs/states/karnataka/land-conversion-order) | land_conversion_order | The Deputy Commissioner’s final conversion order for each converted parcel on a survey number. | LIVE | - | | [Land conversion order, any year (Bhoomi mutation register)](https://legiscore.in/docs/states/karnataka/land-conversion-mutation) | land_conversion_mutation | Finds the Deputy Commissioner’s conversion order of any year from the Bhoomi mutation register, including conversions older than the online conversion portal (about 2019-20). | LIVE | - | | [Form 57 applications (govt land regularisation)](https://legiscore.in/docs/states/karnataka/form57-applications) | form57_applications | Applications to regularise occupation of government land (Section 94-A(4)) filed on a survey number, from the village Form 57 register. | LIVE | - | | [Survey applications (Mojini)](https://legiscore.in/docs/states/karnataka/mojini-status) | mojini_status | Survey applications on a survey number (11E sketch, phodi, Darkhast phodi, hadbast) and the stage each one has reached. | LIVE | - | | [Digitised survey sketch (Bhoomi)](https://legiscore.in/docs/states/karnataka/survey-sketch) | survey_sketch | The digitised sketch of each hissa on a survey number, with its ULPIN and extent. | LIVE | - | | [Scanned survey records (Bhoomi)](https://legiscore.in/docs/states/karnataka/survey-documents) | survey_documents | Historic survey and settlement records held for a survey number: Tippan sketches, Pakka Book, Prathi, Hissa Atlas and Kayam Dara Takhte. | LIVE | - | | [Land Details report (Bhoomi Land Stack)](https://legiscore.in/docs/states/karnataka/rdgis-parcel) | rdgis_parcel | One land report for a survey number: owners, the RTC, every mutation with its Form 12, the Akarband, revenue court cases and ongoing land conversion applications. | LIVE | - | | [Original Tippan scans (Bhoomi Land Stack)](https://legiscore.in/docs/states/karnataka/rdgis-tippan) | rdgis_tippan | The original Tippan survey sketches held for a survey number, as scanned by the Survey Department. | LIVE | - | | [Bengaluru Khata by PID (BBMP)](https://legiscore.in/docs/states/karnataka/bbmp-khata-download) | bbmp_khata_download | The BBMP Form-A khata of a Bengaluru property, from its ward-street-plot PID on the BBMP e-Aasthi register. | LIVE | - | | [Bengaluru registrability check by PID (BBMP)](https://legiscore.in/docs/states/karnataka/bbmp-kaveri-properties) | bbmp_kaveri_properties | Whether BBMP e-Aasthi lets a Bengaluru property be registered today, from its ward-street-plot PID. | LIVE | - | | [Bengaluru e-Khata by Document No (BBMP)](https://legiscore.in/docs/states/karnataka/bbmp-form3-view) | bbmp_form3_view | An issued Bengaluru Form-A/B e-Khata, fetched by the Document No printed on it. | LIVE | - | | [Land Use / Zoning (BDA and BMRDA master plan)](https://legiscore.in/docs/states/karnataka/bda-landuse) | bda_landuse | The master-plan zone a location falls in, from the Bengaluru (BDA) and BMRDA plans on KGIS, for a map point or a KGIS-mapped layout. | LIVE | - | | [Survey Number at a Map Point](https://legiscore.in/docs/states/karnataka/survey-lookup) | survey_lookup | The survey number a location falls on, from Karnataka's own survey maps (KSRSAC KGIS), anywhere in the state. | LIVE | - | | [Urban e-Khata Form-3 (e-Aasthi)](https://legiscore.in/docs/states/karnataka/eaasthi-form3) | eaasthi_form3 | The official Form-3 / Form-3A e-Khata extract for a town or city property outside Bengaluru, from its Document No. | LIVE | - | | [Urban property: can it be registered? (e-Aasthi)](https://legiscore.in/docs/states/karnataka/eaasthi-registrability) | eaasthi_registrability | Whether a town or city property outside Bengaluru can be registered today, as e-Aasthi answers it (tax unpaid, under mutation and similar holds). | LIVE | - | | [Bengaluru e-Khata by ePID (GBA)](https://legiscore.in/docs/states/karnataka/gba-eaasthi) | gba_eaasthi | A Bengaluru property on the Greater Bengaluru Authority e-Khata register (formerly BBMP), from its 10-digit ePID. | LIVE | - | --- Source: https://legiscore.in/docs/states/karnataka/revenue-cases # Revenue Court Cases (RCCMS) (Karnataka) Revenue court cases recorded against a survey number — who is contesting it, in which court, and how far it has got. Status: LIVE. Source status: No recent runs. Typical time: up to 5 min. state: `karnataka`, search_type: `revenue_cases`. ## What you get Every matching case with its parties, land parcels, hearing diary and the orders the portal publishes. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `district_code` | string | required | from lookup "district" | ka_district lookup (https://legiscore.in/docs/api/lookups#karnataka-ka_district) | | `subdivision_code` | string | required | from lookup "subdivision" | ka_subdivision lookup (https://legiscore.in/docs/api/lookups#karnataka-ka_subdivision) | | `taluk_code` | string | required | from lookup "taluk" | ka_taluk lookup (https://legiscore.in/docs/api/lookups#karnataka-ka_taluk) | | `hobli_code` | string | required | from lookup "hobli" | ka_hobli lookup (https://legiscore.in/docs/api/lookups#karnataka-ka_hobli) | | `village_code` | string | required | from lookup "village" | ka_village lookup (https://legiscore.in/docs/api/lookups#karnataka-ka_village) | | `survey_no` | string | required | 12 | field "survey_no" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `district` (District) | lookup | | | `subdivision` (Subdivision) | lookup | The revenue subdivision — not the land’s sub-division number. | | `taluk` (Taluk) | lookup | | | `hobli` (Hobli) | lookup | | | `village` (Village) | lookup | | | `survey_no` (Survey Number) | text | Enter the base survey number, e.g. 12 — sub-divisions like 12/1 are returned automatically. | ## Resolve names to codes | Field | Lookup | Needs first | | --- | --- | --- | | district | ka_district | - | | subdivision | ka_subdivision | district | | taluk | ka_taluk | district, subdivision | | hobli | ka_hobli | district, subdivision, taluk | | village | ka_village | district, subdivision, taluk, hobli | q is required (2+ characters), at most 10 matches. ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "revenue_cases", "params": { "district_code": "", "subdivision_code": "", "taluk_code": "", "hobli_code": "", "village_code": "", "survey_no": "12" }, "label": "Revenue Court Cases (RCCMS) - case 8841" }' ``` **Python** ```python 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": "revenue_cases", "params": { "district_code": "", "subdivision_code": "", "taluk_code": "", "hobli_code": "", "village_code": "", "survey_no": "12" }, "label": "Revenue Court Cases (RCCMS) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "revenue_cases", "params": { "district_code": "", "subdivision_code": "", "taluk_code": "", "hobli_code": "", "village_code": "", "survey_no": "12" }, "label": "Revenue Court Cases (RCCMS) - 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": "karnataka", "search_type": "revenue_cases", "label": "Revenue Court Cases (RCCMS) - 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": "karnataka", "search_type": "revenue_cases", "label": "Revenue Court Cases (RCCMS) - 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" } } ``` --- Source: https://legiscore.in/docs/states/karnataka/ec # Encumbrance Certificate (Kaveri 2.0) (Karnataka) Every registered transaction against a property since 1 January 2004, from the Karnataka sub-registrar records on Kaveri 2.0. Status: LIVE. Source status: No recent runs. Typical time: up to 10 min. state: `karnataka`, search_type: `ec`. ## 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 Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `district` | string | required | from lookup "district" | kaveri_district lookup (https://legiscore.in/docs/api/lookups#karnataka-kaveri_district) | | `taluk` | string | required | from lookup "taluk" | kaveri_taluk lookup (https://legiscore.in/docs/api/lookups#karnataka-kaveri_taluk) | | `hobli` | string | required | from lookup "hobli" | kaveri_hobli lookup (https://legiscore.in/docs/api/lookups#karnataka-kaveri_hobli) | | `village` | string | required | from lookup "village" | kaveri_village lookup (https://legiscore.in/docs/api/lookups#karnataka-kaveri_village) | | `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 | | --- | --- | --- | | `district` (District) | lookup | As Kaveri lists it. Bengaluru is split into registration districts such as Basavanagudi, Jayanagar and Shivajinagar. | | `taluk` (Taluk) | lookup | | | `hobli` (Hobli) | lookup | | | `village` (Village) | lookup | | | `property_kind` (Property Type) | select | Values: agricultural (Agricultural land (survey number)), non_agricultural (Non-agricultural (site, flat, house, khata)). | | `survey_number` (Survey 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_type` (Property 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_number` (Property Number) | text | As written on the deed. Kaveri matches it as written. Only when property_kind is "non_agricultural". Max 100 characters. | | `from_date` (From) | date | Optional. 1 January 2004 if left blank, the earliest Kaveri searches online. Earliest 2004-01-01. | | `to_date` (To) | date | Optional. Today if left blank. Earliest 2004-01-01. | ## Resolve names to codes | Field | Lookup | Needs first | | --- | --- | --- | | district | kaveri_district | - | | taluk | kaveri_taluk | district | | hobli | kaveri_hobli | district, taluk | | village | kaveri_village | district, taluk, hobli | | property_number_type | kaveri_property_type | - | q is required (2+ characters), at most 10 matches. ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "", "taluk": "", "hobli": "", "village": "", "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" }' ``` **Python** ```python 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": "", "taluk": "", "hobli": "", "village": "", "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()) ``` **Node** ```js 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": "", "taluk": "", "hobli": "", "village": "", "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: ```json { "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: ```json { "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" } } ``` --- Source: https://legiscore.in/docs/states/karnataka/eswathu # Rural Property Record (e-Swathu) (Karnataka) Gram Panchayat property records (Form 9 / e-Khata) for rural Karnataka, by owner name, asset number or property ID. Status: LIVE. Source status: No recent runs. Typical time: up to 5 min. state: `karnataka`, search_type: `eswathu`. ## What you get Every matching property with its owner, address and e-Khata status, plus the free Form 9 / draft e-Khata prints the portal issues. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `search_type` | string | required | owner_name | field "search_type" | | `search_value` | string | required | | field "search_value" | | `district` | string | conditional | from lookup "district" | eswathu_district lookup (https://legiscore.in/docs/api/lookups#karnataka-eswathu_district) | | `taluk` | string | conditional | from lookup "taluk" | eswathu_taluk lookup (https://legiscore.in/docs/api/lookups#karnataka-eswathu_taluk) | | `gram_panchayat` | string | conditional | from lookup "gram_panchayat" | eswathu_gram_panchayat lookup (https://legiscore.in/docs/api/lookups#karnataka-eswathu_gram_panchayat) | | `village` | string | conditional | from lookup "village" | eswathu_village lookup (https://legiscore.in/docs/api/lookups#karnataka-eswathu_village) | ## Field details | Field | Type | Notes | | --- | --- | --- | | `search_type` (Search By) | select | Values: owner_name (Owner name), asset_number (Asset number), property_id (Property ID (no village needed)). | | `district` (District) | lookup | Only when search_type is "owner_name" or "asset_number". | | `taluk` (Taluk) | lookup | Only when search_type is "owner_name" or "asset_number". | | `gram_panchayat` (Gram Panchayat) | lookup | Only when search_type is "owner_name" or "asset_number". | | `village` (Village) | lookup | Only when search_type is "owner_name" or "asset_number". | | `search_value` (Search For) | text | Owner names match any part of the name, as recorded. Most rural owners are recorded in Kannada, so try the Kannada spelling if English finds nothing. Max 30 characters. | ## Resolve names to codes | Field | Lookup | Needs first | | --- | --- | --- | | district | eswathu_district | - | | taluk | eswathu_taluk | district | | gram_panchayat | eswathu_gram_panchayat | district, taluk | | village | eswathu_village | district, taluk, gram_panchayat | q is required (2+ characters), at most 10 matches. ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "eswathu", "params": { "search_type": "owner_name", "search_value": "", "district": "", "taluk": "", "gram_panchayat": "", "village": "" }, "label": "Rural Property Record (e-Swathu) - case 8841" }' ``` **Python** ```python 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": "eswathu", "params": { "search_type": "owner_name", "search_value": "", "district": "", "taluk": "", "gram_panchayat": "", "village": "" }, "label": "Rural Property Record (e-Swathu) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "eswathu", "params": { "search_type": "owner_name", "search_value": "", "district": "", "taluk": "", "gram_panchayat": "", "village": "" }, "label": "Rural Property Record (e-Swathu) - 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": "karnataka", "search_type": "eswathu", "label": "Rural Property Record (e-Swathu) - 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": "karnataka", "search_type": "eswathu", "label": "Rural Property Record (e-Swathu) - 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" } } ``` --- Source: https://legiscore.in/docs/states/karnataka/rtc # RTC / Pahani (Bhoomi) (Karnataka) The Record of Rights, Tenancy and Crops for a survey number: who holds the land today, the extent, and any restriction or stay the record carries. Status: HELD. Source status: Held. Typical time: up to 5 min. state: `karnataka`, search_type: `rtc`. HELD: temporarily unavailable. A submit is refused with 422 search_unavailable and nothing is charged. ## What you get The owners, extents and flags on each RTC, plus a PDF of each RTC as Bhoomi renders it (up to 10 hissas when none is given). ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `district` | string | required | from lookup "district" | bhoomi_district lookup (https://legiscore.in/docs/api/lookups#karnataka-bhoomi_district) | | `taluk` | string | required | from lookup "taluk" | bhoomi_taluk lookup (https://legiscore.in/docs/api/lookups#karnataka-bhoomi_taluk) | | `hobli` | string | required | from lookup "hobli" | bhoomi_hobli lookup (https://legiscore.in/docs/api/lookups#karnataka-bhoomi_hobli) | | `village` | string | required | from lookup "village" | bhoomi_village lookup (https://legiscore.in/docs/api/lookups#karnataka-bhoomi_village) | | `survey_no` | string | required | 201 | field "survey_no" | | `hissa` | string | optional | 1 | field "hissa" | | `surnoc` | string | optional | * | field "surnoc" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `district` (District) | lookup | | | `taluk` (Taluk) | lookup | | | `hobli` (Hobli) | lookup | Split hoblis are listed separately, e.g. Kengeri - 1 to Kengeri - 4. | | `village` (Village) | lookup | | | `survey_no` (Survey Number) | text | The survey number, or survey/hissa such as 201/1. | | `hissa` (Hissa) | text | Optional. Blank returns every hissa of the survey, up to 10. Max 10 characters. | | `surnoc` (Surnoc) | text | Optional. Leave blank unless the RTC prints one. Max 10 characters. | ## Resolve names to codes | Field | Lookup | Needs first | | --- | --- | --- | | district | bhoomi_district | - | | taluk | bhoomi_taluk | district | | hobli | bhoomi_hobli | district, taluk | | village | bhoomi_village | district, taluk, hobli | q is required (2+ characters), at most 10 matches. ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "rtc", "params": { "district": "", "taluk": "", "hobli": "", "village": "", "survey_no": "201", "hissa": "1", "surnoc": "*" }, "label": "RTC / Pahani (Bhoomi) - case 8841" }' ``` **Python** ```python 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": "rtc", "params": { "district": "", "taluk": "", "hobli": "", "village": "", "survey_no": "201", "hissa": "1", "surnoc": "*" }, "label": "RTC / Pahani (Bhoomi) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "rtc", "params": { "district": "", "taluk": "", "hobli": "", "village": "", "survey_no": "201", "hissa": "1", "surnoc": "*" }, "label": "RTC / Pahani (Bhoomi) - 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": "karnataka", "search_type": "rtc", "label": "RTC / Pahani (Bhoomi) - 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": "karnataka", "search_type": "rtc", "label": "RTC / Pahani (Bhoomi) - 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" } } ``` --- Source: https://legiscore.in/docs/states/karnataka/akarband # Akarband / Survey Sketch (Bhoomojini) (Karnataka) The survey sketch (FMB) of a survey number, drawn by the Survey Department. Status: LIVE. Source status: No recent runs. Typical time: up to 3 min. state: `karnataka`, search_type: `akarband`. ## What you get The Akarband sketch PDF for the whole survey, or for one hissa. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `district` | string | required | from lookup "district" | bhoomi_district lookup (https://legiscore.in/docs/api/lookups#karnataka-bhoomi_district) | | `taluk` | string | required | from lookup "taluk" | bhoomi_taluk lookup (https://legiscore.in/docs/api/lookups#karnataka-bhoomi_taluk) | | `hobli` | string | required | from lookup "hobli" | bhoomi_hobli lookup (https://legiscore.in/docs/api/lookups#karnataka-bhoomi_hobli) | | `village` | string | required | from lookup "village" | bhoomi_village lookup (https://legiscore.in/docs/api/lookups#karnataka-bhoomi_village) | | `survey_no` | string | required | 201 | field "survey_no" | | `hissa` | string | optional | 1 | field "hissa" | | `surnoc` | string | optional | * | field "surnoc" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `district` (District) | lookup | | | `taluk` (Taluk) | lookup | | | `hobli` (Hobli) | lookup | Split hoblis are listed separately, e.g. Kengeri - 1 to Kengeri - 4. | | `village` (Village) | lookup | | | `survey_no` (Survey Number) | text | The survey number, or survey/hissa such as 201/1. | | `hissa` (Hissa) | text | Optional. Blank returns the sketch of the whole survey. Max 10 characters. | | `surnoc` (Surnoc) | text | Optional. Leave blank unless the RTC prints one. Max 10 characters. | ## Resolve names to codes | Field | Lookup | Needs first | | --- | --- | --- | | district | bhoomi_district | - | | taluk | bhoomi_taluk | district | | hobli | bhoomi_hobli | district, taluk | | village | bhoomi_village | district, taluk, hobli | q is required (2+ characters), at most 10 matches. ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "akarband", "params": { "district": "", "taluk": "", "hobli": "", "village": "", "survey_no": "201", "hissa": "1", "surnoc": "*" }, "label": "Akarband / Survey Sketch (Bhoomojini) - case 8841" }' ``` **Python** ```python 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": "akarband", "params": { "district": "", "taluk": "", "hobli": "", "village": "", "survey_no": "201", "hissa": "1", "surnoc": "*" }, "label": "Akarband / Survey Sketch (Bhoomojini) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "akarband", "params": { "district": "", "taluk": "", "hobli": "", "village": "", "survey_no": "201", "hissa": "1", "surnoc": "*" }, "label": "Akarband / Survey Sketch (Bhoomojini) - 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": "karnataka", "search_type": "akarband", "label": "Akarband / Survey Sketch (Bhoomojini) - 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": "karnataka", "search_type": "akarband", "label": "Akarband / Survey Sketch (Bhoomojini) - 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" } } ``` --- Source: https://legiscore.in/docs/states/karnataka/village-map # Village Map (Bhoomi) (Karnataka) The published cadastral map of a whole village, with every survey number drawn on it. Status: LIVE. Source status: No recent runs. Typical time: up to 5 min. state: `karnataka`, search_type: `village_map`. ## What you get The village map PDF, cadastral or geo-referenced. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `district` | string | required | from lookup "district" | bhoomi_district lookup (https://legiscore.in/docs/api/lookups#karnataka-bhoomi_district) | | `taluk` | string | required | from lookup "taluk" | bhoomi_taluk lookup (https://legiscore.in/docs/api/lookups#karnataka-bhoomi_taluk) | | `hobli` | string | required | from lookup "hobli" | bhoomi_hobli lookup (https://legiscore.in/docs/api/lookups#karnataka-bhoomi_hobli) | | `village` | string | required | from lookup "village" | bhoomi_village lookup (https://legiscore.in/docs/api/lookups#karnataka-bhoomi_village) | | `map_type` | string | optional | cadastral | field "map_type" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `district` (District) | lookup | | | `taluk` (Taluk) | lookup | | | `hobli` (Hobli) | lookup | Split hoblis are listed separately, e.g. Kengeri - 1 to Kengeri - 4. | | `village` (Village) | lookup | | | `map_type` (Map Type) | select | Values: cadastral (Cadastral (default)), georeferenced (Geo-referenced cadastral). | ## Resolve names to codes | Field | Lookup | Needs first | | --- | --- | --- | | district | bhoomi_district | - | | taluk | bhoomi_taluk | district | | hobli | bhoomi_hobli | district, taluk | | village | bhoomi_village | district, taluk, hobli | q is required (2+ characters), at most 10 matches. ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "village_map", "params": { "district": "", "taluk": "", "hobli": "", "village": "", "map_type": "cadastral" }, "label": "Village Map (Bhoomi) - case 8841" }' ``` **Python** ```python 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": "village_map", "params": { "district": "", "taluk": "", "hobli": "", "village": "", "map_type": "cadastral" }, "label": "Village Map (Bhoomi) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "village_map", "params": { "district": "", "taluk": "", "hobli": "", "village": "", "map_type": "cadastral" }, "label": "Village Map (Bhoomi) - 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": "karnataka", "search_type": "village_map", "label": "Village Map (Bhoomi) - 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": "karnataka", "search_type": "village_map", "label": "Village Map (Bhoomi) - 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" } } ``` --- Source: https://legiscore.in/docs/states/karnataka/mutation # Mutation register extracts (Bhoomi) (Karnataka) Every mutation (Form 12) filed against a survey number in Bhoomi -- who the record of rights changed to, and when. Status: LIVE. Source status: No recent runs. Typical time: up to 8 min. state: `karnataka`, search_type: `mutation`. ## What you get The mutation index for the survey, plus each mutation’s extract PDF as Bhoomi renders it (up to 40 when none is given). ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `district` | string | required | from lookup "district" | bhoomi_district lookup (https://legiscore.in/docs/api/lookups#karnataka-bhoomi_district) | | `taluk` | string | required | from lookup "taluk" | bhoomi_taluk lookup (https://legiscore.in/docs/api/lookups#karnataka-bhoomi_taluk) | | `hobli` | string | required | from lookup "hobli" | bhoomi_hobli lookup (https://legiscore.in/docs/api/lookups#karnataka-bhoomi_hobli) | | `village` | string | required | from lookup "village" | bhoomi_village lookup (https://legiscore.in/docs/api/lookups#karnataka-bhoomi_village) | | `survey_no` | string | required | 264 | field "survey_no" | | `max_extracts` | number | optional | 40 | field "max_extracts" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `district` (District) | lookup | | | `taluk` (Taluk) | lookup | | | `hobli` (Hobli) | lookup | Split hoblis are listed separately, e.g. Kengeri - 1 to Kengeri - 4. | | `village` (Village) | lookup | | | `survey_no` (Survey Number) | text | The base survey number only, e.g. 264 -- not 264/1. The portal lists every mutation on the survey, all hissas included. Max 4 characters. | | `max_extracts` (Max Extracts) | text | Optional. How many mutation extract PDFs to capture, 0-40. Blank captures up to 40; 0 returns the index only. Max 2 characters. | ## Resolve names to codes | Field | Lookup | Needs first | | --- | --- | --- | | district | bhoomi_district | - | | taluk | bhoomi_taluk | district | | hobli | bhoomi_hobli | district, taluk | | village | bhoomi_village | district, taluk, hobli | q is required (2+ characters), at most 10 matches. ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "mutation", "params": { "district": "", "taluk": "", "hobli": "", "village": "", "survey_no": "264", "max_extracts": 40 }, "label": "Mutation register extracts (Bhoomi) - case 8841" }' ``` **Python** ```python 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": "mutation", "params": { "district": "", "taluk": "", "hobli": "", "village": "", "survey_no": "264", "max_extracts": 40 }, "label": "Mutation register extracts (Bhoomi) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "mutation", "params": { "district": "", "taluk": "", "hobli": "", "village": "", "survey_no": "264", "max_extracts": 40 }, "label": "Mutation register extracts (Bhoomi) - 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": "karnataka", "search_type": "mutation", "label": "Mutation register extracts (Bhoomi) - 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": "karnataka", "search_type": "mutation", "label": "Mutation register extracts (Bhoomi) - 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" } } ``` --- Source: https://legiscore.in/docs/states/karnataka/mutation-history # Mutation history (Bhoomi) (Karnataka) Every mutation on a survey number since Bhoomi began, with who gave and who took what (Form 12), in one report. Status: LIVE. Source status: No recent runs. Typical time: up to 3 min. state: `karnataka`, search_type: `mutation_history`. ## What you get One row per mutation (MR number, year, type, approval date) with its Form 12 details, plus the whole history as one PDF. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `district` | string | required | from lookup "district" | bhoomi_district lookup (https://legiscore.in/docs/api/lookups#karnataka-bhoomi_district) | | `taluk` | string | required | from lookup "taluk" | bhoomi_taluk lookup (https://legiscore.in/docs/api/lookups#karnataka-bhoomi_taluk) | | `hobli` | string | required | from lookup "hobli" | bhoomi_hobli lookup (https://legiscore.in/docs/api/lookups#karnataka-bhoomi_hobli) | | `village` | string | required | from lookup "village" | bhoomi_village lookup (https://legiscore.in/docs/api/lookups#karnataka-bhoomi_village) | | `survey_no` | string | required | 264 | field "survey_no" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `district` (District) | lookup | | | `taluk` (Taluk) | lookup | | | `hobli` (Hobli) | lookup | Split hoblis are listed separately, e.g. Kengeri - 1 to Kengeri - 4. | | `village` (Village) | lookup | | | `survey_no` (Survey Number) | text | The base survey number only, e.g. 264 -- not 264/1. Every hissa of the survey is covered. Max 4 characters. | ## Resolve names to codes | Field | Lookup | Needs first | | --- | --- | --- | | district | bhoomi_district | - | | taluk | bhoomi_taluk | district | | hobli | bhoomi_hobli | district, taluk | | village | bhoomi_village | district, taluk, hobli | q is required (2+ characters), at most 10 matches. ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "mutation_history", "params": { "district": "", "taluk": "", "hobli": "", "village": "", "survey_no": "264" }, "label": "Mutation history (Bhoomi) - case 8841" }' ``` **Python** ```python 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": "mutation_history", "params": { "district": "", "taluk": "", "hobli": "", "village": "", "survey_no": "264" }, "label": "Mutation history (Bhoomi) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "mutation_history", "params": { "district": "", "taluk": "", "hobli": "", "village": "", "survey_no": "264" }, "label": "Mutation history (Bhoomi) - 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": "karnataka", "search_type": "mutation_history", "label": "Mutation history (Bhoomi) - 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": "karnataka", "search_type": "mutation_history", "label": "Mutation history (Bhoomi) - 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" } } ``` --- Source: https://legiscore.in/docs/states/karnataka/echawadi-pending # Pending mutations & cases (eChawadi) (Karnataka) Deals and cases in progress that the RTC does not show yet: pending mutations with their registration number, revenue court cases, conversions and inheritance changes. Status: LIVE. Source status: No recent runs. Typical time: up to 3 min. state: `karnataka`, search_type: `echawadi_pending`. ## What you get Each pending item on the survey with its status, plus a summary PDF. Nothing pending comes back as a clean "not found". ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `district` | string | required | from lookup "district" | bhoomi_district lookup (https://legiscore.in/docs/api/lookups#karnataka-bhoomi_district) | | `taluk` | string | required | from lookup "taluk" | bhoomi_taluk lookup (https://legiscore.in/docs/api/lookups#karnataka-bhoomi_taluk) | | `hobli` | string | required | from lookup "hobli" | bhoomi_hobli lookup (https://legiscore.in/docs/api/lookups#karnataka-bhoomi_hobli) | | `village` | string | required | from lookup "village" | bhoomi_village lookup (https://legiscore.in/docs/api/lookups#karnataka-bhoomi_village) | | `survey_no` | string | required | 264 | field "survey_no" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `district` (District) | lookup | | | `taluk` (Taluk) | lookup | | | `hobli` (Hobli) | lookup | Split hoblis are listed separately, e.g. Kengeri - 1 to Kengeri - 4. | | `village` (Village) | lookup | | | `survey_no` (Survey Number) | text | The base survey number only, e.g. 264 -- not 264/1. Every hissa of the survey is covered. Max 4 characters. | ## Resolve names to codes | Field | Lookup | Needs first | | --- | --- | --- | | district | bhoomi_district | - | | taluk | bhoomi_taluk | district | | hobli | bhoomi_hobli | district, taluk | | village | bhoomi_village | district, taluk, hobli | q is required (2+ characters), at most 10 matches. ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "echawadi_pending", "params": { "district": "", "taluk": "", "hobli": "", "village": "", "survey_no": "264" }, "label": "Pending mutations & cases (eChawadi) - case 8841" }' ``` **Python** ```python 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": "echawadi_pending", "params": { "district": "", "taluk": "", "hobli": "", "village": "", "survey_no": "264" }, "label": "Pending mutations & cases (eChawadi) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "echawadi_pending", "params": { "district": "", "taluk": "", "hobli": "", "village": "", "survey_no": "264" }, "label": "Pending mutations & cases (eChawadi) - 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": "karnataka", "search_type": "echawadi_pending", "label": "Pending mutations & cases (eChawadi) - 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": "karnataka", "search_type": "echawadi_pending", "label": "Pending mutations & cases (eChawadi) - 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" } } ``` --- Source: https://legiscore.in/docs/states/karnataka/land-conversion-status # Land conversion status (DC) (Karnataka) Whether the land on a survey number has a Deputy Commissioner land-conversion request, and where it stands. Status: LIVE. Source status: No recent runs. Typical time: up to 2 min. state: `karnataka`, search_type: `land_conversion_status`. ## What you get Every conversion request on the survey: request id, type, status and date. Conversions from before about 2019-20 are not online. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `district` | string | required | from lookup "district" | bhoomi_district lookup (https://legiscore.in/docs/api/lookups#karnataka-bhoomi_district) | | `taluk` | string | required | from lookup "taluk" | bhoomi_taluk lookup (https://legiscore.in/docs/api/lookups#karnataka-bhoomi_taluk) | | `hobli` | string | required | from lookup "hobli" | bhoomi_hobli lookup (https://legiscore.in/docs/api/lookups#karnataka-bhoomi_hobli) | | `village` | string | required | from lookup "village" | bhoomi_village lookup (https://legiscore.in/docs/api/lookups#karnataka-bhoomi_village) | | `survey_no` | string | required | 20 | field "survey_no" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `district` (District) | lookup | | | `taluk` (Taluk) | lookup | | | `hobli` (Hobli) | lookup | Split hoblis are listed separately, e.g. Kengeri - 1 to Kengeri - 4. | | `village` (Village) | lookup | | | `survey_no` (Survey Number) | text | The survey number, or survey/hissa such as 20/2 or 20/*/2 to keep one parcel. | ## Resolve names to codes | Field | Lookup | Needs first | | --- | --- | --- | | district | bhoomi_district | - | | taluk | bhoomi_taluk | district | | hobli | bhoomi_hobli | district, taluk | | village | bhoomi_village | district, taluk, hobli | q is required (2+ characters), at most 10 matches. ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "land_conversion_status", "params": { "district": "", "taluk": "", "hobli": "", "village": "", "survey_no": "20" }, "label": "Land conversion status (DC) - case 8841" }' ``` **Python** ```python 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": "land_conversion_status", "params": { "district": "", "taluk": "", "hobli": "", "village": "", "survey_no": "20" }, "label": "Land conversion status (DC) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "land_conversion_status", "params": { "district": "", "taluk": "", "hobli": "", "village": "", "survey_no": "20" }, "label": "Land conversion status (DC) - 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": "karnataka", "search_type": "land_conversion_status", "label": "Land conversion status (DC) - 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": "karnataka", "search_type": "land_conversion_status", "label": "Land conversion status (DC) - 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" } } ``` --- Source: https://legiscore.in/docs/states/karnataka/land-conversion-order # Final land conversion order (DC) (Karnataka) The Deputy Commissioner’s final conversion order for each converted parcel on a survey number. Status: LIVE. Source status: No recent runs. Typical time: up to 5 min. state: `karnataka`, search_type: `land_conversion_order`. ## What you get One record per conversion, plus the final order PDF for each (Kannada, as issued), up to 10 unless you ask for more. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `district` | string | required | from lookup "district" | bhoomi_district lookup (https://legiscore.in/docs/api/lookups#karnataka-bhoomi_district) | | `taluk` | string | required | from lookup "taluk" | bhoomi_taluk lookup (https://legiscore.in/docs/api/lookups#karnataka-bhoomi_taluk) | | `hobli` | string | required | from lookup "hobli" | bhoomi_hobli lookup (https://legiscore.in/docs/api/lookups#karnataka-bhoomi_hobli) | | `village` | string | required | from lookup "village" | bhoomi_village lookup (https://legiscore.in/docs/api/lookups#karnataka-bhoomi_village) | | `survey_no` | string | required | 20 | field "survey_no" | | `max_orders` | number | optional | 10 | field "max_orders" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `district` (District) | lookup | | | `taluk` (Taluk) | lookup | | | `hobli` (Hobli) | lookup | Split hoblis are listed separately, e.g. Kengeri - 1 to Kengeri - 4. | | `village` (Village) | lookup | | | `survey_no` (Survey Number) | text | The survey number, or survey/hissa such as 20/2 or 20/*/2 to keep one parcel. | | `max_orders` (Max Orders) | text | Optional. How many order PDFs to fetch, 1-25. Every conversion is listed either way. Max 2 characters. | ## Resolve names to codes | Field | Lookup | Needs first | | --- | --- | --- | | district | bhoomi_district | - | | taluk | bhoomi_taluk | district | | hobli | bhoomi_hobli | district, taluk | | village | bhoomi_village | district, taluk, hobli | q is required (2+ characters), at most 10 matches. ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "land_conversion_order", "params": { "district": "", "taluk": "", "hobli": "", "village": "", "survey_no": "20", "max_orders": 10 }, "label": "Final land conversion order (DC) - case 8841" }' ``` **Python** ```python 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": "land_conversion_order", "params": { "district": "", "taluk": "", "hobli": "", "village": "", "survey_no": "20", "max_orders": 10 }, "label": "Final land conversion order (DC) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "land_conversion_order", "params": { "district": "", "taluk": "", "hobli": "", "village": "", "survey_no": "20", "max_orders": 10 }, "label": "Final land conversion order (DC) - 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": "karnataka", "search_type": "land_conversion_order", "label": "Final land conversion order (DC) - 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": "karnataka", "search_type": "land_conversion_order", "label": "Final land conversion order (DC) - 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" } } ``` --- Source: https://legiscore.in/docs/states/karnataka/land-conversion-mutation # Land conversion order, any year (Bhoomi mutation register) (Karnataka) Finds the Deputy Commissioner’s conversion order of any year from the Bhoomi mutation register, including conversions older than the online conversion portal (about 2019-20). Status: LIVE. Source status: No recent runs. Typical time: up to 5 min. state: `karnataka`, search_type: `land_conversion_mutation`. ## What you get Each conversion mutation on the survey: DC order number and date, purpose and every converted parcel, plus the mutation register extract PDF. It is not the certified order itself, but it proves the order exists, with its number and date. Up to 10 unless you ask for more. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `district` | string | required | from lookup "district" | bhoomi_district lookup (https://legiscore.in/docs/api/lookups#karnataka-bhoomi_district) | | `taluk` | string | required | from lookup "taluk" | bhoomi_taluk lookup (https://legiscore.in/docs/api/lookups#karnataka-bhoomi_taluk) | | `hobli` | string | required | from lookup "hobli" | bhoomi_hobli lookup (https://legiscore.in/docs/api/lookups#karnataka-bhoomi_hobli) | | `village` | string | required | from lookup "village" | bhoomi_village lookup (https://legiscore.in/docs/api/lookups#karnataka-bhoomi_village) | | `survey_no` | string | required | 20 | field "survey_no" | | `max_orders` | number | optional | 10 | field "max_orders" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `district` (District) | lookup | | | `taluk` (Taluk) | lookup | | | `hobli` (Hobli) | lookup | Split hoblis are listed separately, e.g. Kengeri - 1 to Kengeri - 4. | | `village` (Village) | lookup | | | `survey_no` (Survey Number) | text | The survey number, or survey/hissa such as 20/2 or 20/*/2 to keep one parcel. | | `max_orders` (Max Orders) | text | Optional. How many conversion mutations to read in full, 1-20. Max 2 characters. | ## Resolve names to codes | Field | Lookup | Needs first | | --- | --- | --- | | district | bhoomi_district | - | | taluk | bhoomi_taluk | district | | hobli | bhoomi_hobli | district, taluk | | village | bhoomi_village | district, taluk, hobli | q is required (2+ characters), at most 10 matches. ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "land_conversion_mutation", "params": { "district": "", "taluk": "", "hobli": "", "village": "", "survey_no": "20", "max_orders": 10 }, "label": "Land conversion order, any year (Bhoomi mutation register) - case 8841" }' ``` **Python** ```python 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": "land_conversion_mutation", "params": { "district": "", "taluk": "", "hobli": "", "village": "", "survey_no": "20", "max_orders": 10 }, "label": "Land conversion order, any year (Bhoomi mutation register) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "land_conversion_mutation", "params": { "district": "", "taluk": "", "hobli": "", "village": "", "survey_no": "20", "max_orders": 10 }, "label": "Land conversion order, any year (Bhoomi mutation register) - 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": "karnataka", "search_type": "land_conversion_mutation", "label": "Land conversion order, any year (Bhoomi mutation register) - 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": "karnataka", "search_type": "land_conversion_mutation", "label": "Land conversion order, any year (Bhoomi mutation register) - 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" } } ``` --- Source: https://legiscore.in/docs/states/karnataka/form57-applications # Form 57 applications (govt land regularisation) (Karnataka) Applications to regularise occupation of government land (Section 94-A(4)) filed on a survey number, from the village Form 57 register. Status: LIVE. Source status: No recent runs. Typical time: up to 3 min. state: `karnataka`, search_type: `form57_applications`. ## What you get Each application on the survey: request number, applicant, extent and date, plus a PDF of the matching rows. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `district` | string | required | from lookup "district" | bhoomi_district lookup (https://legiscore.in/docs/api/lookups#karnataka-bhoomi_district) | | `taluk` | string | required | from lookup "taluk" | bhoomi_taluk lookup (https://legiscore.in/docs/api/lookups#karnataka-bhoomi_taluk) | | `hobli` | string | required | from lookup "hobli" | bhoomi_hobli lookup (https://legiscore.in/docs/api/lookups#karnataka-bhoomi_hobli) | | `village` | string | required | from lookup "village" | bhoomi_village lookup (https://legiscore.in/docs/api/lookups#karnataka-bhoomi_village) | | `survey_no` | string | required | 20 | field "survey_no" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `district` (District) | lookup | | | `taluk` (Taluk) | lookup | | | `hobli` (Hobli) | lookup | Split hoblis are listed separately, e.g. Kengeri - 1 to Kengeri - 4. | | `village` (Village) | lookup | | | `survey_no` (Survey Number) | text | The survey number, or survey/hissa such as 20/2 or 20/*/2 to keep one parcel. | ## Resolve names to codes | Field | Lookup | Needs first | | --- | --- | --- | | district | bhoomi_district | - | | taluk | bhoomi_taluk | district | | hobli | bhoomi_hobli | district, taluk | | village | bhoomi_village | district, taluk, hobli | q is required (2+ characters), at most 10 matches. ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "form57_applications", "params": { "district": "", "taluk": "", "hobli": "", "village": "", "survey_no": "20" }, "label": "Form 57 applications (govt land regularisation) - case 8841" }' ``` **Python** ```python 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": "form57_applications", "params": { "district": "", "taluk": "", "hobli": "", "village": "", "survey_no": "20" }, "label": "Form 57 applications (govt land regularisation) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "form57_applications", "params": { "district": "", "taluk": "", "hobli": "", "village": "", "survey_no": "20" }, "label": "Form 57 applications (govt land regularisation) - 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": "karnataka", "search_type": "form57_applications", "label": "Form 57 applications (govt land regularisation) - 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": "karnataka", "search_type": "form57_applications", "label": "Form 57 applications (govt land regularisation) - 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" } } ``` --- Source: https://legiscore.in/docs/states/karnataka/mojini-status # Survey applications (Mojini) (Karnataka) Survey applications on a survey number (11E sketch, phodi, Darkhast phodi, hadbast) and the stage each one has reached. Status: LIVE. Source status: No recent runs. Typical time: up to 4 min. state: `karnataka`, search_type: `mojini_status`. ## What you get Each application with its type, date, applicant and stage history, from both the current and the archived Mojini registers. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `district` | string | required | from lookup "district" | bhoomi_district lookup (https://legiscore.in/docs/api/lookups#karnataka-bhoomi_district) | | `taluk` | string | required | from lookup "taluk" | bhoomi_taluk lookup (https://legiscore.in/docs/api/lookups#karnataka-bhoomi_taluk) | | `hobli` | string | required | from lookup "hobli" | bhoomi_hobli lookup (https://legiscore.in/docs/api/lookups#karnataka-bhoomi_hobli) | | `village` | string | required | from lookup "village" | bhoomi_village lookup (https://legiscore.in/docs/api/lookups#karnataka-bhoomi_village) | | `survey_no` | string | required | 20 | field "survey_no" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `district` (District) | lookup | | | `taluk` (Taluk) | lookup | | | `hobli` (Hobli) | lookup | Split hoblis are listed separately, e.g. Kengeri - 1 to Kengeri - 4. | | `village` (Village) | lookup | | | `survey_no` (Survey Number) | text | The survey number, or survey/hissa such as 20/2 or 20/*/2 to keep one parcel. | ## Resolve names to codes | Field | Lookup | Needs first | | --- | --- | --- | | district | bhoomi_district | - | | taluk | bhoomi_taluk | district | | hobli | bhoomi_hobli | district, taluk | | village | bhoomi_village | district, taluk, hobli | q is required (2+ characters), at most 10 matches. ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "mojini_status", "params": { "district": "", "taluk": "", "hobli": "", "village": "", "survey_no": "20" }, "label": "Survey applications (Mojini) - case 8841" }' ``` **Python** ```python 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": "mojini_status", "params": { "district": "", "taluk": "", "hobli": "", "village": "", "survey_no": "20" }, "label": "Survey applications (Mojini) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "mojini_status", "params": { "district": "", "taluk": "", "hobli": "", "village": "", "survey_no": "20" }, "label": "Survey applications (Mojini) - 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": "karnataka", "search_type": "mojini_status", "label": "Survey applications (Mojini) - 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": "karnataka", "search_type": "mojini_status", "label": "Survey applications (Mojini) - 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" } } ``` --- Source: https://legiscore.in/docs/states/karnataka/survey-sketch # Digitised survey sketch (Bhoomi) (Karnataka) The digitised sketch of each hissa on a survey number, with its ULPIN and extent. Status: LIVE. Source status: No recent runs. Typical time: up to 3 min. state: `karnataka`, search_type: `survey_sketch`. ## What you get One PDF per hissa sketch (up to 5 unless you ask for more), marked not to scale. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `district` | string | required | from lookup "district" | bhoomi_district lookup (https://legiscore.in/docs/api/lookups#karnataka-bhoomi_district) | | `taluk` | string | required | from lookup "taluk" | bhoomi_taluk lookup (https://legiscore.in/docs/api/lookups#karnataka-bhoomi_taluk) | | `hobli` | string | required | from lookup "hobli" | bhoomi_hobli lookup (https://legiscore.in/docs/api/lookups#karnataka-bhoomi_hobli) | | `village` | string | required | from lookup "village" | bhoomi_village lookup (https://legiscore.in/docs/api/lookups#karnataka-bhoomi_village) | | `survey_no` | string | required | 201 | field "survey_no" | | `hissa` | string | optional | 1 | field "hissa" | | `surnoc` | string | optional | * | field "surnoc" | | `max_sketches` | number | optional | 5 | field "max_sketches" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `district` (District) | lookup | | | `taluk` (Taluk) | lookup | | | `hobli` (Hobli) | lookup | Split hoblis are listed separately, e.g. Kengeri - 1 to Kengeri - 4. | | `village` (Village) | lookup | | | `survey_no` (Survey Number) | text | The survey number, or survey/hissa such as 201/1. | | `hissa` (Hissa) | text | Optional. Blank returns every hissa of the survey, up to 5. Max 10 characters. | | `surnoc` (Surnoc) | text | Optional. Leave blank unless the RTC prints one. Max 10 characters. | | `max_sketches` (Max Sketches) | text | Optional. How many hissa sketches to fetch, 1-10. Max 2 characters. | ## Resolve names to codes | Field | Lookup | Needs first | | --- | --- | --- | | district | bhoomi_district | - | | taluk | bhoomi_taluk | district | | hobli | bhoomi_hobli | district, taluk | | village | bhoomi_village | district, taluk, hobli | q is required (2+ characters), at most 10 matches. ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "survey_sketch", "params": { "district": "", "taluk": "", "hobli": "", "village": "", "survey_no": "201", "hissa": "1", "surnoc": "*", "max_sketches": 5 }, "label": "Digitised survey sketch (Bhoomi) - case 8841" }' ``` **Python** ```python 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": "survey_sketch", "params": { "district": "", "taluk": "", "hobli": "", "village": "", "survey_no": "201", "hissa": "1", "surnoc": "*", "max_sketches": 5 }, "label": "Digitised survey sketch (Bhoomi) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "survey_sketch", "params": { "district": "", "taluk": "", "hobli": "", "village": "", "survey_no": "201", "hissa": "1", "surnoc": "*", "max_sketches": 5 }, "label": "Digitised survey sketch (Bhoomi) - 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": "karnataka", "search_type": "survey_sketch", "label": "Digitised survey sketch (Bhoomi) - 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": "karnataka", "search_type": "survey_sketch", "label": "Digitised survey sketch (Bhoomi) - 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" } } ``` --- Source: https://legiscore.in/docs/states/karnataka/survey-documents # Scanned survey records (Bhoomi) (Karnataka) Historic survey and settlement records held for a survey number: Tippan sketches, Pakka Book, Prathi, Hissa Atlas and Kayam Dara Takhte. Status: LIVE. Source status: No recent runs. Typical time: up to 6 min. state: `karnataka`, search_type: `survey_documents`. ## What you get Every scanned survey record the portal holds for the survey, with a View Only preview PDF of each. Previews are watermarked and are not certified copies. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `district` | string | required | from lookup "district" | bhoomi_district lookup (https://legiscore.in/docs/api/lookups#karnataka-bhoomi_district) | | `taluk` | string | required | from lookup "taluk" | bhoomi_taluk lookup (https://legiscore.in/docs/api/lookups#karnataka-bhoomi_taluk) | | `hobli` | string | required | from lookup "hobli" | bhoomi_hobli lookup (https://legiscore.in/docs/api/lookups#karnataka-bhoomi_hobli) | | `village` | string | required | from lookup "village" | bhoomi_village lookup (https://legiscore.in/docs/api/lookups#karnataka-bhoomi_village) | | `survey_no` | string | required | 201 | field "survey_no" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `district` (District) | lookup | | | `taluk` (Taluk) | lookup | | | `hobli` (Hobli) | lookup | Split hoblis are listed separately, e.g. Kengeri - 1 to Kengeri - 4. | | `village` (Village) | lookup | | | `survey_no` (Survey Number) | text | Survey number, e.g. 201. A hissa after a slash (201/1) is accepted but not narrowed -- every scanned record on the whole survey is listed either way. | ## Resolve names to codes | Field | Lookup | Needs first | | --- | --- | --- | | district | bhoomi_district | - | | taluk | bhoomi_taluk | district | | hobli | bhoomi_hobli | district, taluk | | village | bhoomi_village | district, taluk, hobli | q is required (2+ characters), at most 10 matches. ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "survey_documents", "params": { "district": "", "taluk": "", "hobli": "", "village": "", "survey_no": "201" }, "label": "Scanned survey records (Bhoomi) - case 8841" }' ``` **Python** ```python 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": "survey_documents", "params": { "district": "", "taluk": "", "hobli": "", "village": "", "survey_no": "201" }, "label": "Scanned survey records (Bhoomi) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "survey_documents", "params": { "district": "", "taluk": "", "hobli": "", "village": "", "survey_no": "201" }, "label": "Scanned survey records (Bhoomi) - 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": "karnataka", "search_type": "survey_documents", "label": "Scanned survey records (Bhoomi) - 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": "karnataka", "search_type": "survey_documents", "label": "Scanned survey records (Bhoomi) - 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" } } ``` --- Source: https://legiscore.in/docs/states/karnataka/rdgis-parcel # Land Details report (Bhoomi Land Stack) (Karnataka) One land report for a survey number: owners, the RTC, every mutation with its Form 12, the Akarband, revenue court cases and ongoing land conversion applications. Status: LIVE. Source status: No recent runs. Typical time: up to 15 min. state: `karnataka`, search_type: `rdgis_parcel`. ## What you get A consolidated report PDF (and the same report as a web page) per survey, plus the Akarband PDF where Bhoomi holds one. Conversions list ongoing applications only, not final orders. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `district` | string | required | from lookup "district" | bhoomi_district lookup (https://legiscore.in/docs/api/lookups#karnataka-bhoomi_district) | | `taluk` | string | required | from lookup "taluk" | bhoomi_taluk lookup (https://legiscore.in/docs/api/lookups#karnataka-bhoomi_taluk) | | `hobli` | string | required | from lookup "hobli" | bhoomi_hobli lookup (https://legiscore.in/docs/api/lookups#karnataka-bhoomi_hobli) | | `village` | string | required | from lookup "village" | bhoomi_village lookup (https://legiscore.in/docs/api/lookups#karnataka-bhoomi_village) | | `survey_no` | string | required | 201 | field "survey_no" | | `hissa` | string | optional | 1 | field "hissa" | | `surnoc` | string | optional | * | field "surnoc" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `district` (District) | lookup | | | `taluk` (Taluk) | lookup | | | `hobli` (Hobli) | lookup | Split hoblis are listed separately, e.g. Kengeri - 1 to Kengeri - 4. | | `village` (Village) | lookup | | | `survey_no` (Survey Number) | text | The survey number, or survey/hissa such as 201/1. | | `hissa` (Hissa) | text | Optional but faster. Blank reports every hissa of the survey, up to 10. Max 10 characters. | | `surnoc` (Surnoc) | text | Optional. Leave blank unless the RTC prints one. Max 10 characters. | ## Resolve names to codes | Field | Lookup | Needs first | | --- | --- | --- | | district | bhoomi_district | - | | taluk | bhoomi_taluk | district | | hobli | bhoomi_hobli | district, taluk | | village | bhoomi_village | district, taluk, hobli | q is required (2+ characters), at most 10 matches. ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "rdgis_parcel", "params": { "district": "", "taluk": "", "hobli": "", "village": "", "survey_no": "201", "hissa": "1", "surnoc": "*" }, "label": "Land Details report (Bhoomi Land Stack) - case 8841" }' ``` **Python** ```python 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": "rdgis_parcel", "params": { "district": "", "taluk": "", "hobli": "", "village": "", "survey_no": "201", "hissa": "1", "surnoc": "*" }, "label": "Land Details report (Bhoomi Land Stack) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "rdgis_parcel", "params": { "district": "", "taluk": "", "hobli": "", "village": "", "survey_no": "201", "hissa": "1", "surnoc": "*" }, "label": "Land Details report (Bhoomi Land Stack) - 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": "karnataka", "search_type": "rdgis_parcel", "label": "Land Details report (Bhoomi Land Stack) - 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": "karnataka", "search_type": "rdgis_parcel", "label": "Land Details report (Bhoomi Land Stack) - 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" } } ``` --- Source: https://legiscore.in/docs/states/karnataka/rdgis-tippan # Original Tippan scans (Bhoomi Land Stack) (Karnataka) The original Tippan survey sketches held for a survey number, as scanned by the Survey Department. Status: LIVE. Source status: No recent runs. Typical time: up to 8 min. state: `karnataka`, search_type: `rdgis_tippan`. ## What you get The scanned Tippan pages for the survey as PDFs. Each page is checked against its printed header, and a scan for a different village or survey is refused. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `district` | string | required | from lookup "district" | bhoomi_district lookup (https://legiscore.in/docs/api/lookups#karnataka-bhoomi_district) | | `taluk` | string | required | from lookup "taluk" | bhoomi_taluk lookup (https://legiscore.in/docs/api/lookups#karnataka-bhoomi_taluk) | | `hobli` | string | required | from lookup "hobli" | bhoomi_hobli lookup (https://legiscore.in/docs/api/lookups#karnataka-bhoomi_hobli) | | `village` | string | required | from lookup "village" | bhoomi_village lookup (https://legiscore.in/docs/api/lookups#karnataka-bhoomi_village) | | `survey_no` | string | required | 201 | field "survey_no" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `district` (District) | lookup | | | `taluk` (Taluk) | lookup | | | `hobli` (Hobli) | lookup | Split hoblis are listed separately, e.g. Kengeri - 1 to Kengeri - 4. | | `village` (Village) | lookup | | | `survey_no` (Survey Number) | text | Survey number, e.g. 201. A hissa after a slash (201/1) is accepted but not narrowed -- every scanned record on the whole survey is listed either way. | ## Resolve names to codes | Field | Lookup | Needs first | | --- | --- | --- | | district | bhoomi_district | - | | taluk | bhoomi_taluk | district | | hobli | bhoomi_hobli | district, taluk | | village | bhoomi_village | district, taluk, hobli | q is required (2+ characters), at most 10 matches. ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "rdgis_tippan", "params": { "district": "", "taluk": "", "hobli": "", "village": "", "survey_no": "201" }, "label": "Original Tippan scans (Bhoomi Land Stack) - case 8841" }' ``` **Python** ```python 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": "rdgis_tippan", "params": { "district": "", "taluk": "", "hobli": "", "village": "", "survey_no": "201" }, "label": "Original Tippan scans (Bhoomi Land Stack) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "rdgis_tippan", "params": { "district": "", "taluk": "", "hobli": "", "village": "", "survey_no": "201" }, "label": "Original Tippan scans (Bhoomi Land Stack) - 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": "karnataka", "search_type": "rdgis_tippan", "label": "Original Tippan scans (Bhoomi Land Stack) - 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": "karnataka", "search_type": "rdgis_tippan", "label": "Original Tippan scans (Bhoomi Land Stack) - 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" } } ``` --- Source: https://legiscore.in/docs/states/karnataka/bbmp-khata-download # Bengaluru Khata by PID (BBMP) (Karnataka) The BBMP Form-A khata of a Bengaluru property, from its ward-street-plot PID on the BBMP e-Aasthi register. Status: LIVE. Source status: No recent runs. Typical time: up to 3 min. state: `karnataka`, search_type: `bbmp_khata_download`. ## What you get Ward, door number, owners, site and built-up area, boundaries, the mutation order and registered deed behind the khata and the latest property-tax payment, with the portal's View Only Form-A PDF. The View Only PDF is not a certified copy. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `pid` | string | required | 79-7-156 | field "pid" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `pid` (BBMP property PID) | text | The BBMP PID in ward-street-plot form as printed on the Form-A / Khata, e.g. 79-7-156, not the 10-digit ePID. Not the SAS tax ID or the door number either. Max 50 characters. | ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "bbmp_khata_download", "params": { "pid": "79-7-156" }, "label": "Bengaluru Khata by PID (BBMP) - case 8841" }' ``` **Python** ```python 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": "bbmp_khata_download", "params": { "pid": "79-7-156" }, "label": "Bengaluru Khata by PID (BBMP) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "bbmp_khata_download", "params": { "pid": "79-7-156" }, "label": "Bengaluru Khata by PID (BBMP) - 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": "karnataka", "search_type": "bbmp_khata_download", "label": "Bengaluru Khata by PID (BBMP) - 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": "karnataka", "search_type": "bbmp_khata_download", "label": "Bengaluru Khata by PID (BBMP) - 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" } } ``` --- Source: https://legiscore.in/docs/states/karnataka/bbmp-kaveri-properties # Bengaluru registrability check by PID (BBMP) (Karnataka) Whether BBMP e-Aasthi lets a Bengaluru property be registered today, from its ward-street-plot PID. Status: LIVE. Source status: No recent runs. Typical time: up to 3 min. state: `karnataka`, search_type: `bbmp_kaveri_properties`. ## What you get Property available or not available for registration, with the property code, ward, street, assessment number, boundaries and site and plinth areas. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `pid` | string | required | 79-7-156 | field "pid" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `pid` (BBMP property PID) | text | The BBMP PID in ward-street-plot form as printed on the Form-A / Khata, e.g. 79-7-156, not the 10-digit ePID. Not the SAS tax ID or the door number either. Max 50 characters. | ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "bbmp_kaveri_properties", "params": { "pid": "79-7-156" }, "label": "Bengaluru registrability check by PID (BBMP) - case 8841" }' ``` **Python** ```python 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": "bbmp_kaveri_properties", "params": { "pid": "79-7-156" }, "label": "Bengaluru registrability check by PID (BBMP) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "bbmp_kaveri_properties", "params": { "pid": "79-7-156" }, "label": "Bengaluru registrability check by PID (BBMP) - 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": "karnataka", "search_type": "bbmp_kaveri_properties", "label": "Bengaluru registrability check by PID (BBMP) - 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": "karnataka", "search_type": "bbmp_kaveri_properties", "label": "Bengaluru registrability check by PID (BBMP) - 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" } } ``` --- Source: https://legiscore.in/docs/states/karnataka/bbmp-form3-view # Bengaluru e-Khata by Document No (BBMP) (Karnataka) An issued Bengaluru Form-A/B e-Khata, fetched by the Document No printed on it. Status: LIVE. Source status: No recent runs. Typical time: up to 4 min. state: `karnataka`, search_type: `bbmp_form3_view`. ## What you get ePID, property number, site area and dimensions, boundaries and the latest tax payment, with the portal's verified Form-A PDF. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `document_no` | string | required | 7834797 | field "document_no" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `document_no` (Form-A/B Document No) | text | The Document No printed on the issued Form-A/B e-Khata (top right). Not the ePID, the PID or a deed registration number. Max 30 characters. | ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "bbmp_form3_view", "params": { "document_no": "7834797" }, "label": "Bengaluru e-Khata by Document No (BBMP) - case 8841" }' ``` **Python** ```python 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": "bbmp_form3_view", "params": { "document_no": "7834797" }, "label": "Bengaluru e-Khata by Document No (BBMP) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "bbmp_form3_view", "params": { "document_no": "7834797" }, "label": "Bengaluru e-Khata by Document No (BBMP) - 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": "karnataka", "search_type": "bbmp_form3_view", "label": "Bengaluru e-Khata by Document No (BBMP) - 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": "karnataka", "search_type": "bbmp_form3_view", "label": "Bengaluru e-Khata by Document No (BBMP) - 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" } } ``` --- Source: https://legiscore.in/docs/states/karnataka/bda-landuse # Land Use / Zoning (BDA and BMRDA master plan) (Karnataka) The master-plan zone a location falls in, from the Bengaluru (BDA) and BMRDA plans on KGIS, for a map point or a KGIS-mapped layout. Status: LIVE. Source status: No recent runs. Typical time: up to 2 min. state: `karnataka`, search_type: `bda_landuse`. ## What you get The zone and proposed land use, the 2017 current land use, and a PDF with the zoning map marked. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `mode` | string | required | latlng | field "mode" | | `latitude` | number | conditional | 12.9055 | field "latitude" | | `longitude` | number | conditional | 77.5446 | field "longitude" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `mode` (Look Up By) | select | Values: latlng (Map point (latitude and longitude)), site (Site in a mapped layout), layout (Whole mapped layout). | | `latitude` (Latitude) | text | Decimal degrees, e.g. from a Google Maps pin. Only when mode is "latlng". Max 12 characters. | | `longitude` (Longitude) | text | Only when mode is "latlng". Max 12 characters. | | `layout_name` (Layout) | select | KGIS maps plots for these two layouts only. For anywhere else, use a map point. Values: DSK Layout (Dr. K. Shivarama Karanth Layout (DSK), Bengaluru), BGSK Layout (BGSK Layout, Hassan). Only when mode is "site" or "layout". | | `site_number` (Site Number) | text | Only when mode is "site". Max 50 characters. | ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "bda_landuse", "params": { "mode": "latlng", "latitude": 12.9055, "longitude": 77.5446 }, "label": "Land Use / Zoning (BDA and BMRDA master plan) - case 8841" }' ``` **Python** ```python 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": "bda_landuse", "params": { "mode": "latlng", "latitude": 12.9055, "longitude": 77.5446 }, "label": "Land Use / Zoning (BDA and BMRDA master plan) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "bda_landuse", "params": { "mode": "latlng", "latitude": 12.9055, "longitude": 77.5446 }, "label": "Land Use / Zoning (BDA and BMRDA master plan) - 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": "karnataka", "search_type": "bda_landuse", "label": "Land Use / Zoning (BDA and BMRDA master plan) - 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": "karnataka", "search_type": "bda_landuse", "label": "Land Use / Zoning (BDA and BMRDA master plan) - 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" } } ``` --- Source: https://legiscore.in/docs/states/karnataka/survey-lookup # Survey Number at a Map Point (Karnataka) The survey number a location falls on, from Karnataka's own survey maps (KSRSAC KGIS), anywhere in the state. Status: LIVE. Source status: No recent runs. Typical time: up to 1 min. state: `karnataka`, search_type: `survey_lookup`. ## What you get The survey number, its hissa where the hissa map has one, the ULPIN, and the village, hobli, taluk and district with their Bhoomi codes. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `latitude` | number | required | 12.5 | field "latitude" | | `longitude` | number | required | 76.8 | field "longitude" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `latitude` (Latitude) | text | Decimal degrees, e.g. from a Google Maps pin. Max 12 characters. | | `longitude` (Longitude) | text | Max 12 characters. | ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "survey_lookup", "params": { "latitude": 12.5, "longitude": 76.8 }, "label": "Survey Number at a Map Point - case 8841" }' ``` **Python** ```python 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": "survey_lookup", "params": { "latitude": 12.5, "longitude": 76.8 }, "label": "Survey Number at a Map Point - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "survey_lookup", "params": { "latitude": 12.5, "longitude": 76.8 }, "label": "Survey Number at a Map Point - 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": "karnataka", "search_type": "survey_lookup", "label": "Survey Number at a Map Point - 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": "karnataka", "search_type": "survey_lookup", "label": "Survey Number at a Map Point - 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" } } ``` --- Source: https://legiscore.in/docs/states/karnataka/eaasthi-form3 # Urban e-Khata Form-3 (e-Aasthi) (Karnataka) The official Form-3 / Form-3A e-Khata extract for a town or city property outside Bengaluru, from its Document No. Status: LIVE. Source status: No recent runs. Typical time: up to 2 min. state: `karnataka`, search_type: `eaasthi_form3`. ## What you get The Form-3 / 3A PDF exactly as e-Aasthi issues it, with its property number, assessment number, register and issue date read out. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `document_no` | string | required | 747759 | field "document_no" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `document_no` (Form-3 Document No) | text | Printed top right on the Form-3 / 3A (ದಾಖಲೆ ಸಂಖ್ಯೆ). Not the registered deed number, the property number, the assessment number or the ePID. Max 30 characters. | ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "eaasthi_form3", "params": { "document_no": "747759" }, "label": "Urban e-Khata Form-3 (e-Aasthi) - case 8841" }' ``` **Python** ```python 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": "eaasthi_form3", "params": { "document_no": "747759" }, "label": "Urban e-Khata Form-3 (e-Aasthi) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "eaasthi_form3", "params": { "document_no": "747759" }, "label": "Urban e-Khata Form-3 (e-Aasthi) - 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": "karnataka", "search_type": "eaasthi_form3", "label": "Urban e-Khata Form-3 (e-Aasthi) - 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": "karnataka", "search_type": "eaasthi_form3", "label": "Urban e-Khata Form-3 (e-Aasthi) - 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" } } ``` --- Source: https://legiscore.in/docs/states/karnataka/eaasthi-registrability # Urban property: can it be registered? (e-Aasthi) (Karnataka) Whether a town or city property outside Bengaluru can be registered today, as e-Aasthi answers it (tax unpaid, under mutation and similar holds). Status: LIVE. Source status: No recent runs. Typical time: up to 3 min. state: `karnataka`, search_type: `eaasthi_registrability`. ## What you get The property as e-Aasthi records it (address, boundaries, areas, assessment number) and its registration status line, as a PDF. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `district` | string | optional | 556 | fixed by the search | | `ulb` | string | required | 246 | field "ulb" | | `property_no` | string | required | 17-1-10-114B | field "property_no" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `ulb` (Town (ULB)) | select | The city or town municipal council the property sits in, listed by district. Bengaluru city is not here: use Bengaluru e-Khata by ePID. Values: 246 (Bagalkote: Amiinagada (ಅಮೀನಗಡ)), 11 (Bagalkote: Baadaami (ಬಾದಾಮಿ)), 320 (Bagalkote: Baagalakota Pattana Abhivruddhi Praadhikaara (ಬಾಗಲಕೋಟ ಪಟ್ಟಣ ಅಭಿವೃದ್ಧಿ ಪ್ರಾಧಿಕಾರ)), 7 (Bagalkote: Baagalakote (ಬಾಗಲಕೋಟೆ)), 247 (Bagalkote: Belagali (ಬೆಳಗಲಿ)), 16 (Bagalkote: Biilagi (ಬೀಳಗಿ)), 12 (Bagalkote: Guledagudda (ಗುಳೇದಗುಡ್ಡ)), 17 (Bagalkote: Hunagunda (ಹುನಗುಂದ)), 8 (Bagalkote: Ilakal (ಇಳಕಲ್)), 9 (Bagalkote: Jamakhandi (ಜಮಖಂಡಿ)), 248 (Bagalkote: Kamattagi (ಕಮತ್ತಗಿ)), 19 (Bagalkote: Keruur (ಕೆರೂರ್)), 310 (Bagalkote: Lokaapura (ಲೋಕಾಪುರ)), 13 (Bagalkote: Mahaalingapura (ಮಹಾಲಿಂಗಪುರ)), 14 (Bagalkote: Mudhol (ಮುಧೋಳ್)), 10 (Bagalkote: Rabkavi Banahatti (ರಬ್ಕವಿ ಬನಹಟ್ಟಿ)), 311 (Bagalkote: Shiruuru (ಶಿರೂರು)), 217 (Bagalkote: Teradaala (ತೇರದಾಳ)), 38 (Ballari: Ballaari (ಬಳ್ಳಾರಿ)), 41 (Ballari: Kampli (ಕಂಪ್ಲಿ)), 269 (Ballari: Kudatini (ಕುಡತಿನಿ)), 270 (Ballari: Kurekuppa (ಕುರೆಕುಪ್ಪ)), 271 (Ballari: Kurugodu (ಕುರುಗೋಡು)), 42 (Ballari: Sanduuru (ಸಂಡೂರು)), 43 (Ballari: Siruguppa (ಸಿರುಗುಪ್ಪ)), 47 (Ballari: Tekkalakote (ತೆಕ್ಕಲಕೋಟೆ)), 229 (Belagavi: Ainaapura (ಐನಾಪುರ)), 306 (Belagavi: Ankalagi-akkatangerahaala (ಅಂಕಲಗಿ-ಅಕ್ಕತಂಗೇರಹಾಳ)), 230 (Belagavi: Arabhaavi (ಅರಭಾವಿ)), 25 (Belagavi: Athani (ಅಥಣಿ)), 26 (Belagavi: Bailahongala (ಬೈಲಹೊಂಗಲ)), 23 (Belagavi: Belagaavi (ಬೆಳಗಾವಿ)), 327 (Belagavi: Benakanahalli (ಬೆನಕನಹಳ್ಳಿ)), 231 (Belagavi: Boragaanv (ಬೊರಗಾಂವ್)), 232 (Belagavi: Chennamman Kittuuru (ಚೆನ್ನಮ್ಮನ್ ಕಿತ್ತೂರು)), 27 (Belagavi: Chikkodi (ಚಿಕ್ಕೋಡಿ)), 233 (Belagavi: Chinchali (ಚಿಂಚಲಿ)), 234 (Belagavi: Eksambaa (ಎಕ್ಸಂಬಾ)), 239 (Belagavi: En.ke.hubballi (ಎಂ.ಕೆ.ಹುಬ್ಬಳ್ಳಿ)), 240 (Belagavi: Ghataprabhaa (ಘಟಪ್ರಭಾ)), 5 (Belagavi: Gokaak (ಗೋಕಾಕ್)), 235 (Belagavi: Haaruugeri (ಹಾರೂಗೇರಿ)), 326 (Belagavi: Hindalagaa (ಹಿಂಡಲಗಾ)), 328 (Belagavi: Hirebaagevaadi (ಹಿರೇಬಾಗೇವಾಡಿ)), 32 (Belagavi: Hukkeri (ಹುಕ್ಕೇರಿ)), 302 (Belagavi: Kaagavaada (ಕಾಗವಾಡ)), 236 (Belagavi: Kabbuuru (ಕಬ್ಬೂರು)), 237 (Belagavi: Kallolli (ಕಲ್ಲೋಳ್ಳಿ)), 238 (Belagavi: Kankanavaadi (ಕಂಕಣವಾಡಿ)), 33 (Belagavi: Khaanaapura (ಖಾನಾಪುರ)), 34 (Belagavi: Konnuur (ಕೊಣ್ಣೂರ್)), 35 (Belagavi: Kudaachi (ಕುಡಾಚಿ)), 304 (Belagavi: Machche (ಮಚ್ಚೆ)), 241 (Belagavi: Mugalakhod (ಮುಗಳಖೋಡ್)), 242 (Belagavi: Munavalli (ಮುನವಳ್ಳಿ)), 28 (Belagavi: Muudalagi (ಮೂಡಲಗಿ)), 243 (Belagavi: Naaganuur (ನಾಗನೂರ್)), 24 (Belagavi: Nippaani (ನಿಪ್ಪಾಣಿ)), 305 (Belagavi: Piiranavaadi (ಪೀರನವಾಡಿ)), 29 (Belagavi: Raamadurga (ರಾಮದುರ್ಗ)), 36 (Belagavi: Raayabaag (ರಾಯಬಾಗ್)), 37 (Belagavi: Sadalaga (ಸದಲಗ)), 30 (Belagavi: Sankeshvara (ಸಂಕೇಶ್ವರ)), 31 (Belagavi: Savadatti (ಸವದತ್ತಿ)), 244 (Belagavi: Shedabaala (ಶೇಡಬಾಳ)), 245 (Belagavi: Ugaara Khurda (ಉಗಾರ ಖುರ್ದ)), 303 (Belagavi: Yaragatti (ಯರಗಟ್ಟಿ)), 289 (Bengaluru Rural: Baashettihalli (ಬಾಶೆಟ್ಟಿಹಳ್ಳಿ)), 2 (Bengaluru Rural: Devanahalli (ದೇವನಹಳ್ಳಿ)), 21 (Bengaluru Rural: Doddaballaapura (ದೊಡ್ಡಬಳ್ಳಾಪುರ)), 3 (Bengaluru Rural: Hosakote (ಹೊಸಕೋಟೆ)), 4 (Bengaluru Rural: Nelamangala (ನೆಲಮಂಗಲ)), 22 (Bengaluru Rural: Vijayapura (ವಿಜಯಪುರ)), 1 (Bengaluru Urban: Aanekal (ಆನೇಕಲ್)), 223 (Bengaluru Urban: Attiibele (ಅತ್ತೀಬೆಲೆ)), 219 (Bengaluru Urban: Bommasandra (ಬೊಮ್ಮಸಂದ್ರ)), 220 (Bengaluru Urban: Chandapura (ಚಂದಪುರ)), 288 (Bengaluru Urban: Chikkabaanaavara (ಚಿಕ್ಕಬಾಣಾವರ)), 318 (Bengaluru Urban: Doddatoguuru (ದೊಡ್ಡತೋಗೂರು)), 316 (Bengaluru Urban: Elektraaniks Siti Indastriyal Taunship Athaariti (ಎಲೆಕ್ಟ್ರಾನಿಕ್ಸ್‌ ಸಿಟಿ ಇಂಡಸ್ಟ್ರಿಯಲ್‌ ಟೌನ್ಷಿಪ್ ಅಥಾರಿಟಿ)), 221 (Bengaluru Urban: Hebbagodi (ಹೆಬ್ಬಗೋಡಿ)), 287 (Bengaluru Urban: Hunasamaaranahalli (ಹುಣಸಮಾರನಹಳ್ಳಿ)), 222 (Bengaluru Urban: Jigani (ಜಿಗಣಿ)), 319 (Bengaluru Urban: Konappana Agrahaara (ಕೋನಪ್ಪನ ಅಗ್ರಹಾರ)), 284 (Bengaluru Urban: Maadanaayakanahalli (ಮಾದನಾಯಕನಹಳ್ಳಿ)), 53 (Bidar: Auraad (ಔರಾದ್)), 48 (Bidar: Basavakalyaana (ಬಸವಕಲ್ಯಾಣ)), 50 (Bidar: Bhaalki (ಭಾಲ್ಕಿ)), 49 (Bidar: Biidar (ಬೀದರ್)), 51 (Bidar: Chittaguppa (ಚಿತ್ತಗುಪ್ಪ)), 276 (Bidar: Hallikheda (bi) (ಹಳ್ಳಿಖೇಡ (ಬಿ))), 52 (Bidar: Humnaabaad (ಹುಮ್ನಾಬಾದ್)), 331 (Bidar: Raajeshvara (ರಾಜೇಶ್ವರ)), 61 (Chamarajanagara: Chaamaraajanagara (ಚಾಮರಾಜನಗರ)), 63 (Chamarajanagara: Gundlupete (ಗುಂಡ್ಲುಪೇಟೆ)), 64 (Chamarajanagara: Hanuuru (ಹನೂರು)), 62 (Chamarajanagara: Kollegaala (ಕೊಳ್ಳೇಗಾಲ)), 65 (Chamarajanagara: Yalanduuru (ಯಳಂದೂರು)), 334 (Chikkaballapura: Aliipura (ಅಲೀಪುರ)), 115 (Chikkaballapura: Baagepalli (ಬಾಗೇಪಲ್ಲಿ)), 113 (Chikkaballapura: Chikkaballaapura (ಚಿಕ್ಕಬಳ್ಳಾಪುರ)), 114 (Chikkaballapura: Chintaamani (ಚಿಂತಾಮಣಿ)), 116 (Chikkaballapura: Gauribidanuuru (ಗೌರಿಬಿದನೂರು)), 118 (Chikkaballapura: Gudibande (ಗುಡಿಬಂಡೆ)), 333 (Chikkaballapura: Kaivaara (ಕೈವಾರ)), 117 (Chikkaballapura: Shidlaghatta (ಶಿಡ್ಲಘಟ್ಟ)), 282 (Chikkamagaluru: Ajjampura (ಅಜ್ಜಂಪುರ)), 67 (Chikkamagaluru: Biiruuru (ಬೀರೂರು)), 66 (Chikkamagaluru: Chikkamagaluuru (ಚಿಕ್ಕಮಗಳೂರು)), 68 (Chikkamagaluru: Kaduuru (ಕಡೂರು)), 70 (Chikkamagaluru: Koppa (ಕೊಪ್ಪ)), 323 (Chikkamagaluru: Kudaremukha (ಕುದರೆಮುಖ)), 71 (Chikkamagaluru: Muudigere (ಮೂಡಿಗೆರೆ)), 72 (Chikkamagaluru: Narasinharaajapura (ನರಸಿಂಹರಾಜಪುರ)), 73 (Chikkamagaluru: Shrungeri (ಶೃಂಗೇರಿ)), 69 (Chikkamagaluru: Tariikere (ತರೀಕೆರೆ)), 120 (Chitradurga: Challakere (ಚಳ್ಳಕೆರೆ)), 119 (Chitradurga: Chitradurga (ಚಿತ್ರದುರ್ಗ)), 121 (Chitradurga: Hiriyuuru (ಹಿರಿಯೂರು)), 123 (Chitradurga: Holalkere (ಹೊಳಲ್ಕೆರೆ)), 122 (Chitradurga: Hosadurga (ಹೊಸದುರ್ಗ)), 124 (Chitradurga: Molakaalmuuru (ಮೊಳಕಾಲ್ಮೂರು)), 225 (Chitradurga: Naayakanahatti (ನಾಯಕನಹಟ್ಟಿ)), 299 (Dakshina Kannada: Bajape (ಬಜಪೆ)), 75 (Dakshina Kannada: Bantvaala (ಬಂಟ್ವಾಳ)), 79 (Dakshina Kannada: Beltangadi (ಬೆಳ್ತಂಗಡಿ)), 286 (Dakshina Kannada: Kadaba (ಕಡಬ)), 300 (Dakshina Kannada: Kinnigoli (ಕಿನ್ನಿಗೋಳಿ)), 227 (Dakshina Kannada: Kotekaaru (ಕೋಟೆಕಾರು)), 74 (Dakshina Kannada: Mangaluuru (ಮಂಗಳೂರು)), 80 (Dakshina Kannada: Mulki (ಮುಲ್ಕಿ)), 76 (Dakshina Kannada: Muudabidri (ಮೂಡಬಿದ್ರಿ)), 77 (Dakshina Kannada: Puttuuru (ಪುತ್ತೂರು)), 280 (Dakshina Kannada: Someshvara (ಸೋಮೇಶ್ವರ)), 81 (Dakshina Kannada: Sulya (ಸುಳ್ಯ)), 78 (Dakshina Kannada: Ullaala (ಉಳ್ಳಾಲ)), 228 (Dakshina Kannada: Vitla (ವಿಟ್ಲ)), 127 (Davanagere: Channagiri (ಚನ್ನಗಿರಿ)), 6 (Davanagere: Daavanagere (ದಾವಣಗೆರೆ)), 125 (Davanagere: Harihara (ಹರಿಹರ)), 128 (Davanagere: Honnaali (ಹೊನ್ನಾಳಿ)), 129 (Davanagere: Jagaluuru (ಜಗಳೂರು)), 224 (Davanagere: Malebennuuru (ಮಲೇಬೆನ್ನೂರು)), 291 (Davanagere: Nyaamati (ನ್ಯಾಮತಿ)), 133 (Dharwad: Alnaavara (ಅಳ್ನಾವರ)), 131 (Dharwad: Annigeri (ಅಣ್ಣಿಗೇರಿ)), 130 (Dharwad: Hubballi-dhaaravaada (ಹುಬ್ಬಳ್ಳಿ-ಧಾರವಾಡ)), 134 (Dharwad: Kalaghatagi (ಕಲಘಟಗಿ)), 135 (Dharwad: Kundagola (ಕುಂದಗೋಳ)), 132 (Dharwad: Navalagunda (ನವಲಗುಂದ)), 136 (Gadag: Gadaga-betageri (ಗದಗ-ಬೆಟಗೇರಿ)), 137 (Gadag: Gajendragada (ಗಜೇಂದ್ರಗಡ)), 138 (Gadag: Lakshmeshvara (ಲಕ್ಷ್ಮೇಶ್ವರ)), 142 (Gadag: Mulagunda (ಮುಳಗುಂದ)), 139 (Gadag: Mundaragi (ಮುಂಡರಗಿ)), 140 (Gadag: Naragunda (ನರಗುಂದ)), 143 (Gadag: Naregal (ನರೇಗಲ್)), 141 (Gadag: Rona (ರೋಣ)), 144 (Gadag: Shirahatti (ಶಿರಹಟ್ಟಿ)), 87 (Hassan: Aaluur (ಆಲೂರ್)), 88 (Hassan: Arakalaguudu (ಅರಕಲಗೂಡು)), 20 (Hassan: Arasiikere (ಅರಸೀಕೆರೆ)), 330 (Hassan: Baanaavara (ಬಾಣಾವರ)), 83 (Hassan: Beluuru (ಬೇಲೂರು)), 84 (Hassan: Channaraayapattana (ಚನ್ನರಾಯಪಟ್ಟಣ)), 82 (Hassan: Haasana (ಹಾಸನ)), 85 (Hassan: Holenarasiipura (ಹೊಳೆನರಸೀಪುರ)), 86 (Hassan: Sakaleshapura (ಸಕಲೇಶಪುರ)), 160 (Haveri: Bankaapura (ಬಂಕಾಪುರ)), 161 (Haveri: Byaadagi (ಬ್ಯಾಡಗಿ)), 256 (Haveri: Guttala (ಗುತ್ತಲ)), 162 (Haveri: Haanagal (ಹಾನಗಲ್)), 158 (Haveri: Haaveri (ಹಾವೇರಿ)), 165 (Haveri: Hirekeruuru (ಹಿರೇಕೆರೂರು)), 159 (Haveri: Raanebennuuru (ರಾಣೇಬೆನ್ನೂರು)), 285 (Haveri: Rattihalli (ರಟ್ಟಿಹಳ್ಳಿ)), 163 (Haveri: Savanuuru (ಸವಣೂರು)), 164 (Haveri: Shiggaanv (ಶಿಗ್ಗಾಂವ್)), 148 (Kalaburagi: Aalanda (ಆಳಂದ)), 154 (Kalaburagi: Aphjalpura (ಅಫ್ಜಲ್‌ಪುರ)), 155 (Kalaburagi: Chincholi (ಚಿಂಚೋಳಿ)), 149 (Kalaburagi: Chittaapura (ಚಿತ್ತಾಪುರ)), 157 (Kalaburagi: Jevargi (ಜೇವರ್ಗಿ)), 281 (Kalaburagi: Kaalagi (ಕಾಳಗಿ)), 145 (Kalaburagi: Kalaburgi (ಕಲಬುರ್ಗಿ)), 312 (Kalaburagi: Kamalaapuura (ಕಮಲಾಪೂರ)), 150 (Kalaburagi: Sedan (ಸೇಡಂ)), 146 (Kalaburagi: Shahaabaad (ಶಹಾಬಾದ್)), 153 (Kalaburagi: Vaadi (ವಾಡಿ)), 313 (Kalaburagi: Yadraami (ಯಡ್ರಾಮಿ)), 90 (Kodagu: Kushaalanagara (ಕುಶಾಲನಗರ)), 89 (Kodagu: Madikeri (ಮಡಿಕೇರಿ)), 321 (Kodagu: Ponnampet (ಪೊನ್ನಂಪೇಟ್)), 91 (Kodagu: Somavaarapete (ಸೋಮವಾರಪೇಟೆ)), 92 (Kodagu: Viraajapete (ವಿರಾಜಪೇಟೆ)), 168 (Kolar: Bangaarapete (ಬಂಗಾರಪೇಟೆ)), 166 (Kolar: Kolaara (ಕೋಲಾರ)), 169 (Kolar: Maaluuru (ಮಾಲೂರು)), 170 (Kolar: Mulabaagilu (ಮುಳಬಾಗಿಲು)), 167 (Kolar: Raabart San Pete (ರಾಬರ್ಟ್ ಸನ್ ಪೇಟೆ)), 171 (Kolar: Shriinivaasapura (ಶ್ರೀನಿವಾಸಪುರ)), 315 (Kolar: Vemagal-kurugal (ವೇಮಗಲ್-ಕುರುಗಲ್)), 263 (Koppal: Bhaagyanagara (ಭಾಗ್ಯನಗರ)), 173 (Koppal: Gangaavati (ಗಂಗಾವತಿ)), 332 (Koppal: Hanumasaagara (ಹನುಮಸಾಗರ)), 265 (Koppal: Kaaratagi (ಕಾರಟಗಿ)), 264 (Koppal: Kanakagiri (ಕನಕಗಿರಿ)), 174 (Koppal: Koppala (ಕೊಪ್ಪಳ)), 266 (Koppal: Kukanuuru (ಕುಕನೂರು)), 175 (Koppal: Kushtagi (ಕುಷ್ಟಗಿ)), 267 (Koppal: Taavarageraa (ತಾವರಗೇರಾ)), 176 (Koppal: Yalaburgaa (ಯಲಬುರ್ಗಾ)), 277 (Mandya: Belluuru (ಬೆಳ್ಳೂರು)), 94 (Mandya: Krushnaraajapete (ಕೃಷ್ಣರಾಜಪೇಟೆ)), 95 (Mandya: Madduuru (ಮದ್ದೂರು)), 96 (Mandya: Malavalli (ಮಳವಳ್ಳಿ)), 93 (Mandya: Mandya (ಮಂಡ್ಯ)), 97 (Mandya: Naagamangala (ನಾಗಮಂಗಲ)), 98 (Mandya: Paandavapura (ಪಾಂಡವಪುರ)), 18 (Mandya: Shriirangapattana (ಶ್ರೀರಂಗಪಟ್ಟಣ)), 100 (Mysuru: Bannuuru (ಬನ್ನೂರು)), 298 (Mysuru: Bogaadi (ಬೋಗಾದಿ)), 101 (Mysuru: Hech.di.kote (ಹೆಚ್.ಡಿ.ಕೋಟೆ)), 102 (Mysuru: Hunasuuru (ಹುಣಸೂರು)), 294 (Mysuru: Huutagalli (ಹೂಟಗಳ್ಳಿ)), 296 (Mysuru: Kadakola (ಕಡಕೊಳ)), 103 (Mysuru: Ke.aar,nagara (ಕೆ.ಆರ್,ನಗರ)), 99 (Mysuru: Maisuuru (ಮೈಸೂರು)), 104 (Mysuru: Nanjanaguudu (ನಂಜನಗೂಡು)), 105 (Mysuru: Piriyaapattana (ಪಿರಿಯಾಪಟ್ಟಣ)), 295 (Mysuru: Rammanahalli (ರಮ್ಮನಹಳ್ಳಿ)), 106 (Mysuru: Saraguuru (ಸರಗೂರು)), 297 (Mysuru: Shriiraampura (ಶ್ರೀರಾಂಪುರ)), 325 (Mysuru: Talakaadu (ತಲಕಾಡು)), 107 (Mysuru: Ti.narasiipura (ಟಿ.ನರಸೀಪುರ)), 258 (Raichur: Balagaanuuru (ಬಳಗಾನೂರು)), 179 (Raichur: Devadurga (ದೇವದುರ್ಗ)), 279 (Raichur: Hatti (ಹಟ್ಟಿ)), 314 (Raichur: Jaalahalli (ಜಾಲಹಳ್ಳಿ)), 259 (Raichur: Kavitaala (ಕವಿತಾಳ)), 180 (Raichur: Lingasuuguuru (ಲಿಂಗಸೂಗೂರು)), 181 (Raichur: Maanavi (ಮಾನವಿ)), 260 (Raichur: Maski (ಮಸ್ಕಿ)), 182 (Raichur: Mudgal (ಮುದ್ಗಲ್)), 177 (Raichur: Raayachuuru (ರಾಯಚೂರು)), 178 (Raichur: Sindhanuuru (ಸಿಂಧನೂರು)), 261 (Raichur: Siravaara (ಸಿರವಾರ)), 262 (Raichur: Turvihaala (ತುರ್ವಿಹಾಳ)), 218 (Ramanagara: Bidadi (ಬಿಡದಿ)), 183 (Ramanagara: Channapattana (ಚನ್ನಪಟ್ಟಣ)), 290 (Ramanagara: Haarohalli (ಹಾರೋಹಳ್ಳಿ)), 185 (Ramanagara: Kanakapura (ಕನಕಪುರ)), 186 (Ramanagara: Maagadi (ಮಾಗಡಿ)), 184 (Ramanagara: Raamanagara (ರಾಮನಗರ)), 292 (Shivamogga: Aanavatti (ಆನವಟ್ಟಿ)), 187 (Shivamogga: Bhadraavati (ಭದ್ರಾವತಿ)), 293 (Shivamogga: Holehonnuuru (ಹೊಳೆಹೊನ್ನೂರು)), 191 (Shivamogga: Hosanagara (ಹೊಸನಗರ)), 192 (Shivamogga: Kaargal (ಕಾರ್ಗಲ್)), 188 (Shivamogga: Saagara (ಸಾಗರ)), 190 (Shivamogga: Shikaaripura (ಶಿಕಾರಿಪುರ)), 193 (Shivamogga: Shiraalakoppa (ಶಿರಾಳಕೊಪ್ಪ)), 189 (Shivamogga: Shivamogga (ಶಿವಮೊಗ್ಗ)), 194 (Shivamogga: Soraba (ಸೊರಬ)), 195 (Shivamogga: Tiirthahalli (ತೀರ್ಥಹಳ್ಳಿ)), 199 (Tumakuru: Chikkanaayakanahalli (ಚಿಕ್ಕನಾಯಕನಹಳ್ಳಿ)), 203 (Tumakuru: Gubbi (ಗುಬ್ಬಿ)), 278 (Tumakuru: Huliyaaru (ಹುಳಿಯಾರು)), 204 (Tumakuru: Koratagere (ಕೊರಟಗೆರೆ)), 200 (Tumakuru: Kunigal (ಕುಣಿಗಲ್)), 201 (Tumakuru: Madhugiri (ಮಧುಗಿರಿ)), 202 (Tumakuru: Paavagada (ಪಾವಗಡ)), 196 (Tumakuru: Siraa (ಸಿರಾ)), 197 (Tumakuru: Tipatuuru (ತಿಪಟೂರು)), 198 (Tumakuru: Tumakuuru (ತುಮಕೂರು)), 205 (Tumakuru: Turuvekere (ತುರುವೇಕೆರೆ)), 301 (Udupi: Bainduuru (ಬೈಂದೂರು)), 226 (Udupi: Kaapu (ಕಾಪು)), 109 (Udupi: Kaarkala (ಕಾರ್ಕಳ)), 110 (Udupi: Kundaapura (ಕುಂದಾಪುರ)), 111 (Udupi: Saaligraama (ಸಾಲಿಗ್ರಾಮ)), 108 (Udupi: Udupi (ಉಡುಪಿ)), 211 (Uttara Kannada: Ankolaa (ಅಂಕೋಲಾ)), 209 (Uttara Kannada: Bhatkal (ಭಟ್ಕಳ್)), 206 (Uttara Kannada: Daandeli (ದಾಂಡೇಲಿ)), 212 (Uttara Kannada: Haliyaala (ಹಳಿಯಾಳ)), 213 (Uttara Kannada: Honnaavara (ಹೊನ್ನಾವರ)), 257 (Uttara Kannada: Jaali (ಜಾಲಿ)), 207 (Uttara Kannada: Kaaravaara (ಕಾರವಾರ)), 210 (Uttara Kannada: Kumataa (ಕುಮಟಾ)), 307 (Uttara Kannada: Manki (ಮಂಕಿ)), 214 (Uttara Kannada: Mundagoda (ಮುಂಡಗೋಡ)), 208 (Uttara Kannada: Shirsi (ಶಿರ್ಸಿ)), 215 (Uttara Kannada: Siddaapura (ಸಿದ್ದಾಪುರ)), 216 (Uttara Kannada: Yallaapura (ಯಲ್ಲಾಪುರ)), 268 (Vijayanagara: Hagaribommanahalli (ಹಗರಿಬೊಮ್ಮನಹಳ್ಳಿ)), 126 (Vijayanagara: Harapanahalli (ಹರಪನಹಳ್ಳಿ)), 39 (Vijayanagara: Hosapete (ಹೊಸಪೇಟೆ)), 40 (Vijayanagara: Huuvina Hadagali (ಹೂವಿನ ಹಡಗಲಿ)), 44 (Vijayanagara: Kamalaapura (ಕಮಲಾಪುರ)), 45 (Vijayanagara: Kottuuru (ಕೊಟ್ಟೂರು)), 46 (Vijayanagara: Kuudalagi (ಕೂಡಲಗಿ)), 272 (Vijayanagara: Mariyammanahalli (ಮರಿಯಮ್ಮನಹಳ್ಳಿ)), 249 (Vijayapura: Aalamela (ಆಲಮೇಲ)), 309 (Vijayapura: Babaleshvara (ಬಬಲೇಶ್ವರ)), 56 (Vijayapura: Basavana Baagevaadi (ಬಸವನ ಬಾಗೇವಾಡಿ)), 250 (Vijayapura: Chadachana (ಚಡಚಣ)), 251 (Vijayapura: Devarahipparagi (ದೇವರಹಿಪ್ಪರಗಿ)), 57 (Vijayapura: Indi (ಇಂಡಿ)), 252 (Vijayapura: Kolhaar (ಕೊಲ್ಹಾರ್)), 253 (Vijayapura: Managuuli (ಮನಗೂಳಿ)), 58 (Vijayapura: Muddebihaala (ಮುದ್ದೇಬಿಹಾಳ)), 254 (Vijayapura: Nalataavaad (ನಲತಾವಾಡ್)), 255 (Vijayapura: Nidagundi (ನಿಡಗುಂಡಿ)), 59 (Vijayapura: Sindagi (ಸಿಂದಗಿ)), 60 (Vijayapura: Taalikote (ತಾಳಿಕೋಟೆ)), 308 (Vijayapura: Tikotaa (ತಿಕೋಟಾ)), 55 (Vijayapura: Vijayapura (ವಿಜಯಪುರ)), 322 (Yadagiri: Bhiimaraayanagudi (ಭೀಮರಾಯನಗುಡಿ)), 329 (Yadagiri: Dhoranahalli (ಧೋರನಹಳ್ಳಿ)), 156 (Yadagiri: Gurumathakal (ಗುರುಮಠಕಲ್)), 283 (Yadagiri: Hunasagi (ಹುಣಸಗಿ)), 273 (Yadagiri: Kakkeraa (ಕಕ್ಕೇರಾ)), 274 (Yadagiri: Kembhaavi (ಕೆಂಭಾವಿ)), 151 (Yadagiri: Shahaapura (ಶಹಾಪುರ)), 152 (Yadagiri: Shoraapura (ಶೋರಾಪುರ)), 147 (Yadagiri: Yaadagiri (ಯಾದಗಿರಿ)). | | `property_no` (Property No) | text | As printed on the Form-3 (ಸ್ವತ್ತಿನ ಸಂಖ್ಯೆ): ward-block-street-plot, e.g. 17-1-10-114B. Not the ePID and not the assessment number. Max 100 characters. | ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "eaasthi_registrability", "params": { "district": "556", "ulb": "246", "property_no": "17-1-10-114B" }, "label": "Urban property: can it be registered? (e-Aasthi) - case 8841" }' ``` **Python** ```python 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": "eaasthi_registrability", "params": { "district": "556", "ulb": "246", "property_no": "17-1-10-114B" }, "label": "Urban property: can it be registered? (e-Aasthi) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "eaasthi_registrability", "params": { "district": "556", "ulb": "246", "property_no": "17-1-10-114B" }, "label": "Urban property: can it be registered? (e-Aasthi) - 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": "karnataka", "search_type": "eaasthi_registrability", "label": "Urban property: can it be registered? (e-Aasthi) - 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": "karnataka", "search_type": "eaasthi_registrability", "label": "Urban property: can it be registered? (e-Aasthi) - 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" } } ``` --- Source: https://legiscore.in/docs/states/karnataka/gba-eaasthi # Bengaluru e-Khata by ePID (GBA) (Karnataka) A Bengaluru property on the Greater Bengaluru Authority e-Khata register (formerly BBMP), from its 10-digit ePID. Status: LIVE. Source status: No recent runs. Typical time: up to 3 min. state: `karnataka`, search_type: `gba_eaasthi`. ## What you get Owner, A / B Khata category, SAS tax ID, assessment number, ward, approval status and whether it is ready for registration, plus the Draft e-Khata PDF while the khata is still a draft. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `epid` | string | required | 1200001234 | field "epid" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `epid` (Property ePID) | text | The 10-digit ePID printed on the Bengaluru e-Khata or draft e-Khata. Not the SAS property tax ID and not the assessment number. Max 10 characters. | ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "gba_eaasthi", "params": { "epid": "1200001234" }, "label": "Bengaluru e-Khata by ePID (GBA) - case 8841" }' ``` **Python** ```python 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": "gba_eaasthi", "params": { "epid": "1200001234" }, "label": "Bengaluru e-Khata by ePID (GBA) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "gba_eaasthi", "params": { "epid": "1200001234" }, "label": "Bengaluru e-Khata by ePID (GBA) - 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": "karnataka", "search_type": "gba_eaasthi", "label": "Bengaluru e-Khata by ePID (GBA) - 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": "karnataka", "search_type": "gba_eaasthi", "label": "Bengaluru e-Khata by ePID (GBA) - 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" } } ``` --- Source: https://legiscore.in/docs/states/rajasthan # Rajasthan | Search | search_type | What it does | Status | Notes | | --- | --- | --- | --- | --- | | [Encumbrance / Registered Documents (E-Panjiyan e-Search)](https://legiscore.in/docs/states/rajasthan/ec) | ec | Registered documents recorded at a sub-registrar office for one deed type and one registration year, matched against a name, document number or address. The public register returns at most the first 3 matches for a name search — give a document number or property address instead for an exact result. | LIVE | Register | | [Prohibited Property / Court Stay (E-Panjiyan)](https://legiscore.in/docs/states/rajasthan/prohibited) | prohibited | The court-stay and land-dispute register a sub-registrar has recorded. A district-level result lists each SRO’s case total; choose an SRO to read its case rows. | LIVE | Register | | [Court Case / Stay Order on a Property (E-Panjiyan)](https://legiscore.in/docs/states/rajasthan/court-stay) | court_stay | Is there a court stay or land-dispute entry naming this property? Every sub-registrar office in the district is read and only the entries matching the khasra, plot or village come back, each graded by how well it matches. | LIVE | - | | [Document Status by Number (E-Panjiyan Track Document Status)](https://legiscore.in/docs/states/rajasthan/document-search) | document_search | Look up any registered document on E-Panjiyan by the number printed on it — the document serial or the registration number, either works. No office, deed type or year needed. | LIVE | - | | [Municipal Property Tax](https://legiscore.in/docs/states/rajasthan/property-tax) | property_tax | The municipal tax account for a property in Jaipur, Udaipur or Kota — the only three Nagar Nigams this portal covers, out of the state’s many municipalities. | LIVE | Register | | [Jamabandi / Record of Rights (Apna Khata)](https://legiscore.in/docs/states/rajasthan/ror) | ror | The Jamabandi copy for a khasra or khata: the khatedars with their shares, each khasra’s area and land class, and the mutation, lease and mortgage remarks the register carries. | LIVE | OTP | | [Khasra / Khata on the Jamabandi Register (Apna Khata)](https://legiscore.in/docs/states/rajasthan/ror-lookup) | ror_lookup | Whether a khasra or khata number is on the village’s Jamabandi register, and which khata holds a khasra. A quick check before ordering the copy; no copy is issued. | LIVE | - | | [RIICO Industrial Plot Allottees](https://legiscore.in/docs/states/rajasthan/industrial) | industrial | Who RIICO has allotted an industrial plot to: pick the RIICO unit and give the allottee’s name or the plot number from the allotment letter. The unit’s whole allottee register is read. | LIVE | - | | [JDA Jaipur Urban Plots](https://legiscore.in/docs/states/rajasthan/urban-land) | urban_land | A Jaipur Development Authority plot by scheme, zone or developer, narrowed by plot number or allottee. Jaipur only: other development authorities need a state login. | LIVE | - | --- Source: https://legiscore.in/docs/states/rajasthan/ec # Encumbrance / Registered Documents (E-Panjiyan e-Search) (Rajasthan) Registered documents recorded at a sub-registrar office for one deed type and one registration year, matched against a name, document number or address. The public register returns at most the first 3 matches for a name search — give a document number or property address instead for an exact result. Status: LIVE. Source status: No recent runs. Typical time: up to 5 min. state: `rajasthan`, search_type: `ec`. Register search: found:false is not a clear title. Read the documents. ## What you get Matching registration rows plus the portal’s own results page as a PDF. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). - At least one of `presenter_name`, `document_no`, `party_address`, `property_address`: Give at least one of presenter name, document number, party address or property address. | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `district_code` | string | required | from lookup "district" | rj_district lookup (https://legiscore.in/docs/api/lookups#rajasthan-rj_district) | | `tehsil_code` | string | required | from lookup "tehsil" | rj_tehsil lookup (https://legiscore.in/docs/api/lookups#rajasthan-rj_tehsil) | | `sro_code` | string | required | from lookup "sro" | rj_sro lookup (https://legiscore.in/docs/api/lookups#rajasthan-rj_sro) | | `financial_year` | string | required | from lookup "financial_year" | rj_financial_year lookup (https://legiscore.in/docs/api/lookups#rajasthan-rj_financial_year) | | `doc_type_code` | string | required | from lookup "doc_type" | rj_document_type lookup (https://legiscore.in/docs/api/lookups#rajasthan-rj_document_type) | | `presenter_name` | string | one of | As printed on the document | field "presenter_name" | | `document_no` | string | one of | 1234 | field "document_no" | | `party_address` | string | one of | | field "party_address" | | `property_address` | string | one of | | field "property_address" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `district` (District) | lookup | | | `tehsil` (Tehsil) | lookup | | | `sro` (Sub-Registrar Office) | lookup | | | `financial_year` (Financial Year) | lookup | | | `doc_type` (Document Type) | lookup | One run answers for one deed type — the portal has no "all types" option. | | `location_type` (Location Type) | select | Optional. Left blank, both registers are searched and merged — narrowing to one is faster but a miss then only clears that one. Values: (Both — Urban and Rural (default)), Urban (Urban), Rural (Rural). | | `presenter_name` (Presenter Name) | text | | | `document_no` (Document Number) | text | | | `party_address` (Party Address) | text | | | `property_address` (Property Address) | text | | ## Resolve names to codes | Field | Lookup | Needs first | | --- | --- | --- | | district | rj_district | - | | tehsil | rj_tehsil | district | | sro | rj_sro | district, tehsil | | financial_year | rj_financial_year | - | | doc_type | rj_document_type | - | q is required (2+ characters), at most 10 matches. ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "rajasthan", "search_type": "ec", "params": { "district_code": "", "tehsil_code": "", "sro_code": "", "financial_year": "", "doc_type_code": "", "presenter_name": "As printed on the document", "document_no": "1234", "party_address": "", "property_address": "" }, "label": "Encumbrance / Registered Documents (E-Panjiyan e-Search) - case 8841" }' ``` **Python** ```python 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": "rajasthan", "search_type": "ec", "params": { "district_code": "", "tehsil_code": "", "sro_code": "", "financial_year": "", "doc_type_code": "", "presenter_name": "As printed on the document", "document_no": "1234", "party_address": "", "property_address": "" }, "label": "Encumbrance / Registered Documents (E-Panjiyan e-Search) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "rajasthan", "search_type": "ec", "params": { "district_code": "", "tehsil_code": "", "sro_code": "", "financial_year": "", "doc_type_code": "", "presenter_name": "As printed on the document", "document_no": "1234", "party_address": "", "property_address": "" }, "label": "Encumbrance / Registered Documents (E-Panjiyan e-Search) - 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": "rajasthan", "search_type": "ec", "label": "Encumbrance / Registered Documents (E-Panjiyan e-Search) - 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": "rajasthan", "search_type": "ec", "label": "Encumbrance / Registered Documents (E-Panjiyan e-Search) - 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" } } ``` --- Source: https://legiscore.in/docs/states/rajasthan/prohibited # Prohibited Property / Court Stay (E-Panjiyan) (Rajasthan) The court-stay and land-dispute register a sub-registrar has recorded. A district-level result lists each SRO’s case total; choose an SRO to read its case rows. Status: LIVE. Source status: No recent runs. Typical time: up to 3 min. state: `rajasthan`, search_type: `prohibited`. Register search: found:false is not a clear title. Read the documents. ## What you get SRO totals for the district, and — once an SRO is chosen — that SRO’s court-stay case rows, plus the portal’s own page as a PDF. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `district_code` | string | required | from lookup "district" | rj_district lookup (https://legiscore.in/docs/api/lookups#rajasthan-rj_district) | | `sro_code` | string | optional | from lookup "sro" | rj_sro_by_district lookup (https://legiscore.in/docs/api/lookups#rajasthan-rj_sro_by_district) | | `term` | string | optional | e.g. 25/1B or a colony name | field "term" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `district` (District) | lookup | | | `sro` (Sub-Registrar Office) | lookup | Optional. Without one you get every SRO’s case count for the district; choosing one reads that SRO’s case rows. | | `term` (Plot / Khasra or Colony) | text | Optional. Filters the chosen SRO’s case rows by plot/khasra number or colony name — has no effect until an SRO is chosen. | ## Resolve names to codes | Field | Lookup | Needs first | | --- | --- | --- | | district | rj_district | - | | sro | rj_sro_by_district | district | q is required (2+ characters), at most 10 matches. ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "rajasthan", "search_type": "prohibited", "params": { "district_code": "", "sro_code": "", "term": "e.g. 25/1B or a colony name" }, "label": "Prohibited Property / Court Stay (E-Panjiyan) - case 8841" }' ``` **Python** ```python 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": "rajasthan", "search_type": "prohibited", "params": { "district_code": "", "sro_code": "", "term": "e.g. 25/1B or a colony name" }, "label": "Prohibited Property / Court Stay (E-Panjiyan) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "rajasthan", "search_type": "prohibited", "params": { "district_code": "", "sro_code": "", "term": "e.g. 25/1B or a colony name" }, "label": "Prohibited Property / Court Stay (E-Panjiyan) - 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": "rajasthan", "search_type": "prohibited", "label": "Prohibited Property / Court Stay (E-Panjiyan) - 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": "rajasthan", "search_type": "prohibited", "label": "Prohibited Property / Court Stay (E-Panjiyan) - 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" } } ``` --- Source: https://legiscore.in/docs/states/rajasthan/court-stay # Court Case / Stay Order on a Property (E-Panjiyan) (Rajasthan) Is there a court stay or land-dispute entry naming this property? Every sub-registrar office in the district is read and only the entries matching the khasra, plot or village come back, each graded by how well it matches. Status: LIVE. Source status: No recent runs. Typical time: up to 10 min. state: `rajasthan`, search_type: `court_stay`. ## What you get The court-stay entries naming the property — office, colony, khasra/plot text, issuing authority, stay date and number — graded strong / medium / weak, plus a PDF that also lists every office read. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). - At least one of `khasra_nos`, `plot_no`, `locality`: Give at least one of khasra numbers, plot number or village / colony name. | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `district_code` | string | required | from lookup "district" | rj_district lookup (https://legiscore.in/docs/api/lookups#rajasthan-rj_district) | | `sro_codes` | string[] | optional | [""] | fixed by the search | | `khasra_nos` | string[] | one of | ["241, 299/2"] | field "khasra_nos" | | `plot_no` | string | one of | 16 | field "plot_no" | | `locality` | string | one of | Vijaypura, Braj Gopal Vatika | field "locality" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `district` (District) | lookup | | | `sro` (Sub-Registrar Office) | lookup | Optional. Leave blank for the complete answer: every office holding entries is read. Choose one only to limit the read to that office. | | `khasra_nos` (Khasra / Survey Numbers) | tags | One entry per number, as printed on the deed or jamabandi. A parent khasra also finds its sub-divisions. | | `plot_no` (Plot Number) | text | | | `locality` (Village / Colony / Scheme) | text | Matched loosely — spelling variants count. Generic words like “Nagar” or “Colony” on their own match nothing. | ## Resolve names to codes | Field | Lookup | Needs first | | --- | --- | --- | | district | rj_district | - | | sro | rj_sro_by_district | district | q is required (2+ characters), at most 10 matches. ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "rajasthan", "search_type": "court_stay", "params": { "district_code": "", "sro_codes": [ "" ], "khasra_nos": [ "241, 299/2" ], "plot_no": "16", "locality": "Vijaypura, Braj Gopal Vatika" }, "label": "Court Case / Stay Order on a Property (E-Panjiyan) - case 8841" }' ``` **Python** ```python 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": "rajasthan", "search_type": "court_stay", "params": { "district_code": "", "sro_codes": [ "" ], "khasra_nos": [ "241, 299/2" ], "plot_no": "16", "locality": "Vijaypura, Braj Gopal Vatika" }, "label": "Court Case / Stay Order on a Property (E-Panjiyan) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "rajasthan", "search_type": "court_stay", "params": { "district_code": "", "sro_codes": [ "" ], "khasra_nos": [ "241, 299/2" ], "plot_no": "16", "locality": "Vijaypura, Braj Gopal Vatika" }, "label": "Court Case / Stay Order on a Property (E-Panjiyan) - 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": "rajasthan", "search_type": "court_stay", "label": "Court Case / Stay Order on a Property (E-Panjiyan) - 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": "rajasthan", "search_type": "court_stay", "label": "Court Case / Stay Order on a Property (E-Panjiyan) - 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" } } ``` --- Source: https://legiscore.in/docs/states/rajasthan/document-search # Document Status by Number (E-Panjiyan Track Document Status) (Rajasthan) Look up any registered document on E-Panjiyan by the number printed on it — the document serial or the registration number, either works. No office, deed type or year needed. Status: LIVE. Source status: No recent runs. Typical time: up to 2 min. state: `rajasthan`, search_type: `document_search`. ## What you get The document’s district, tehsil, sub-registrar office, presenter, the date of each registration step and its status at the sub-registrar, plus that table as a PDF. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `document_no` | string | required | e.g. 202401015006134 | field "document_no" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `document_no` (Document number) | text | The document serial or registration number from the registration endorsement on the deed. Up to 15 letters or digits. | ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "rajasthan", "search_type": "document_search", "params": { "document_no": "e.g. 202401015006134" }, "label": "Document Status by Number (E-Panjiyan Track Document Status) - case 8841" }' ``` **Python** ```python 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": "rajasthan", "search_type": "document_search", "params": { "document_no": "e.g. 202401015006134" }, "label": "Document Status by Number (E-Panjiyan Track Document Status) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "rajasthan", "search_type": "document_search", "params": { "document_no": "e.g. 202401015006134" }, "label": "Document Status by Number (E-Panjiyan Track Document Status) - 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": "rajasthan", "search_type": "document_search", "label": "Document Status by Number (E-Panjiyan Track Document Status) - 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": "rajasthan", "search_type": "document_search", "label": "Document Status by Number (E-Panjiyan Track Document Status) - 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" } } ``` --- Source: https://legiscore.in/docs/states/rajasthan/property-tax # Municipal Property Tax (Rajasthan) The municipal tax account for a property in Jaipur, Udaipur or Kota — the only three Nagar Nigams this portal covers, out of the state’s many municipalities. Status: LIVE. Source status: No recent runs. Typical time: up to 3 min. state: `rajasthan`, search_type: `property_tax`. Register search: found:false is not a clear title. Read the documents. ## What you get Matching property rows, and — with details fetched — each property’s assessment and floor-wise breakdown, plus a PDF. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). - At least one of `owner_name`, `service_no`, `acknowledgement_no`, `mobile_no`: Give at least one of owner name, service number, acknowledgement number or mobile number. | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `ulb_code` | string | required | from lookup "ulb" | rj_ulb lookup (https://legiscore.in/docs/api/lookups#rajasthan-rj_ulb) | | `include_details` | boolean | optional | false | field "include_details" | | `owner_name` | string | one of | Substring match | field "owner_name" | | `service_no` | string | one of | 12345 | field "service_no" | | `acknowledgement_no` | string | one of | | field "acknowledgement_no" | | `mobile_no` | string | one of | | field "mobile_no" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `ulb` (Municipal Corporation) | lookup | | | `owner_name` (Owner Name) | text | | | `service_no` (Service Number) | text | | | `acknowledgement_no` (Acknowledgement Number) | text | | | `mobile_no` (Mobile Number) | text | | | `include_details` (Fetch Full Details) | select | Optional. Each detail page is one extra request per property matched, capped at 10. Values: (No — listing rows only), true (Yes — read each property’s detail page (up to 10)). | ## Resolve names to codes | Field | Lookup | Needs first | | --- | --- | --- | | ulb | rj_ulb | - | q is required (2+ characters), at most 10 matches. ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "rajasthan", "search_type": "property_tax", "params": { "ulb_code": "", "include_details": false, "owner_name": "Substring match", "service_no": "12345", "acknowledgement_no": "", "mobile_no": "" }, "label": "Municipal Property Tax - case 8841" }' ``` **Python** ```python 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": "rajasthan", "search_type": "property_tax", "params": { "ulb_code": "", "include_details": false, "owner_name": "Substring match", "service_no": "12345", "acknowledgement_no": "", "mobile_no": "" }, "label": "Municipal Property Tax - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "rajasthan", "search_type": "property_tax", "params": { "ulb_code": "", "include_details": false, "owner_name": "Substring match", "service_no": "12345", "acknowledgement_no": "", "mobile_no": "" }, "label": "Municipal Property Tax - 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": "rajasthan", "search_type": "property_tax", "label": "Municipal Property Tax - 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": "rajasthan", "search_type": "property_tax", "label": "Municipal Property Tax - 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" } } ``` --- Source: https://legiscore.in/docs/states/rajasthan/ror # Jamabandi / Record of Rights (Apna Khata) (Rajasthan) The Jamabandi copy for a khasra or khata: the khatedars with their shares, each khasra’s area and land class, and the mutation, lease and mortgage remarks the register carries. Status: LIVE. Source status: No recent runs. Typical time: up to 6 min. state: `rajasthan`, search_type: `ror`. Uses an OTP: LegiScore handles the code; the search may show awaiting_otp briefly. AI Recovery does not run on this search. ## What you get The khatedars, khasras and remarks as data, plus the portal’s own Jamabandi copy as a PDF. A number the village does not list comes back as not found with the nearest numbers it does. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). - At least one of `khasra_no`, `khata_no`: Give a khasra number or a khata number. | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `district` | string | required | from lookup "district" | rj_ak_district lookup (https://legiscore.in/docs/api/lookups#rajasthan-rj_ak_district) | | `tehsil` | string | required | Sheo or शिव | field "tehsil" | | `village` | string | required | Mungeriya or मूंगेरिया | field "village" | | `patwar_halka` | string | optional | Optional | field "patwar_halka" | | `khasra_no` | string | one of | 350/61 | field "khasra_no" | | `khata_no` | string | one of | 71 | field "khata_no" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `district` (District) | lookup | | | `tehsil` (Tehsil) | text | English or Hindi. A name the portal does not list is refused with its tehsils. Max 60 characters. | | `village` (Village) | text | English or Hindi, as the Jamabandi names it. A name the portal does not list is refused with its closest villages. Max 120 characters. | | `patwar_halka` (Patwar Halka) | text | Only to tell apart two villages of one name in the tehsil. Max 60 characters. | | `khasra_no` (Khasra Number) | text | Max 20 characters. | | `khata_no` (Khata Number) | text | Max 20 characters. | ## Resolve names to codes | Field | Lookup | Needs first | | --- | --- | --- | | district | rj_ak_district | - | q is required (2+ characters), at most 10 matches. ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "rajasthan", "search_type": "ror", "params": { "district": "", "tehsil": "Sheo or शिव", "village": "Mungeriya or मूंगेरिया", "patwar_halka": "Optional", "khasra_no": "350/61", "khata_no": "71" }, "label": "Jamabandi / Record of Rights (Apna Khata) - case 8841" }' ``` **Python** ```python 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": "rajasthan", "search_type": "ror", "params": { "district": "", "tehsil": "Sheo or शिव", "village": "Mungeriya or मूंगेरिया", "patwar_halka": "Optional", "khasra_no": "350/61", "khata_no": "71" }, "label": "Jamabandi / Record of Rights (Apna Khata) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "rajasthan", "search_type": "ror", "params": { "district": "", "tehsil": "Sheo or शिव", "village": "Mungeriya or मूंगेरिया", "patwar_halka": "Optional", "khasra_no": "350/61", "khata_no": "71" }, "label": "Jamabandi / Record of Rights (Apna Khata) - 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": "rajasthan", "search_type": "ror", "label": "Jamabandi / Record of Rights (Apna Khata) - 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": "rajasthan", "search_type": "ror", "label": "Jamabandi / Record of Rights (Apna Khata) - 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" } } ``` --- Source: https://legiscore.in/docs/states/rajasthan/ror-lookup # Khasra / Khata on the Jamabandi Register (Apna Khata) (Rajasthan) Whether a khasra or khata number is on the village’s Jamabandi register, and which khata holds a khasra. A quick check before ordering the copy; no copy is issued. Status: LIVE. Source status: No recent runs. Typical time: up to 2 min. state: `rajasthan`, search_type: `ror_lookup`. ## What you get The khata that holds the khasra (or confirms the khata exists), with the place as the portal names it. A miss comes back as not found with the nearest numbers the village lists. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). - At least one of `khasra_no`, `khata_no`: Give a khasra number or a khata number. | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `district` | string | required | from lookup "district" | rj_ak_district lookup (https://legiscore.in/docs/api/lookups#rajasthan-rj_ak_district) | | `tehsil` | string | required | Sheo or शिव | field "tehsil" | | `village` | string | required | Mungeriya or मूंगेरिया | field "village" | | `patwar_halka` | string | optional | Optional | field "patwar_halka" | | `khasra_no` | string | one of | 350/61 | field "khasra_no" | | `khata_no` | string | one of | 71 | field "khata_no" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `district` (District) | lookup | | | `tehsil` (Tehsil) | text | English or Hindi. A name the portal does not list is refused with its tehsils. Max 60 characters. | | `village` (Village) | text | English or Hindi, as the Jamabandi names it. A name the portal does not list is refused with its closest villages. Max 120 characters. | | `patwar_halka` (Patwar Halka) | text | Only to tell apart two villages of one name in the tehsil. Max 60 characters. | | `khasra_no` (Khasra Number) | text | Max 20 characters. | | `khata_no` (Khata Number) | text | Max 20 characters. | ## Resolve names to codes | Field | Lookup | Needs first | | --- | --- | --- | | district | rj_ak_district | - | q is required (2+ characters), at most 10 matches. ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "rajasthan", "search_type": "ror_lookup", "params": { "district": "", "tehsil": "Sheo or शिव", "village": "Mungeriya or मूंगेरिया", "patwar_halka": "Optional", "khasra_no": "350/61", "khata_no": "71" }, "label": "Khasra / Khata on the Jamabandi Register (Apna Khata) - case 8841" }' ``` **Python** ```python 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": "rajasthan", "search_type": "ror_lookup", "params": { "district": "", "tehsil": "Sheo or शिव", "village": "Mungeriya or मूंगेरिया", "patwar_halka": "Optional", "khasra_no": "350/61", "khata_no": "71" }, "label": "Khasra / Khata on the Jamabandi Register (Apna Khata) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "rajasthan", "search_type": "ror_lookup", "params": { "district": "", "tehsil": "Sheo or शिव", "village": "Mungeriya or मूंगेरिया", "patwar_halka": "Optional", "khasra_no": "350/61", "khata_no": "71" }, "label": "Khasra / Khata on the Jamabandi Register (Apna Khata) - 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": "rajasthan", "search_type": "ror_lookup", "label": "Khasra / Khata on the Jamabandi Register (Apna Khata) - 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": "rajasthan", "search_type": "ror_lookup", "label": "Khasra / Khata on the Jamabandi Register (Apna Khata) - 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" } } ``` --- Source: https://legiscore.in/docs/states/rajasthan/industrial # RIICO Industrial Plot Allottees (Rajasthan) Who RIICO has allotted an industrial plot to: pick the RIICO unit and give the allottee’s name or the plot number from the allotment letter. The unit’s whole allottee register is read. Status: LIVE. Source status: No recent runs. Typical time: up to 4 min. state: `rajasthan`, search_type: `industrial`. ## What you get Each matching plot with its industrial area, plot and property number and allottee, plus a PDF of the matches. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `unit_id` | string | required | from lookup "unit_id" | rj_riico_unit lookup (https://legiscore.in/docs/api/lookups#rajasthan-rj_riico_unit) | | `allottee_name` | string | optional | e.g. Vimla Industries | field "allottee_name" | | `plot_no` | string | optional | e.g. G1-30 | field "plot_no" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `unit_id` (RIICO Unit) | lookup | The RIICO regional unit the industrial area falls under (e.g. Ajmer, Bhiwadi, Sitapura). | | `allottee_name` (Allottee Name) | text | Part of the allottee’s name as RIICO prints it. Leave blank to list the whole unit. Max 120 characters. | | `plot_no` (Plot Number) | text | Part of the plot or property number. "F-6" also matches F-64. Max 60 characters. | ## Resolve names to codes | Field | Lookup | Needs first | | --- | --- | --- | | unit_id | rj_riico_unit | - | q is required (2+ characters), at most 10 matches. ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "rajasthan", "search_type": "industrial", "params": { "unit_id": "", "allottee_name": "e.g. Vimla Industries", "plot_no": "e.g. G1-30" }, "label": "RIICO Industrial Plot Allottees - case 8841" }' ``` **Python** ```python 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": "rajasthan", "search_type": "industrial", "params": { "unit_id": "", "allottee_name": "e.g. Vimla Industries", "plot_no": "e.g. G1-30" }, "label": "RIICO Industrial Plot Allottees - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "rajasthan", "search_type": "industrial", "params": { "unit_id": "", "allottee_name": "e.g. Vimla Industries", "plot_no": "e.g. G1-30" }, "label": "RIICO Industrial Plot Allottees - 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": "rajasthan", "search_type": "industrial", "label": "RIICO Industrial Plot Allottees - 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": "rajasthan", "search_type": "industrial", "label": "RIICO Industrial Plot Allottees - 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" } } ``` --- Source: https://legiscore.in/docs/states/rajasthan/urban-land # JDA Jaipur Urban Plots (Rajasthan) A Jaipur Development Authority plot by scheme, zone or developer, narrowed by plot number or allottee. Jaipur only: other development authorities need a state login. Status: LIVE. Source status: No recent runs. Typical time: up to 4 min. state: `rajasthan`, search_type: `urban_land`. ## What you get Each matching plot with its allottee, allotment, patta, freehold, possession and mortgage details, plus a PDF. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). - At least one of `scheme_name`, `zone`, `developer_name`: Give a scheme name, zone or developer: the JDA register cannot be searched by allottee or plot alone. | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `scheme_name` | string | one of | e.g. Pratap Nagar | field "scheme_name" | | `zone` | string | one of | e.g. ZONE-17 | field "zone" | | `developer_name` | string | one of | | field "developer_name" | | `plot_no` | string | optional | e.g. 12 | field "plot_no" | | `owner_name` | string | optional | | field "owner_name" | | `father_name` | string | optional | | field "father_name" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `scheme_name` (Scheme Name) | text | Part of the JDA scheme name from the allotment letter or patta. Max 120 characters. | | `zone` (Zone) | text | Max 60 characters. | | `developer_name` (Developer / Society) | text | Max 120 characters. | | `plot_no` (Plot Number) | text | Max 40 characters. | | `owner_name` (Allottee Name) | text | Part of the allottee’s name, matched against the scheme’s plots. Max 120 characters. | | `father_name` (Father / Husband Name) | text | Max 120 characters. | ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "rajasthan", "search_type": "urban_land", "params": { "scheme_name": "e.g. Pratap Nagar", "zone": "e.g. ZONE-17", "developer_name": "", "plot_no": "e.g. 12", "owner_name": "", "father_name": "" }, "label": "JDA Jaipur Urban Plots - case 8841" }' ``` **Python** ```python 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": "rajasthan", "search_type": "urban_land", "params": { "scheme_name": "e.g. Pratap Nagar", "zone": "e.g. ZONE-17", "developer_name": "", "plot_no": "e.g. 12", "owner_name": "", "father_name": "" }, "label": "JDA Jaipur Urban Plots - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "rajasthan", "search_type": "urban_land", "params": { "scheme_name": "e.g. Pratap Nagar", "zone": "e.g. ZONE-17", "developer_name": "", "plot_no": "e.g. 12", "owner_name": "", "father_name": "" }, "label": "JDA Jaipur Urban Plots - 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": "rajasthan", "search_type": "urban_land", "label": "JDA Jaipur Urban Plots - 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": "rajasthan", "search_type": "urban_land", "label": "JDA Jaipur Urban Plots - 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" } } ``` --- Source: https://legiscore.in/docs/states/delhi # Delhi | Search | search_type | What it does | Status | Notes | | --- | --- | --- | --- | --- | | [Khasra Khatauni (DLR Act)](https://legiscore.in/docs/states/delhi/khasra-khatauni) | khasra_khatauni | The Delhi land record under the DLR Act: who holds a khata, in what shares, and which khasras it covers. | LIVE | - | | [Jamabandi (PLR Act)](https://legiscore.in/docs/states/delhi/jamabandi) | jamabandi | The Delhi land record under the PLR Act, for the few villages still on it (Chak Chilla; Bakoli, Palla, Tajpur Kalan and Hamid Pur in Narela). | LIVE | - | --- Source: https://legiscore.in/docs/states/delhi/khasra-khatauni # Khasra Khatauni (DLR Act) (Delhi) The Delhi land record under the DLR Act: who holds a khata, in what shares, and which khasras it covers. Status: LIVE. Source status: No recent runs. Typical time: up to 3 min. state: `delhi`, search_type: `khasra_khatauni`. ## What you get Every owner with their share, each khasra with its rect number and area, the mutation remarks, and DLRC’s own record page. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `district_code` | string | required | from lookup "district" | dlr_district lookup (https://legiscore.in/docs/api/lookups#delhi-dlr_district) | | `subdivision_code` | string | required | from lookup "subdivision" | dlr_subdivision lookup (https://legiscore.in/docs/api/lookups#delhi-dlr_subdivision) | | `subdivision_name` | string | required | from lookup "subdivision" | dlr_subdivision lookup (https://legiscore.in/docs/api/lookups#delhi-dlr_subdivision) | | `village_code` | string | required | from lookup "village" | dlr_village lookup (https://legiscore.in/docs/api/lookups#delhi-dlr_village) | | `khata_type` | string | optional | 1 | field "khata_type" | | `search_by` | string | required | khata | field "search_by" | | `khata_no` | string | conditional | 1 | field "khata_no" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `district` (District) | lookup | | | `subdivision` (Sub-division (Tehsil)) | lookup | | | `village` (Village) | lookup | | | `khata_type` (Land held by) | select | Leave as Bhumidars unless the record is Gaon Sabha or Asami land. Values: 1 (Land held by Bhumidars), 2 (Land held by Gaon Sabha), 3 (Land held by Asami from Gaon Sabha), 4 (Land held by Asami otherwise). | | `search_by` (Search By) | select | Values: khata (Khata number), khasra (Khasra number). | | `khata_no` (Khata Number) | text | Only when search_by is "khata". Max 20 characters. | | `rect_no` (Rect (Mustatil) Number) | text | Use 0 where the village has no rectangles. Only when search_by is "khasra". Max 5 characters. | | `khasra_no` (Khasra Number) | text | Only when search_by is "khasra". Max 20 characters. | ## Resolve names to codes | Field | Lookup | Needs first | | --- | --- | --- | | district | dlr_district | - | | subdivision | dlr_subdivision | district | | village | dlr_village | district, subdivision | q is required (2+ characters), at most 10 matches. ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "delhi", "search_type": "khasra_khatauni", "params": { "district_code": "", "subdivision_code": "", "subdivision_name": "", "village_code": "", "khata_type": "1", "search_by": "khata", "khata_no": "1" }, "label": "Khasra Khatauni (DLR Act) - case 8841" }' ``` **Python** ```python 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": "delhi", "search_type": "khasra_khatauni", "params": { "district_code": "", "subdivision_code": "", "subdivision_name": "", "village_code": "", "khata_type": "1", "search_by": "khata", "khata_no": "1" }, "label": "Khasra Khatauni (DLR Act) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "delhi", "search_type": "khasra_khatauni", "params": { "district_code": "", "subdivision_code": "", "subdivision_name": "", "village_code": "", "khata_type": "1", "search_by": "khata", "khata_no": "1" }, "label": "Khasra Khatauni (DLR Act) - 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": "delhi", "search_type": "khasra_khatauni", "label": "Khasra Khatauni (DLR Act) - 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": "delhi", "search_type": "khasra_khatauni", "label": "Khasra Khatauni (DLR Act) - 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" } } ``` --- Source: https://legiscore.in/docs/states/delhi/jamabandi # Jamabandi (PLR Act) (Delhi) The Delhi land record under the PLR Act, for the few villages still on it (Chak Chilla; Bakoli, Palla, Tajpur Kalan and Hamid Pur in Narela). Status: LIVE. Source status: No recent runs. Typical time: up to 3 min. state: `delhi`, search_type: `jamabandi`. ## What you get Each khata in the jamabandi with its owners and shares, khasras and areas, the remarks, and DLRC’s own record page. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `district_code` | string | required | from lookup "district" | plr_district lookup (https://legiscore.in/docs/api/lookups#delhi-plr_district) | | `subdivision_code` | string | required | from lookup "subdivision" | plr_subdivision lookup (https://legiscore.in/docs/api/lookups#delhi-plr_subdivision) | | `subdivision_name` | string | required | from lookup "subdivision" | plr_subdivision lookup (https://legiscore.in/docs/api/lookups#delhi-plr_subdivision) | | `village_code` | string | required | from lookup "village" | plr_village lookup (https://legiscore.in/docs/api/lookups#delhi-plr_village) | | `khata_type` | string | optional | 1 | field "khata_type" | | `jamabandi_no` | string | required | 1 | field "jamabandi_no" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `district` (District) | lookup | | | `subdivision` (Sub-division (Tehsil)) | lookup | | | `village` (Village) | lookup | | | `khata_type` (Land held by) | select | Leave as Bhumidars unless the record is Gaon Sabha or Asami land. Values: 1 (Land held by Bhumidars), 2 (Land held by Gaon Sabha), 3 (Land held by Asami from Gaon Sabha), 4 (Land held by Asami otherwise). | | `jamabandi_no` (Jamabandi Number) | text | As the deed quotes it (3), or as DLRC keys it (3/2). Max 13 characters. | ## Resolve names to codes | Field | Lookup | Needs first | | --- | --- | --- | | district | plr_district | - | | subdivision | plr_subdivision | district | | village | plr_village | district, subdivision | q is required (2+ characters), at most 10 matches. ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "delhi", "search_type": "jamabandi", "params": { "district_code": "", "subdivision_code": "", "subdivision_name": "", "village_code": "", "khata_type": "1", "jamabandi_no": "1" }, "label": "Jamabandi (PLR Act) - case 8841" }' ``` **Python** ```python 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": "delhi", "search_type": "jamabandi", "params": { "district_code": "", "subdivision_code": "", "subdivision_name": "", "village_code": "", "khata_type": "1", "jamabandi_no": "1" }, "label": "Jamabandi (PLR Act) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "delhi", "search_type": "jamabandi", "params": { "district_code": "", "subdivision_code": "", "subdivision_name": "", "village_code": "", "khata_type": "1", "jamabandi_no": "1" }, "label": "Jamabandi (PLR Act) - 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": "delhi", "search_type": "jamabandi", "label": "Jamabandi (PLR Act) - 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": "delhi", "search_type": "jamabandi", "label": "Jamabandi (PLR Act) - 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" } } ``` --- Source: https://legiscore.in/docs/states/tamilnadu # Tamil Nadu | Search | search_type | What it does | Status | Notes | | --- | --- | --- | --- | --- | | [Encumbrance Certificate by Document Number (TNREGINET)](https://legiscore.in/docs/states/tamilnadu/ec-document) | ec_document | The encumbrance certificate for a registered Tamil Nadu document, looked up by sub-registrar office, document number and year. The portal does not allow a search by survey number here. | HELD | Register | | [Guideline Value (Stamp Duty)](https://legiscore.in/docs/states/tamilnadu/guideline-value) | guideline_value | The government guideline value for a Tamil Nadu village, and for one survey number in it when you give it. Without a survey number you get the village’s land-category rate table. | HELD | Register | | [Property Tax (TN Urban ePay)](https://legiscore.in/docs/states/tamilnadu/property-tax) | property_tax | The property tax account for a property in a Tamil Nadu municipality or corporation. Chennai is not covered here. | LIVE | Register | --- Source: https://legiscore.in/docs/states/tamilnadu/ec-document # Encumbrance Certificate by Document Number (TNREGINET) (Tamil Nadu) The encumbrance certificate for a registered Tamil Nadu document, looked up by sub-registrar office, document number and year. The portal does not allow a search by survey number here. Status: HELD. Source status: Held. Typical time: up to 3 min. state: `tamilnadu`, search_type: `ec_document`. HELD: temporarily unavailable. A submit is refused with 422 search_unavailable and nothing is charged. Register search: found:false is not a clear title. Read the documents. ## What you get The property rows registered under that document plus the statutory certificate as a PDF. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `sro_code` | string | required | 20119:1 | field "sro_code" | | `document_no` | string | required | 1128 | field "document_no" | | `year` | string | required | 2024 | field "year" | | `document_type` | string | optional | 1 | field "document_type" | | `book_no` | string | optional | 1 | field "book_no" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `sro_code` (Sub-Registrar Office Code) | text | The office code with its sequence, as the TNREGINET list shows it, for example 20119:1 for Periyanayakkan Palayam, Coimbatore. | | `document_no` (Document Number) | text | | | `year` (Year of Registration) | year | | | `document_type` (Document Type) | select | Values: 1 (Regular document (default)), 2 (Loan order), 3 (Memo copy). | | `book_no` (Book Number) | text | Optional. Left blank, Book 1 is used. | ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "tamilnadu", "search_type": "ec_document", "params": { "sro_code": "20119:1", "document_no": "1128", "year": "2024", "document_type": "1", "book_no": "1" }, "label": "Encumbrance Certificate by Document Number (TNREGINET) - case 8841" }' ``` **Python** ```python 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": "tamilnadu", "search_type": "ec_document", "params": { "sro_code": "20119:1", "document_no": "1128", "year": "2024", "document_type": "1", "book_no": "1" }, "label": "Encumbrance Certificate by Document Number (TNREGINET) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "tamilnadu", "search_type": "ec_document", "params": { "sro_code": "20119:1", "document_no": "1128", "year": "2024", "document_type": "1", "book_no": "1" }, "label": "Encumbrance Certificate by Document Number (TNREGINET) - 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": "tamilnadu", "search_type": "ec_document", "label": "Encumbrance Certificate by Document Number (TNREGINET) - 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": "tamilnadu", "search_type": "ec_document", "label": "Encumbrance Certificate by Document Number (TNREGINET) - 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" } } ``` --- Source: https://legiscore.in/docs/states/tamilnadu/guideline-value # Guideline Value (Stamp Duty) (Tamil Nadu) The government guideline value for a Tamil Nadu village, and for one survey number in it when you give it. Without a survey number you get the village’s land-category rate table. Status: HELD. Source status: Held. Typical time: up to 3 min. state: `tamilnadu`, search_type: `guideline_value`. HELD: temporarily unavailable. A submit is refused with 422 search_unavailable and nothing is charged. Register search: found:false is not a clear title. Read the documents. ## What you get The guideline rates for the village or survey number, as the registration department publishes them. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `zone` | string | required | 1 or Chennai | field "zone" | | `sro` | string | required | Red Hills | field "sro" | | `village` | string | required | Pothur | field "village" | | `survey_no` | string | optional | 245/1 | field "survey_no" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `zone` (Zone) | text | The zone number or its English name. | | `sro` (Sub-Registrar Office) | text | The office code (20076) or its English name. A name the portal does not list is refused with the names it does. | | `village` (Village) | text | The village code (627) or its English name. | | `survey_no` (Survey Number) | text | Optional. Left blank, you get the village’s land-category rate table instead of one survey number. | ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "tamilnadu", "search_type": "guideline_value", "params": { "zone": "1 or Chennai", "sro": "Red Hills", "village": "Pothur", "survey_no": "245/1" }, "label": "Guideline Value (Stamp Duty) - case 8841" }' ``` **Python** ```python 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": "tamilnadu", "search_type": "guideline_value", "params": { "zone": "1 or Chennai", "sro": "Red Hills", "village": "Pothur", "survey_no": "245/1" }, "label": "Guideline Value (Stamp Duty) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "tamilnadu", "search_type": "guideline_value", "params": { "zone": "1 or Chennai", "sro": "Red Hills", "village": "Pothur", "survey_no": "245/1" }, "label": "Guideline Value (Stamp Duty) - 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": "tamilnadu", "search_type": "guideline_value", "label": "Guideline Value (Stamp Duty) - 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": "tamilnadu", "search_type": "guideline_value", "label": "Guideline Value (Stamp Duty) - 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" } } ``` --- Source: https://legiscore.in/docs/states/tamilnadu/property-tax # Property Tax (TN Urban ePay) (Tamil Nadu) The property tax account for a property in a Tamil Nadu municipality or corporation. Chennai is not covered here. Status: LIVE. Source status: No recent runs. Typical time: up to 2 min. state: `tamilnadu`, search_type: `property_tax`. Register search: found:false is not a clear title. Read the documents. ## What you get Matching property tax rows and the account’s dues, plus a PDF. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). - At least one of `assessment_no`, `ward`: Give the assessment number, or a ward together with a street, door number or owner name. | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `municipality` | string | required | 184 or COIMBATORE CITY MUNICIPAL CORPORATION | field "municipality" | | `assessment_no` | string | one of | 162/001/905284 | field "assessment_no" | | `ward` | string | one of | 1 or WARD-001 | field "ward" | | `street` | string | optional | | field "street" | | `door_no` | string | optional | | field "door_no" | | `owner_name` | string | optional | | field "owner_name" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `municipality` (Municipality) | text | The ULB code or its full name as TN Urban ePay lists it. | | `assessment_no` (Assessment Number) | text | | | `ward` (Ward) | text | Needed when there is no assessment number. | | `street` (Street) | text | | | `door_no` (Door Number) | text | | | `owner_name` (Owner Name) | text | | ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "tamilnadu", "search_type": "property_tax", "params": { "municipality": "184 or COIMBATORE CITY MUNICIPAL CORPORATION", "assessment_no": "162/001/905284", "ward": "1 or WARD-001", "street": "", "door_no": "", "owner_name": "" }, "label": "Property Tax (TN Urban ePay) - case 8841" }' ``` **Python** ```python 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": "tamilnadu", "search_type": "property_tax", "params": { "municipality": "184 or COIMBATORE CITY MUNICIPAL CORPORATION", "assessment_no": "162/001/905284", "ward": "1 or WARD-001", "street": "", "door_no": "", "owner_name": "" }, "label": "Property Tax (TN Urban ePay) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "tamilnadu", "search_type": "property_tax", "params": { "municipality": "184 or COIMBATORE CITY MUNICIPAL CORPORATION", "assessment_no": "162/001/905284", "ward": "1 or WARD-001", "street": "", "door_no": "", "owner_name": "" }, "label": "Property Tax (TN Urban ePay) - 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": "tamilnadu", "search_type": "property_tax", "label": "Property Tax (TN Urban ePay) - 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": "tamilnadu", "search_type": "property_tax", "label": "Property Tax (TN Urban ePay) - 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" } } ``` --- Source: https://legiscore.in/docs/states/uttarpradesh # Uttar Pradesh | Search | search_type | What it does | Status | Notes | | --- | --- | --- | --- | --- | | [Khatauni / Record of Rights (UP Bhulekh)](https://legiscore.in/docs/states/uttarpradesh/bhulekh) | bhulekh | The Khatauni for a khasra or khata number: who holds the land today, their shares and the area, as the revenue record reads. | LIVE | - | | [Plot Owners from the Map (UP Bhunaksha)](https://legiscore.in/docs/states/uttarpradesh/bhunaksha) | bhunaksha | The plot on the cadastral map for a khasra number: its khata, area and the holders the map shows. A quick second source beside the Khatauni. | LIVE | - | | [Property Tax Record (e-NagarSewa)](https://legiscore.in/docs/states/uttarpradesh/property-tax) | property_tax | The municipal property tax record for a town property: the assessed owner, father’s or husband’s name, mutation count and date, and the tax paid. | LIVE | - | | [Revenue Court Cases on a Plot (RCCMS)](https://legiscore.in/docs/states/uttarpradesh/revenue-court) | revenue_court | Every revenue court case filed on a plot (gata / khasra), with the court, the parties, the khata and the order date. Or look up one case by its number. | LIVE | - | | [RERA Registered Projects (UP RERA)](https://legiscore.in/docs/states/uttarpradesh/rera-projects) | rera_projects | Whether a housing project is registered with UP RERA, and who the promoter is. Search by registration number, project name, district or promoter. | LIVE | Register | | [Circle Rate List (IGRSUP)](https://legiscore.in/docs/states/uttarpradesh/circle-rate) | circle_rate | The circle rate (DM rate) list a sub-registrar office publishes: every period on record and the current list itself. | LIVE | Register | --- Source: https://legiscore.in/docs/states/uttarpradesh/bhulekh # Khatauni / Record of Rights (UP Bhulekh) (Uttar Pradesh) The Khatauni for a khasra or khata number: who holds the land today, their shares and the area, as the revenue record reads. Status: LIVE. Source status: No recent runs. Typical time: up to 4 min. state: `uttarpradesh`, search_type: `bhulekh`. ## What you get One record per khata: each holder with father’s or husband’s name, share and share area, plus the Khatauni as a PDF (up to 10 khatas by default). ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). - At least one of `khasra_no`, `khata_no`: Give a khasra number or a khata number. | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `district_code` | string | required | from lookup "district" | uttarpradesh_district lookup (https://legiscore.in/docs/api/lookups#uttarpradesh-uttarpradesh_district) | | `tehsil_code` | string | required | from lookup "tehsil" | uttarpradesh_tehsil lookup (https://legiscore.in/docs/api/lookups#uttarpradesh-uttarpradesh_tehsil) | | `village_code` | string | required | from lookup "village" | uttarpradesh_village lookup (https://legiscore.in/docs/api/lookups#uttarpradesh-uttarpradesh_village) | | `khasra_no` | string | one of | 67/3 | field "khasra_no" | | `khata_no` | string | one of | 243 | field "khata_no" | | `max_records` | number | optional | 10 | field "max_records" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `district` (District) | lookup | | | `tehsil` (Tehsil) | lookup | | | `village` (Village) | lookup | Type in English or Hindi. The village as the Khatauni names it. | | `khasra_no` (Khasra / Gata Number) | text | Give the khasra OR the khata, not both. Sub-plot letters in Hindi: 283ख. Max 40 characters. | | `khata_no` (Khata Number) | text | Max 5 characters. | | `max_records` (Max Records) | text | Optional, 1 to 30. A plot held under many khatas stops at this many Khataunis. Max 2 characters. | ## Resolve names to codes | Field | Lookup | Needs first | | --- | --- | --- | | district | uttarpradesh_district | - | | tehsil | uttarpradesh_tehsil | district | | village | uttarpradesh_village | district, tehsil | q is required (2+ characters), at most 10 matches. ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "uttarpradesh", "search_type": "bhulekh", "params": { "district_code": "", "tehsil_code": "", "village_code": "", "khasra_no": "67/3", "khata_no": "243", "max_records": 10 }, "label": "Khatauni / Record of Rights (UP Bhulekh) - case 8841" }' ``` **Python** ```python 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": "uttarpradesh", "search_type": "bhulekh", "params": { "district_code": "", "tehsil_code": "", "village_code": "", "khasra_no": "67/3", "khata_no": "243", "max_records": 10 }, "label": "Khatauni / Record of Rights (UP Bhulekh) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "uttarpradesh", "search_type": "bhulekh", "params": { "district_code": "", "tehsil_code": "", "village_code": "", "khasra_no": "67/3", "khata_no": "243", "max_records": 10 }, "label": "Khatauni / Record of Rights (UP Bhulekh) - 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": "uttarpradesh", "search_type": "bhulekh", "label": "Khatauni / Record of Rights (UP Bhulekh) - 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": "uttarpradesh", "search_type": "bhulekh", "label": "Khatauni / Record of Rights (UP Bhulekh) - 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" } } ``` --- Source: https://legiscore.in/docs/states/uttarpradesh/bhunaksha # Plot Owners from the Map (UP Bhunaksha) (Uttar Pradesh) The plot on the cadastral map for a khasra number: its khata, area and the holders the map shows. A quick second source beside the Khatauni. Status: LIVE. Source status: No recent runs. Typical time: up to 5 min. state: `uttarpradesh`, search_type: `bhunaksha`. ## What you get The khata, area in hectares and each holder with guardian and residence, plus a PDF. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `district_code` | string | required | from lookup "district" | uttarpradesh_district lookup (https://legiscore.in/docs/api/lookups#uttarpradesh-uttarpradesh_district) | | `tehsil_code` | string | required | from lookup "tehsil" | uttarpradesh_tehsil lookup (https://legiscore.in/docs/api/lookups#uttarpradesh-uttarpradesh_tehsil) | | `village_code` | string | required | from lookup "village" | uttarpradesh_village lookup (https://legiscore.in/docs/api/lookups#uttarpradesh-uttarpradesh_village) | | `plot_no` | string | required | 737 | field "plot_no" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `district` (District) | lookup | | | `tehsil` (Tehsil) | lookup | | | `village` (Village) | lookup | Type in English or Hindi. The village as the Khatauni names it. | | `plot_no` (Plot / Khasra Number) | text | As the map lists it, e.g. 737 or 260क. Max 40 characters. | ## Resolve names to codes | Field | Lookup | Needs first | | --- | --- | --- | | district | uttarpradesh_district | - | | tehsil | uttarpradesh_tehsil | district | | village | uttarpradesh_village | district, tehsil | q is required (2+ characters), at most 10 matches. ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "uttarpradesh", "search_type": "bhunaksha", "params": { "district_code": "", "tehsil_code": "", "village_code": "", "plot_no": "737" }, "label": "Plot Owners from the Map (UP Bhunaksha) - case 8841" }' ``` **Python** ```python 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": "uttarpradesh", "search_type": "bhunaksha", "params": { "district_code": "", "tehsil_code": "", "village_code": "", "plot_no": "737" }, "label": "Plot Owners from the Map (UP Bhunaksha) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "uttarpradesh", "search_type": "bhunaksha", "params": { "district_code": "", "tehsil_code": "", "village_code": "", "plot_no": "737" }, "label": "Plot Owners from the Map (UP Bhunaksha) - 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": "uttarpradesh", "search_type": "bhunaksha", "label": "Plot Owners from the Map (UP Bhunaksha) - 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": "uttarpradesh", "search_type": "bhunaksha", "label": "Plot Owners from the Map (UP Bhunaksha) - 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" } } ``` --- Source: https://legiscore.in/docs/states/uttarpradesh/property-tax # Property Tax Record (e-NagarSewa) (Uttar Pradesh) The municipal property tax record for a town property: the assessed owner, father’s or husband’s name, mutation count and date, and the tax paid. Status: LIVE. Source status: No recent runs. Typical time: up to 4 min. state: `uttarpradesh`, search_type: `property_tax`. ## What you get Each matching property with its owner and address, and for the first 10 the assessment, bill status and payment history, plus a PDF. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). - At least one of `property_id`, `owner_name`, `house_no`, `mobile_no`: Give a property ID, owner name, house number or mobile number. | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `ulb_code` | string | required | from lookup "ulb" | uttarpradesh_enagarsewa_ulb lookup (https://legiscore.in/docs/api/lookups#uttarpradesh-uttarpradesh_enagarsewa_ulb) | | `property_id` | string | one of | 9157A03242 | field "property_id" | | `owner_name` | string | one of | | field "owner_name" | | `house_no` | string | one of | | field "house_no" | | `mobile_no` | string | one of | 10 digits | field "mobile_no" | | `father_name` | string | optional | | field "father_name" | | `max_details` | number | optional | 10 | field "max_details" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `ulb` (Town (ULB)) | lookup | The municipal body. Noida and Greater Noida are not on e-NagarSewa. | | `property_id` (Property ID) | text | Max 40 characters. | | `owner_name` (Owner Name) | text | Max 120 characters. | | `house_no` (House Number) | text | Max 60 characters. | | `mobile_no` (Mobile Number) | text | Max 10 characters. | | `father_name` (Father’s Name) | text | Optional. Narrows an owner-name search; the portal lists at most 100 matches. Max 120 characters. | | `max_details` (Detailed Records) | text | Optional, 0 to 25. How many matches get their assessment and payments read. Max 2 characters. | ## Resolve names to codes | Field | Lookup | Needs first | | --- | --- | --- | | ulb | uttarpradesh_enagarsewa_ulb | - | q is required (2+ characters), at most 10 matches. ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "uttarpradesh", "search_type": "property_tax", "params": { "ulb_code": "", "property_id": "9157A03242", "owner_name": "", "house_no": "", "mobile_no": "10 digits", "father_name": "", "max_details": 10 }, "label": "Property Tax Record (e-NagarSewa) - case 8841" }' ``` **Python** ```python 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": "uttarpradesh", "search_type": "property_tax", "params": { "ulb_code": "", "property_id": "9157A03242", "owner_name": "", "house_no": "", "mobile_no": "10 digits", "father_name": "", "max_details": 10 }, "label": "Property Tax Record (e-NagarSewa) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "uttarpradesh", "search_type": "property_tax", "params": { "ulb_code": "", "property_id": "9157A03242", "owner_name": "", "house_no": "", "mobile_no": "10 digits", "father_name": "", "max_details": 10 }, "label": "Property Tax Record (e-NagarSewa) - 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": "uttarpradesh", "search_type": "property_tax", "label": "Property Tax Record (e-NagarSewa) - 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": "uttarpradesh", "search_type": "property_tax", "label": "Property Tax Record (e-NagarSewa) - 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" } } ``` --- Source: https://legiscore.in/docs/states/uttarpradesh/revenue-court # Revenue Court Cases on a Plot (RCCMS) (Uttar Pradesh) Every revenue court case filed on a plot (gata / khasra), with the court, the parties, the khata and the order date. Or look up one case by its number. Status: LIVE. Source status: No recent runs. Typical time: up to 5 min. state: `uttarpradesh`, search_type: `revenue_court`. ## What you get Each case with court, parties and addresses, act and section, status and dates, plus the portal’s case page as a PDF. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `case_number` | string | optional | C202310000002931 | field "case_number" | | `district_code` | string | optional | from lookup "district" | uttarpradesh_rccms_district lookup (https://legiscore.in/docs/api/lookups#uttarpradesh-uttarpradesh_rccms_district) | | `tehsil_code` | string | optional | from lookup "tehsil" | uttarpradesh_rccms_tehsil lookup (https://legiscore.in/docs/api/lookups#uttarpradesh-uttarpradesh_rccms_tehsil) | | `pargana_code` | string | optional | from lookup "pargana_code" | uttarpradesh_rccms_pargana lookup (https://legiscore.in/docs/api/lookups#uttarpradesh-uttarpradesh_rccms_pargana) | | `village_code` | string | optional | from lookup "village" | uttarpradesh_rccms_village lookup (https://legiscore.in/docs/api/lookups#uttarpradesh-uttarpradesh_rccms_village) | | `gata_no` | string | optional | 10 | field "gata_no" | | `max_cases` | number | optional | 20 | field "max_cases" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `district` (District) | lookup | District and tehsil list the villages; the search itself needs only the village and gata. | | `tehsil` (Tehsil) | lookup | | | `pargana_code` (Pargana) | lookup | Optional. Leave blank if you do not know it; the village list covers the whole tehsil. | | `village` (Village) | lookup | Type in English or Hindi. | | `gata_no` (Gata / Khasra Number) | text | Max 7 characters. | | `case_number` (Or: Case Number) | text | The computerised case number, a letter and 15 digits. Give this alone, without a plot. Max 16 characters. | | `max_cases` (Max Cases) | text | Optional, 1 to 50. Max 2 characters. | ## Resolve names to codes | Field | Lookup | Needs first | | --- | --- | --- | | district | uttarpradesh_rccms_district | - | | tehsil | uttarpradesh_rccms_tehsil | district | | pargana_code | uttarpradesh_rccms_pargana | district, tehsil | | village | uttarpradesh_rccms_village | district, tehsil | q is required (2+ characters), at most 10 matches. ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "uttarpradesh", "search_type": "revenue_court", "params": { "case_number": "C202310000002931", "district_code": "", "tehsil_code": "", "pargana_code": "", "village_code": "", "gata_no": "10", "max_cases": 20 }, "label": "Revenue Court Cases on a Plot (RCCMS) - case 8841" }' ``` **Python** ```python 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": "uttarpradesh", "search_type": "revenue_court", "params": { "case_number": "C202310000002931", "district_code": "", "tehsil_code": "", "pargana_code": "", "village_code": "", "gata_no": "10", "max_cases": 20 }, "label": "Revenue Court Cases on a Plot (RCCMS) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "uttarpradesh", "search_type": "revenue_court", "params": { "case_number": "C202310000002931", "district_code": "", "tehsil_code": "", "pargana_code": "", "village_code": "", "gata_no": "10", "max_cases": 20 }, "label": "Revenue Court Cases on a Plot (RCCMS) - 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": "uttarpradesh", "search_type": "revenue_court", "label": "Revenue Court Cases on a Plot (RCCMS) - 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": "uttarpradesh", "search_type": "revenue_court", "label": "Revenue Court Cases on a Plot (RCCMS) - 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" } } ``` --- Source: https://legiscore.in/docs/states/uttarpradesh/rera-projects # RERA Registered Projects (UP RERA) (Uttar Pradesh) Whether a housing project is registered with UP RERA, and who the promoter is. Search by registration number, project name, district or promoter. Status: LIVE. Source status: No recent runs. Typical time: up to 3 min. state: `uttarpradesh`, search_type: `rera_projects`. Register search: found:false is not a clear title. Read the documents. ## What you get Each matching project with its registration number, promoter, district and type, plus a PDF. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). - At least one of `registration_number`, `project_name`, `district`, `promoter_code`: Give a registration number, project name, district or promoter. | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `registration_number` | string | one of | UPRERAPRJ918 | field "registration_number" | | `project_name` | string | one of | At least 3 letters | field "project_name" | | `district_code` | string | one of | from lookup "district" | uttarpradesh_rera_district lookup (https://legiscore.in/docs/api/lookups#uttarpradesh-uttarpradesh_rera_district) | | `promoter_code` | string | one of | from lookup "promoter_code" | uttarpradesh_rera_promoter lookup (https://legiscore.in/docs/api/lookups#uttarpradesh-uttarpradesh_rera_promoter) | ## Field details | Field | Type | Notes | | --- | --- | --- | | `registration_number` (Registration Number) | text | Max 17 characters. | | `project_name` (Project Name) | text | Max 120 characters. | | `district` (District) | lookup | | | `promoter_code` (Promoter) | lookup | Type part of the builder’s name. | ## Resolve names to codes | Field | Lookup | Needs first | | --- | --- | --- | | district | uttarpradesh_rera_district | - | | promoter_code | uttarpradesh_rera_promoter | - | q is required (2+ characters), at most 10 matches. ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "uttarpradesh", "search_type": "rera_projects", "params": { "registration_number": "UPRERAPRJ918", "project_name": "At least 3 letters", "district_code": "", "promoter_code": "" }, "label": "RERA Registered Projects (UP RERA) - case 8841" }' ``` **Python** ```python 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": "uttarpradesh", "search_type": "rera_projects", "params": { "registration_number": "UPRERAPRJ918", "project_name": "At least 3 letters", "district_code": "", "promoter_code": "" }, "label": "RERA Registered Projects (UP RERA) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "uttarpradesh", "search_type": "rera_projects", "params": { "registration_number": "UPRERAPRJ918", "project_name": "At least 3 letters", "district_code": "", "promoter_code": "" }, "label": "RERA Registered Projects (UP RERA) - 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": "uttarpradesh", "search_type": "rera_projects", "label": "RERA Registered Projects (UP RERA) - 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": "uttarpradesh", "search_type": "rera_projects", "label": "RERA Registered Projects (UP RERA) - 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" } } ``` --- Source: https://legiscore.in/docs/states/uttarpradesh/circle-rate # Circle Rate List (IGRSUP) (Uttar Pradesh) The circle rate (DM rate) list a sub-registrar office publishes: every period on record and the current list itself. Status: LIVE. Source status: No recent runs. Typical time: up to 4 min. state: `uttarpradesh`, search_type: `circle_rate`. Register search: found:false is not a clear title. Read the documents. ## What you get Each rate-list period with its dates, the current one marked, and the scanned rate list as a PDF when it is under 19 MB. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `district_code` | string | required | from lookup "district" | uttarpradesh_igrsup_district lookup (https://legiscore.in/docs/api/lookups#uttarpradesh-uttarpradesh_igrsup_district) | | `sro_code` | string | required | from lookup "sro" | uttarpradesh_igrsup_sro lookup (https://legiscore.in/docs/api/lookups#uttarpradesh-uttarpradesh_igrsup_sro) | ## Field details | Field | Type | Notes | | --- | --- | --- | | `district` (District) | lookup | | | `sro` (Sub-Registrar Office) | lookup | Noida II, Sadar Pratham and similar are listed as the portal names them. | ## Resolve names to codes | Field | Lookup | Needs first | | --- | --- | --- | | district | uttarpradesh_igrsup_district | - | | sro | uttarpradesh_igrsup_sro | district | q is required (2+ characters), at most 10 matches. ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "uttarpradesh", "search_type": "circle_rate", "params": { "district_code": "", "sro_code": "" }, "label": "Circle Rate List (IGRSUP) - case 8841" }' ``` **Python** ```python 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": "uttarpradesh", "search_type": "circle_rate", "params": { "district_code": "", "sro_code": "" }, "label": "Circle Rate List (IGRSUP) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "uttarpradesh", "search_type": "circle_rate", "params": { "district_code": "", "sro_code": "" }, "label": "Circle Rate List (IGRSUP) - 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": "uttarpradesh", "search_type": "circle_rate", "label": "Circle Rate List (IGRSUP) - 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": "uttarpradesh", "search_type": "circle_rate", "label": "Circle Rate List (IGRSUP) - 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" } } ``` --- Source: https://legiscore.in/docs/states/haryana # Haryana | Search | search_type | What it does | Status | Notes | | --- | --- | --- | --- | --- | | [Jamabandi Nakal (Record of Rights)](https://legiscore.in/docs/states/haryana/jamabandi) | jamabandi | The Jamabandi Nakal for a khewat in a given year: the owners and cultivators, their shares, and every khasra with its area, as jamabandi.nic.in issues it. | HELD | - | | [Holdings by Owner Name](https://legiscore.in/docs/states/haryana/search-by-owner) | search_by_owner | Every khewat an owner holds in a village, from the current jamabandi, with the khasras of each holding. | HELD | - | | [Khewat / Khatoni Details](https://legiscore.in/docs/states/haryana/search-property) | search_property | The khasras of a khewat (or of one khatoni under it) from the current jamabandi: land type and area of each. Without a khewat number, the village’s khewat list. | HELD | - | | [Plot Report from the Map (BhuNaksha)](https://legiscore.in/docs/states/haryana/naksha) | naksha | One khasra on Haryana’s cadastral map: its area, the owners the map shows, and the plot drawn with its neighbours. | LIVE | - | | [Village Map (Shajra, BhuNaksha)](https://legiscore.in/docs/states/haryana/village-map) | village_map | The whole village’s cadastral map (shajra) from BhuNaksha, every khasra boundary on one sheet. | LIVE | - | --- Source: https://legiscore.in/docs/states/haryana/jamabandi # Jamabandi Nakal (Record of Rights) (Haryana) The Jamabandi Nakal for a khewat in a given year: the owners and cultivators, their shares, and every khasra with its area, as jamabandi.nic.in issues it. Status: HELD. Source status: Held. Typical time: up to 7 min. state: `haryana`, search_type: `jamabandi`. HELD: temporarily unavailable. A submit is refused with 422 search_unavailable and nothing is charged. ## What you get The Nakal’s owners, cultivators and khasras with areas, the khatoni numbers, and the Nakal as a PDF. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `district_code` | string | required | from lookup "district" | hr_district lookup (https://legiscore.in/docs/api/lookups#haryana-hr_district) | | `tehsil_code` | string | required | from lookup "tehsil" | hr_tehsil lookup (https://legiscore.in/docs/api/lookups#haryana-hr_tehsil) | | `village_code` | string | required | from lookup "village" | hr_village lookup (https://legiscore.in/docs/api/lookups#haryana-hr_village) | | `year` | string | required | 2020-2021 | field "year" | | `khewat_number` | string | required | 69 | field "khewat_number" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `district` (District) | lookup | | | `tehsil` (Tehsil) | lookup | | | `village` (Village) | lookup | Type in English or Hindi. The village as the jamabandi names it. | | `year` (Jamabandi Year) | text | As the Nakal heads it. A year the village does not have is refused with the years it does. Max 9 characters. | | `khewat_number` (Khewat Number) | text | Max 10 characters. | ## Resolve names to codes | Field | Lookup | Needs first | | --- | --- | --- | | district | hr_district | - | | tehsil | hr_tehsil | district | | village | hr_village | district, tehsil | q is required (2+ characters), at most 10 matches. ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "jamabandi", "params": { "district_code": "", "tehsil_code": "", "village_code": "", "year": "2020-2021", "khewat_number": "69" }, "label": "Jamabandi Nakal (Record of Rights) - case 8841" }' ``` **Python** ```python 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": "jamabandi", "params": { "district_code": "", "tehsil_code": "", "village_code": "", "year": "2020-2021", "khewat_number": "69" }, "label": "Jamabandi Nakal (Record of Rights) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "jamabandi", "params": { "district_code": "", "tehsil_code": "", "village_code": "", "year": "2020-2021", "khewat_number": "69" }, "label": "Jamabandi Nakal (Record of Rights) - 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": "haryana", "search_type": "jamabandi", "label": "Jamabandi Nakal (Record of Rights) - 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": "haryana", "search_type": "jamabandi", "label": "Jamabandi Nakal (Record of Rights) - 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" } } ``` --- Source: https://legiscore.in/docs/states/haryana/search-by-owner # Holdings by Owner Name (Haryana) Every khewat an owner holds in a village, from the current jamabandi, with the khasras of each holding. Status: HELD. Source status: Held. Typical time: up to 7 min. state: `haryana`, search_type: `search_by_owner`. HELD: temporarily unavailable. A submit is refused with 422 search_unavailable and nothing is charged. ## 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 Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `district_code` | string | required | from lookup "district" | hr_district lookup (https://legiscore.in/docs/api/lookups#haryana-hr_district) | | `tehsil_code` | string | required | from lookup "tehsil" | hr_tehsil lookup (https://legiscore.in/docs/api/lookups#haryana-hr_tehsil) | | `village_code` | string | required | from lookup "village" | hr_village lookup (https://legiscore.in/docs/api/lookups#haryana-hr_village) | | `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 | | --- | --- | --- | | `district` (District) | lookup | | | `tehsil` (Tehsil) | lookup | | | `village` (Village) | lookup | Type in English or Hindi. The village as the jamabandi names it. | | `owner_name` (Owner 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_type` (Owner 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_details` (Holdings 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 | Field | Lookup | Needs first | | --- | --- | --- | | district | hr_district | - | | tehsil | hr_tehsil | district | | village | hr_village | district, tehsil | q is required (2+ characters), at most 10 matches. ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "", "tehsil_code": "", "village_code": "", "owner_name": "रिन्कु", "owner_type": "1", "max_details": 5 }, "label": "Holdings by Owner Name - case 8841" }' ``` **Python** ```python 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": "", "tehsil_code": "", "village_code": "", "owner_name": "रिन्कु", "owner_type": "1", "max_details": 5 }, "label": "Holdings by Owner Name - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "", "tehsil_code": "", "village_code": "", "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: ```json { "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: ```json { "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" } } ``` --- Source: https://legiscore.in/docs/states/haryana/search-property # Khewat / Khatoni Details (Haryana) The khasras of a khewat (or of one khatoni under it) from the current jamabandi: land type and area of each. Without a khewat number, the village’s khewat list. Status: HELD. Source status: Held. Typical time: up to 7 min. state: `haryana`, search_type: `search_property`. HELD: temporarily unavailable. A submit is refused with 422 search_unavailable and nothing is charged. ## What you get Each khasra with its land type and area, the owners as listed, and the portal’s page as a PDF. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `district_code` | string | required | from lookup "district" | hr_district lookup (https://legiscore.in/docs/api/lookups#haryana-hr_district) | | `tehsil_code` | string | required | from lookup "tehsil" | hr_tehsil lookup (https://legiscore.in/docs/api/lookups#haryana-hr_tehsil) | | `village_code` | string | required | from lookup "village" | hr_village lookup (https://legiscore.in/docs/api/lookups#haryana-hr_village) | | `record_type` | string | required | khewat | field "record_type" | | `khewat_number` | string | optional | 69 | field "khewat_number" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `district` (District) | lookup | | | `tehsil` (Tehsil) | lookup | | | `village` (Village) | lookup | Type in English or Hindi. The village as the jamabandi names it. | | `record_type` (Record) | select | Values: khewat (Khewat), khatoni (One khatoni under a khewat). | | `khewat_number` (Khewat Number) | text | Leave blank for the village’s list of khewats. Max 10 characters. | | `khatoni_number` (Khatoni Number) | text | Only when record_type is "khatoni". Max 10 characters. | ## Resolve names to codes | Field | Lookup | Needs first | | --- | --- | --- | | district | hr_district | - | | tehsil | hr_tehsil | district | | village | hr_village | district, tehsil | q is required (2+ characters), at most 10 matches. ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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_property", "params": { "district_code": "", "tehsil_code": "", "village_code": "", "record_type": "khewat", "khewat_number": "69" }, "label": "Khewat / Khatoni Details - case 8841" }' ``` **Python** ```python 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_property", "params": { "district_code": "", "tehsil_code": "", "village_code": "", "record_type": "khewat", "khewat_number": "69" }, "label": "Khewat / Khatoni Details - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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_property", "params": { "district_code": "", "tehsil_code": "", "village_code": "", "record_type": "khewat", "khewat_number": "69" }, "label": "Khewat / Khatoni Details - 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": "haryana", "search_type": "search_property", "label": "Khewat / Khatoni Details - 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": "haryana", "search_type": "search_property", "label": "Khewat / Khatoni Details - 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" } } ``` --- Source: https://legiscore.in/docs/states/haryana/naksha # Plot Report from the Map (BhuNaksha) (Haryana) One khasra on Haryana’s cadastral map: its area, the owners the map shows, and the plot drawn with its neighbours. Status: LIVE. Source status: No recent runs. Typical time: up to 3 min. state: `haryana`, search_type: `naksha`. ## What you get The plot’s area and owners as BhuNaksha lists them, and a PDF with the plot map. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `district_code` | string | required | from lookup "district" | hr_district lookup (https://legiscore.in/docs/api/lookups#haryana-hr_district) | | `tehsil_code` | string | required | from lookup "tehsil" | hr_tehsil lookup (https://legiscore.in/docs/api/lookups#haryana-hr_tehsil) | | `village_code` | string | required | from lookup "village" | hr_village lookup (https://legiscore.in/docs/api/lookups#haryana-hr_village) | | `plot_no` | string | required | 66//7/2 | field "plot_no" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `district` (District) | lookup | | | `tehsil` (Tehsil) | lookup | | | `village` (Village) | lookup | Type in English or Hindi. The village as the jamabandi names it. | | `plot_no` (Khasra Number) | text | As the map numbers it: rectangle//killa, e.g. 66//7/2, or a plain number like 752. Max 40 characters. | ## Resolve names to codes | Field | Lookup | Needs first | | --- | --- | --- | | district | hr_district | - | | tehsil | hr_tehsil | district | | village | hr_village | district, tehsil | q is required (2+ characters), at most 10 matches. ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "naksha", "params": { "district_code": "", "tehsil_code": "", "village_code": "", "plot_no": "66//7/2" }, "label": "Plot Report from the Map (BhuNaksha) - case 8841" }' ``` **Python** ```python 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": "naksha", "params": { "district_code": "", "tehsil_code": "", "village_code": "", "plot_no": "66//7/2" }, "label": "Plot Report from the Map (BhuNaksha) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "naksha", "params": { "district_code": "", "tehsil_code": "", "village_code": "", "plot_no": "66//7/2" }, "label": "Plot Report from the Map (BhuNaksha) - 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": "haryana", "search_type": "naksha", "label": "Plot Report from the Map (BhuNaksha) - 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": "haryana", "search_type": "naksha", "label": "Plot Report from the Map (BhuNaksha) - 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" } } ``` --- Source: https://legiscore.in/docs/states/haryana/village-map # Village Map (Shajra, BhuNaksha) (Haryana) The whole village’s cadastral map (shajra) from BhuNaksha, every khasra boundary on one sheet. Status: LIVE. Source status: No recent runs. Typical time: up to 3 min. state: `haryana`, search_type: `village_map`. ## What you get The village map as a PDF. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `district_code` | string | required | from lookup "district" | hr_district lookup (https://legiscore.in/docs/api/lookups#haryana-hr_district) | | `tehsil_code` | string | required | from lookup "tehsil" | hr_tehsil lookup (https://legiscore.in/docs/api/lookups#haryana-hr_tehsil) | | `village_code` | string | required | from lookup "village" | hr_village lookup (https://legiscore.in/docs/api/lookups#haryana-hr_village) | ## Field details | Field | Type | Notes | | --- | --- | --- | | `district` (District) | lookup | | | `tehsil` (Tehsil) | lookup | | | `village` (Village) | lookup | Type in English or Hindi. The village as the jamabandi names it. | ## Resolve names to codes | Field | Lookup | Needs first | | --- | --- | --- | | district | hr_district | - | | tehsil | hr_tehsil | district | | village | hr_village | district, tehsil | q is required (2+ characters), at most 10 matches. ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "village_map", "params": { "district_code": "", "tehsil_code": "", "village_code": "" }, "label": "Village Map (Shajra, BhuNaksha) - case 8841" }' ``` **Python** ```python 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": "village_map", "params": { "district_code": "", "tehsil_code": "", "village_code": "" }, "label": "Village Map (Shajra, BhuNaksha) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "village_map", "params": { "district_code": "", "tehsil_code": "", "village_code": "" }, "label": "Village Map (Shajra, BhuNaksha) - 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": "haryana", "search_type": "village_map", "label": "Village Map (Shajra, BhuNaksha) - 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": "haryana", "search_type": "village_map", "label": "Village Map (Shajra, BhuNaksha) - 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" } } ``` --- Source: https://legiscore.in/docs/states/kerala # Kerala | Search | search_type | What it does | Status | Notes | | --- | --- | --- | --- | --- | | [Fair Value of Land (IGR)](https://legiscore.in/docs/states/kerala/fair-value) | fair_value | The government-notified fair value of a survey parcel, the minimum value stamp duty is charged on. | LIVE | - | | [Land Tax & Ownership (ReLIS)](https://legiscore.in/docs/states/kerala/land-tax) | land_tax | Who holds a parcel and whether its land tax is paid, from the Revenue Department, by resurvey number or thandaper number. | LIVE | - | | [Digital Survey Parcel Map (Ente Bhoomi)](https://legiscore.in/docs/states/kerala/bhunaksha) | bhunaksha | A parcel on the Survey Department's digital survey map, by its digital block and survey number. | LIVE | - | --- Source: https://legiscore.in/docs/states/kerala/fair-value # Fair Value of Land (IGR) (Kerala) The government-notified fair value of a survey parcel, the minimum value stamp duty is charged on. Status: LIVE. Source status: No recent runs. Typical time: up to 3 min. state: `kerala`, search_type: `fair_value`. ## What you get The notified value per Are for each sub-division and land class, including later RDO notifications and Collector appeal fixations, with the Kerala Gazette extract as a PDF. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `district` | string | required | from lookup "district" | kerala_igr_district lookup (https://legiscore.in/docs/api/lookups#kerala-kerala_igr_district) | | `taluk` | string | required | from lookup "taluk" | kerala_igr_taluk lookup (https://legiscore.in/docs/api/lookups#kerala-kerala_igr_taluk) | | `village` | string | required | from lookup "village" | kerala_igr_village lookup (https://legiscore.in/docs/api/lookups#kerala-kerala_igr_village) | | `survey_no` | string | required | 2 | field "survey_no" | | `subdiv_no` | string | optional | Optional | field "subdiv_no" | | `block_no` | string | optional | Optional | field "block_no" | | `resurvey_no` | string | optional | Optional | field "resurvey_no" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `district` (District) | lookup | | | `taluk` (Taluk) | lookup | | | `village` (Village) | lookup | As the Registration Department lists it. | | `survey_no` (Survey Number) | text | Leading zeros are optional: 2 also finds the register's 02. Max 20 characters. | | `subdiv_no` (Sub-division) | text | Max 20 characters. | | `block_no` (Block Number) | text | Max 20 characters. | | `resurvey_no` (Re-survey Number) | text | For digitally re-surveyed villages. Max 20 characters. | | `land_type` (Land Type) | select | Leave on all classes unless the deed states one. Values: (All land classes), Coastal belt (Coastal belt), Commercially important Plot (Commercially important Plot), Dry Land (Dry Land), Garden Land with road access (Garden Land with road access), Garden Land without road access (Garden Land without road access), Government Property (Government Property), Hill Tract with road access (Hill Tract with road access), Hill Tract without road access (Hill Tract without road access), Others (Others), Residential & commercial property without road access (Residential & commercial property without road access), Residential Plot with Corp./Mun./Panch. road access (Residential Plot with Corp./Mun./Panch. road access), Residential Plot with NH/PWD road access (Residential Plot with NH/PWD road access), Residential Plot with private road access (Residential Plot with private road access), Residential plot without private road access (Residential plot without private road access), Residential Plot without vehicular access (Residential Plot without vehicular access), Rocky land (Rocky land), Waste land (Waste land), Water logged land (Water logged land), Wet land (Wet land). | ## Resolve names to codes | Field | Lookup | Needs first | | --- | --- | --- | | district | kerala_igr_district | - | | taluk | kerala_igr_taluk | district | | village | kerala_igr_village | district, taluk | q is required (2+ characters), at most 10 matches. ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "kerala", "search_type": "fair_value", "params": { "district": "", "taluk": "", "village": "", "survey_no": "2", "subdiv_no": "Optional", "block_no": "Optional", "resurvey_no": "Optional" }, "label": "Fair Value of Land (IGR) - case 8841" }' ``` **Python** ```python 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": "kerala", "search_type": "fair_value", "params": { "district": "", "taluk": "", "village": "", "survey_no": "2", "subdiv_no": "Optional", "block_no": "Optional", "resurvey_no": "Optional" }, "label": "Fair Value of Land (IGR) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "kerala", "search_type": "fair_value", "params": { "district": "", "taluk": "", "village": "", "survey_no": "2", "subdiv_no": "Optional", "block_no": "Optional", "resurvey_no": "Optional" }, "label": "Fair Value of Land (IGR) - 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": "kerala", "search_type": "fair_value", "label": "Fair Value of Land (IGR) - 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": "kerala", "search_type": "fair_value", "label": "Fair Value of Land (IGR) - 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" } } ``` --- Source: https://legiscore.in/docs/states/kerala/land-tax # Land Tax & Ownership (ReLIS) (Kerala) Who holds a parcel and whether its land tax is paid, from the Revenue Department, by resurvey number or thandaper number. Status: LIVE. Source status: No recent runs. Typical time: up to 5 min. state: `kerala`, search_type: `land_tax`. Coverage note: Not found in ReLIS. ReLIS covers only land whose ownership was updated or whose tax was paid through it, so this is not proof that no land-tax or ownership record exists. ## What you get Thandaper number and holder with address, area, the last land tax paid and any arrear or current dues, for each parcel. ReLIS covers only land updated through it, so "not found" is not proof that no record exists. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). - At least one of `survey_no`, `thandaper_no`: Give the resurvey number or the thandaper number. | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `village_code` | string | required | from lookup "village" | kerala_relis_village lookup (https://legiscore.in/docs/api/lookups#kerala-kerala_relis_village) | | `block_no` | string | required | 1 | field "block_no" | | `survey_no` | string | one of | 10 | field "survey_no" | | `subdiv_no` | string | optional | Optional | field "subdiv_no" | | `thandaper_no` | string | one of | 256 | field "thandaper_no" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `district` (District) | lookup | | | `taluk` (Taluk) | lookup | | | `village` (Village) | lookup | As the Revenue Department lists it. Only resurveyed villages can be searched. | | `block_no` (Block Number) | text | The resurvey block printed on the deed or tax receipt. Max 4 characters. | | `survey_no` (Resurvey Number) | text | Max 10 characters. | | `subdiv_no` (Subdivision) | text | Max 10 characters. | | `thandaper_no` (Thandaper Number) | text | Instead of the resurvey number: every parcel of the holding is returned. Max 10 characters. | ## Resolve names to codes | Field | Lookup | Needs first | | --- | --- | --- | | district | kerala_relis_district | - | | taluk | kerala_relis_taluk | district | | village | kerala_relis_village | district, taluk | q is required (2+ characters), at most 10 matches. ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "kerala", "search_type": "land_tax", "params": { "village_code": "", "block_no": "1", "survey_no": "10", "subdiv_no": "Optional", "thandaper_no": "256" }, "label": "Land Tax & Ownership (ReLIS) - case 8841" }' ``` **Python** ```python 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": "kerala", "search_type": "land_tax", "params": { "village_code": "", "block_no": "1", "survey_no": "10", "subdiv_no": "Optional", "thandaper_no": "256" }, "label": "Land Tax & Ownership (ReLIS) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "kerala", "search_type": "land_tax", "params": { "village_code": "", "block_no": "1", "survey_no": "10", "subdiv_no": "Optional", "thandaper_no": "256" }, "label": "Land Tax & Ownership (ReLIS) - 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": "kerala", "search_type": "land_tax", "label": "Land Tax & Ownership (ReLIS) - 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": "kerala", "search_type": "land_tax", "label": "Land Tax & Ownership (ReLIS) - 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" } } ``` --- Source: https://legiscore.in/docs/states/kerala/bhunaksha # Digital Survey Parcel Map (Ente Bhoomi) (Kerala) A parcel on the Survey Department's digital survey map, by its digital block and survey number. Status: LIVE. Source status: No recent runs. Typical time: up to 3 min. state: `kerala`, search_type: `bhunaksha`. ## What you get Area in hectares, Are and square metres, land type and use, the ULPIN, the parcel outline, and the old block, survey and thandaper numbers it replaced, with the department's page. Only villages with a published digital map can be searched. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `village_code` | string | required | from lookup "village" | kerala_relis_village lookup (https://legiscore.in/docs/api/lookups#kerala-kerala_relis_village) | | `digital_block_no` | string | required | 1 | field "digital_block_no" | | `digital_survey_no` | string | required | 25 | field "digital_survey_no" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `district` (District) | lookup | | | `taluk` (Taluk) | lookup | | | `village` (Village) | lookup | Only villages with a published digital survey map can be searched. | | `digital_block_no` (Digital Block Number) | text | From the digital survey (Ente Bhoomi), not the resurvey block on an older deed. Max 4 characters. | | `digital_survey_no` (Digital Survey Number) | text | From the digital survey, not the resurvey number. The result lists the old numbers it replaced. Max 10 characters. | ## Resolve names to codes | Field | Lookup | Needs first | | --- | --- | --- | | district | kerala_relis_district | - | | taluk | kerala_relis_taluk | district | | village | kerala_relis_village | district, taluk | q is required (2+ characters), at most 10 matches. ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "kerala", "search_type": "bhunaksha", "params": { "village_code": "", "digital_block_no": "1", "digital_survey_no": "25" }, "label": "Digital Survey Parcel Map (Ente Bhoomi) - case 8841" }' ``` **Python** ```python 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": "kerala", "search_type": "bhunaksha", "params": { "village_code": "", "digital_block_no": "1", "digital_survey_no": "25" }, "label": "Digital Survey Parcel Map (Ente Bhoomi) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "kerala", "search_type": "bhunaksha", "params": { "village_code": "", "digital_block_no": "1", "digital_survey_no": "25" }, "label": "Digital Survey Parcel Map (Ente Bhoomi) - 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": "kerala", "search_type": "bhunaksha", "label": "Digital Survey Parcel Map (Ente Bhoomi) - 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": "kerala", "search_type": "bhunaksha", "label": "Digital Survey Parcel Map (Ente Bhoomi) - 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" } } ``` --- Source: https://legiscore.in/docs/states/odisha # Odisha | Search | search_type | What it does | Status | Notes | | --- | --- | --- | --- | --- | | [Plot Map and Plot Details (Odisha BhuNaksha)](https://legiscore.in/docs/states/odisha/bhunaksha) | bhunaksha | A plot on the state’s cadastral map: the holder the map shows, its area and khatiyan number, with the plot report. | LIVE | - | | [Record of Rights (Odisha Bhulekh Khatiyan)](https://legiscore.in/docs/states/odisha/ror) | ror | The khatiyan for a village by khatiyan number, plot number or holder name, from Bhulekh. | LIVE | - | --- Source: https://legiscore.in/docs/states/odisha/bhunaksha # Plot Map and Plot Details (Odisha BhuNaksha) (Odisha) A plot on the state’s cadastral map: the holder the map shows, its area and khatiyan number, with the plot report. Status: LIVE. Source status: No recent runs. Typical time: up to 4 min. state: `odisha`, search_type: `bhunaksha`. ## What you get Holder name, area in acres and khatiyan number, plus the state’s plot report (map and details) as a PDF. Without a plot number, the village’s map sheet. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `district_code` | string | required | from lookup "district" | odisha_district lookup (https://legiscore.in/docs/api/lookups#odisha-odisha_district) | | `tehsil_code` | string | required | from lookup "tehsil" | odisha_tehsil lookup (https://legiscore.in/docs/api/lookups#odisha-odisha_tehsil) | | `ri_code` | string | required | from lookup "ri" | odisha_ri lookup (https://legiscore.in/docs/api/lookups#odisha-odisha_ri) | | `village_code` | string | required | from lookup "village" | odisha_village lookup (https://legiscore.in/docs/api/lookups#odisha-odisha_village) | | `plot_no` | string | optional | 500 | field "plot_no" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `district` (District) | lookup | | | `tehsil` (Tehsil) | lookup | | | `ri` (RI Circle) | lookup | | | `village` (Village (Mouza)) | lookup | Only the districts BhuNaksha has mapped so far: Kalahandi, Sundargarh, Nuapada. | | `plot_no` (Plot Number) | text | Optional. Leave blank for the village map sheet. Max 20 characters. | ## Resolve names to codes | Field | Lookup | Needs first | | --- | --- | --- | | district | odisha_district | - | | tehsil | odisha_tehsil | district | | ri | odisha_ri | district, tehsil | | village | odisha_village | district, tehsil, ri | q is required (2+ characters), at most 10 matches. ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "odisha", "search_type": "bhunaksha", "params": { "district_code": "", "tehsil_code": "", "ri_code": "", "village_code": "", "plot_no": "500" }, "label": "Plot Map and Plot Details (Odisha BhuNaksha) - case 8841" }' ``` **Python** ```python 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": "odisha", "search_type": "bhunaksha", "params": { "district_code": "", "tehsil_code": "", "ri_code": "", "village_code": "", "plot_no": "500" }, "label": "Plot Map and Plot Details (Odisha BhuNaksha) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "odisha", "search_type": "bhunaksha", "params": { "district_code": "", "tehsil_code": "", "ri_code": "", "village_code": "", "plot_no": "500" }, "label": "Plot Map and Plot Details (Odisha BhuNaksha) - 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": "odisha", "search_type": "bhunaksha", "label": "Plot Map and Plot Details (Odisha BhuNaksha) - 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": "odisha", "search_type": "bhunaksha", "label": "Plot Map and Plot Details (Odisha BhuNaksha) - 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" } } ``` --- Source: https://legiscore.in/docs/states/odisha/ror # Record of Rights (Odisha Bhulekh Khatiyan) (Odisha) The khatiyan for a village by khatiyan number, plot number or holder name, from Bhulekh. Status: LIVE. Source status: No recent runs. Typical time: up to 4 min. state: `odisha`, search_type: `ror`. ## What you get Holders with father’s name, caste and residence, status, rent and dues, and every plot in the khatiyan with its kisam and area, plus a printed copy of each khatiyan. A plot on several khatiyans returns each of them (up to 10). ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). - Exactly one of `khatiyan_no`, `plot_no`, `tenant_name`: Give one of: khatiyan number, plot number or holder name. | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `district_code` | string | required | from lookup "district" | odisha_district lookup (https://legiscore.in/docs/api/lookups#odisha-odisha_district) | | `tehsil_code` | string | required | from lookup "tehsil" | odisha_tehsil lookup (https://legiscore.in/docs/api/lookups#odisha-odisha_tehsil) | | `ri_code` | string | required | from lookup "ri" | odisha_ri lookup (https://legiscore.in/docs/api/lookups#odisha-odisha_ri) | | `village_code` | string | required | from lookup "village" | odisha_village lookup (https://legiscore.in/docs/api/lookups#odisha-odisha_village) | | `khatiyan_no` | string | one of | 112/336 | field "khatiyan_no" | | `plot_no` | string | one of | 500 | field "plot_no" | | `tenant_name` | string | one of | | field "tenant_name" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `district` (District) | lookup | | | `tehsil` (Tehsil) | lookup | | | `ri` (RI Circle) | lookup | | | `village` (Village (Mouza)) | lookup | Only the districts BhuNaksha has mapped so far: Kalahandi, Sundargarh, Nuapada. | | `khatiyan_no` (Khatiyan Number) | text | Max 30 characters. | | `plot_no` (Plot Number) | text | Max 30 characters. | | `tenant_name` (Holder Name) | text | Part of the name as Bhulekh writes it, in Odia. Max 80 characters. | ## Resolve names to codes | Field | Lookup | Needs first | | --- | --- | --- | | district | odisha_district | - | | tehsil | odisha_tehsil | district | | ri | odisha_ri | district, tehsil | | village | odisha_village | district, tehsil, ri | q is required (2+ characters), at most 10 matches. ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "odisha", "search_type": "ror", "params": { "district_code": "", "tehsil_code": "", "ri_code": "", "village_code": "", "khatiyan_no": "112/336", "plot_no": "500", "tenant_name": "" }, "label": "Record of Rights (Odisha Bhulekh Khatiyan) - case 8841" }' ``` **Python** ```python 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": "odisha", "search_type": "ror", "params": { "district_code": "", "tehsil_code": "", "ri_code": "", "village_code": "", "khatiyan_no": "112/336", "plot_no": "500", "tenant_name": "" }, "label": "Record of Rights (Odisha Bhulekh Khatiyan) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "odisha", "search_type": "ror", "params": { "district_code": "", "tehsil_code": "", "ri_code": "", "village_code": "", "khatiyan_no": "112/336", "plot_no": "500", "tenant_name": "" }, "label": "Record of Rights (Odisha Bhulekh Khatiyan) - 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": "odisha", "search_type": "ror", "label": "Record of Rights (Odisha Bhulekh Khatiyan) - 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": "odisha", "search_type": "ror", "label": "Record of Rights (Odisha Bhulekh Khatiyan) - 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" } } ``` --- Source: https://legiscore.in/docs/states/goa # Goa | Search | search_type | What it does | Status | Notes | | --- | --- | --- | --- | --- | | [Record of Rights, Form I & XIV (Goa Online)](https://legiscore.in/docs/states/goa/land-info) | land_info | The Form I & XIV for a survey and subdivision: who occupies the land, by which mutation, and its area. | LIVE | - | | [Survey Plan (Goa Bhunaksha)](https://legiscore.in/docs/states/goa/bhunaksha) | bhunaksha | The land records department’s survey plan for a survey and subdivision. | LIVE | - | | [Public Mutation Notices (Goa)](https://legiscore.in/docs/states/goa/mutation-notices) | mutation_notices | Every public mutation notice for a village, or for one survey in it: a pending change of name on the land. | LIVE | - | --- Source: https://legiscore.in/docs/states/goa/land-info # Record of Rights, Form I & XIV (Goa Online) (Goa) The Form I & XIV for a survey and subdivision: who occupies the land, by which mutation, and its area. Status: LIVE. Source status: No recent runs. Typical time: up to 4 min. state: `goa`, search_type: `land_info`. ## What you get Occupants with their mutation numbers and remarks, tenants, other rights, areas and assessment, plus a printed copy. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `taluka` | string | required | from lookup "taluka" | goa_taluka lookup (https://legiscore.in/docs/api/lookups#goa-goa_taluka) | | `village` | string | required | from lookup "village" | goa_village lookup (https://legiscore.in/docs/api/lookups#goa-goa_village) | | `survey_no` | string | required | 380 | field "survey_no" | | `subdiv_no` | string | required | 2 or 2-A | field "subdiv_no" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `taluka` (Taluka) | lookup | | | `village` (Village) | lookup | | | `survey_no` (Survey Number) | text | Max 20 characters. | | `subdiv_no` (Subdivision Number) | text | As the portal lists it under the survey, e.g. 0, 2 or 2-A. Max 20 characters. | ## Resolve names to codes | Field | Lookup | Needs first | | --- | --- | --- | | taluka | goa_taluka | - | | village | goa_village | taluka | q is required (2+ characters), at most 10 matches. ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "goa", "search_type": "land_info", "params": { "taluka": "", "village": "", "survey_no": "380", "subdiv_no": "2 or 2-A" }, "label": "Record of Rights, Form I & XIV (Goa Online) - case 8841" }' ``` **Python** ```python 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": "goa", "search_type": "land_info", "params": { "taluka": "", "village": "", "survey_no": "380", "subdiv_no": "2 or 2-A" }, "label": "Record of Rights, Form I & XIV (Goa Online) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "goa", "search_type": "land_info", "params": { "taluka": "", "village": "", "survey_no": "380", "subdiv_no": "2 or 2-A" }, "label": "Record of Rights, Form I & XIV (Goa Online) - 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": "goa", "search_type": "land_info", "label": "Record of Rights, Form I & XIV (Goa Online) - 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": "goa", "search_type": "land_info", "label": "Record of Rights, Form I & XIV (Goa Online) - 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" } } ``` --- Source: https://legiscore.in/docs/states/goa/bhunaksha # Survey Plan (Goa Bhunaksha) (Goa) The land records department’s survey plan for a survey and subdivision. Status: LIVE. Source status: No recent runs. Typical time: up to 3 min. state: `goa`, search_type: `bhunaksha`. ## What you get The department’s own Survey Plan PDF. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `taluka` | string | required | from lookup "taluka" | goa_taluka lookup (https://legiscore.in/docs/api/lookups#goa-goa_taluka) | | `village` | string | required | from lookup "village" | goa_village lookup (https://legiscore.in/docs/api/lookups#goa-goa_village) | | `survey_no` | string | required | 380 | field "survey_no" | | `subdiv_no` | string | optional | 2 or 2-A | field "subdiv_no" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `taluka` (Taluka) | lookup | | | `village` (Village) | lookup | | | `survey_no` (Survey Number) | text | Max 20 characters. | | `subdiv_no` (Subdivision Number) | text | Optional when the survey has only one subdivision. Max 20 characters. | ## Resolve names to codes | Field | Lookup | Needs first | | --- | --- | --- | | taluka | goa_taluka | - | | village | goa_village | taluka | q is required (2+ characters), at most 10 matches. ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "goa", "search_type": "bhunaksha", "params": { "taluka": "", "village": "", "survey_no": "380", "subdiv_no": "2 or 2-A" }, "label": "Survey Plan (Goa Bhunaksha) - case 8841" }' ``` **Python** ```python 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": "goa", "search_type": "bhunaksha", "params": { "taluka": "", "village": "", "survey_no": "380", "subdiv_no": "2 or 2-A" }, "label": "Survey Plan (Goa Bhunaksha) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "goa", "search_type": "bhunaksha", "params": { "taluka": "", "village": "", "survey_no": "380", "subdiv_no": "2 or 2-A" }, "label": "Survey Plan (Goa Bhunaksha) - 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": "goa", "search_type": "bhunaksha", "label": "Survey Plan (Goa Bhunaksha) - 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": "goa", "search_type": "bhunaksha", "label": "Survey Plan (Goa Bhunaksha) - 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" } } ``` --- Source: https://legiscore.in/docs/states/goa/mutation-notices # Public Mutation Notices (Goa) (Goa) Every public mutation notice for a village, or for one survey in it: a pending change of name on the land. Status: LIVE. Source status: No recent runs. Typical time: up to 4 min. state: `goa`, search_type: `mutation_notices`. ## What you get Mutation number, applicant, notice date, respondents and survey for each notice (up to 250), plus a PDF list. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `taluka` | string | required | from lookup "taluka" | goa_taluka lookup (https://legiscore.in/docs/api/lookups#goa-goa_taluka) | | `village` | string | required | from lookup "village" | goa_village lookup (https://legiscore.in/docs/api/lookups#goa-goa_village) | | `survey_no` | string | optional | 380 | field "survey_no" | | `subdiv_no` | string | optional | 2 or 2-A | field "subdiv_no" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `taluka` (Taluka) | lookup | | | `village` (Village) | lookup | | | `survey_no` (Survey Number) | text | Optional. Blank lists the whole village. Max 20 characters. | | `subdiv_no` (Subdivision Number) | text | Optional, and only with a survey number. Max 20 characters. | ## Resolve names to codes | Field | Lookup | Needs first | | --- | --- | --- | | taluka | goa_taluka | - | | village | goa_village | taluka | q is required (2+ characters), at most 10 matches. ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "goa", "search_type": "mutation_notices", "params": { "taluka": "", "village": "", "survey_no": "380", "subdiv_no": "2 or 2-A" }, "label": "Public Mutation Notices (Goa) - case 8841" }' ``` **Python** ```python 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": "goa", "search_type": "mutation_notices", "params": { "taluka": "", "village": "", "survey_no": "380", "subdiv_no": "2 or 2-A" }, "label": "Public Mutation Notices (Goa) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "goa", "search_type": "mutation_notices", "params": { "taluka": "", "village": "", "survey_no": "380", "subdiv_no": "2 or 2-A" }, "label": "Public Mutation Notices (Goa) - 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": "goa", "search_type": "mutation_notices", "label": "Public Mutation Notices (Goa) - 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": "goa", "search_type": "mutation_notices", "label": "Public Mutation Notices (Goa) - 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" } } ``` --- Source: https://legiscore.in/docs/states/gujarat # Gujarat | Search | search_type | What it does | Status | Notes | | --- | --- | --- | --- | --- | | [7/12 Utara (current record of rights)](https://legiscore.in/docs/states/gujarat/utara-712) | utara_712 | The current 7/12 for a survey number: the holders, the area and tenure, and the rights, liabilities and mutation entries on it. | LIVE | - | | [8A Khata (holdings of one account)](https://legiscore.in/docs/states/gujarat/khata-8a) | khata_8a | Every survey number one khata holds in the village, with the area and assessment of each. | LIVE | - | | [Ferfar (VF-6 mutation entry)](https://legiscore.in/docs/states/gujarat/ferfar-6a) | ferfar_6a | One mutation entry from the village’s Form 6 register: what changed hands, between whom, and whether it was certified. | LIVE | - | | [Old Ferfar (scanned VF-6 entry)](https://legiscore.in/docs/states/gujarat/old-ferfar-6a) | old_ferfar_6a | One entry from the old, pre-computerisation mutation register, as the scanned page. | LIVE | - | | [Old 7/12 (scanned, by year range)](https://legiscore.in/docs/states/gujarat/old-satbar-712) | old_satbar_712 | The old, pre-computerisation 7/12 for a survey number: every scanned year range the portal holds. | LIVE | - | | [Property Card (urban, e-milkat)](https://legiscore.in/docs/states/gujarat/property-card) | property_card | The city survey record for an urban property: holder, area, tenure and the entries the city survey office has made against it. | LIVE | - | --- Source: https://legiscore.in/docs/states/gujarat/utara-712 # 7/12 Utara (current record of rights) (Gujarat) The current 7/12 for a survey number: the holders, the area and tenure, and the rights, liabilities and mutation entries on it. Status: LIVE. Source status: No recent runs. Typical time: up to 4 min. state: `gujarat`, search_type: `utara_712`. ## What you get The 7/12 as AnyROR renders it, as a PDF, with the holders and entries read off the page. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `district` | string | required | from lookup "district" | gj_district lookup (https://legiscore.in/docs/api/lookups#gujarat-gj_district) | | `taluka` | string | required | from lookup "taluka" | gj_taluka lookup (https://legiscore.in/docs/api/lookups#gujarat-gj_taluka) | | `village` | string | required | from lookup "village" | gj_village lookup (https://legiscore.in/docs/api/lookups#gujarat-gj_village) | | `survey_no` | string | required | 638/1 P1/2 | field "survey_no" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `district` (District) | lookup | | | `taluka` (Taluka) | lookup | | | `village` (Village) | lookup | | | `survey_no` (Survey / Block Number) | text | Max 60 characters. | ## Resolve names to codes | Field | Lookup | Needs first | | --- | --- | --- | | district | gj_district | - | | taluka | gj_taluka | district | | village | gj_village | district, taluka | q is required (2+ characters), at most 10 matches. ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "gujarat", "search_type": "utara_712", "params": { "district": "", "taluka": "", "village": "", "survey_no": "638/1 P1/2" }, "label": "7/12 Utara (current record of rights) - case 8841" }' ``` **Python** ```python 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": "gujarat", "search_type": "utara_712", "params": { "district": "", "taluka": "", "village": "", "survey_no": "638/1 P1/2" }, "label": "7/12 Utara (current record of rights) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "gujarat", "search_type": "utara_712", "params": { "district": "", "taluka": "", "village": "", "survey_no": "638/1 P1/2" }, "label": "7/12 Utara (current record of rights) - 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": "gujarat", "search_type": "utara_712", "label": "7/12 Utara (current record of rights) - 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": "gujarat", "search_type": "utara_712", "label": "7/12 Utara (current record of rights) - 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" } } ``` --- Source: https://legiscore.in/docs/states/gujarat/khata-8a # 8A Khata (holdings of one account) (Gujarat) Every survey number one khata holds in the village, with the area and assessment of each. Status: LIVE. Source status: No recent runs. Typical time: up to 4 min. state: `gujarat`, search_type: `khata_8a`. ## What you get The 8A as AnyROR renders it, as a PDF. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `district` | string | required | from lookup "district" | gj_district lookup (https://legiscore.in/docs/api/lookups#gujarat-gj_district) | | `taluka` | string | required | from lookup "taluka" | gj_taluka lookup (https://legiscore.in/docs/api/lookups#gujarat-gj_taluka) | | `village` | string | required | from lookup "village" | gj_village lookup (https://legiscore.in/docs/api/lookups#gujarat-gj_village) | | `khata_no` | string | required | 167 | field "khata_no" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `district` (District) | lookup | | | `taluka` (Taluka) | lookup | | | `village` (Village) | lookup | | | `khata_no` (Khata Number) | text | Max 60 characters. | ## Resolve names to codes | Field | Lookup | Needs first | | --- | --- | --- | | district | gj_district | - | | taluka | gj_taluka | district | | village | gj_village | district, taluka | q is required (2+ characters), at most 10 matches. ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "gujarat", "search_type": "khata_8a", "params": { "district": "", "taluka": "", "village": "", "khata_no": "167" }, "label": "8A Khata (holdings of one account) - case 8841" }' ``` **Python** ```python 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": "gujarat", "search_type": "khata_8a", "params": { "district": "", "taluka": "", "village": "", "khata_no": "167" }, "label": "8A Khata (holdings of one account) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "gujarat", "search_type": "khata_8a", "params": { "district": "", "taluka": "", "village": "", "khata_no": "167" }, "label": "8A Khata (holdings of one account) - 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": "gujarat", "search_type": "khata_8a", "label": "8A Khata (holdings of one account) - 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": "gujarat", "search_type": "khata_8a", "label": "8A Khata (holdings of one account) - 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" } } ``` --- Source: https://legiscore.in/docs/states/gujarat/ferfar-6a # Ferfar (VF-6 mutation entry) (Gujarat) One mutation entry from the village’s Form 6 register: what changed hands, between whom, and whether it was certified. Status: LIVE. Source status: No recent runs. Typical time: up to 4 min. state: `gujarat`, search_type: `ferfar_6a`. ## What you get The mutation entry as AnyROR renders it, as a PDF. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `district` | string | required | from lookup "district" | gj_district lookup (https://legiscore.in/docs/api/lookups#gujarat-gj_district) | | `taluka` | string | required | from lookup "taluka" | gj_taluka lookup (https://legiscore.in/docs/api/lookups#gujarat-gj_taluka) | | `village` | string | required | from lookup "village" | gj_village lookup (https://legiscore.in/docs/api/lookups#gujarat-gj_village) | | `nondh_no` | string | required | 219 | field "nondh_no" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `district` (District) | lookup | | | `taluka` (Taluka) | lookup | | | `village` (Village) | lookup | | | `nondh_no` (Entry (Nondh) Number) | text | Max 60 characters. | ## Resolve names to codes | Field | Lookup | Needs first | | --- | --- | --- | | district | gj_district | - | | taluka | gj_taluka | district | | village | gj_village | district, taluka | q is required (2+ characters), at most 10 matches. ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "gujarat", "search_type": "ferfar_6a", "params": { "district": "", "taluka": "", "village": "", "nondh_no": "219" }, "label": "Ferfar (VF-6 mutation entry) - case 8841" }' ``` **Python** ```python 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": "gujarat", "search_type": "ferfar_6a", "params": { "district": "", "taluka": "", "village": "", "nondh_no": "219" }, "label": "Ferfar (VF-6 mutation entry) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "gujarat", "search_type": "ferfar_6a", "params": { "district": "", "taluka": "", "village": "", "nondh_no": "219" }, "label": "Ferfar (VF-6 mutation entry) - 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": "gujarat", "search_type": "ferfar_6a", "label": "Ferfar (VF-6 mutation entry) - 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": "gujarat", "search_type": "ferfar_6a", "label": "Ferfar (VF-6 mutation entry) - 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" } } ``` --- Source: https://legiscore.in/docs/states/gujarat/old-ferfar-6a # Old Ferfar (scanned VF-6 entry) (Gujarat) One entry from the old, pre-computerisation mutation register, as the scanned page. Status: LIVE. Source status: No recent runs. Typical time: up to 4 min. state: `gujarat`, search_type: `old_ferfar_6a`. ## What you get The scanned register page as a PDF. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `district` | string | required | from lookup "district" | gj_district lookup (https://legiscore.in/docs/api/lookups#gujarat-gj_district) | | `taluka` | string | required | from lookup "taluka" | gj_taluka lookup (https://legiscore.in/docs/api/lookups#gujarat-gj_taluka) | | `village` | string | required | from lookup "village" | gj_village lookup (https://legiscore.in/docs/api/lookups#gujarat-gj_village) | | `nondh_no` | string | required | 219 | field "nondh_no" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `district` (District) | lookup | | | `taluka` (Taluka) | lookup | | | `village` (Village) | lookup | | | `nondh_no` (Entry (Nondh) Number) | text | Max 60 characters. | ## Resolve names to codes | Field | Lookup | Needs first | | --- | --- | --- | | district | gj_district | - | | taluka | gj_taluka | district | | village | gj_village | district, taluka | q is required (2+ characters), at most 10 matches. ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "gujarat", "search_type": "old_ferfar_6a", "params": { "district": "", "taluka": "", "village": "", "nondh_no": "219" }, "label": "Old Ferfar (scanned VF-6 entry) - case 8841" }' ``` **Python** ```python 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": "gujarat", "search_type": "old_ferfar_6a", "params": { "district": "", "taluka": "", "village": "", "nondh_no": "219" }, "label": "Old Ferfar (scanned VF-6 entry) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "gujarat", "search_type": "old_ferfar_6a", "params": { "district": "", "taluka": "", "village": "", "nondh_no": "219" }, "label": "Old Ferfar (scanned VF-6 entry) - 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": "gujarat", "search_type": "old_ferfar_6a", "label": "Old Ferfar (scanned VF-6 entry) - 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": "gujarat", "search_type": "old_ferfar_6a", "label": "Old Ferfar (scanned VF-6 entry) - 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" } } ``` --- Source: https://legiscore.in/docs/states/gujarat/old-satbar-712 # Old 7/12 (scanned, by year range) (Gujarat) The old, pre-computerisation 7/12 for a survey number: every scanned year range the portal holds. Status: LIVE. Source status: No recent runs. Typical time: up to 5 min. state: `gujarat`, search_type: `old_satbar_712`. ## What you get One scanned PDF per year range the portal lists for the survey number. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `district` | string | required | from lookup "district" | gj_district lookup (https://legiscore.in/docs/api/lookups#gujarat-gj_district) | | `taluka` | string | required | from lookup "taluka" | gj_taluka lookup (https://legiscore.in/docs/api/lookups#gujarat-gj_taluka) | | `village` | string | required | from lookup "village" | gj_village lookup (https://legiscore.in/docs/api/lookups#gujarat-gj_village) | | `survey_no` | string | required | 219 | field "survey_no" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `district` (District) | lookup | | | `taluka` (Taluka) | lookup | | | `village` (Village) | lookup | | | `survey_no` (Survey Number) | text | Max 60 characters. | ## Resolve names to codes | Field | Lookup | Needs first | | --- | --- | --- | | district | gj_district | - | | taluka | gj_taluka | district | | village | gj_village | district, taluka | q is required (2+ characters), at most 10 matches. ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "gujarat", "search_type": "old_satbar_712", "params": { "district": "", "taluka": "", "village": "", "survey_no": "219" }, "label": "Old 7/12 (scanned, by year range) - case 8841" }' ``` **Python** ```python 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": "gujarat", "search_type": "old_satbar_712", "params": { "district": "", "taluka": "", "village": "", "survey_no": "219" }, "label": "Old 7/12 (scanned, by year range) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "gujarat", "search_type": "old_satbar_712", "params": { "district": "", "taluka": "", "village": "", "survey_no": "219" }, "label": "Old 7/12 (scanned, by year range) - 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": "gujarat", "search_type": "old_satbar_712", "label": "Old 7/12 (scanned, by year range) - 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": "gujarat", "search_type": "old_satbar_712", "label": "Old 7/12 (scanned, by year range) - 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" } } ``` --- Source: https://legiscore.in/docs/states/gujarat/property-card # Property Card (urban, e-milkat) (Gujarat) The city survey record for an urban property: holder, area, tenure and the entries the city survey office has made against it. Status: LIVE. Source status: No recent runs. Typical time: up to 5 min. state: `gujarat`, search_type: `property_card`. ## What you get The Property Card as e-milkat renders it, as a PDF, with the card’s fields read off it. Sections the portal fails to load are named, never left blank. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `district` | string | required | from lookup "district" | gj_emilkat_district lookup (https://legiscore.in/docs/api/lookups#gujarat-gj_emilkat_district) | | `city_survey_office` | string | required | from lookup "city_survey_office" | gj_city_survey_office lookup (https://legiscore.in/docs/api/lookups#gujarat-gj_city_survey_office) | | `ward` | string | required | from lookup "ward" | gj_ward lookup (https://legiscore.in/docs/api/lookups#gujarat-gj_ward) | | `survey_no` | string | required | 0010023 | field "survey_no" | | `sheet_no` | string | optional | Optional | field "sheet_no" | | `card_type` | string | required | property_card | field "card_type" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `district` (District) | lookup | | | `city_survey_office` (City Survey Office) | lookup | | | `ward` (Ward) | lookup | | | `survey_no` (City Survey Number) | text | As the card writes it; Gujarati digits are fine. Max 60 characters. | | `sheet_no` (Sheet Number) | text | Max 60 characters. | | `card_type` (Card) | select | Values: property_card (Property card — the whole survey number), unit_property_card (Unit property card — one flat or unit). | ## Resolve names to codes | Field | Lookup | Needs first | | --- | --- | --- | | district | gj_emilkat_district | - | | city_survey_office | gj_city_survey_office | district | | ward | gj_ward | district, city_survey_office | q is required (2+ characters), at most 10 matches. ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "gujarat", "search_type": "property_card", "params": { "district": "", "city_survey_office": "", "ward": "", "survey_no": "0010023", "sheet_no": "Optional", "card_type": "property_card" }, "label": "Property Card (urban, e-milkat) - case 8841" }' ``` **Python** ```python 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": "gujarat", "search_type": "property_card", "params": { "district": "", "city_survey_office": "", "ward": "", "survey_no": "0010023", "sheet_no": "Optional", "card_type": "property_card" }, "label": "Property Card (urban, e-milkat) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "gujarat", "search_type": "property_card", "params": { "district": "", "city_survey_office": "", "ward": "", "survey_no": "0010023", "sheet_no": "Optional", "card_type": "property_card" }, "label": "Property Card (urban, e-milkat) - 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": "gujarat", "search_type": "property_card", "label": "Property Card (urban, e-milkat) - 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": "gujarat", "search_type": "property_card", "label": "Property Card (urban, e-milkat) - 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" } } ``` --- Source: https://legiscore.in/docs/states/madhya_pradesh # Madhya Pradesh | Search | search_type | What it does | Status | Notes | | --- | --- | --- | --- | --- | | [Land Record by Khasra (WebGIS 2.0)](https://legiscore.in/docs/states/madhya_pradesh/bhu-abhilekh) | bhu_abhilekh | The land record for one khasra: its area and land class, the owners on the parcel, any civil court cases filed on it, and the record room’s scanned documents. | LIVE | - | | [Record Room Documents (WebGIS 2.0)](https://legiscore.in/docs/states/madhya_pradesh/record-room) | record_room | The scanned documents the revenue record room holds for one parcel: old khasras, mutation orders, maps. | LIVE | - | | [Civil Court Cases on a Parcel (WebGIS 2.0)](https://legiscore.in/docs/states/madhya_pradesh/rcms) | rcms | The civil court cases the land record links to one parcel. | LIVE | - | | [Habitation (Aabadi) Rights Record](https://legiscore.in/docs/states/madhya_pradesh/aabadi-adhikar-abhilekh) | aabadi_adhikar_abhilekh | The rights record for a habitation (aabadi) parcel: its area, land type, the owners on its title and any mortgage, diversion or prohibition flags. | HELD | - | --- Source: https://legiscore.in/docs/states/madhya_pradesh/bhu-abhilekh # Land Record by Khasra (WebGIS 2.0) (Madhya Pradesh) The land record for one khasra: its area and land class, the owners on the parcel, any civil court cases filed on it, and the record room’s scanned documents. Status: LIVE. Source status: No recent runs. Typical time: up to 7 min. state: `madhya_pradesh`, search_type: `bhu_abhilekh`. ## What you get The parcel, its owners and its court cases as data, a summary PDF, and up to 25 of the record room’s scanned documents as PDFs. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). - At least one of `khasra_number`, `parcel_id`: Give the khasra number of the land, or its parcel ID. | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `loc_id` | string | required | from lookup "loc_id" | mp_village lookup (https://legiscore.in/docs/api/lookups#madhya_pradesh-mp_village) | | `khasra_number` | string | one of | 323/2 | field "khasra_number" | | `parcel_id` | string | one of | Optional | field "parcel_id" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `district` (District) | lookup | | | `tehsil` (Tehsil) | lookup | | | `loc_id` (Village) | lookup | | | `khasra_number` (Khasra Number) | text | Max 40 characters. | | `parcel_id` (Parcel ID) | text | The portal’s own numeric parcel id. Not the ULPIN: that cannot be searched. Max 20 characters. | ## Resolve names to codes | Field | Lookup | Needs first | | --- | --- | --- | | district | mp_district | - | | tehsil | mp_tehsil | district | | loc_id | mp_village | district, tehsil | q is required (2+ characters), at most 10 matches. ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "madhya_pradesh", "search_type": "bhu_abhilekh", "params": { "loc_id": "", "khasra_number": "323/2", "parcel_id": "Optional" }, "label": "Land Record by Khasra (WebGIS 2.0) - case 8841" }' ``` **Python** ```python 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": "madhya_pradesh", "search_type": "bhu_abhilekh", "params": { "loc_id": "", "khasra_number": "323/2", "parcel_id": "Optional" }, "label": "Land Record by Khasra (WebGIS 2.0) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "madhya_pradesh", "search_type": "bhu_abhilekh", "params": { "loc_id": "", "khasra_number": "323/2", "parcel_id": "Optional" }, "label": "Land Record by Khasra (WebGIS 2.0) - 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": "madhya_pradesh", "search_type": "bhu_abhilekh", "label": "Land Record by Khasra (WebGIS 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: ```json { "data": { "id": "SRCH-2026-A1B2C3D4", "state": "madhya_pradesh", "search_type": "bhu_abhilekh", "label": "Land Record by Khasra (WebGIS 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" } } ``` --- Source: https://legiscore.in/docs/states/madhya_pradesh/record-room # Record Room Documents (WebGIS 2.0) (Madhya Pradesh) The scanned documents the revenue record room holds for one parcel: old khasras, mutation orders, maps. Status: LIVE. Source status: No recent runs. Typical time: up to 6 min. state: `madhya_pradesh`, search_type: `record_room`. ## What you get The list of every scanned document the record room holds for the parcel, and up to 25 of them as PDFs. A parcel with none comes back as not found. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). - At least one of `khasra_number`, `parcel_id`: Give the khasra number of the land, or its parcel ID. | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `loc_id` | string | required | from lookup "loc_id" | mp_village lookup (https://legiscore.in/docs/api/lookups#madhya_pradesh-mp_village) | | `khasra_number` | string | one of | 323/2 | field "khasra_number" | | `parcel_id` | string | one of | Optional | field "parcel_id" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `district` (District) | lookup | | | `tehsil` (Tehsil) | lookup | | | `loc_id` (Village) | lookup | | | `khasra_number` (Khasra Number) | text | Max 40 characters. | | `parcel_id` (Parcel ID) | text | The portal’s own numeric parcel id. Not the ULPIN: that cannot be searched. Max 20 characters. | ## Resolve names to codes | Field | Lookup | Needs first | | --- | --- | --- | | district | mp_district | - | | tehsil | mp_tehsil | district | | loc_id | mp_village | district, tehsil | q is required (2+ characters), at most 10 matches. ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "madhya_pradesh", "search_type": "record_room", "params": { "loc_id": "", "khasra_number": "323/2", "parcel_id": "Optional" }, "label": "Record Room Documents (WebGIS 2.0) - case 8841" }' ``` **Python** ```python 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": "madhya_pradesh", "search_type": "record_room", "params": { "loc_id": "", "khasra_number": "323/2", "parcel_id": "Optional" }, "label": "Record Room Documents (WebGIS 2.0) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "madhya_pradesh", "search_type": "record_room", "params": { "loc_id": "", "khasra_number": "323/2", "parcel_id": "Optional" }, "label": "Record Room Documents (WebGIS 2.0) - 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": "madhya_pradesh", "search_type": "record_room", "label": "Record Room Documents (WebGIS 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: ```json { "data": { "id": "SRCH-2026-A1B2C3D4", "state": "madhya_pradesh", "search_type": "record_room", "label": "Record Room Documents (WebGIS 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" } } ``` --- Source: https://legiscore.in/docs/states/madhya_pradesh/rcms # Civil Court Cases on a Parcel (WebGIS 2.0) (Madhya Pradesh) The civil court cases the land record links to one parcel. Status: LIVE. Source status: No recent runs. Typical time: up to 3 min. state: `madhya_pradesh`, search_type: `rcms`. ## What you get Each case linked to the parcel as data, plus a summary PDF. None linked comes back as not found, with the PDF. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). - At least one of `khasra_number`, `parcel_id`: Give the khasra number of the land, or its parcel ID. | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `loc_id` | string | required | from lookup "loc_id" | mp_village lookup (https://legiscore.in/docs/api/lookups#madhya_pradesh-mp_village) | | `khasra_number` | string | one of | 323/2 | field "khasra_number" | | `parcel_id` | string | one of | Optional | field "parcel_id" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `district` (District) | lookup | | | `tehsil` (Tehsil) | lookup | | | `loc_id` (Village) | lookup | | | `khasra_number` (Khasra Number) | text | Max 40 characters. | | `parcel_id` (Parcel ID) | text | The portal’s own numeric parcel id. Not the ULPIN: that cannot be searched. Max 20 characters. | ## Resolve names to codes | Field | Lookup | Needs first | | --- | --- | --- | | district | mp_district | - | | tehsil | mp_tehsil | district | | loc_id | mp_village | district, tehsil | q is required (2+ characters), at most 10 matches. ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "madhya_pradesh", "search_type": "rcms", "params": { "loc_id": "", "khasra_number": "323/2", "parcel_id": "Optional" }, "label": "Civil Court Cases on a Parcel (WebGIS 2.0) - case 8841" }' ``` **Python** ```python 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": "madhya_pradesh", "search_type": "rcms", "params": { "loc_id": "", "khasra_number": "323/2", "parcel_id": "Optional" }, "label": "Civil Court Cases on a Parcel (WebGIS 2.0) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "madhya_pradesh", "search_type": "rcms", "params": { "loc_id": "", "khasra_number": "323/2", "parcel_id": "Optional" }, "label": "Civil Court Cases on a Parcel (WebGIS 2.0) - 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": "madhya_pradesh", "search_type": "rcms", "label": "Civil Court Cases on a Parcel (WebGIS 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: ```json { "data": { "id": "SRCH-2026-A1B2C3D4", "state": "madhya_pradesh", "search_type": "rcms", "label": "Civil Court Cases on a Parcel (WebGIS 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" } } ``` --- Source: https://legiscore.in/docs/states/madhya_pradesh/aabadi-adhikar-abhilekh # Habitation (Aabadi) Rights Record (Madhya Pradesh) The rights record for a habitation (aabadi) parcel: its area, land type, the owners on its title and any mortgage, diversion or prohibition flags. Status: HELD. Source status: Held. Typical time: up to 3 min. state: `madhya_pradesh`, search_type: `aabadi_adhikar_abhilekh`. HELD: temporarily unavailable. A submit is refused with 422 search_unavailable and nothing is charged. ## What you get The parcel and its owners as data, plus the habitation record as a PDF. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `loc_id` | string | required | from lookup "loc_id" | mp_aabadi_village lookup (https://legiscore.in/docs/api/lookups#madhya_pradesh-mp_aabadi_village) | | `parcel_id` | string | required | 1234567 | field "parcel_id" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `district` (District) | lookup | | | `tehsil` (Tehsil) | lookup | | | `loc_id` (Village) | lookup | | | `parcel_id` (Aabadi Parcel ID) | text | The portal’s numeric parcel id. Habitation parcels have no khasra to search by. Max 20 characters. | ## Resolve names to codes | Field | Lookup | Needs first | | --- | --- | --- | | district | mp_aabadi_district | - | | tehsil | mp_aabadi_tehsil | district | | loc_id | mp_aabadi_village | district, tehsil | q is required (2+ characters), at most 10 matches. ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "madhya_pradesh", "search_type": "aabadi_adhikar_abhilekh", "params": { "loc_id": "", "parcel_id": "1234567" }, "label": "Habitation (Aabadi) Rights Record - case 8841" }' ``` **Python** ```python 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": "madhya_pradesh", "search_type": "aabadi_adhikar_abhilekh", "params": { "loc_id": "", "parcel_id": "1234567" }, "label": "Habitation (Aabadi) Rights Record - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "madhya_pradesh", "search_type": "aabadi_adhikar_abhilekh", "params": { "loc_id": "", "parcel_id": "1234567" }, "label": "Habitation (Aabadi) Rights Record - 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": "madhya_pradesh", "search_type": "aabadi_adhikar_abhilekh", "label": "Habitation (Aabadi) Rights Record - 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": "madhya_pradesh", "search_type": "aabadi_adhikar_abhilekh", "label": "Habitation (Aabadi) Rights Record - 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" } } ``` --- Source: https://legiscore.in/docs/states/west_bengal # West Bengal | Search | search_type | What it does | Status | Notes | | --- | --- | --- | --- | --- | | [Registered Deeds by Party Name (WB Registration)](https://legiscore.in/docs/states/west_bengal/deed-search) | deed_search | Every registered deed naming a person, year by year, from the Directorate of Registration. West Bengal issues no encumbrance certificate; this list is the equivalent. | LIVE | - | | [Deed Details by Deed or Query Number (WB Registration)](https://legiscore.in/docs/states/west_bengal/deed-details) | deed_details | One registered deed as the registry holds it, by its deed number or the query number printed on it. Checks a deed in the chain of title. | LIVE | - | | [District Court Cases by Party Name (eCourts)](https://legiscore.in/docs/states/west_bengal/court-cases) | court_cases | Pending and disposed cases naming a person in every court complex of a West Bengal district, read from the district court’s own site year by year. | LIVE | - | | [Kolkata Property Tax (KMC)](https://legiscore.in/docs/states/west_bengal/property-tax) | property_tax | The Kolkata Municipal Corporation assessment for a property and every bill still unpaid on it. Kolkata only: other West Bengal municipalities run their own systems. | LIVE | - | | [Record of Rights (Khatian, Banglarbhumi)](https://legiscore.in/docs/states/west_bengal/ror) | ror | The Banglarbhumi record of rights for one khatian in a mouza: who holds the land and on which plots, read from the Land & Land Reforms department under our citizen account. | LIVE | OTP | | [Plot (Dag) Information (Banglarbhumi)](https://legiscore.in/docs/states/west_bengal/plot) | plot | Every khatian that holds a share of one LR plot in a mouza, read from Banglarbhumi under our citizen account: who holds it today, in what share and class. | LIVE | OTP | | [RS ↔ LR Plot Map (Banglarbhumi)](https://legiscore.in/docs/states/west_bengal/rs-lr-plot) | rs_lr_plot | Which of today’s LR (Hal) plots an old RS (Sabek) plot became, or the reverse: the bridge from an older deed’s plot numbers to the record of rights. | LIVE | OTP | | [Mutation (Namjari) Status (Banglarbhumi)](https://legiscore.in/docs/states/west_bengal/mutation) | mutation | Whether a registered deed has been mutated into the buyer’s name on Banglarbhumi, or where a mutation case stands, read under our citizen account. | LIVE | OTP | | [Market Value of a Flat (WB Registration)](https://legiscore.in/docs/states/west_bengal/apartment-market-value) | apartment_market_value | The Registration Department's own market value of a flat, from its place and particulars, anywhere in West Bengal. | LIVE | - | --- Source: https://legiscore.in/docs/states/west_bengal/deed-search # Registered Deeds by Party Name (WB Registration) (West Bengal) Every registered deed naming a person, year by year, from the Directorate of Registration. West Bengal issues no encumbrance certificate; this list is the equivalent. Status: LIVE. Source status: No recent runs. Typical time: up to 12 min. state: `west_bengal`, search_type: `deed_search`. ## What you get Each deed with the party, their role, the transaction, office, deed number and dates, plus the mouza, plot, khatian and area, and one PDF with the department’s page for every year. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `name` | string | required | Ratan Kumar Saha | field "name" | | `father_name` | string | optional | Gajendra Mohan | field "father_name" | | `district` | string | optional | from lookup "district" | west_bengal_registration_district lookup (https://legiscore.in/docs/api/lookups#west_bengal-west_bengal_registration_district) | | `from_year` | string | optional | 2024 | field "from_year" | | `to_year` | string | optional | 2024 | field "to_year" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `name` (Party Name) | text | As written on the deed. The last word is read as the surname. Max 100 characters. | | `father_name` (Father's / Husband's Name) | text | Strongly recommended: a common name otherwise returns pages of namesakes. Max 100 characters. | | `district` (District Where Registered) | lookup | | | `from_year` (From Year) | year | | | `to_year` (To Year) | year | | ## Resolve names to codes | Field | Lookup | Needs first | | --- | --- | --- | | district | west_bengal_registration_district | - | q is required (2+ characters), at most 10 matches. ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "west_bengal", "search_type": "deed_search", "params": { "name": "Ratan Kumar Saha", "father_name": "Gajendra Mohan", "district": "", "from_year": "2024", "to_year": "2024" }, "label": "Registered Deeds by Party Name (WB Registration) - case 8841" }' ``` **Python** ```python 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": "west_bengal", "search_type": "deed_search", "params": { "name": "Ratan Kumar Saha", "father_name": "Gajendra Mohan", "district": "", "from_year": "2024", "to_year": "2024" }, "label": "Registered Deeds by Party Name (WB Registration) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "west_bengal", "search_type": "deed_search", "params": { "name": "Ratan Kumar Saha", "father_name": "Gajendra Mohan", "district": "", "from_year": "2024", "to_year": "2024" }, "label": "Registered Deeds by Party Name (WB Registration) - 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": "west_bengal", "search_type": "deed_search", "label": "Registered Deeds by Party Name (WB Registration) - 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": "west_bengal", "search_type": "deed_search", "label": "Registered Deeds by Party Name (WB Registration) - 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" } } ``` --- Source: https://legiscore.in/docs/states/west_bengal/deed-details # Deed Details by Deed or Query Number (WB Registration) (West Bengal) One registered deed as the registry holds it, by its deed number or the query number printed on it. Checks a deed in the chain of title. Status: LIVE. Source status: No recent runs. Typical time: up to 5 min. state: `west_bengal`, search_type: `deed_details`. ## What you get The transaction, office, volume and pages, registration, completion and delivery dates, every party with their role, and the property, plus the department’s page as a PDF. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `search_by` | string | required | deed | field "search_by" | | `district` | string | conditional | from lookup "district" | west_bengal_registration_district lookup (https://legiscore.in/docs/api/lookups#west_bengal-west_bengal_registration_district) | | `registration_office` | string | conditional | from lookup "registration_office" | west_bengal_registration_office lookup (https://legiscore.in/docs/api/lookups#west_bengal-west_bengal_registration_office) | | `deed_no` | string | conditional | 03153 | field "deed_no" | | `year` | string | conditional | 2024 | field "year" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `search_by` (Search By) | select | Values: deed (Deed number), query (Query number). | | `district` (District) | lookup | Only when search_by is "deed". | | `registration_office` (Registration Office) | lookup | Only when search_by is "deed". | | `deed_no` (Deed Number) | text | The serial from the deed (up to 5 digits). Only when search_by is "deed". Max 20 characters. | | `year` (Year of Registration) | year | Only when search_by is "deed". | | `query_no` (Query Number) | text | As printed on the deed, with its year after the slash. Only when search_by is "query". Max 30 characters. | ## Resolve names to codes | Field | Lookup | Needs first | | --- | --- | --- | | district | west_bengal_registration_district | - | | registration_office | west_bengal_registration_office | district | q is required (2+ characters), at most 10 matches. ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "west_bengal", "search_type": "deed_details", "params": { "search_by": "deed", "district": "", "registration_office": "", "deed_no": "03153", "year": "2024" }, "label": "Deed Details by Deed or Query Number (WB Registration) - case 8841" }' ``` **Python** ```python 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": "west_bengal", "search_type": "deed_details", "params": { "search_by": "deed", "district": "", "registration_office": "", "deed_no": "03153", "year": "2024" }, "label": "Deed Details by Deed or Query Number (WB Registration) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "west_bengal", "search_type": "deed_details", "params": { "search_by": "deed", "district": "", "registration_office": "", "deed_no": "03153", "year": "2024" }, "label": "Deed Details by Deed or Query Number (WB Registration) - 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": "west_bengal", "search_type": "deed_details", "label": "Deed Details by Deed or Query Number (WB Registration) - 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": "west_bengal", "search_type": "deed_details", "label": "Deed Details by Deed or Query Number (WB Registration) - 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" } } ``` --- Source: https://legiscore.in/docs/states/west_bengal/court-cases # District Court Cases by Party Name (eCourts) (West Bengal) Pending and disposed cases naming a person in every court complex of a West Bengal district, read from the district court’s own site year by year. Status: LIVE. Source status: No recent runs. Typical time: up to 12 min. state: `west_bengal`, search_type: `court_cases`. ## What you get Each case with its court, number, parties and CNR, and where the site shows them its status, nature of disposal, hearings and orders, plus a PDF. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `party_name` | string | required | Ratan Kumar Saha | field "party_name" | | `district` | string | required | from lookup "district" | west_bengal_court_district lookup (https://legiscore.in/docs/api/lookups#west_bengal-west_bengal_court_district) | | `from_year` | string | optional | 2024 | field "from_year" | | `to_year` | string | optional | 2024 | field "to_year" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `party_name` (Party Name) | text | Petitioner or respondent, at least 3 letters. Max 100 characters. | | `district` (District Court) | lookup | Kolkata has three: City Civil Court, City Sessions Court and Presidency Small Causes Court. | | `from_year` (From Year) | year | | | `to_year` (To Year) | year | | ## Resolve names to codes | Field | Lookup | Needs first | | --- | --- | --- | | district | west_bengal_court_district | - | q is required (2+ characters), at most 10 matches. ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "west_bengal", "search_type": "court_cases", "params": { "party_name": "Ratan Kumar Saha", "district": "", "from_year": "2024", "to_year": "2024" }, "label": "District Court Cases by Party Name (eCourts) - case 8841" }' ``` **Python** ```python 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": "west_bengal", "search_type": "court_cases", "params": { "party_name": "Ratan Kumar Saha", "district": "", "from_year": "2024", "to_year": "2024" }, "label": "District Court Cases by Party Name (eCourts) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "west_bengal", "search_type": "court_cases", "params": { "party_name": "Ratan Kumar Saha", "district": "", "from_year": "2024", "to_year": "2024" }, "label": "District Court Cases by Party Name (eCourts) - 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": "west_bengal", "search_type": "court_cases", "label": "District Court Cases by Party Name (eCourts) - 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": "west_bengal", "search_type": "court_cases", "label": "District Court Cases by Party Name (eCourts) - 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" } } ``` --- Source: https://legiscore.in/docs/states/west_bengal/property-tax # Kolkata Property Tax (KMC) (West Bengal) The Kolkata Municipal Corporation assessment for a property and every bill still unpaid on it. Kolkata only: other West Bengal municipalities run their own systems. Status: LIVE. Source status: No recent runs. Typical time: up to 2 min. state: `west_bengal`, search_type: `property_tax`. ## What you get Premises, street, ward, owners, property type and status, and each unpaid bill (periodic, fresh assessment, LOI) with its quarters and amounts, plus a PDF. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `assessee_no` | string | required | 110531801430 | field "assessee_no" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `assessee_no` (KMC Assessee No) | text | The 12-digit number printed on the KMC tax bill. Max 16 characters. | ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "west_bengal", "search_type": "property_tax", "params": { "assessee_no": "110531801430" }, "label": "Kolkata Property Tax (KMC) - case 8841" }' ``` **Python** ```python 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": "west_bengal", "search_type": "property_tax", "params": { "assessee_no": "110531801430" }, "label": "Kolkata Property Tax (KMC) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "west_bengal", "search_type": "property_tax", "params": { "assessee_no": "110531801430" }, "label": "Kolkata Property Tax (KMC) - 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": "west_bengal", "search_type": "property_tax", "label": "Kolkata Property Tax (KMC) - 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": "west_bengal", "search_type": "property_tax", "label": "Kolkata Property Tax (KMC) - 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" } } ``` --- Source: https://legiscore.in/docs/states/west_bengal/ror # Record of Rights (Khatian, Banglarbhumi) (West Bengal) The Banglarbhumi record of rights for one khatian in a mouza: who holds the land and on which plots, read from the Land & Land Reforms department under our citizen account. Status: LIVE. Source status: No recent runs. Typical time: up to 10 min. state: `west_bengal`, search_type: `ror`. Uses an OTP: LegiScore handles the code; the search may show awaiting_otp briefly. AI Recovery does not run on this search. ## What you get Each raiyat with father’s or husband’s name, holding type and address, the khatian’s total area, plots and record date, plus the portal’s page as a PDF. A khatian the mouza does not hold comes back as not found. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `district` | string | required | Jalpaiguri | field "district" | | `block` | string | required | Rajganj | field "block" | | `mouza` | string | required | Dabgram Sheet No - 7 | field "mouza" | | `khatian_no` | string | required | 176 | field "khatian_no" | | `khatian_type` | string | optional | normal | field "khatian_type" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `district` (District) | text | As Banglarbhumi spells it. Max 60 characters. | | `block` (Block) | text | The CD block the mouza is in. Max 60 characters. | | `mouza` (Mouza) | text | Exact name or the portal’s mouza code; a near miss is refused with the closest names. Max 80 characters. | | `khatian_no` (Khatian No (LR)) | text | Digits, with a sub-number as 176/1. Max 8 characters. | | `khatian_type` (Khatian Type) | select | Values: normal (Normal), lease (Lease), fhtd (FHTD). | ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "west_bengal", "search_type": "ror", "params": { "district": "Jalpaiguri", "block": "Rajganj", "mouza": "Dabgram Sheet No - 7", "khatian_no": "176", "khatian_type": "normal" }, "label": "Record of Rights (Khatian, Banglarbhumi) - case 8841" }' ``` **Python** ```python 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": "west_bengal", "search_type": "ror", "params": { "district": "Jalpaiguri", "block": "Rajganj", "mouza": "Dabgram Sheet No - 7", "khatian_no": "176", "khatian_type": "normal" }, "label": "Record of Rights (Khatian, Banglarbhumi) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "west_bengal", "search_type": "ror", "params": { "district": "Jalpaiguri", "block": "Rajganj", "mouza": "Dabgram Sheet No - 7", "khatian_no": "176", "khatian_type": "normal" }, "label": "Record of Rights (Khatian, Banglarbhumi) - 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": "west_bengal", "search_type": "ror", "label": "Record of Rights (Khatian, Banglarbhumi) - 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": "west_bengal", "search_type": "ror", "label": "Record of Rights (Khatian, Banglarbhumi) - 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" } } ``` --- Source: https://legiscore.in/docs/states/west_bengal/plot # Plot (Dag) Information (Banglarbhumi) (West Bengal) Every khatian that holds a share of one LR plot in a mouza, read from Banglarbhumi under our citizen account: who holds it today, in what share and class. Status: LIVE. Source status: No recent runs. Typical time: up to 10 min. state: `west_bengal`, search_type: `plot`. Uses an OTP: LegiScore handles the code; the search may show awaiting_otp briefly. AI Recovery does not run on this search. ## What you get Each holding khatian with its raiyat, father’s or husband’s name, holding type, share, share area, land class and possessor, plus the portal’s page as a PDF. A plot the mouza does not hold comes back as not found. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `district` | string | required | Jalpaiguri | field "district" | | `block` | string | required | Rajganj | field "block" | | `mouza` | string | required | Dabgram Sheet No - 7 | field "mouza" | | `plot_no` | string | required | 142 | field "plot_no" | | `khatian_type` | string | optional | normal | field "khatian_type" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `district` (District) | text | As Banglarbhumi spells it. Max 60 characters. | | `block` (Block) | text | The CD block the mouza is in. Max 60 characters. | | `mouza` (Mouza) | text | Exact name or the portal’s mouza code; a near miss is refused with the closest names. Max 80 characters. | | `plot_no` (Plot (Dag) No (LR)) | text | Today’s LR plot number, a bata as 142/1. An old deed’s RS plot: run the RS ↔ LR plot map first. Max 8 characters. | | `khatian_type` (Khatian Type) | select | Values: normal (Normal), lease (Lease), fhtd (FHTD). | ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "west_bengal", "search_type": "plot", "params": { "district": "Jalpaiguri", "block": "Rajganj", "mouza": "Dabgram Sheet No - 7", "plot_no": "142", "khatian_type": "normal" }, "label": "Plot (Dag) Information (Banglarbhumi) - case 8841" }' ``` **Python** ```python 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": "west_bengal", "search_type": "plot", "params": { "district": "Jalpaiguri", "block": "Rajganj", "mouza": "Dabgram Sheet No - 7", "plot_no": "142", "khatian_type": "normal" }, "label": "Plot (Dag) Information (Banglarbhumi) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "west_bengal", "search_type": "plot", "params": { "district": "Jalpaiguri", "block": "Rajganj", "mouza": "Dabgram Sheet No - 7", "plot_no": "142", "khatian_type": "normal" }, "label": "Plot (Dag) Information (Banglarbhumi) - 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": "west_bengal", "search_type": "plot", "label": "Plot (Dag) Information (Banglarbhumi) - 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": "west_bengal", "search_type": "plot", "label": "Plot (Dag) Information (Banglarbhumi) - 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" } } ``` --- Source: https://legiscore.in/docs/states/west_bengal/rs-lr-plot # RS ↔ LR Plot Map (Banglarbhumi) (West Bengal) Which of today’s LR (Hal) plots an old RS (Sabek) plot became, or the reverse: the bridge from an older deed’s plot numbers to the record of rights. Status: LIVE. Source status: No recent runs. Typical time: up to 10 min. state: `west_bengal`, search_type: `rs_lr_plot`. Uses an OTP: LegiScore handles the code; the search may show awaiting_otp briefly. AI Recovery does not run on this search. ## What you get Each RS plot with the LR plot it maps to, plus the portal’s page as a PDF. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `district` | string | required | Jalpaiguri | field "district" | | `block` | string | required | Rajganj | field "block" | | `mouza` | string | required | Dabgram Sheet No - 7 | field "mouza" | | `plot_no` | string | required | 377 | field "plot_no" | | `direction` | string | optional | rs_to_lr | field "direction" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `district` (District) | text | As Banglarbhumi spells it. Max 60 characters. | | `block` (Block) | text | The CD block the mouza is in. Max 60 characters. | | `mouza` (Mouza) | text | Exact name or the portal’s mouza code; a near miss is refused with the closest names. Max 80 characters. | | `plot_no` (Plot (Dag) No) | text | The plot number you have, a bata as 377/1. Max 8 characters. | | `direction` (I have) | select | Values: rs_to_lr (An RS (Sabek) plot, show its LR plots), lr_to_rs (An LR (Hal) plot, show its RS plots). | ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "west_bengal", "search_type": "rs_lr_plot", "params": { "district": "Jalpaiguri", "block": "Rajganj", "mouza": "Dabgram Sheet No - 7", "plot_no": "377", "direction": "rs_to_lr" }, "label": "RS ↔ LR Plot Map (Banglarbhumi) - case 8841" }' ``` **Python** ```python 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": "west_bengal", "search_type": "rs_lr_plot", "params": { "district": "Jalpaiguri", "block": "Rajganj", "mouza": "Dabgram Sheet No - 7", "plot_no": "377", "direction": "rs_to_lr" }, "label": "RS ↔ LR Plot Map (Banglarbhumi) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "west_bengal", "search_type": "rs_lr_plot", "params": { "district": "Jalpaiguri", "block": "Rajganj", "mouza": "Dabgram Sheet No - 7", "plot_no": "377", "direction": "rs_to_lr" }, "label": "RS ↔ LR Plot Map (Banglarbhumi) - 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": "west_bengal", "search_type": "rs_lr_plot", "label": "RS ↔ LR Plot Map (Banglarbhumi) - 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": "west_bengal", "search_type": "rs_lr_plot", "label": "RS ↔ LR Plot Map (Banglarbhumi) - 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" } } ``` --- Source: https://legiscore.in/docs/states/west_bengal/mutation # Mutation (Namjari) Status (Banglarbhumi) (West Bengal) Whether a registered deed has been mutated into the buyer’s name on Banglarbhumi, or where a mutation case stands, read under our citizen account. Status: LIVE. Source status: No recent runs. Typical time: up to 10 min. state: `west_bengal`, search_type: `mutation`. Uses an OTP: LegiScore handles the code; the search may show awaiting_otp briefly. AI Recovery does not run on this search. ## What you get Each mutation case with its number, status, hearing, the buyer’s new khatian and the plots it moved, plus the portal’s page as a PDF. A deed with no mutation case comes back as not found. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `mode` | string | required | deed | field "mode" | | `deed_no` | string | conditional | I-071103153 | field "deed_no" | | `deed_year` | string | conditional | 2024 | field "deed_year" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `mode` (Search by) | select | Values: deed (Registered deed number and year), case (Mutation case number). | | `deed_no` (Deed No) | text | As printed on the deed. Only when mode is "deed". Max 20 characters. | | `deed_year` (Deed Year) | year | Only when mode is "deed". | | `district` (District) | text | As Banglarbhumi spells it. Only when mode is "case". Max 60 characters. | | `block` (Block) | text | The CD block the mouza is in. Only when mode is "case". Max 60 characters. | | `mouza` (Mouza) | text | Exact name or the portal’s mouza code; a near miss is refused with the closest names. Only when mode is "case". Max 80 characters. | | `case_no` (Mutation Case No) | text | Only when mode is "case". Max 30 characters. | ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "west_bengal", "search_type": "mutation", "params": { "mode": "deed", "deed_no": "I-071103153", "deed_year": "2024" }, "label": "Mutation (Namjari) Status (Banglarbhumi) - case 8841" }' ``` **Python** ```python 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": "west_bengal", "search_type": "mutation", "params": { "mode": "deed", "deed_no": "I-071103153", "deed_year": "2024" }, "label": "Mutation (Namjari) Status (Banglarbhumi) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "west_bengal", "search_type": "mutation", "params": { "mode": "deed", "deed_no": "I-071103153", "deed_year": "2024" }, "label": "Mutation (Namjari) Status (Banglarbhumi) - 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": "west_bengal", "search_type": "mutation", "label": "Mutation (Namjari) Status (Banglarbhumi) - 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": "west_bengal", "search_type": "mutation", "label": "Mutation (Namjari) Status (Banglarbhumi) - 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" } } ``` --- Source: https://legiscore.in/docs/states/west_bengal/apartment-market-value # Market Value of a Flat (WB Registration) (West Bengal) The Registration Department's own market value of a flat, from its place and particulars, anywhere in West Bengal. Status: LIVE. Source status: No recent runs. Typical time: up to 3 min. state: `west_bengal`, search_type: `apartment_market_value`. ## What you get The market value in rupees as the department computes it, the choices it valued, and the department's page as a PDF. ## Request parameters Keys of `params`. A value "from lookup" is a code you get by searching for the item by name first (https://legiscore.in/docs/api/lookups). | Name | Type | Required | Example | Comes from | | --- | --- | --- | --- | --- | | `district` | string | required | Kolkata | field "district" | | `thana` | string | required | Park Street | field "thana" | | `local_body` | string | required | Kolkata Municipal Corporation | field "local_body" | | `mouza` | string | optional | Khagrabari | field "mouza" | | `road` | string | optional | Park Street | field "road" | | `zone` | string | optional | 3 | field "zone" | | `premises_no` | string | optional | 17 | field "premises_no" | | `plot_no` | string | optional | 3895 | field "plot_no" | | `project_name` | string | optional | | field "project_name" | | `carpet_area` | number | required | 1000 | field "carpet_area" | | `covered_area` | number | required | 1200 | field "covered_area" | | `use_of_flat` | string | optional | Residential | field "use_of_flat" | | `floor_type` | string | required | Cemented | field "floor_type" | | `floor_location` | number | required | 2 | field "floor_location" | | `flat_age` | number | required | 10 | field "flat_age" | | `no_of_floors` | number | required | 6 | field "no_of_floors" | | `property_on_road` | boolean | optional | true | field "property_on_road" | | `lift` | boolean | optional | true | field "lift" | | `litigated` | boolean | optional | true | field "litigated" | ## Field details | Field | Type | Notes | | --- | --- | --- | | `district` (District) | text | Max 40 characters. | | `thana` (Thana) | text | Max 60 characters. | | `local_body` (Local Body) | text | As the portal lists it for the thana: Kolkata Municipal Corporation, Municipality or Gram Panchayat. Max 60 characters. | | `mouza` (Mouza) | text | Outside Kolkata. Max 80 characters. | | `road` (Road) | text | In Kolkata. Max 80 characters. | | `zone` (Road Zone) | text | The zone number the portal lists for the road. Max 4 characters. | | `premises_no` (Premises No) | text | Max 20 characters. | | `plot_no` (Plot (Dag) No) | text | Outside Kolkata, digits only. Max 6 characters. | | `project_name` (Special Project) | text | Only if the flat is in a special project the portal lists; leave blank otherwise. Max 120 characters. | | `carpet_area` (Carpet Area (sq ft)) | text | Max 10 characters. | | `covered_area` (Covered / Built-up Area (sq ft)) | text | Max 10 characters. | | `use_of_flat` (Use of Flat) | select | Residential when left blank. Values: Residential (Residential), Commercial (Commercial), Semi Commercial (Semi Commercial), Office (Office), Industrial Space (Industrial Space). | | `floor_type` (Floor Type) | select | Values: Cemented (Cemented), Marble (Marble), Mosaic (Mosaic), Tiles (Tiles). | | `floor_location` (Floor of the Flat) | text | 0 for the ground floor. Max 3 characters. | | `flat_age` (Age of the Flat (years)) | text | Max 3 characters. | | `no_of_floors` (Floors in the Building) | text | Max 3 characters. | | `property_on_road` (On a Road) | select | Yes when left blank. Values: yes (Yes), no (No). | | `width_of_road_ft` (Approach Road Width (ft)) | text | Only when property_on_road is "no". Max 6 characters. | | `lift` (Lift) | select | Values: yes (Yes), no (No). | | `litigated` (Litigated Property) | select | No when left blank. Values: yes (Yes), no (No). | | `amenities` (Amenities) | tags | Any of: roof garden, swimming pool, club, gymnasium, shopping complex. | ## Example request Replace each <...> with the value from its lookup match. **curl** ```bash 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": "west_bengal", "search_type": "apartment_market_value", "params": { "district": "Kolkata", "thana": "Park Street", "local_body": "Kolkata Municipal Corporation", "mouza": "Khagrabari", "road": "Park Street", "zone": "3", "premises_no": "17", "plot_no": "3895", "project_name": "", "carpet_area": 1000, "covered_area": 1200, "use_of_flat": "Residential", "floor_type": "Cemented", "floor_location": 2, "flat_age": 10, "no_of_floors": 6, "property_on_road": true, "lift": true, "litigated": true }, "label": "Market Value of a Flat (WB Registration) - case 8841" }' ``` **Python** ```python 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": "west_bengal", "search_type": "apartment_market_value", "params": { "district": "Kolkata", "thana": "Park Street", "local_body": "Kolkata Municipal Corporation", "mouza": "Khagrabari", "road": "Park Street", "zone": "3", "premises_no": "17", "plot_no": "3895", "project_name": "", "carpet_area": 1000, "covered_area": 1200, "use_of_flat": "Residential", "floor_type": "Cemented", "floor_location": 2, "flat_age": 10, "no_of_floors": 6, "property_on_road": true, "lift": true, "litigated": true }, "label": "Market Value of a Flat (WB Registration) - case 8841" }, ) resp.raise_for_status() print(resp.json()) ``` **Node** ```js 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": "west_bengal", "search_type": "apartment_market_value", "params": { "district": "Kolkata", "thana": "Park Street", "local_body": "Kolkata Municipal Corporation", "mouza": "Khagrabari", "road": "Park Street", "zone": "3", "premises_no": "17", "plot_no": "3895", "project_name": "", "carpet_area": 1000, "covered_area": 1200, "use_of_flat": "Residential", "floor_type": "Cemented", "floor_location": 2, "flat_age": 10, "no_of_floors": 6, "property_on_road": true, "lift": true, "litigated": true }, "label": "Market Value of a Flat (WB Registration) - 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": "west_bengal", "search_type": "apartment_market_value", "label": "Market Value of a Flat (WB Registration) - 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": "west_bengal", "search_type": "apartment_market_value", "label": "Market Value of a Flat (WB Registration) - 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" } } ```