CourtListener Scraper - Case Law, PACER Dockets & Judges
Pricing
from $1.68 / 1,000 case law opinions
CourtListener Scraper - Case Law, PACER Dockets & Judges
Queries all six CourtListener indexes live: 8.3M case law opinions, 8.8M federal PACER dockets, 60M RECAP filings, 15k judges and 102k oral arguments. Filter by court, date, party, docket number, citation, nature of suit or citation count. No API key needed.
Pricing
from $1.68 / 1,000 case law opinions
Rating
0.0
(0)
Developer
ParseForge
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
12 hours ago
Last modified
Categories
Share
CourtListener Scraper - Case Law, PACER Dockets & Judges API
Query all six CourtListener indexes from one Actor: 8.3 million case law opinions, 8.8 million federal PACER dockets, 60 million RECAP filings, 15,000 federal judges and 102,000 oral argument recordings. Filter by court, filing date, party, docket number, reported citation, nature of suit, precedential status or citation count. No login and no API key required. Export to CSV, JSON, Excel, or XML.
Most CourtListener actors read one index, usually opinions, and hand back a dozen columns. This one reads the search API that powers courtlistener.com itself, so the same run can pull the leading antitrust opinions of the last century, every docket Google is a party to, the motions to dismiss filed in a district this month, the judges appointed by a given president, and the audio of a Supreme Court argument.
| Who uses it | What they pull from CourtListener |
|---|---|
| Litigation and IP teams | New filings in a court, a case type, or against a named party |
| Legal researchers and academics | Citation networks, precedential status, and full opinion metadata at scale |
| Legal tech and AI teams | Training and retrieval corpora with stable IDs and source PDF links |
| Journalists and watchdogs | Dockets as they are filed, and the free RECAP copies of the documents |
| Investors and analysts | Litigation exposure by company, court and nature of suit |
What it does
Pick one of six indexes in searchType and the Actor queries it live through CourtListener's public search API, following the cursor until it has the rows you asked for. Every filter you set is applied server side, so you pay for matches rather than for filtering afterwards.
- ⚖️ Case law opinions (8.3M). Case name, full caption, court, jurisdiction, docket number, filing and argument dates, precedential status, judge, panel, attorneys, reported citations, Lexis and neutral cites, citation count, nature of suit, posture, procedural history, syllabus, SCDB ID, the source PDF URL, a text snippet, the opinions it cites, and its sibling opinions.
- 🗂️ RECAP dockets (8.8M). Federal PACER dockets with the matching filings attached: case name, court, docket number, PACER case ID, filed, argued and terminated dates, assigned and referred judge, cause, nature of suit, jurisdiction type, jury demand, bankruptcy chapter, trustee, parties, attorneys and firms.
- 📄 RECAP documents (60M). One row per filing: document and attachment number, docket entry, entry date, document type, short and long description, page count, PACER document ID, whether the PDF is free in the RECAP archive, and the opinions it cites.
- 👩⚖️ Judges (15k). Name, date and place of birth and death, gender, race, religion, law schools, political affiliation, ABA rating, FJC ID, aliases, and the full position history.
- 🎧 Oral arguments (102k). Case name, court, docket number, argument date, judges, duration, MP3 URL and file size, and a transcript snippet.
Results export to CSV, JSON, Excel, or XML, or stream from the API.
What you can do with CourtListener data
📡 Watch a court, a party or a case type.
Set court, partyName or natureOfSuit, sort by filing date and run it on a schedule. Each run returns the newest filings first, so a diff against the last run is your alert feed.
📚 Build a case law corpus.
Search opinions by topic, filter by precedential status, and keep the source PDF link and the citation graph on every row. citedGt pulls only the cases the field actually relies on.
🏛️ Profile a bench.
Query the judges index by appointing president, law school or political affiliation, and get the full position history for each one.
🔍 Find the free copy of a filing.
Set availableOnly and RECAP returns only the documents whose PDF is already in the free archive, with the direct path, so you never hit a PACER paywall.
Why choose this scraper
| What you get | |
|---|---|
| Six indexes, not one | Opinions, RECAP dockets, RECAP documents, dockets, judges and oral arguments in one Actor, each with its own field set. |
| 26 server-side filters | Court, date range, case name, docket number, citation, judge, precedential status, citation count, party, nature of suit, entry text, document number, free-PDF-only, law school, appointer and political affiliation. Every one was measured against the unfiltered total before it shipped. |
| No API key needed | CourtListener throttles anonymous callers at 5 requests a minute per IP. The Actor rotates a fresh proxy session per request, so the throttle never binds. Paste your own free CourtListener token and it uses that instead. |
| Stable pagination | The API paginates by cursor, not offset. Measured over seven pages: 120 rows, zero duplicates. |
| Honest columns | Fields the search index never fills were removed rather than shipped empty. dateReargued is in CourtListener's schema and comes back blank even on Brown v. Board, so it is not a column here. |
| You pay for what you keep | Rows are billed as they are written, capped at your maxItems, so a page that overshoots the cap is trimmed before it is charged. |
How it compares
CourtListener actors on the Store are almost all single-index opinion readers. fortuitous_pirate/courtlistener-legal-data charges $0.02 to start plus $0.004 a row; pink_comic/courtlistener-legal-opinions and alwaysprimedev/courtlistener-scraper are opinions-only at $0.002 and $0.0025. None of them expose the RECAP document index, the judges database or the oral argument archive, and none expose the nature-of-suit, party-name or citation-count filters.
ParseForge publishes three narrower CourtListener readers that stay the better pick when they fit: CourtListener Opinions Scraper walks a court's opinion feed and returns the full opinion text, which this Actor does not; US Supreme Court Opinions Scraper organises SCOTUS by October Term; CourtListener Business Bankruptcy Scraper is purpose-built for chapter filings. Use this one when you need breadth, filters, or any index other than opinions.
What a row looks like
An opinion row:
{"searchType": "opinions","clusterId": 10967534,"caseName": "Lucid Group USA v. Johnston","url": "https://www.courtlistener.com/opinion/10967534/lucid-group-usa-v-johnston/","court": "Court of Appeals for the Fifth Circuit","courtId": "ca5","courtCitationString": "5th Cir.","courtJurisdiction": "F","docketNumber": "25-50319","docketId": 70260828,"status": "Published","dateFiled": "2026-09-04","citeCount": 0,"opinionCount": 1,"opinionType": "combined-opinion","perCuriam": false,"downloadUrl": "https://www.ca5.uscourts.gov/opinions/pub/25/25-50319-CV0.pdf","citedOpinionIds": "102224; 110290; 321258","scrapedAt": "2026-09-07T16:44:02.118Z"}
A RECAP docket row carries assignedTo, cause, suitNature, juryDemand, party, firm and a matchedDocuments array with the filings that matched your query. A judge row carries school, politicalAffiliation, abaRating and a positions array.
Configure the run
| Input | What it does |
|---|---|
searchType | Which index to query: opinions, recap, dockets, recap-documents, judges, oral-arguments. |
query | Full-text search, with quoted phrases and AND/OR/NOT. |
court | Court ID such as scotus, ca9, cand. Space-separate several. |
filedAfter / filedBefore | Filing date range. For oral arguments these filter on the argument date. |
orderBy | Relevance, filing date, argument date or citation count, ascending or descending. |
caseName, docketNumber | Match the caption, or pin an exact docket number. |
citation, judge, statuses, citedGt, citedLt | Opinion filters: reported cite, judge surname, precedential status, and citation count bounds. |
partyName, natureOfSuit, entryDescription, documentNumber, availableOnly | RECAP filters. |
school, appointer, politicalAffiliation | Judge filters. |
apiToken | Your own free CourtListener token. Lifts the anonymous throttle and skips the proxy. |
maxItems | How many rows to return. |
Pricing
Pay-per-event, and only rows that are actually written are billed: $0.004 per opinion, RECAP docket or oral argument, $0.003 per docket, $0.002 per RECAP document and $0.005 per judge, dropping by 58% on Gold and above, plus a run-start fee of $0.002 on the free plan and $0.0002 on any paid one.
| Rows collected | Opinions, free plan | Opinions, Gold | RECAP documents, Gold |
|---|---|---|---|
| 100 | $0.40 | $0.17 | $0.08 |
| 1,000 | $4.00 | $1.68 | $0.84 |
| 10,000 | $40.00 | $16.80 | $8.40 |
New Apify accounts start with $5 in free credit.
Free users
Free-plan runs return up to 10 rows as a preview. Upgrade your Apify plan to collect up to 1,000,000 rows per run.
Run it
- Create a free Apify account with $5 in credit.
- Open the CourtListener Scraper.
- Pick a
searchType, set your filters, and click Start. - Export the results as CSV, Excel, JSON, or XML from the Dataset tab.
Run it programmatically through the Apify API or the ApifyClient for JavaScript and Python.
Use with AI agents (MCP)
Give an AI agent live access to federal case law and dockets through the Model Context Protocol:
$claude mcp add --transport http apify "https://mcp.apify.com?tools=parseforge/courtlistener-docket-scraper"
Then prompt it in plain language:
- "Find the twenty most cited antitrust opinions in the Ninth Circuit."
- "List every federal docket filed against Google this year, newest first."
- "Which judges appointed by Obama went to Harvard Law?"
Copy this into ChatGPT, Claude, or Cursor to start:
Use the Apify Actor "parseforge/courtlistener-docket-scraper" to search CourtListener. Input: { "searchType": "opinions" | "recap" | "dockets" | "recap-documents" | "judges" | "oral-arguments", "query": "<text>", "court": "<court id>", "filedAfter": "YYYY-MM-DD", "maxItems": <n> }. It returns case name, court, docket number, dates, status, citation count and source URLs per row. Call it with the ApifyClient and my APIFY_TOKEN.
Troubleshooting
Why am I getting no results?
Every filter is ANDed, and an over-narrow combination returns an empty set rather than an error. Drop one filter at a time. citation and citedGt apply to opinions only; partyName and natureOfSuit apply to RECAP only, so setting them on the wrong searchType silently narrows nothing.
Why is the run slow without a proxy?
CourtListener throttles anonymous callers at 5 requests a minute per IP, and each request returns 20 rows. With the proxy on, a fresh session per request means a fresh allowance. With proxy and token both off, expect roughly 100 rows a minute.
Why is a field empty?
The search index fills fields sparsely by record age and type. attorney, lexisCite, posture and scdbId populate on older and frequently cited opinions and are blank on this week's slip opinions; dateTerminated, chapter and trustee populate on closed and bankruptcy dockets. Empty means the source did not publish it.
Why fewer rows than maxItems?
Your query has that many matches. The log prints CourtListener's own total for the query on the first page, so compare against that.
FAQ
| Question | Answer |
|---|---|
| Do I need a CourtListener account? | No. Every endpoint this Actor reads is public and anonymous. A free token is supported and makes long runs faster, but it is optional. |
| Which indexes can I search? | Six: case law opinions, RECAP dockets, RECAP dockets with documents, RECAP documents, judges, and oral arguments. |
| Does it return the full opinion text? | No. It returns the metadata, a text snippet and the source PDF URL. For complete opinion text use CourtListener Opinions Scraper. |
| Can I get PACER documents for free? | The ones already donated to the RECAP archive, yes. Set availableOnly to keep only those, and each row carries the archive path. |
| How fresh is the data? | It is read at run time from the same index that powers courtlistener.com. |
| How many rows per run? | Free plan: 10. Paid: up to 1,000,000, bounded by how many records your query actually matches. |
| Does it deduplicate? | The API paginates by cursor, which is stable under insertion. Measured over seven pages: 120 rows, zero duplicates. |
| Is this an official CourtListener product? | No. It is unofficial and reads only the public API. |
Related actors
- CourtListener Opinions Scraper: full opinion text, walked by court feed.
- US Supreme Court Opinions Scraper: SCOTUS opinions organised by October Term.
- CourtListener Business Bankruptcy Scraper: US business bankruptcy filings by chapter and court.
- Justia Case Law Scraper: case law from Justia.
- Harris County Court Records Scraper: county-level dockets from Harris County, Texas.
Browse the full ParseForge collection for more scrapers.
🆘 Need help? Email parseforge@protonmail.com with your run ID, your input, and what you expected.
⚠️ Disclaimer. This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by the Free Law Project or CourtListener. It collects only publicly available court data through the public API. You are responsible for using the data in compliance with CourtListener's terms and applicable laws. Court records concern real people: do not use this data to identify, profile, or target individuals.
