CERSAI Borrower Search API: mortgages by PAN, CIN or name
Yes. The LandLens CERSAI borrower API runs the registry's Debtor Based Search: every mortgage and security interest a lender has registered against a borrower on immovable property anywhere in India, searched by PAN, CKYC number, company or LLP registration number, or name. A PAN, CKYC or registration number on its own is an exact identity match. A name widens the search to every similar name in the country, so those results are matches to review, not charges proven against the person. The first call returns a quote; once approved, the search runs in the background for a few minutes and returns each matching asset with its charges, lenders and amounts, the registry's search reference and two PDFs. It costs 2 credits per borrower, and up to 100 borrowers can go under one approval.
https://verified.realestate/api/v1/tools/cersai_borrower_check- Price
- 2 credits on approval
- Source
- CERSAI security interest register
- Coverage
- All India, by borrower
- Answers in
- A few minutes once approved
Example
curl -X POST https://verified.realestate/api/v1/tools/cersai_borrower_check \
-H "Authorization: Bearer $LANDLENS_KEY" \
-H "Content-Type: application/json" \
-d '{"pan":"ABCDE1234F"}'
{
"ok": true,
"status": "proposal",
"data": {
"proposal": true,
"action": "cersai_borrower_search",
"label": "CERSAI borrower search: ABCDE1234F",
"params": { "debtor_type": "IND", "pan": "ABCDE1234F" },
"cost": 2,
"source": "CERSAI (Debtor Based Search)",
"note": "An exact match on the identifier. Runs for a few minutes."
},
"credits_quoted": 0,
"credits_charged": 0,
"next": {
"tool": "approve_action",
"arguments": { "action": "cersai_borrower_search", "params": { "debtor_type": "IND", "pan": "ABCDE1234F" } }
}
}
A real quote from the API for the PAN format's own placeholder, trimmed of request_id and balance. No search result is shown here: a real one names real borrowers.
What it returns
The first call returns a quote, with status proposal. Approve it with approve_action within 30 minutes; the search is queued and its result is read with job_status, from the status_url, or delivered to your callback_url. These are the fields of the delivered result (data.payload in job_status).
| Field | What it holds |
|---|---|
verdict | clear, charges_found or incomplete for an identifier search; name_matches, no_name_match or incomplete for a name search. |
match_basis | identifier (an exact match on PAN, CKYC or registration number) or name (every similar name in India). |
message, note | The plain reading of the result, and what it does and does not prove. |
searched | What was searched: type of debtor, name, PAN (also masked), CKYC, registration number and dates as sent. |
total_matches, assets_read, assets_unread | How many assets the registry matched, how many were read, and how many were not. An unread asset makes the verdict incomplete rather than clear. |
active_charges | Charges still active across the assets read. |
exact_name_matches | For a name search, how many assets carry exactly the name searched. Null for an identifier search. |
assets[] | Each matching asset: asset_id, exact_name_match, asset (its description), survey_or_plot, place, pincode, active_charges, charges, all_satisfied (true when CERSAI reports every interest on it satisfied or de-registered, so charges is empty by design) and details_returned (false only when CERSAI did not return the asset's interests: unknown, never clear). |
assets[].charges[] | Each charge on the asset: lender, branch, secured_amount, type_of_charge, registered_on, status (active or satisfied) and borrowers (the names on the charge). |
search_ref_no, searched_at | The registry's reference for this search and when it ran. |
report_url | Our PDF of every match and charge read, as a signed link that opens without a key for 7 days. |
official_report_url, official_report_covers_asset_id | The registry's own PDF report. It covers ONE asset, named by official_report_covers_asset_id; the rest are in report_url. Null until it is in hand: see official_report_status. |
official_report_status, official_report_note | Where the registry's own PDF stands: ready (official_report_url is set), pending (it did not download with the search and is fetched again automatically, about every 15 minutes for two hours; read job_status again, or a callback_url receives job.updated when it settles) or unavailable (the registry did not issue it). official_report_note says the same in words. The rest of the result is complete either way. |
credits_used | What the search cost. |
Ways to call it
Pick what you know about the borrower. An identifier alone is the exact answer; a name only widens it.
By PAN
An exact identity match. The usual check before lending to a person or a firm.
{"pan": "ABCDE1234F"}
A company by CIN
debtor_type COM with its corporate identity number in reg_number (LLPIN for an LLP).
{"debtor_type": "COM","reg_number": "U12345TN2010PTC012345"}
An individual by name
The registry needs a date of birth, PAN or CKYC with the name. Every similar name in India comes back.
{"debtor_name": "R Kumar","dob": "1980-04-12"}
A book of borrowers
Up to 100 borrowers under one quote and one approval, each billed separately.
{"items": [{"pan": "ABCDE1234F"},{"debtor_type": "COM","reg_number": "U12345TN2010PTC012345"}]}
Inputs
The JSON body of the POST is the arguments. No field is required by the schema; the registry's rule decides. An individual needs a PAN or CKYC, or a name with a PAN, date of birth or CKYC. Anyone else needs a PAN, registration number or CKYC, or a name with one of them.
| Argument | Type | What to send |
|---|---|---|
debtor_type |
string: IND, SPR, PRF, HUF, COM, FRC, SOC, AOP, BOI, TRS, LLP, GOV, NTC | The registry's type of debtor. IND (individual) when left out; COM for an Indian company, LLP, PRF for a partnership firm, HUF, TRS for a trust, and so on. |
pan |
string | PAN, five letters, four digits, one letter. On its own, an exact identity match. |
ckyc |
string | The 14 digit CKYC number. |
reg_number |
string | For anyone other than an individual: CIN for a company, LLPIN for an LLP, the firm or society registration number otherwise. |
debtor_name |
string | The borrower's name, 3 letters or more. Never enough on its own, and it widens the search to every similar name. |
dob |
string | Date of birth, YYYY-MM-DD, for an individual searched by name. |
incorporation_date |
string | Date of incorporation, YYYY-MM-DD, for a company. |
items |
array | Bulk: a list of up to 100 borrowers, each with the fields above. When given, the single-borrower fields are ignored. |
Code
Set LANDLENS_KEY to your key. In an AI app, connect https://verified.realestate/mcp once and ask in plain words instead. In Postman, download this API's collection, import it (File, Import) and set apiKey.
curl -X POST https://verified.realestate/api/v1/tools/cersai_borrower_check \
-H "Authorization: Bearer $LANDLENS_KEY" \
-H "Content-Type: application/json" \
-d '{"pan":"ABCDE1234F"}'
import os, requests
r = requests.post(
"https://verified.realestate/api/v1/tools/cersai_borrower_check",
headers={"Authorization": f"Bearer {os.environ['LANDLENS_KEY']}"},
json={
"pan": "ABCDE1234F"
},
timeout=60,
)
body = r.json()
print(body["status"], body["credits_charged"], body["data"])
const res = await fetch("https://verified.realestate/api/v1/tools/cersai_borrower_check", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.LANDLENS_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"pan": "ABCDE1234F"
}),
});
const body = await res.json();
console.log(body.status, body.credits_charged, body.data);
Check CERSAI for any mortgage registered against PAN ABCDE1234F before we sanction this loan.
Your AI shows the quote first, searches only after you say yes, and reads you the verdict, the lenders and the amounts when the search finishes.
Responses
Every answer has the same envelope. What status can say for this call:
| status | What it means |
|---|---|
proposal | The quote. Nothing is charged. Approve it by sending next.arguments to approve_action within 30 minutes, unchanged. |
not_found | The input does not meet the registry's rule (a name alone, a malformed PAN, a CKYC that is not 14 digits). data.error says what to add. Nothing is charged. |
queued | From approve_action, HTTP 202: the search is running. data.job_id, a poll block for job_status, and a status_url. |
ok | From job_status: data.status reads running until it is done (the result in data.payload) or failed (nothing charged, with the reason, including a balance too low when it ran). |
invalid_args | From approve_action: no matching quote, the quote is already being approved, or callback_url is not a public https address. |
Where the data comes from
The security interest register kept by CERSAI under the SARFAESI Act, where banks, housing finance companies and NBFCs file the charges they create: mortgages by deposit of title deeds, registered mortgages and other security interests.
Immovable property anywhere in India, searched by the borrower rather than the asset. Individuals, sole proprietorships, partnership firms, HUFs, Indian and foreign companies, LLPs, societies, trusts, associations of persons, bodies of individuals and government bodies.
Live. Each approved search runs on the registry at that moment and returns its search reference number, so the result can be quoted and traced.
The registry's own Debtor Based Search, field for field, with its search fee included in the price. The registry does not search an individual by name alone, so a name always travels with a PAN, date of birth or CKYC number (for anyone else, with a PAN, registration number or CKYC number).
Who uses it
Banks and NBFCs
Check a loan applicant's PAN, or a company's CIN, for charges other lenders already hold before sanction.
Credit and collections teams
Screen a portfolio of up to 100 borrowers under one approval, with a webhook when each batch finishes.
Law firms
Find every asset a borrower has pledged across India in one search, rather than one property at a time.
Investors and acquirers
See the secured lenders and amounts against a target company before a term sheet.
Limits and good practice
- A name result proves nothing about one person. The registry shows no borrower PAN, so a name brings back every similar name in India. Read the place, the co-borrowers and the lender, and search the PAN on its own for an exact answer.
- CERSAI holds only what lenders register there. A mortgage a lender never filed will not appear, so read the result beside the encumbrance certificate of each property.
- The registry's own PDF covers one asset. Our report_url covers every match.
- Bulk searches run one after another, a few minutes each, so a list of 100 takes hours. job_status on the batch lists every item as it settles.
- Immovable property only.
Pricing
Each borrower costs 2 credits once approved, with the registry's own fee included; a list is quoted as one total. A search that fails or returns nothing from the registry is refunded. The quote is free. Credits come from the same LandLens wallet as the chat and the minis. How billing works.
For thousands of calls a month, a portfolio sweep or a platform built on these registers, we quote a customised bulk price, with invoicing to match.
Questions
Is there an API to search CERSAI by PAN?
Yes. LandLens runs CERSAI's Debtor Based Search by PAN, CKYC number, company or LLP registration number, or name, after you approve a quote, and returns every matching asset and charge as JSON, over plain HTTPS or as an MCP tool.
Can I search CERSAI by name alone?
No. The registry does not search an individual by name alone; add a PAN, date of birth or CKYC number. Even then, a name brings back every similar name in India, so treat those as matches to review, not charges proven against the person.
How long does a borrower search take?
A few minutes after approval. Poll job_status, open the status_url, or pass a callback_url and the result is posted to you, signed.
Can I screen many borrowers at once?
Yes. Send up to 100 borrowers in items. They are quoted together, approved once, run one after another and billed per borrower.
What is the difference between this and the CERSAI property search?
The property search asks what charges sit on one Tamil Nadu parcel. This one asks what charges a person or company has given, on property anywhere in India.
How much does it cost?
2 credits per borrower, with the registry's fee included, refunded when the search fails.
Updated 22 Oct 2026 · OpenAPI description