CourtListener Scraper | 16 Fields, Opinions & Dockets avatar

CourtListener Scraper | 16 Fields, Opinions & Dockets

Pricing

from $0.60 / 1,000 court records

Go to Apify Store
CourtListener Scraper | 16 Fields, Opinions & Dockets

CourtListener Scraper | 16 Fields, Opinions & Dockets

Scrape US federal and state court opinions, case law, and dockets from CourtListener. Filter by query, court, and date. Get case name, judge, citations, docket number as structured JSON, no API key. Use it as an MCP server in Claude, ChatGPT & AI agents.

Pricing

from $0.60 / 1,000 court records

Rating

0.0

(0)

Developer

The Mine Works

The Mine Works

Maintained by Community

Actor stats

0

Bookmarked

7

Total users

4

Monthly active users

2 days ago

Last modified

Share

CourtListener Scraper: 16 Fields, Opinions & Dockets

Pay only for results delivered. Browse all Actors.

๐Ÿ’ฐ From $0.60 / 1,000 results.

How to search US case law and dockets without PACER fees

Search CourtListener, the Free Law Project's database of US federal and state court records, by keyword or quoted phrase. Get back 16 structured fields per record: case name, full case name, court and court ID, filing and argument dates, docket number, judge, reporter citations, citation count, precedential status, nature of suit, cluster and docket IDs, and a direct CourtListener URL.

No API key is required. A free CourtListener token is optional and only raises your rate limit. Up to 10,000 records per run, paginated automatically.

โœ… No API key required ยท โœ… 16 fields per record ยท โœ… Opinions and dockets ยท โœ… Court and date-range filters ยท โœ… MCP-ready for AI agents

Search US case law by topic

The core run. resultType defaults to opinions.

{
"query": "patent infringement",
"maxResults": 50
}

Quoted phrases work as you would expect: "\"inevitable disclosure\"" searches the phrase, not the words.

Restrict a search to one court

court takes a CourtListener court slug, scotus, ca9, cafc, ded, and so on.

{
"query": "patent infringement",
"resultType": "opinions",
"court": "ca9",
"maxResults": 100
}

Pull dockets instead of opinions

resultType: "dockets" searches RECAP docket records rather than written opinions, the right choice when you care about what was filed, not what was decided.

{
"query": "securities class action",
"resultType": "dockets",
"dateFrom": "2026-01-01",
"maxResults": 200
}

Monitor recent filings on a topic

Set a tight dateFrom, save it as a task, and schedule it. Deduplicate downstream on cluster_id or docket_id.

{
"query": "artificial intelligence copyright",
"resultType": "opinions",
"dateFrom": "2026-07-01",
"dateTo": "2026-08-01",
"maxResults": 500
}

Raise your rate limit with a free token

CourtListener issues free API tokens. Supplying one lifts the anonymous rate limit, worth doing before a large backfill.

{
"query": "trade secret misappropriation",
"maxResults": 5000,
"apiToken": "YOUR_COURTLISTENER_TOKEN"
}

The token is optional. Without it the actor still runs, just under the anonymous limit.

What data do you get for each court record

Captured from a live run against query: "patent infringement", court: "ca9":

{
"case_name": "Cpc Patent Technologies Pty Ltd. v. Apple Inc.",
"case_name_full": "",
"court": "Court of Appeals for the Ninth Circuit",
"court_id": "ca9",
"date_filed": "2024-10-24",
"date_argued": "2024-09-24",
"docket_number": "23-3449",
"judge": "",
"citations": ["119 F.4th 1126"],
"cite_count": 3,
"status": "Published",
"nature_of_suit": "",
"cluster_id": 10160745,
"docket_id": 69032034,
"url": "https://www.courtlistener.com/opinion/10160745/cpc-patent-technologies-pty-ltd-v-apple-inc/",
"scraped_at": "2026-07-15T04:14:18.606Z"
}

Every record carries these 16 fields:

FieldDescription
๐Ÿ“› case_nameShort case name (e.g. Smith v. Jones)
๐Ÿ“„ case_name_fullFull official case name; blank when CourtListener has none on file
๐Ÿ›๏ธ courtCourt name
๐Ÿ†” court_idCourtListener court slug, use it in the court filter
๐Ÿ“… date_filedFiling date (YYYY-MM-DD)
๐Ÿ—ฃ๏ธ date_arguedOral argument date, where applicable
๐Ÿ”ข docket_numberCourt docket number
๐Ÿ‘จโ€โš–๏ธ judgePresiding judge if published; blank when not recorded
๐Ÿ“š citationsArray of reporter citations
๐Ÿ”— cite_countHow many later opinions cite this one, a rough authority signal
โœ… statusPrecedential status (e.g. Published)
โš–๏ธ nature_of_suitNature of suit if classified; blank when not set
๐Ÿ†” cluster_idCourtListener opinion cluster ID, stable, deduplicate on this
๐Ÿ†” docket_idCourtListener docket ID
๐Ÿ”— urlCourtListener record URL
๐Ÿ•’ scraped_atISO timestamp when the record was captured

Blank strings are honest, not missing data: CourtListener genuinely has no full case name, judge, or nature-of-suit classification on file for many records, and we surface exactly what the source holds rather than inventing a value. Results are ordered by relevance score, and a final _type: "summary" row reports total_available so you know how much of the result set you pulled.

How does this work without an API key or PACER

CourtListener is run by the Free Law Project and exposes a public REST API. This actor calls the v4 search endpoint over plain HTTP, no browser, no proxy, no anti-bot to defeat, paginates via the cursor CourtListener returns, and normalises each result into a flat record.

PACER charges roughly $0.10 per page for federal court documents. CourtListener's RECAP archive holds a large share of the same material, contributed by users, at no per-page cost. That is the arbitrage this actor exists to make easy.

Requests retry automatically on 429 and 5xx responses with a capped backoff. A run that matches nothing logs it and charges nothing.

What does court record data cost here

EventPriceYou pay when
Record delivered$0.001A court record lands in your dataset

$1.00 per 1,000 records on the FREE plan, falling to $0.60 on GOLD and above. Empty searches and failed requests are never charged.

Common use cases

Legal research pipelines. Build a corpus of primary law on a topic and feed it into your own search or RAG system.

Docket monitoring. Watch a court or a topic for new filings on a schedule.

Litigation intelligence. Track how often a doctrine is cited, and by whom, via cite_count and citations.

Compliance and risk. Surface enforcement and litigation patterns in a regulated category.

Getting started

  1. Enter a search query, plain keywords or a quoted phrase.
  2. Choose opinions (written decisions) or dockets (RECAP filings).
  3. Optionally narrow by court slug and a dateFrom / dateTo range.
  4. Set maxResults (up to 10,000).
  5. Click Start, then export as JSON, CSV, or Excel, or pull it via API or MCP.

Run it on a schedule

  1. Run the actor once with the input you want repeated, then click Save as a task.
  2. In the Apify Console, go to Schedules โ†’ Create new.
  3. Name it, set your timezone, and pick a frequency or a cron expression (e.g. 0 6 * * *).
  4. Under Actors or tasks to run, add the task you saved.
  5. Save. Nothing is charged just for a schedule existing.

Full options are in Apify's Schedules documentation.

FAQ

Do I need a CourtListener API key? No. A free token is optional and only raises your rate limit, which matters on large backfills.

What is the difference between opinions and dockets? Opinions are written court decisions. Dockets are the RECAP filing records for a case. Set resultType accordingly.

How do I find a court ID? Every returned record carries court_id. Run a broad search first, read the court_id values, then re-run filtered.

Why are judge and nature_of_suit sometimes blank? Because CourtListener has no value on file for that record. The field is surfaced as blank rather than filled with a guess.

How many records can I pull in one run? Up to 10,000, paginated automatically via the API cursor.

How do I deduplicate across scheduled runs? Match on cluster_id for opinions or docket_id for dockets.

Is this a substitute for PACER? For much federal material, RECAP covers it at no per-page cost. It is a contributed archive, so coverage is not guaranteed to be complete for every case.

Use from Claude, ChatGPT and any MCP agent

https://mcp.apify.com/?tools=themineworks/courtlistener-court-records

Or call it programmatically:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('themineworks/courtlistener-court-records').call({
query: 'patent infringement',
court: 'ca9',
maxResults: 50,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Got the case law. Now widen the picture:

Typical flow: courtlistener finds the case law, fda-recalls surfaces the enforcement, crossref adds the academic backing.


Disclaimer: This actor is an independent tool and is not affiliated with the Free Law Project. Court records are public documents; nothing here is legal advice.

Questions or need a custom field set? Reach out through the Apify profile.

Last verified: 2026-08