Federal Court Records Scraper - PACER RECAP & Opinions avatar

Federal Court Records Scraper - PACER RECAP & Opinions

Pricing

from $1.80 / 1,000 results

Go to Apify Store
Federal Court Records Scraper - PACER RECAP & Opinions

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

Haketa

Maintained by Community

Actor stats

0

Bookmarked

18

Total users

7

Monthly active users

3 days ago

Last modified

Security

Limited permissions

Share

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?

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 next cursor page after page and returns large, de-duplicated result sets (hundreds to thousands of records), controlled by maxItems.
  • 🏛️ 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.

  1. Get a free CourtListener token (one-time, ~1 min). Register at courtlistener.com, open Profile → API, and copy your token.
  2. Click Try for free / Start on this actor.
  3. Paste your token into the CourtListener API token field. (This is required — CourtListener returns an authentication error without it.)
  4. Choose What to collect (e.g. Cases with documents, or Opinions / case law).
  5. 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.
  6. (Optional) pick a Court (e.g. nysd, cand, scotus) and a Filed on/after / Filed on/before date range.
  7. Set Maximum records (start with 100; use 0 for unlimited once you've added filters).
  8. 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

FieldTypeDescription
courtListenerTokenstring (secret)Required. Free CourtListener API token from Profile → API. Takes ~1 minute to create and also raises your rate limits for large runs.
searchTypestringWhat to collect: r cases + documents (RECAP), d dockets metadata, o opinions / case law, rd filing documents, p judges, oa oral arguments. Default r.
querystringKeywords, party/company, attorney, case name or citation. Empty = browse the newest records by filters.
courtstringCourt ID, e.g. casd, nysd, cand, scotus. Empty = all courts (nationwide).
dateFiledAfterstringOnly records filed on/after YYYY-MM-DD.
dateFiledBeforestringOnly records filed on/before YYYY-MM-DD.
orderstringSort: dateFiled desc (newest), dateFiled asc (oldest), score desc (best match), dateArgued desc (recently argued).
maxItemsintegerMax records to collect. 0 = unlimited (recommended only with filters). Default 0, prefilled to 100.
startUrlsarrayAdvanced: paste CourtListener search URLs or raw API URLs to run those exact searches. Overrides the builder above.
proxyConfigurationobjectProxy settings. Default: Apify Proxy on (datacenter is fine).
maxConcurrencyintegerParallel 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):

FieldDescription
recordTypeThe search type that produced the row (r, d, o, rd, p, oa).
caseNameCase name.
courtCourt name (e.g. District Court, N.D. California).
courtIdCourt ID (e.g. cand, nysd, scotus).
courtCitationShort court citation / abbreviation (e.g. N.D. Cal., D.C. Cir.).
docketNumberDocket number.
docketIdCourtListener internal docket ID (natural de-dup key).
pacerCaseIdPACER case ID.
dateFiledFiling date.
partiesArray of party names.
documentCountNumber of documents attached to the record.
documentsArray of documents (see below).
courtListenerUrlLink to the full record on CourtListener.
scrapedAtISO timestamp of the scrape.

Data-dependent fields (populated when the source docket provides them):

FieldDescription
assignedToAssigned judge (≈60–65% of district cases).
referredToReferred-to (magistrate) judge (present on a minority of cases).
suitNatureNature of suit (e.g. 830 Patent).
causeCause of action (e.g. 35:271 Patent Infringement).
jurisdictionTypeJurisdiction type (e.g. Federal Question).
juryDemandJury demand.
dateTerminatedTermination date (present once a case closes).
dateArguedArgument date (appellate / oral-argument records).
attorneysArray of attorney names.
firmsArray of law-firm names.

Each entry in documents[]:

FieldDescription
documentNumberFiling number.
attachmentNumberAttachment number (if any).
shortDescription / descriptionDocument description.
documentTypeDocument type (e.g. PACER Document).
pageCountNumber of pages (when known).
isAvailableWhether the PDF is archived and downloadable.
pacerDocIdPACER document ID.
entryNumber / entryDateFiledDocket-entry number & date.
pdfUrlDirect PDF link (when isAvailable is true).
urlLink 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 like assignedTo, suitNature, cause or attorneys vary 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

  1. Apify Console — paste your token, set your query/filters and maxItems, click Start, then export (JSON, CSV, Excel, XML, HTML, RSS).
  2. Apify API — start runs and fetch the dataset programmatically; this actor effectively gives you a clean federal court records API on top of CourtListener.
  3. Schedule — run daily/weekly to monitor new filings for a company, court or practice area.
  4. 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: 50 to 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); use d for faster metadata-only runs.
  • 🧱 Split very large jobs by court or month, then de-dup on docketId.
  • 🐢 Keep maxConcurrency at 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.


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:


📝 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 courtCitation field (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.