Federal Court Records Scraper - PACER RECAP & Opinions
Pricing
from $1.80 / 1,000 results
Federal Court Records Scraper - PACER RECAP & Opinions
US federal court records scraper & API: search PACER / RECAP dockets, filings, documents, parties, attorneys, judges and opinions by query, court or date. Legal research, litigation monitoring and docket data — fast, no PACER account and no per-page fees.
Pricing
from $1.80 / 1,000 results
Rating
0.0
(0)
Developer
Haketa
Maintained by CommunityActor stats
0
Bookmarked
18
Total users
7
Monthly active users
3 days ago
Last modified
Categories
Security
Limited permissionsShare
Federal Court Records Scraper ⚖️ — PACER / RECAP Dockets & Court Opinions
Extract US federal court records — dockets, docket entries, filed documents, parties, attorneys, judges and full court opinions — as clean, structured data. This federal court records scraper lets you scrape federal court data across every US federal court without a PACER account, without per-page fees and without a single line of code or a headless browser.
Search all US federal courts (district, appellate, bankruptcy) plus the Supreme Court, then export everything to JSON, CSV, Excel, XML or HTML, or pull it straight from the Apify API.
💡 Why this actor? PACER itself is login-gated and charges $0.10 per page. This federal court records scraper reads the free, public CourtListener API (RECAP Archive) instead — so you get the federal court records you need (dockets, documents, parties, judges and opinions) fee-free and ready to analyze. Built for litigators, paralegals, litigation-finance analysts, legal journalists, compliance/KYC teams and legal-AI builders.
✅ One-time setup (free, ~1 minute): CourtListener now requires a free API token for all data requests. Create an account at courtlistener.com, copy your token from Profile → API, and paste it into the CourtListener API token field. That's the only setup — then run as much as you like. See How to use it.
📋 Table of contents
- Why scrape federal court records?
- What this federal court records scraper does
- Use cases
- How to use it (step by step)
- Input parameters
- Input examples
- Output — data fields
- Sample output record
- Pagination & scale
- Tips & best practices
- Frequently asked questions
- Related scrapers
- Changelog
🔎 Why scrape federal court records?
US federal litigation is a goldmine of public information: who is suing whom, in which court, before which judge, over what kind of claim, with every filing timestamped and (often) downloadable. That data drives legal research, competitive intelligence, risk screening, investigative journalism and legal-AI training sets. But the official source — PACER — is painful: you need an account, you're billed $0.10 per page (including search result pages), and its terms forbid automated collection.
The non-profit Free Law Project solves this with CourtListener and the crowd-sourced RECAP Archive, which mirrors PACER dockets and documents donated by users, plus a huge corpus of court opinions and judge records. This federal court records scraper sits on top of the public CourtListener API and turns those scattered dockets into clean, paginated, structured rows you can filter, export and automate — no PACER login, no per-page fees.
Collecting this by hand is slow and error-prone: you'd click through dockets one at a time, copy party and judge names, note filing dates and nature-of-suit codes, and manually track new filings. This scraper does all of that automatically, de-duplicates by docket, and hands you a spreadsheet-ready dataset in seconds.
Common reasons people scrape federal court records:
- 🧑⚖️ Litigation monitoring — track new federal filings naming a company, person, product or patent, nationwide or in one court.
- 📑 Case research & due diligence — pull dockets, parties, attorneys and documents for a matter in one export.
- 📊 Litigation analytics & finance — analyze filing volume, judge assignment, nature-of-suit mix and case duration at scale.
- 🛡️ Compliance / KYC / background screening — check whether an entity has a federal litigation history.
- 📰 Investigative journalism — surface newsworthy cases, parties and rulings and follow them over time.
- 🤖 Legal-AI & NLP datasets — build training/retrieval corpora from opinions, dockets and filings.
- 🎓 Academic & policy research — study the federal judiciary with reproducible, exportable data.
✨ What this federal court records scraper does
This actor queries the public CourtListener API and returns normalized federal court records with nested documents. You pick exactly what to collect:
- ✅ Cases with documents (RECAP dockets) — full dockets with parties, attorneys, firms and the list of filed documents. The richest option.
- ✅ Dockets (metadata only) — fast, case-level docket metadata without the document list.
- ✅ Opinions / case law — judicial opinions and decisions, with citations, cite counts and cluster IDs.
- ✅ Filing documents — individual filings (complaints, motions, orders, exhibits…).
- ✅ Judges — federal judge profiles and positions.
- ✅ Oral argument audio — appellate oral-argument records.
Key capabilities:
- 🔁 Automatic cursor pagination — follows CourtListener's
nextcursor page after page and returns large, de-duplicated result sets (hundreds to thousands of records), controlled bymaxItems. - 🏛️ Court & date targeting — restrict to a specific court (district, appellate, bankruptcy or
scotus) and a filed-date range, or search nationwide. - 🔤 Keyword / party search — match a company, party, attorney, citation or case name.
- 🗂️ Rich, flat schema — for every case you get case name, court, court ID, court citation, docket number, docket ID, PACER case ID, filing & termination dates, assigned & referred judges, nature of suit, cause of action, jurisdiction type, jury demand, parties, attorneys, law firms, a document count, and a
documents[]array (descriptions, page counts, PACER doc IDs, and direct PDF links where the file is archived). - 📤 Export anywhere — JSON, CSV, Excel, XML, HTML table or RSS, plus the Apify API and integrations (Make, Zapier, n8n, Google Sheets, webhooks).
- ⚙️ Reliable by design — datacenter-friendly HTTP/JSON (no browser), retries with proxy rotation, and a clear error if your API token is missing or invalid.
Only what the code actually does is listed above — every field named here appears in the real output (see Sample output record).
🎯 Use cases
- ⚖️ Lawyers & litigation teams — monitor new filings against a client, adversary or competitor; assemble dockets and documents for a matter.
- 📊 Litigation finance & legal analytics — build datasets by court, judge or nature of suit; model filing trends and case duration.
- 🧾 Patent & IP teams — track infringement suits in hotspots like E.D. Texas, D. Delaware or N.D. California.
- 🏦 Bankruptcy & restructuring — follow Chapter 11 and other filings in the busiest bankruptcy courts.
- 🛡️ Compliance, KYC & insurance — screen entities and parties of interest for federal litigation exposure.
- 📰 Journalists & investigators — find and follow newsworthy cases, parties and rulings as they're filed.
- 🤖 Data & AI teams — power legal-NLP models and retrieval over opinions, dockets, parties and filings.
- 🎓 Researchers & policy analysts — study the judiciary with clean, reproducible, exportable court data.
How to use it (step by step)
No coding required.
- Get a free CourtListener token (one-time, ~1 min). Register at courtlistener.com, open Profile → API, and copy your token.
- Click Try for free / Start on this actor.
- Paste your token into the CourtListener API token field. (This is required — CourtListener returns an authentication error without it.)
- Choose What to collect (e.g. Cases with documents, or Opinions / case law).
- Enter Search keywords — a company, party, attorney, citation or case name (e.g.
Apple). Or leave it empty and filter by court/date to browse the newest records. - (Optional) pick a Court (e.g.
nysd,cand,scotus) and a Filed on/after / Filed on/before date range. - Set Maximum records (start with 100; use
0for unlimited once you've added filters). - Click Save & Start, then export the results to JSON/CSV/Excel or pull them from the Apify API.
You can also run it on a schedule (e.g. daily) to catch new filings, and send results to a webhook, database or Google Sheet.
📥 Input parameters
| Field | Type | Description |
|---|---|---|
courtListenerToken | string (secret) | Required. Free CourtListener API token from Profile → API. Takes ~1 minute to create and also raises your rate limits for large runs. |
searchType | string | What to collect: r cases + documents (RECAP), d dockets metadata, o opinions / case law, rd filing documents, p judges, oa oral arguments. Default r. |
query | string | Keywords, party/company, attorney, case name or citation. Empty = browse the newest records by filters. |
court | string | Court ID, e.g. casd, nysd, cand, scotus. Empty = all courts (nationwide). |
dateFiledAfter | string | Only records filed on/after YYYY-MM-DD. |
dateFiledBefore | string | Only records filed on/before YYYY-MM-DD. |
order | string | Sort: dateFiled desc (newest), dateFiled asc (oldest), score desc (best match), dateArgued desc (recently argued). |
maxItems | integer | Max records to collect. 0 = unlimited (recommended only with filters). Default 0, prefilled to 100. |
startUrls | array | Advanced: paste CourtListener search URLs or raw API URLs to run those exact searches. Overrides the builder above. |
proxyConfiguration | object | Proxy settings. Default: Apify Proxy on (datacenter is fine). |
maxConcurrency | integer | Parallel requests. Keep low (1–2) for the smoothest runs. Default 1. |
Input examples
1) Federal cases mentioning a company, newest first
{"courtListenerToken": "your-courtlistener-token","searchType": "r","query": "Apple","order": "dateFiled desc","maxItems": 200}
2) Recent cases in one court within a date range
{"courtListenerToken": "your-courtlistener-token","searchType": "d","court": "nysd","dateFiledAfter": "2026-01-01","dateFiledBefore": "2026-06-01","maxItems": 500}
3) Court opinions / case law on a topic
{"courtListenerToken": "your-courtlistener-token","searchType": "o","query": "copyright fair use","order": "score desc","maxItems": 100}
4) Large patent run (E.D. Texas, unlimited)
{"courtListenerToken": "your-courtlistener-token","searchType": "r","query": "patent infringement","court": "txed","maxItems": 0}
📤 Output — data fields
Each record is one dataset row. The example below is a real record from a searchType: "r" run (fields trimmed for readability):
{"recordType": "r","caseName": "COTTON-PATTERSON v. APPLE, INC.","court": "District Court, N.D. California","courtId": "cand","courtCitation": "N.D. Cal.","docketNumber": "3:26-cv-12474","docketId": 75016110,"pacerCaseId": "482000","dateFiled": "2026-10-23","dateTerminated": null,"dateArgued": null,"assignedTo": null,"referredTo": null,"suitNature": null,"cause": null,"jurisdictionType": null,"juryDemand": null,"parties": ["COTTON-PATTERSON", "APPLE, INC."],"attorneys": [],"firms": [],"documentCount": 2,"documents": [{"documentNumber": 2,"attachmentNumber": null,"shortDescription": "Complaint","description": null,"documentType": "PACER Document","pageCount": null,"isAvailable": false,"pacerDocId": "035027841370","entryNumber": 2,"entryDateFiled": "2026-10-23","pdfUrl": null,"url": "https://www.courtlistener.com/docket/75016110/2/cotton-patterson-v-apple-inc/"}],"courtListenerUrl": "https://www.courtlistener.com/docket/75016110/cotton-patterson-v-apple-inc/","scrapedAt": "2026-10-25T13:51:53.827Z"}
Core fields (present for virtually every record):
| Field | Description |
|---|---|
recordType | The search type that produced the row (r, d, o, rd, p, oa). |
caseName | Case name. |
court | Court name (e.g. District Court, N.D. California). |
courtId | Court ID (e.g. cand, nysd, scotus). |
courtCitation | Short court citation / abbreviation (e.g. N.D. Cal., D.C. Cir.). |
docketNumber | Docket number. |
docketId | CourtListener internal docket ID (natural de-dup key). |
pacerCaseId | PACER case ID. |
dateFiled | Filing date. |
parties | Array of party names. |
documentCount | Number of documents attached to the record. |
documents | Array of documents (see below). |
courtListenerUrl | Link to the full record on CourtListener. |
scrapedAt | ISO timestamp of the scrape. |
Data-dependent fields (populated when the source docket provides them):
| Field | Description |
|---|---|
assignedTo | Assigned judge (≈60–65% of district cases). |
referredTo | Referred-to (magistrate) judge (present on a minority of cases). |
suitNature | Nature of suit (e.g. 830 Patent). |
cause | Cause of action (e.g. 35:271 Patent Infringement). |
jurisdictionType | Jurisdiction type (e.g. Federal Question). |
juryDemand | Jury demand. |
dateTerminated | Termination date (present once a case closes). |
dateArgued | Argument date (appellate / oral-argument records). |
attorneys | Array of attorney names. |
firms | Array of law-firm names. |
Each entry in documents[]:
| Field | Description |
|---|---|
documentNumber | Filing number. |
attachmentNumber | Attachment number (if any). |
shortDescription / description | Document description. |
documentType | Document type (e.g. PACER Document). |
pageCount | Number of pages (when known). |
isAvailable | Whether the PDF is archived and downloadable. |
pacerDocId | PACER document ID. |
entryNumber / entryDateFiled | Docket-entry number & date. |
pdfUrl | Direct PDF link (when isAvailable is true). |
url | Link to the document on CourtListener. |
For opinions (searchType: "o") you also get caseNameFull, judge, citation, neutralCite, lexisCite, citeCount, status, posture and clusterId. For judges (searchType: "p") you get name, dateOfBirth and positions.
ℹ️ Honest note on coverage: core identity fields (
caseName,court,courtId,courtCitation,docketNumber,docketId,pacerCaseId,dateFiled,parties,courtListenerUrl) populate for ~100% of records, and ~92% of RECAP case records carry at least one document. Fields likeassignedTo,suitNature,causeorattorneysvary by court and docket — they're populated when available, not missing due to a bug.
🔁 Pagination & scale
The federal court records scraper paginates automatically using CourtListener's cursor pagination — it follows the next cursor from page to page and keeps collecting until it reaches your maxItems limit or the end of the result set, de-duplicating naturally by docketId. Result sets are huge: a broad nationwide keyword search often matches hundreds of thousands of dockets, and the underlying RECAP Archive holds tens of millions of dockets and opinions.
You control volume with maxItems (set 0 for unlimited once you've added a court/date/keyword filter). An empty, unfiltered run is automatically capped to a quick 100-record sample so you don't accidentally pull the entire archive. For very large pulls, split the job by court or by month (using the date filters) and run in batches — this keeps each run fast, resilient to rate limits, and easy to de-duplicate downstream. A CourtListener API token (required anyway) also raises your rate limits so large collections finish smoothly; keep concurrency at 1–2 for the most reliable runs.
⚙️ How to use
- Apify Console — paste your token, set your query/filters and
maxItems, click Start, then export (JSON, CSV, Excel, XML, HTML, RSS). - Apify API — start runs and fetch the dataset programmatically; this actor effectively gives you a clean federal court records API on top of CourtListener.
- Schedule — run daily/weekly to monitor new filings for a company, court or practice area.
- Integrate — pipe results into Make, Zapier, n8n, Google Sheets, a database or a webhook to feed dashboards and alerts.
💡 Tips & best practices
- 🔑 Add your free token first — it's required, and it raises rate limits so large runs don't throttle.
- 🧪 Start with
maxItems: 50to confirm your query and filters before scaling up. - 🎯 Combine
court+ date filters to keep result sets focused (e.g. all patent cases filed in E.D. Texas this year). - 🗂️ Pick
searchType: "r"for the richest records (full dockets + documents); usedfor faster metadata-only runs. - 🧱 Split very large jobs by court or month, then de-dup on
docketId. - 🐢 Keep
maxConcurrencyat 1–2 for the smoothest, most reliable runs. - 💾 Schedule + webhook to turn this into a live federal-filing monitor.
❓ Frequently asked questions
Is it legal to scrape federal court records? Yes. US federal court records and judicial opinions are public records. This federal court records scraper does not touch PACER directly — it reads the free, public CourtListener API operated by the non-profit Free Law Project, which mirrors RECAP dockets and hosts court opinions. Use the data responsibly and in line with CourtListener's terms.
Do I need a token? Do I need a PACER account? You need a free CourtListener API token (CourtListener now requires authentication for all API data). You do not need a PACER account, and you are never charged PACER's per-page fees. The token takes about a minute to create at courtlistener.com under Profile → API.
Why did my run return 0 records / an authentication error? Almost always a missing or invalid token. CourtListener's data endpoints return HTTP 401 without a valid token; the actor now fails fast with a clear message telling you to paste your free token. Double-check you copied the token exactly, with no extra spaces.
How many results can I get, and how fast?
A single broad query can match hundreds of thousands of dockets; the scraper paginates through them in order and returns hundreds to thousands of clean, de-duplicated records per run. Set maxItems to control volume. Throughput depends on page size and your rate limit — the free token keeps large runs smooth.
Do I need residential proxies? No. The actor talks to a JSON API over plain HTTP, so the default Apify (datacenter) proxy works fine. Access is gated by your API token, not by IP.
What export formats are supported? JSON, CSV, Excel, XML, HTML table and RSS — plus the Apify API and integrations (Make, Zapier, n8n, Sheets, webhooks).
Is there a federal court records API? Yes — this actor is an API. Run it over the Apify API, trigger it from Make/Zapier/n8n or a webhook, and pull results straight from the dataset endpoint in JSON. Under the hood it uses the public CourtListener API, so you get the data without managing endpoints, cursors or rate limits yourself.
Can I filter by court, date or case type?
Yes. Use the Court picker (district, appellate, bankruptcy or scotus — e.g. nysd, cand, txed), the filed on/after and filed on/before date filters, and the keywords box (party, company, attorney, citation or case name). Combine them to keep result sets focused.
How fresh is the data? As fresh as CourtListener's RECAP Archive and opinion corpus, which update continuously as new dockets and documents are contributed. Sort by Newest filed first and schedule the actor to catch new filings as they land.
Why are some fields empty for a record?
Fields such as assignedTo, cause, suitNature, attorneys or firms are only populated when the source docket provides them, so they vary by case and court. Core fields — caseName, court, docketNumber, dateFiled, parties and courtListenerUrl — are populated for virtually every record.
Is every document available as a PDF?
Not always. Document metadata (number, description, entry date) is broadly available, but a downloadable PDF appears only when the file has been archived — the isAvailable flag and pdfUrl tell you per document.
🔗 Related scrapers
Building legal, compliance or public-records datasets? Pair this federal court records scraper with these other public-record and professional-license scrapers from the same author:
- California DCA License Scraper — look up California professional and business licenses.
- Virginia DPOR License Scraper — Virginia occupational and professional license records.
- Colorado Professional License Scraper — Colorado licensing records across professions.
- Minnesota DLI License Scraper — Minnesota Department of Labor & Industry license data.
- Arizona ROC Contractor License Scraper — Arizona Registrar of Contractors license lookups.
- North Carolina General Contractor License Scraper — NC Licensing Board for General Contractors records.
📝 Changelog
Last updated: 2026-11-02
- 2026-11-02 — CourtListener now requires a free API token for all data endpoints (the public search/docket/opinion APIs return HTTP 401 without one). The actor now detects the missing/invalid token up front, logs a clear instruction, and fails fast with an actionable message instead of silently returning an empty result. The token input is relabeled Required, and the README documents the one-minute free setup. Verified the normalized schema against a live RECAP sample (100% core-field coverage on
caseName,court,docketNumber,dateFiled,parties,courtListenerUrl; ~92% of case records carry documents; 0 duplicate dockets). No fields renamed — existing output is unchanged. - 2026-10-25 — Added
courtCitationfield (short court abbreviation, e.g.N.D. Cal.) to every record. Expanded FAQ and pagination/scale documentation. No breaking changes. - 2026-07-02 — Actor verified and maintained. Data pipeline tested for quality, structure and freshness; endpoints confirmed against the live API.
0.1.0
- Initial release: search RECAP dockets, dockets metadata, opinions, filing documents, judges and oral arguments.
- Cursor pagination, optional API token for higher rate limits, court/date filters.
- Clean normalized schema with nested documents (descriptions, page counts, PDF links), parties, attorneys and firms.
Ready to pull clean federal court data? Paste your free CourtListener token, enter a query or pick a court, and export your dockets, documents, parties, judges and opinions to JSON, CSV, Excel or API — no PACER account, no per-page fees.