US Court Dockets Scraper - PACER RECAP Cases
Pricing
from $2.00 / 1,000 docket rows
US Court Dockets Scraper - PACER RECAP Cases
Scrape US federal court dockets from PACER RECAP (CourtListener): judge, cause, nature of suit, parties, attorneys and law firms, one row per docket or one row per party. Search by keyword, court and filing date for litigation monitoring and legal lead generation.
Pricing
from $2.00 / 1,000 docket rows
Rating
0.0
(0)
Developer
Tom Awake
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
15 hours ago
Last modified
Categories
Share
What does US Court Dockets Scraper do?
Federal court cases with judge, cause, nature of suit, parties, attorneys and law firms — one row per docket, or one row per litigant.
No login. No API key. No proxies.
Two shapes, because two questions
One row per docket answers what is happening in this court: new filings, assigned judge, nature of suit, how many parties.
One row per party answers who to call: every litigant as its own row, with the firms on the case. That is the target list — and it is not a detail. An antitrust docket carries 41 parties on average; flattened into one cell, forty of them are invisible.
Coverage, measured
Coverage depends heavily on how narrow the search is. Measured 13 September 2026:
| Search | Judge | Firms |
|---|---|---|
| D. Delaware, nature of suit 830, since 2025 | 100 % | 92 % |
| Patent infringement, all courts | 73 % | 67 % |
| Antitrust, all courts | 70 % | 65 % |
| Opinions (published decisions) | 43 % | 0 % |
Narrow beats broad. Filtering to a court and a nature-of-suit code gives near-complete records; a national free-text sweep does not. Opinions carry no firms at all — that is the dataset, not the Actor.
searchType and oneRowPerParty decide which columns fill
A docket that is still being litigated has no published citation; a decision that has been handed down has no list of appearing parties. Asking for one row per party moves the names out of the aggregated column and into their own. None of this is missing data — it is a different question being asked.
Measured 17 September 2026, 120 rows of each mode, same query:
| Field | dockets | dockets + oneRowPerParty | opinions |
|---|---|---|---|
caseName, court, docketNumber, dateFiled | 100% | 100% | 100% |
parties (aggregated) | 98% | 0% | 0% |
party (one per row) | 0% | 98% | 0% |
partyRole | 0% | 31% | 0% |
citeCount | 0% | 0% | 100% |
status | 0% | 0% | 100% |
dateArgued | 0% | 0% | 52% |
citation | 0% | 0% | 5% |
judge | 72% | 71% | 29% |
natureOfSuit | 87% | 91% | 4% |
partyRole is 31% by design, not by accident: the registry does not say
who represents whom, so only the first-listed party is marked
first-listed — the courthouse convention for the plaintiff. The rest
are left blank rather than assigned a role the source never stated.
citation is thin even on opinions (5%): most decisions in the index
carry no reporter citation. citeCount is the reliable one.
Output
| Field | Example |
|---|---|
caseName | Bristol-Myers Squibb Company v. Amgen Inc. |
docketNumber, court, courtId | 1:26-cv-01044, D. Delaware, ded |
dateFiled, dateTerminated, dateArgued | |
judge, referredTo | assigned and referring judges |
cause | 35:271 Patent Infringement |
natureOfSuit | 830 Patent |
jurisdictionType, juryDemand | Federal Question, Plaintiff |
party, partyRole | one litigant, when exploded |
parties, partyCount | all litigants, when not |
attorneys, firms, firmCount | counsel on the case |
citation, citeCount, status | for opinions |
docketId, pacerCaseId, docketUrl | provenance |
partyRole marks only the first-listed party, which by clerk convention is
the plaintiff. The source does not state which attorney represents which
party, so this Actor does not guess — counsel stays at case level.
Input
{"query": "patent infringement","searchType": "dockets","newestFirst": true,"maxItems": 300}
| Field | Default | Notes |
|---|---|---|
query | patent infringement | Case names and docket text |
searchType | dockets | Dockets, opinions, documents, oral arguments |
oneRowPerParty | false | Explode litigants into rows |
newestFirst | true | Filing date descending |
maxItems | 300 | Counts rows, not cases |
court | — | cafc, ded, cand, txed, … |
natureOfSuit | — | 830 patent, 840 trademark, 410 antitrust |
filedAfter, filedBefore | — | YYYY-MM-DD |
Use cases
- Litigation monitoring — new filings in your practice area, by court, sorted newest first. Records appear within days of filing.
- Law firm business development — who is being sued in your speciality, and which firms already have the work.
- Competitive intelligence — track a company's litigation, as plaintiff or defendant.
- IP and antitrust watch — patent and antitrust filings by district, by nature of suit.
- Expert and judge research — which judges hear which kinds of case.
Running this as a scheduled watch
New filings are the point. A case filed against a company in your portfolio, or in your practice area, is worth knowing about this week — not next quarter.
{"query": "patent infringement","searchType": "dockets","filedWithinDays": 7,"court": "ded","maxItems": 300}
Why not a fixed filedAfter date? A schedule replays the same input
every time, so a fixed date returns the same dockets at every run and
charges for them again. filedWithinDays moves the window on its own.
Limits, honestly
- Coverage is partial and varies by query. The table above is measured, not promised. Narrow searches are far richer than broad ones.
- The source is RECAP, built from PACER documents that users have purchased and contributed. It is extensive but not the complete federal docket, and older or low-traffic cases may be thin.
oneRowPerPartymultiplies output sharply on mass litigation. SetmaxItemswith that in mind.- Attorneys and firms are listed for the case, not mapped to individual parties.
- Party and attorney names are personal data on a public record. Using them for outreach in the EU or UK makes you the data controller.
- Requests are paced out of courtesy to a free public service run by the non-profit Free Law Project.
- Not affiliated with CourtListener or the Free Law Project.
How much does it cost?
You pay per docket row returned: $0.003 each, that is $3.00 per 1,000. There is no start fee, and subscription plans pay less per docket row.
The example input below asks for up to 300 docket rows, so it costs $0.90 at most.
If a run reaches the spending limit you set, the output stops at that limit and never goes past it. You are never charged for rows that were not delivered.
Use US Court Dockets Scraper as an API
Call it from your own code with the Apify client, here in Python:
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("DataIO/pacer-recap-court-dockets").call(run_input={'query': 'patent infringement','searchType': 'dockets','newestFirst': True,'maxItems': 300,})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item)
It also works from JavaScript, Make, Zapier, n8n, and from AI agents through the Apify MCP server.
FAQ
Is it legal to use this data?
The actor reads public data from its official source, without logging in and without bypassing any access control. What you do with the data, for example contacting people listed in it, is your responsibility under the laws that apply to you, such as GDPR in Europe.
Can I run it on a schedule?
Yes. See Running this as a scheduled watch above: use the rolling-window setting so each run returns only what is new.
Can AI agents use it?
Yes. It is available through the Apify MCP server, and every input field is described in its input schema, so an agent can call it directly.
Other actors you might like
- UK Contracts Finder Scraper: Tenders & Awards
- TED Tenders Scraper: EU Public Procurement
- USAspending Scraper: Federal Contract Awards