US Federal Court Cases Scraper
Pricing
from $0.49 / 1,000 cases
US Federal Court Cases Scraper
Search US federal court dockets and get one row per case: caption, court, docket number, filing date, nature of suit, cause, assigned judge, parties, counsel and a docket link. The case index, not the filings. No PACER account. $0.50 per 1,000 cases.
Pricing
from $0.49 / 1,000 cases
Rating
0.0
(0)
Developer
Dami's Studio
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Share
Search US federal court dockets and get one row per case: the caption, court, docket number, filing date, nature of suit, cause, judge, parties, counsel and a link to the public docket on CourtListener. Search terms or filters go in: a court, a filing date window, a nature-of-suit code, a party, an attorney or the assigned judge.
It returns the case index, not the filings, so there is no complaint, no motion, no opinion and no PDF. And it is not fast: about 80 to 90 cases a minute.
| Input | Search terms, court ids, filing dates, nature-of-suit codes, cause, case name, docket numbers, party, judge or attorney |
| Output | One row per federal case: caption, court, docket number, filing and closing dates, nature of suit, cause, judge, parties, counsel, docket link |
| Ceiling | 2,000 cases and 10 search terms per run |
| Speed | About 80 to 90 cases a minute: two runs of 200 cases took 136 and 152 seconds |
| Account needed | None. No PACER account and no API key |
| Price | $0.50 per 1,000 cases on the Free plan, a little less on paid plans. The free plan's $5 a month covers about 10,000 |
🔍 What US Federal Court Cases Scraper does
Each search term runs as its own search over the docket record, which covers the caption, the cause, the parties and the filing descriptions. Quote a phrase to hold it together. Your filters narrow every term the same way, and a case found twice in one run is delivered once.
Every row is checked against every filter you set before it is charged. A case from the wrong court, date, code, party or judge is dropped, and a free row tells you how many went and why.
Results come 20 to a page at a steady pace, so give 1,000 cases about twelve minutes.
Party and counsel names come through exactly as the court published them. The internal person ids the source attaches to each party and attorney are dropped, so the rows cannot be joined into a profile of anyone.
📋 What data you get from each federal court case
| What you get | Field |
|---|---|
| The stable id and the caption, short and long | docketId, caseName, caseNameFull |
| The court, its id and its citation form | court, courtId, courtCitation |
| The docket number | docketNumber |
| Filed, closed and argued dates | dateFiled, dateTerminated, dateArgued |
| Nature of suit, with its code, and the cause | natureOfSuit, natureOfSuitCode, cause |
| Jurisdiction type and jury demand | jurisdictionType, juryDemand |
| The assigned judge, and a magistrate it was referred to | assignedJudge, referredJudge |
| Every party, and how many | parties, partyCount |
| Counsel of record and their firms | attorneys, lawFirms |
| Bankruptcy chapter, on bankruptcy dockets | bankruptcyChapter |
| The court's own PACER id, the docket page, and when the record reached CourtListener | pacerCaseId, docketUrl, addedToCourtListener |
▶️ How to scrape US federal court cases
- Open US Federal Court Cases Scraper and click Try for free.
- Type into Search terms, or clear it and use the filters. The form arrives with
"artificial intelligence" copyrightand Filed on or after set to 2026-01-01. - Narrow it with Courts or Nature of suit codes, or under People and firms with Party name or Judge.
- Set Maximum cases. At 80 to 90 a minute, 200 makes a sensible first run.
- Click Start, then download the dataset as CSV, JSON or Excel, or read it from the Apify API.
💰 How much does it cost to scrape federal court cases?
$0.50 per 1,000 cases, which is $0.0005 a case on the Free plan. Paid plans pay a little less: $0.495 on Starter, $0.49 on Scale and $0.485 on Business. On the free plan, the $5 Apify gives you each month covers about 10,000 cases. Two hundred cases come to ten cents, and the pace between pages costs you nothing extra.
You pay for case rows and nothing else per row. The sample row and every diagnostic row are free, and so are cases dropped for not matching your filters and repeats inside one run. If you set a maximum charge on the run, it stops at that figure instead of going past it.
📥 What you give it
{"searchTerms": ["\"artificial intelligence\" copyright"],"courts": ["mad", "cand", "nysd"],"natureOfSuit": ["820"],"filedAfter": "2026-01-01","maxItems": 100}
| Field | Default | What it is |
|---|---|---|
searchTerms | none, so the filters decide; the box starts with one term | Full text across the docket record, up to 10 terms. Each runs as its own search and they share the row budget. |
maxItems | 20 | Total cases, 1 to 2,000. |
courts | every federal court | Court ids in lower case, up to 30: cand Northern District of California, nysd Southern District of New York, mad District of Massachusetts, txwd Western District of Texas, ca9 Ninth Circuit. A case in any of them is kept. |
filedAfter | none, the box starts at 2026-01-01 | YYYY-MM-DD, the day the case was filed with the court. |
filedBefore | none | YYYY-MM-DD. Pair it with filedAfter for a window. |
natureOfSuit | any | Civil cover sheet codes: 820 copyright, 830 patent, 840 trademark, 890 other statutory actions, 442 employment civil rights, 710 fair labor standards. 820 Copyright works too. |
cause | any | The statute as the docket spells it, such as copyright, 15:1125 or 42:1983. A substring is enough. |
caseName | any | Words that must appear in the caption. Narrower than a search term. |
docketNumbers | none | Exact numbers such as 1:26-cv-14275, up to 10. Courts reuse numbers every year, so pair one with a court id. |
partyName | anyone | A company or person named as a party. Company names work well. A common personal name brings back unrelated cases, because the index cannot tell two people apart. |
judgeName | any judge | Surname of the assigned judge, such as Chhabria. A magistrate the case was only referred to is not searched. |
attorneyName | anyone | An attorney of record. Only dockets that list counsel can match. |
sortBy | newest | newest or oldest by filing date, or relevance, which only means something with search terms. |
proxyUrls | none | Your own servers to send the traffic through, as http://user:pass@host:port. Leave it empty unless you need that. |
An input with nothing to search for, such as {} sent through the API, returns one free sample row
so you can see the shape first.
📤 What you get back
A real row from a run on 30 September 2026:
{"ok": true,"charged": true,"recordType": "case","docketId": 74812464,"caseName": "UMG Recordings, Inc. v. Suno, Inc.","caseNameFull": null,"court": "District Court, D. Massachusetts","courtId": "mad","courtCitation": "D. Mass.","docketNumber": "1:26-cv-14275","dateFiled": "2026-09-18","dateTerminated": null,"dateArgued": null,"natureOfSuit": "820 Copyright","natureOfSuitCode": "820","cause": "17:101 Copyright Infringement","jurisdictionType": "Federal Question","juryDemand": "Plaintiff","assignedJudge": "F. Dennis Saylor IV","referredJudge": null,"parties": ["UMG Recordings, Inc.","Ultra Records, LLC","Capitol Records, LLC","Suno, Inc.","Arista Music","Volcano Entertainment III, LLC","Sony Music Entertainment","Arista Records, LLC","Zomba Recording LLC","John Does 1-10","Sony Music Entertainment US Latin, LLC","Alamo Records, LLC","Records Label, LLC","LaFace Records, LLC"],"partyCount": 14,"lawFirms": [],"attorneys": ["Daniel J. Cloherty", "Alexandra Arnold"],"bankruptcyChapter": null,"pacerCaseId": "306399","docketUrl": "https://www.courtlistener.com/docket/74812464/umg-recordings-inc-v-suno-inc/","addedToCourtListener": "2026-09-18T15:08:42.969152Z","scrapedAt": "2026-09-30T02:25:54.911Z"}
| Field | How to read it |
|---|---|
docketId | The stable key. docketNumber on its own is not unique: the same number exists in several courts and years. |
caseName, caseNameFull | The short caption, and the long form where one exists, which is usually null. |
court, courtId, courtCitation | The full court name, the id you pass back in courts, and the Bluebook abbreviation. |
dateFiled, addedToCourtListener | When the case was filed with the court, and when the record reached CourtListener. An old case can arrive years late, so do not use the second as the first. |
dateTerminated | When the case closed. null means open, or that nobody recorded a closing date, and from outside those look the same. |
natureOfSuit, natureOfSuitCode | The civil cover sheet classification, and just its number. Often null on criminal and bankruptcy dockets. |
cause | The statute as the clerk typed it. Spelling and punctuation vary between districts. |
assignedJudge, referredJudge | The judge the case sits with, and a magistrate it was referred to, usually null. |
parties, partyCount | Every party the docket names, in the source's order. Plaintiffs and defendants are not separated, because the index does not say which is which. |
attorneys, lawFirms | Counsel of record and their firms, once an appearance has been entered. |
pacerCaseId | The court's own PACER id, useful when reconciling against a PACER export. |
🧾 Reading the output
Three kinds of row can share a dataset.
| Row | How to spot it | Charged |
|---|---|---|
| A case | recordType: "case", charged: true | yes |
| The sample | recordType: "sample", _sample: true, charged: false | no |
| A diagnostic | recordType: "diagnostic", _diagnostic: true, charged: false, an errorCode | no |
To keep only real cases, filter on recordType == "case".
| Code | What it means |
|---|---|
NO_RESULTS | The search ran and nothing matched. |
BAD_INPUT | Cases came back that did not match your filters and were dropped, often because of a court id or a code the search does not know. Also used when CourtListener rejected the search as written. |
NOT_SERVED | CourtListener did not serve that search on this run. Re-run it later. |
RATE_LIMITED | CourtListener still wanted the run to slow down after it had waited once. Try again in a few minutes, or ask for fewer cases. |
NETWORK | CourtListener could not be reached, so nothing was searched. |
TIME_BUDGET | The run reached its time limit before one of your searches was made or finished. Cases delivered before that are charged, and nothing more is charged for that search. The run ends as failed only when the time limit stopped it before any case came back. |
NO_RESULTS and NETWORK are the pair to tell apart. The first means there is nothing there. The
second means nobody looked, which is how somebody ends up believing a company has never been sued.
💡 What people use it for
- Following a wave of litigation while it happens, such as every new copyright suit against an AI company this quarter, refreshed on a schedule.
- Watching one company's federal docket, so a new suit shows up the day it is filed rather than the week somebody notices.
- Counting rather than reading: patent cases per district per year, as a table you can chart.
- Building a case list for a practice area, say every Fair Labor Standards Act case in a set of districts, with the judge and counsel already in columns.
🚧 What it does not do
- The index, not the documents. No complaint, motions, orders, opinions, docket entries or PDFs.
The
docketUrlopens the public docket page. - Federal, not state. District, bankruptcy and appellate dockets only. County and state trial courts are not here.
- Not every federal case. Coverage follows what has reached CourtListener's public database, deep in busy districts and thinner elsewhere. A missing case means not in the source, never that it does not exist.
- Not always a judge or counsel. In one run of 200 copyright cases filed since 2025, 115 named an assigned judge and 188 listed counsel.
- No profiles of people. Names come as the court published them. Nothing is joined to other sources and the person ids are dropped.
- No judgement. No outcome, risk score or summary. A filed case says nothing about its merit, and a terminated one nothing about who won.
- Not fast. About 80 to 90 cases a minute. A million rows by this afternoon is the wrong job for it.
- It is not an official CourtListener tool. Dami's Studio is independent and is not affiliated with or endorsed by CourtListener or Free Law Project, or by any other company named on this page.
🧭 Which public records scraper do you need?
| If you want | Use |
|---|---|
| US federal court cases, the docket index | This one |
| A company's filings with the SEC | SEC EDGAR Scraper |
| Patents by keyword, inventor or assignee | Google Patents Search Scraper |
| Federal money a company has received | USASpending Federal Awards Scraper |
| A European company's register record and officers | North Data Scraper |
❓ Questions people ask
Do I need a PACER account or a CourtListener API key?
No. There is nothing to sign up for, and the run will never ask you for a key.
Can I get the complaint or the judge's opinion?
Not from this one. You get who, which court, which statute and which dates, plus a link to the public docket page.
Are the party names real people?
Some are. A docket names whoever is in the case. They come through as the court published them, nothing is added, and the ids that would link one person across cases are dropped. If you are making decisions about individuals, remember that names collide and records go stale.
How do I pick up new federal cases every day?
Schedule it daily with filedAfter set to yesterday, and use docketId as the key for comparing
runs.
How far back do the court records go?
As far as CourtListener's public database goes for that court. The depth is uneven, so try a
filedBefore date and see.
Can I call it from code or connect it to an AI assistant?
Yes. The API tab has
ready-made code for Python, JavaScript and the command line. For Claude, ChatGPT or another MCP
client, connect https://mcp.apify.com/?tools=fetch-actor-details,dami_studio/courtlistener-cases-scraper.
Either way the run happens on your Apify account at the same price.
Is it legal to scrape court records?
Party names can still be personal data where privacy law applies, so have a reason for collecting them. Apify's write-up on the legality of web scraping is a fair starting point, and we are not lawyers.
🆘 If something breaks
Open the Issues tab on the actor page and send the run ID with the input you used. The
errorCode and details on a diagnostic row usually name the reason already.