India Court Judgments Scraper - Supreme Court & High Courts API
India Court Judgments Scraper — Supreme Court, High Courts & Tribunals
Extract structured records of Indian court judgments and orders from the Supreme Court of India, all 24 High Courts, central tribunals (NCLT, NGT, ITAT, CESTAT, etc.), Law Commission reports, and central acts. The scraper is a thin, BYO-token wrapper around the official Indian Kanoon API, which indexes more than 30 million judgments — the largest single source of decided case law in India.
What this Actor returns
- 25+ structured fields per judgment: case title, court, jurisdiction tier, publish date, authoring judge, citation count, citing/cited cases, and canonical URL
- Optional full judgment text (HTML and plain text) and acts cited, opt-in via the
fetchFullTextflag - Filter by court, free-text keyword, authoring judge, citation, date range, or any combination
- Sort by relevance (best for keyword search) or by date — newest or oldest first
- Coverage across India's full judicial hierarchy: Supreme Court → 24 High Courts → tribunals → central laws → Constitution → Law Commission
Required: Indian Kanoon API token
This is a BYO-API-token actor. It does not include credit for the underlying Indian Kanoon service.
- Register at api.indiankanoon.org/signup/. New accounts receive Rs. 500 of free trial credit.
- Copy your shared API token from the dashboard.
- Paste it into the
apiTokeninput field when running the actor.
Indian Kanoon's per-call pricing (billed by IK directly to the token holder, on top of any Apify usage):
| Call type | Cost (INR) |
|---|---|
| Search page (10 results) | 0.50 |
| Document metainfo | 0.02 |
| Full document HTML | 0.20 |
| Original court PDF copy | 0.50 |
A search of 100 results with fetchFullText: false costs roughly Rs. 5 (10 search pages). Toggling fetchFullText: true adds Rs. 0.20 per record. Plan accordingly.
ToS note: Per Indian Kanoon's terms, downstream rendering of these results to end users requires displaying the "Powered by IKanoon" attribution. The actor returns raw structured data; attribution is the consumer's responsibility.
Who uses Indian court data and why?
- Indian legal-tech startups — build precedent search, citation graphs, and AI-driven research tools without scraping eCourts directly
- Compliance and corporate litigation teams — screen counterparties and directors for past or pending litigation
- Law firms and litigators — surface judgments authored by a specific judge or interpreting a specific section
- Legal academics and researchers — bulk-pull judgments by court, period, or topic for empirical and doctrinal studies
- Journalists and policy analysts — monitor recent rulings on constitutional, civil-rights, regulatory, or commercial matters
- AI/ML teams — train and evaluate legal language models on structured Indian case-law data
How the scraper works
- You provide an
apiTokenand at least one filter (search query, court, judge, citation, or date range). - The actor builds an Indian Kanoon
formInputquery string — for example,right to privacy doctypes: supremecourt fromdate: 1-1-2017 todate: 31-12-2017 sortby: mostrecent. - It POSTs to
api.indiankanoon.org/search/with your token in theAuthorizationheader, paginating 10 results at a time until it reachesmaxItems. - For each result it builds a flat record — case ID, title, court, dates, judge, citation counts, and so on.
- If
fetchFullText: true, it additionally calls/doc/{tid}/per record to pull the full judgment HTML, citing cases, cited-by cases, and a regex-extracted list of acts referenced. - Records are streamed to the Apify dataset as they're collected.
Input
Right-to-privacy line of cases at the Supreme Court
{
"apiToken": "your_indian_kanoon_token",
"query": "right to privacy",
"court": "supremecourt",
"orderBy": "mostrecent",
"maxItems": 50
}
Delhi High Court judgments by a specific judge
{
"apiToken": "your_indian_kanoon_token",
"court": "delhi",
"author": "Sanjeev Sachdeva",
"orderBy": "mostrecent",
"maxItems": 100
}
All Bombay High Court IP cases in a date range
{
"apiToken": "your_indian_kanoon_token",
"query": "trademark infringement",
"court": "bombay",
"fromDate": "2023-01-01",
"toDate": "2024-12-31",
"maxItems": 200
}
Look up a specific case by citation
{
"apiToken": "your_indian_kanoon_token",
"citation": "(2017) 10 SCC 1",
"maxItems": 5
}
Full judgment text for further analysis (more expensive)
{
"apiToken": "your_indian_kanoon_token",
"query": "Section 138 Negotiable Instruments Act",
"court": "supremecourt",
"fetchFullText": true,
"maxItems": 25
}
Tribunals — NCLT/ITAT/NGT decisions
{
"apiToken": "your_indian_kanoon_token",
"query": "insolvency resolution",
"court": "tribunals",
"orderBy": "mostrecent",
"maxItems": 100
}
Input parameters
| Field | Type | Default | Description |
|---|---|---|---|
| apiToken | string | (required) | Your paid Indian Kanoon API token. Stored as a secret. |
| query | string | "right to privacy" |
Free-text search over judgment content and metadata. Use double quotes for phrases. Supports IK syntax: author:, cites:, citedby:, etc. |
| court | string | "supremecourt" |
Restrict to a specific court. See the cheat sheet below. Empty string = all courts. |
| author | string | "" |
Authoring-judge filter (partial match, e.g. Chandrachud, Bhushan). |
| citation | string | "" |
Citation filter (e.g. (2017) 10 SCC 1 for Puttaswamy). |
| fromDate | string | "" |
Earliest publish date, ISO YYYY-MM-DD. Converted internally to IK's DD-MM-YYYY. |
| toDate | string | "" |
Latest publish date, ISO YYYY-MM-DD. |
| orderBy | string | "relevance" |
relevance, mostrecent, or leastrecent. |
| fetchFullText | boolean | false |
If true, additionally fetch the full HTML body of each judgment. Adds Rs. 0.20 per record to your IK bill. |
| maxItems | integer | 10 |
Maximum records to return. Each search page returns 10 results (Rs. 0.50 per page). |
| proxyConfiguration | object | disabled | Proxy settings. Not required — IK is a public API. |
Court cheat sheet
| Code | Court |
|---|---|
supremecourt |
Supreme Court of India |
delhi |
Delhi High Court |
bombay |
Bombay High Court |
madras |
Madras High Court |
calcutta |
Calcutta High Court |
kerala |
Kerala High Court |
karnataka |
Karnataka High Court |
allahabad |
Allahabad High Court |
andhra |
Andhra Pradesh / pre-bifurcation Andhra & Telangana |
chattisgarh |
Chhattisgarh High Court |
gauhati |
Gauhati High Court |
gujarat |
Gujarat High Court |
himachal_pradesh |
Himachal Pradesh High Court |
jammu |
Jammu & Kashmir High Court |
jharkhand |
Jharkhand High Court |
madhyapradesh |
Madhya Pradesh High Court |
meghalaya |
Meghalaya High Court |
manipur |
Manipur High Court |
orissa |
Orissa / Odisha High Court |
patna |
Patna High Court |
punjab |
Punjab & Haryana High Court |
rajasthan |
Rajasthan High Court |
sikkim |
Sikkim High Court |
telangana |
Telangana High Court |
tripura |
Tripura High Court |
uttaranchal |
Uttarakhand High Court |
tribunals |
Tribunals (NCLT, NGT, ITAT, CESTAT, etc.) |
central |
Central Indian acts |
lawcommissionofindia |
Law Commission of India reports |
constitution |
Constitution of India |
Output
Each dataset record carries the following fields:
| Field | Type | Description |
|---|---|---|
| doc_id | number | Indian Kanoon document ID — use to fetch the full doc via https://indiankanoon.org/doc/{doc_id}/. |
| title | string | Case title, typically "Petitioner vs Respondent on Date". |
| court | string | Full court name (e.g. "Supreme Court of India"). |
| court_code | string | IK doctype code (supremecourt, delhi, etc.). |
| jurisdiction_level | string | Hierarchy: supreme, high_court, tribunal, central, law_commission, or other. |
| publish_date | string | Date of judgment / publication, ISO YYYY-MM-DD. |
| publish_year | number | Year of judgment. |
| author | string | Authoring judge or bench description. |
| headline | string | Search-result snippet with HTML highlights stripped, truncated to 1,000 characters. |
| doctype | string | Indian Kanoon document-type code. |
| num_cites | number | Number of cases this judgment cites. |
| num_cited_by | number | Number of later cases citing this judgment. |
| has_court_copy | boolean | True when an original court PDF is available via /origdoc/{doc_id}/. |
| citations | string[] | Cases this judgment cites (only populated with fetchFullText: true). Up to 25. |
| cited_by | string[] | Later cases citing this judgment (only with fetchFullText: true). Up to 25. |
| acts_cited | string[] | Indian Acts referenced in the body — Indian Penal Code, Negotiable Instruments Act, Constitution Articles, etc. Only with fetchFullText: true. |
| full_text | string | Plain-text judgment body (only with fetchFullText: true). |
| full_text_html | string | HTML judgment body, truncated to 100,000 characters. |
| url | string | Canonical Indian Kanoon URL. |
| api_url | string | Indian Kanoon API URL. |
| scraped_at | string | ISO timestamp of when the record was scraped. |
What this actor does NOT cover
- Live case status / next hearing date — these belong to the eCourts portal (services.ecourts.gov.in), not Indian Kanoon. IK indexes decided judgments and orders, not live docket status.
- CNR numbers — Case Number Records are an eCourts-internal identifier and aren't reliably exposed in IK metadata. Use
doc_id(Indian Kanoon'stid) as the stable PAN-India identifier instead. - District court records — coverage in IK is sparse below the High Court level.
- Pending cases that haven't been decided — by definition not in IK.
If you need any of the above, you'll need a different scraper that talks to eCourts directly. eCourts uses aggressive captcha and is not in scope for this actor.
Pricing model
You pay Apify per record (per the actor's PPE pricing) and you pay Indian Kanoon directly for each search/document call charged against your IK token. The two bills are independent. The actor is a thin, transparent wrapper — the IK costs are a 1:1 pass-through, not marked up.
Useful links
- Indian Kanoon API home
- Indian Kanoon API documentation
- Indian Kanoon API pricing
- Indian Kanoon search tips (query syntax, filters, operators)
- Sign up for an API token