Request a tool
All toolsAutomationsGuidesMCP serverRequest a toolPlatformsCategories
US Federal Court Cases Scraper icon

US Federal Court Cases Scraper

Search US federal court dockets: case name, court, docket number, filing date, nature of suit, judge and parties. One row per case.

44 runs on Apify $0.0005 per case ($0.5 / 1,000)
Run this in the cloudRun on Apify →

Developer & Research Tools

How it works

  1. 1
    Open it on Apify

    Hit Run on Apify — it opens the tool in the cloud, no install.

  2. 2
    Set the inputs

    Adjust searchTerms, maxItems, courts (sensible defaults are pre-filled).

  3. 3
    Click Run

    The tool runs on Apify’s cloud and collects the data for you.

  4. 4
    Export the results

    Download as JSON, CSV or Excel, or pipe straight into your app, Google Sheets, or an AI agent.

Pricing

$0.0005 per case = $0.5 per 1,000

You are charged forWhenPrice
Case scrapedOne federal court case or docket from the public index. Rows that do not match the filters are dropped and never charged.$0.0005

Pay-per-event pricing: you are billed per result, not per subscription. Billing is handled by Apify on your own account. These are the live Apify store prices, in effect since 2026-09-20, and they are what you are actually charged.

Inputs

FieldWhat it doesType
searchTermsFull-text search across the docket record - the caption, the cause, the parties and the filing descriptions. Each term runs as its own search and the row budget is split between them. Quote a phrase to keep it together, like "artificial intelligence". Up to 10 terms per run. Leave it empty if you would rather select purely with the filters below.array
maxItemsTotal rows across all search terms. Hard ceiling 2,000. Results come 20 at a time at a steady pace, and big runs take a while: a test run of 200 cases took about two and a half minutes, so allow about twelve for 1,000. Keep it low while you are testing; you pay per case.integer
courtsCourtListener court ids, lower case. `cand` is the Northern District of California, `nysd` the Southern District of New York, `mad` the District of Massachusetts, `txwd` the Western District of Texas, `ca9` the Ninth Circuit. Give several and a case in any one of them is kept. A court id the search does not recognise is silently ignored rather than reported, so every row is checked against this list before you are charged for it.array
filedAfterISO date, for example 2026-01-01. Filters on the date the case was filed with the court, not the date CourtListener picked it up.string
filedBeforeISO date, for example 2026-09-30. Pair it with the field above for a window.string
natureOfSuitThe civil cover sheet code the clerk assigned. 820 is copyright, 830 patent, 840 trademark, 890 other statutory actions, 442 employment civil rights, 710 fair labor standards. Give the bare number; `820 Copyright` works too and the code is taken off the front.array
causeThe statute the case is brought under, as the docket spells it: `copyright`, `securities`, `15:1125` for Lanham Act false designation, `42:1983` for civil rights. A substring is enough.string
caseNameWords that must appear in the case caption. Narrower than a search term, because a search term also matches the body of the docket.string
docketNumbersExact docket numbers as the court writes them, for example 1:24-cv-11611. The same number is reused by different courts every year, so pair it with a court id unless you want every court's version.array
partyNameAn organisation or person named as a party. Company names work well; common personal names return a lot of unrelated cases, because a docket index has no way to tell two people with the same name apart.string
judgeNameSurname of the judge the case is assigned to, for example Chhabria. Matches the assigned judge only; a magistrate the case was merely referred to is returned in its own column but is not searched on.string
attorneyNameAn attorney of record. Only cases whose docket lists counsel will match, which is most civil cases and few criminal ones.string
sortBy`newest` and `oldest` sort by filing date. `relevance` orders by how well the case matches your search terms and only makes sense when you have supplied some.string
proxyUrlsLeave this empty for a normal run. Fill it in only if you want the traffic to leave through proxy servers you already pay for, one URL per line, in the form http://user:pass@host:port.array

What you get

A structured dataset — each result includes fields like:

caseNamecourtdocketNumberdateFileddateTerminatednatureOfSuitcauseassignedJudgepartieslawFirmsjurisdictionTypedocketUrl

Export every run as JSON, CSV or Excel, or send it to your app, a database, Google Sheets, or an AI agent.

Related tools in Developer & Research Tools

Other ready-to-run tools in the same category — all pay-per-use on the Apify cloud.

GitHub Scraper iconDeveloper & Research Tools

GitHub Scraper

Search GitHub repos and users: stars, forks, language, topics, licence, plus user bio, company and followers. No token needed. $0.90 per 1,000 rows.

18 use cases

Stack Overflow / Stack Exchange Scraper iconDeveloper & Research Tools

Stack Overflow / Stack Exchange Scraper

Search Stack Overflow and Stack Exchange by keyword or tag. Score, answer count, views, reputation and body text. $2 per 1,000 questions.

2 use cases

Package Registry Scraper (npm + PyPI) iconDeveloper & Research Tools

Package Registry Scraper (npm + PyPI)

Get npm and PyPI package metadata as JSON. Version, license, author, repo, keywords and npm monthly downloads. $2 per 1,000 packages.

2 use cases

arXiv Scraper iconDeveloper & Research Tools

arXiv Scraper

Search arXiv papers by title, author, abstract or category. Get full abstracts, authors, categories, DOI, dates and PDF links. $2 per 1,000 papers.

2 use cases

OpenAlex Scholarly Works Scraper iconDeveloper & Research Tools

OpenAlex Scholarly Works Scraper

Search 250M+ OpenAlex papers with no API key. Get titles, authors, venue, year, citations, DOI, OA links and full abstracts. $2.00 per 1,000 papers.

2 use cases

Crossref Scholarly Works Scraper iconDeveloper & Research Tools

Crossref Scholarly Works Scraper

Search 150M+ papers on Crossref: DOI, title, authors, journal, publisher, date, citations and abstract. No API key. $1.00 per 1,000 works.

2 use cases

See all Developer & Research Tools →

US Federal Court Cases Scraper: federal dockets from CourtListener, no PACER account needed

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. One row per federal case comes out, with the caption, court, docket number, filing date, nature of suit, cause, judge, parties, counsel and a link to the public docket on CourtListener. 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 cases a minute.

InputSearch terms, court ids, filing dates, nature-of-suit codes, cause, case name, docket numbers, party, judge or attorney
OutputOne row per federal court case
Ceiling2,000 cases and 10 search terms per run
Account neededNone. No PACER account and no API key
Price$0.50 per 1,000 cases, flat on every plan

🔍 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. A measured run of 200 copyright cases took two and a half minutes, so give 1,000 cases about twelve.

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 you give it

FieldIf you leave it outWhat it does
searchTermsnone, the filters decideFull text across the docket record, up to 10 terms. Each runs as its own search and they share the row budget.
maxItems20Total cases, 1 to 2,000.
courtsevery federal courtCourt 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.
filedAfterno start dateYYYY-MM-DD, the day the case was filed with the court.
filedBeforeno end dateYYYY-MM-DD. Pair it with filedAfter for a window.
natureOfSuitanyCivil 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.
causeanyThe statute as the docket spells it, such as copyright, 15:1125 or 42:1983. A substring is enough.
caseNameanyWords that must appear in the caption. Narrower than a search term.
docketNumbersnoneExact numbers such as 1:26-cv-14275, up to 10. Courts reuse numbers every year, so pair one with a court id.
partyNameanyoneA 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.
judgeNameany judgeSurname of the assigned judge, such as Chhabria. A magistrate the case was only referred to is not searched.
attorneyNameanyoneAn attorney of record. Only dockets that list counsel can match.
sortBynewestnewest or oldest by filing date, or relevance, which only means something with search terms.
proxyUrlsnot usedYour own servers to send the traffic through, as http://user:pass@host:port. Leave it empty unless you need that.
{
  "searchTerms": ["\"artificial intelligence\" copyright"],
  "courts": ["mad", "cand", "nysd"],
  "natureOfSuit": ["820"],
  "filedAfter": "2026-01-01",
  "maxItems": 100
}

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 real run:

{
  "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"
}
FieldWhat it is
docketIdThe stable key. docketNumber on its own is not unique: the same number exists in several courts and years.
caseName, caseNameFullThe short caption, and the long form where one exists, which is usually null.
court, courtId, courtCitationThe full court name, the id you pass back in courts, and the Bluebook abbreviation.
dateFiled, addedToCourtListenerWhen 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.
dateTerminatedWhen the case closed. null means open, or that nobody recorded a closing date, and from outside those look the same.
natureOfSuit, natureOfSuitCodeThe civil cover sheet classification, and just its number. Often null on criminal and bankruptcy dockets.
causeThe statute as the clerk typed it. Spelling and punctuation vary between districts.
assignedJudge, referredJudgeThe judge the case sits with, and a magistrate it was referred to, usually null.
parties, partyCountEvery 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, lawFirmsCounsel of record and their firms, once an appearance has been entered.
bankruptcyChapter7, 11, 13 and so on, on bankruptcy dockets only.
pacerCaseIdThe court's own PACER id, useful when reconciling against a PACER export.
docketUrlThe public docket page, where you can read the entry list yourself.

🧾 Reading the output

Three kinds of row can share a dataset.

RowHow to spot itCharged
A caserecordType: "case", charged: trueyes
The samplerecordType: "sample", _sample: true, charged: falseno
A diagnosticrecordType: "diagnostic", _diagnostic: true, charged: false, an errorCodeno

To keep only real cases, filter on recordType == "case".

CodeWhat it means
NO_RESULTSThe search ran and nothing matched.
BAD_INPUTCases 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 refused the search as asked.
RATE_LIMITEDCourtListener still wanted the run to slow down after it had waited once. Try again in a few minutes, or ask for fewer cases.
NETWORKCourtListener could not be reached, so nothing was searched.
TIME_BUDGETThe run ran out of time before one of your searches was made.

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.

▶️ How to run it

1. Open US Federal Court Cases Scraper and click Try for free. 2. Type into Search terms, or clear it and use the filters. The form arrives with "artificial intelligence" copyright and Filed on or after set to 2026-01-01. 3. Narrow it with Courts or Nature of suit codes, or under People and firms with Party name or Judge. 4. Set Maximum cases. At about 80 a minute, 200 makes a sensible first run. 5. Click Start, then download the dataset as CSV, JSON or Excel.

💰 How much does it cost?

$0.50 per 1,000 cases, which is $0.0005 a case, flat on every Apify plan. 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 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 docketUrl opens 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 cases a minute. A million rows by this afternoon is the wrong job for it.

🧭 Which public records scraper do you need?

If you wantUse
US federal court cases, the docket indexThis one
A company's filings with the SECSEC EDGAR Scraper
Patents by keyword, inventor or assigneeGoogle Patents Search Scraper
Federal money a company has receivedUSASpending Federal Awards 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.

I searched for a judge and got another judge's cases. Why? You should not. Every case is checked against the judge you named before it is charged, and any that slip through are dropped and counted on a free BAD_INPUT row.

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.

Can I run it on a schedule? Yes. A daily schedule with filedAfter set to yesterday picks up new filings, and docketId is a stable key for comparing runs.

How far back does it go? As far as CourtListener's public database goes for that court. The depth is uneven, so try a filedBefore date and see.

🆘 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.