ecourtsindia.com APIecourtsindia.com ↗
Search and retrieve detailed records from 239M+ Indian court cases. Access case status, hearing history, judges, parties, FIR details, and orders via 2 endpoints.
curl -X GET 'https://api.parse.bot/scraper/dba279e1-d9cb-4165-bcca-233d98085095/search_cases?page=2&query=theft' \ -H 'X-API-Key: $PARSE_API_KEY'
Search court cases by keyword query with pagination. Returns case summaries including parties, advocates, judges, court info, and case status. Results are 20 per page.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number (1-indexed) |
| queryrequired | string | Search query (e.g., 'murder', 'theft', 'land dispute', party name, case number) |
{
"type": "object",
"fields": {
"cases": "array of case summary objects with cnr, case_title, case_type, case_status, filing_number, filing_date, registration_number, registration_date, next_hearing_date, decision_date, judges, petitioners, respondents, petitioner_advocates, respondent_advocates, acts_and_sections, court_code, court_name, judicial_section, case_category, bench_type",
"query": "string - the search query",
"page_size": "integer - results per page (20)",
"total_hits": "integer - total number of matching cases",
"total_pages": "integer - total number of pages",
"current_page": "integer - current page number",
"has_next_page": "boolean",
"has_previous_page": "boolean"
},
"sample": {
"data": {
"cases": [
{
"cnr": "JHKD030008972014",
"judges": "J.M 1st Class Cum Addl.Civil Judge (Jr. Division)3",
"case_type": "CC",
"bench_type": "",
"case_title": "Hari Sao vs UnKnown theft",
"court_code": "JHKD03",
"court_name": "Chief Judicial Magistrate Koderma",
"case_status": "DISPOSED",
"filing_date": "2014-03-14",
"petitioners": "Hari Sao",
"respondents": "UnKnown theft",
"case_category": "",
"decision_date": "2015-02-18",
"filing_number": "900302/2014",
"judicial_section": "",
"acts_and_sections": "",
"next_hearing_date": "2015-02-18",
"registration_date": "2014-03-15",
"registration_number": "900302/2014",
"petitioner_advocates": "",
"respondent_advocates": ""
}
],
"query": "theft",
"page_size": 20,
"total_hits": 103380,
"total_pages": 5169,
"current_page": 2,
"has_next_page": true,
"has_previous_page": true
},
"status": "success"
}
}About the ecourtsindia.com API
The eCourtsIndia API covers over 239 million court cases across India's Supreme Court, High Courts, and District Courts via 2 endpoints. Use search_cases to find cases by keyword, party name, or case number, and get_case_detail to pull full records including hearing history, judge assignments, interlocutory applications, FIR details, and judgment orders — all indexed by CNR number.
Searching Cases
The search_cases endpoint accepts a query string — anything from a legal term like "land dispute" or "theft" to a party name or case number — and returns paginated results of 20 cases per page. Each result includes the CNR (Case Number Record), case_title (formatted as Petitioner vs Respondent), case_type, case_status, filing_number, filing_date, and registration_number. The response also surfaces total_hits, total_pages, has_next_page, and has_previous_page so you can walk through large result sets programmatically using the page parameter.
Case Detail Records
The get_case_detail endpoint takes a single cnr parameter (e.g., KLHC010203672022 for a Kerala High Court case or SCIN010425532018 for a Supreme Court case) and returns a full case record. Fields include judges (semicolon-separated list), court_name, court_code, district, state, bench_type, case_type, and purpose (the current scheduled purpose of the next hearing). The detail response also covers hearing history, interlocutory applications, FIR details where applicable, and judgment orders — making it suitable for reconstructing a complete case timeline.
CNR Format and Court Coverage
CNR numbers encode the court hierarchy: the first few characters identify the state and court. This means you can identify whether a case originated in a district court, a High Court, or the Supreme Court directly from the CNR. The API spans all three tiers of the Indian judiciary, giving consistent access to cases filed from across all states and union territories.
- Track active litigation involving a specific party by searching their name and monitoring
case_statusacross paginated results. - Build a case timeline tool by combining
get_case_detailhearing history and judgment order fields for a given CNR. - Monitor FIR-linked criminal cases by querying keywords and inspecting FIR details returned in the detail endpoint.
- Aggregate judge workload data by extracting
judgesandcourt_namefields from multiple case detail records. - Research land dispute case density across Indian courts by querying keywords and reading
total_hitsper term. - Validate case registration status before filing by searching a case number and checking
registration_numberandfiling_date. - Feed a legal research platform with structured case metadata including
case_type,bench_type, anddistrictfor filtering and analysis.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 250 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does eCourtsIndia have an official developer API?+
What does `get_case_detail` return beyond basic case info?+
cnr, case_type, and case_title, the detail response includes the full hearing history, assigned judges (semicolon-separated), interlocutory applications, FIR details where the case involves a criminal matter, judgment orders, and the current scheduled purpose. The bench_type and court_code fields let you distinguish between division benches and single-judge matters.Can I filter `search_cases` results by state, court type, or date range?+
query string and an optional page number — there are no built-in filter parameters for state, court tier, date range, or case type. You can fork this API on Parse and revise it to add filtering parameters if your use case requires pre-filtered result sets.