# Indian Kanoon Case Law Scraper (`jungle_synthesizer/indian-kanoon-case-law-scraper`) Actor

Search India's largest free case-law and legislation index by keyword. Get structured judgment metadata: court, citation, decision date, bench, full text, and citation counts for legal research and litigation analysis.

- **URL**: https://apify.com/jungle\_synthesizer/indian-kanoon-case-law-scraper.md
- **Developed by:** [BowTiedRaccoon](https://apify.com/jungle_synthesizer) (community)
- **Categories:** Business, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.40 / 1,000 record scrapeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Indian Kanoon Case Law Scraper

Search [Indian Kanoon](https://indiankanoon.org), India's largest free case-law and legislation index, by keyword and get back structured judgment data — court, citation, decision date, bench, full text, and citation counts — instead of a page of search results you'd have to open one by one.

***

### Indian Kanoon Scraper Features

- Runs your search phrase against Indian Kanoon's own full-text index, spanning the Supreme Court, every High Court, tribunals, and central and state legislation
- Returns the complete judgment or order text for every matching document, not just the search snippet
- Captures court, citation, decision date, and bench (judge names) when the document discloses them
- Reports how many other documents cite each result, plus the case citations and Act/Code references the judgment itself draws on
- Paginates through the result set automatically up to your `maxItems` target

***

### Who Uses Indian Kanoon Case Law Data?

- **Legal researchers and litigators** — pull every judgment on a legal issue or statute into one structured dataset instead of reading search results page by page
- **Legaltech and case-management tools** — feed full-text judgments and citation signals into search, summarization, or precedent-ranking products
- **Compliance and policy teams** — track how courts are interpreting a specific Act, section, or regulation over time
- **Academic and market researchers** — analyze case law trends across courts, time periods, or subject areas at scale

***

### How Indian Kanoon Scraper Works

1. Give it a `query` — the search phrase you'd type into Indian Kanoon's own search box (a legal issue, party name, or statute).
2. It works through the matching results, opening each document to pull the full text and metadata.
3. Records land in your dataset as they're collected, so you can start using them before the run finishes.

***

### Input

```json
{
  "query": "right to privacy article 21",
  "maxItems": 10
}
```

| Field          | Type    | Default | Description                                                           |
|----------------|---------|---------|-----------------------------------------------------------------------|
| `query`        | string  | —       | Search phrase to run against Indian Kanoon (required)                 |
| `maxItems`     | integer | 10      | Maximum number of documents to scrape (required)                      |
| `resumeCursor` | string  | —       | Cursor from a previous run's Output, used to continue a stopped crawl |

***

### Indian Kanoon Scraper Output Fields

```json
{
  "title": "Vinit Kumar vs Central Bureau Of Investigation And Ors on 22 October, 2019",
  "doc_type": "judgment",
  "court": "Bombay High Court",
  "citation": "AIRONLINE 2019 BOM 1117, 2020 (1) ABR(CRI) 1",
  "decision_date": "22 October, 2019",
  "judges": "Ranjit More, N. J. Jamadar",
  "doc_url": "https://indiankanoon.org/doc/107953018/",
  "full_text": "...",
  "cited_by_count": 1,
  "cites": ["Some Earlier Case vs State"],
  "acts_referenced": ["The Indian Telegraph Act, 1885"]
}
```

| Field             | Type    | Description |
|-------------------|---------|-------------|
| `title`           | string  | Case or document title, as published on Indian Kanoon |
| `doc_type`        | string  | `judgment`, `act`, or `section`, inferred from the document title |
| `court`           | string  | Court, tribunal, or source database the document was filed under |
| `citation`        | string  | Published equivalent citation(s), when Indian Kanoon lists one (sparse) |
| `decision_date`   | string  | Decision or order date, as it appears in the title |
| `judges`          | string  | Bench (judge names) or authoring judge, when disclosed (sparse — tribunal orders frequently omit this) |
| `doc_url`         | string  | Canonical Indian Kanoon document URL |
| `full_text`       | string  | Full judgment or document text |
| `cited_by_count`  | integer | Number of other Indian Kanoon documents that cite this one |
| `cites`           | array   | Case citations the judgment text itself links to inline (sparse — not every document hyperlinks its citations) |
| `acts_referenced` | array   | Acts, Codes, Rules, or constitutional provisions the judgment text references inline (sparse) |

`cited_by_count` is Indian Kanoon's own authoritative citation count for the document. `cites` and `acts_referenced` reflect the citations and statute references the judgment's own text hyperlinks — real links drawn from the document, not every citation Indian Kanoon's broader index associates with it, so an empty array means the text carried no inline links rather than that the document has no citation history.

***

### Resuming a large crawl

Every run emits a `resumeCursor` in its Output. If a large crawl stops before it finishes — because it hit `maxItems`, your spend cap (`maxTotalChargeUsd`), or was aborted — start a new run with **the same input** plus that `resumeCursor` to continue from where it left off. The crawl resumes from the queued work the previous run didn't reach.

- You are **not re-charged** for records the earlier run already delivered.
- Resume within your account's run-retention window — on the free tier, roughly your 10 most recent runs. Once the source run is pruned, its `resumeCursor` is no longer valid.
- `resumeCursor` is opaque — supply it unmodified.

***

### FAQ

#### How do I search Indian Kanoon case law?

Set `query` to the search phrase you want to run — a legal issue, party name, or statute — and `maxItems` to how many documents you want back. No account or Indian Kanoon login is required.

#### What data can I get from Indian Kanoon?

Full judgment and order text, court, citation, decision date, bench, and citation signals (how many documents cite each result, plus the case and statute references the judgment itself draws on) for Supreme Court, High Court, tribunal, and legislative documents.

#### Does this cover every Indian court?

Indian Kanoon's own index spans the Supreme Court, every High Court, numerous tribunals, and central and state legislation — this scraper searches that same index, so coverage matches whatever Indian Kanoon itself has indexed for your query.

#### Why are `cites` and `acts_referenced` sometimes empty?

Those fields capture citations and statute references the judgment's own text hyperlinks. Not every document — especially shorter orders — links its citations inline, so an empty array there means no inline links were present, not that the document has no citation history. `cited_by_count` is unaffected and always reflects Indian Kanoon's own count.

#### How much does Indian Kanoon Case Law Scraper cost to run?

It runs on a pay-per-result model, so you pay for the documents you actually get back — not a flat rate per run regardless of output.

***

### Need More Features?

Have a request or found a bug? [Open an issue](https://console.apify.com/actors/indian-kanoon-case-law-scraper/issues) and we'll take a look.

### Why Use Indian Kanoon Case Law Scraper?

- **The only full-text search + citation layer for Indian case law on the store** — distinct from per-court case-status lookup tools, this searches Indian Kanoon's cross-court judgment and legislation index by keyword
- **Full text, not just a snippet** — every result includes the complete judgment or order text, ready for downstream search or analysis
- **Structured citation signals** — citation counts and in-text references come back as clean fields instead of buried in prose

# Actor input Schema

## `sp_intended_usage` (type: `string`):

What will this data feed? E.g. lead lists, KYB checks, price tracking.

## `sp_improvement_suggestions` (type: `string`):

Provide any feedback or suggestions for improvements.

## `sp_contact` (type: `string`):

We'll personally help with your use case. No spam.

## `resumeCursor` (type: `string`):

Leave empty for a fresh crawl. To CONTINUE a previous run where it stopped — without paying again for records you already received — paste the `resumeCursor` value from that run's Output (the run's OUTPUT key). Resume promptly: the previous run's data expires with your account's retention window (free tier: your ~10 most recent runs).

## `maxItems` (type: `integer`):

Maximum number of records to scrape

## `query` (type: `string`):

Full-text search phrase (e.g. a legal issue, party name, or statute). Matches Indian Kanoon's own search engine.

## Actor input object example

```json
{
  "sp_intended_usage": "Describe your intended use...",
  "sp_improvement_suggestions": "Share your suggestions here...",
  "sp_contact": "Share your email here...",
  "maxItems": 10,
  "query": "right to privacy article 21"
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "sp_intended_usage": "Describe your intended use...",
    "sp_improvement_suggestions": "Share your suggestions here...",
    "sp_contact": "Share your email here...",
    "maxItems": 10,
    "query": "right to privacy article 21"
};

// Run the Actor and wait for it to finish
const run = await client.actor("jungle_synthesizer/indian-kanoon-case-law-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "sp_intended_usage": "Describe your intended use...",
    "sp_improvement_suggestions": "Share your suggestions here...",
    "sp_contact": "Share your email here...",
    "maxItems": 10,
    "query": "right to privacy article 21",
}

# Run the Actor and wait for it to finish
run = client.actor("jungle_synthesizer/indian-kanoon-case-law-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "sp_intended_usage": "Describe your intended use...",
  "sp_improvement_suggestions": "Share your suggestions here...",
  "sp_contact": "Share your email here...",
  "maxItems": 10,
  "query": "right to privacy article 21"
}' |
apify call jungle_synthesizer/indian-kanoon-case-law-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,jungle_synthesizer/indian-kanoon-case-law-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/HZ3lhiEXyekjQSdMQ/builds/n1EDgZ0uxFKdmYdJa/openapi.json
