⚖ CourtListener Docket Monitor avatar

⚖ CourtListener Docket Monitor

Pricing

from $3.00 / 1,000 docket records

Go to Apify Store
⚖ CourtListener Docket Monitor

⚖ CourtListener Docket Monitor

Stop checking PACER by hand. Scrape and monitor federal dockets by party, court, filing date, or nature of suit. Get case names, docket numbers, judges, parties, attorneys, status, ISO dates, and direct links. Export, run via API, schedule, or integrate with other tools.

Pricing

from $3.00 / 1,000 docket records

Rating

0.0

(0)

Developer

Skootle

Skootle

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Stop checking PACER and CourtListener by hand

Need to know when a client, portfolio company, or competitor is named in a new federal case? Search once, save the input, and schedule structured docket results instead of repeating searches and cleaning exports.

  • Search federal dockets by party, court, filing date, keyword, or nature of suit.
  • Schedule recurring litigation-monitoring runs from one saved input.
  • Export case names, docket numbers, judges, parties, attorneys, status, ISO dates, and direct CourtListener links.

CourtListener Federal Dockets hero

TL;DR

CourtListener Docket Monitor turns CourtListener and RECAP search results into one structured row per case. Use it for company watchlists, daily new-filing alerts, litigation research, and legal-news monitoring. Every row includes source names, best-effort cleaned names, nature-of-suit taxonomy, ISO dates, status, judges, attorneys, and direct source links. Party roles are inferred only when a name can be matched to the case caption; uncertain roles remain other.

Verified cloud proof: three current-build runs each returned 5 dockets with 0 recorded errors. The Apple watchlist run covered 4 federal courts, and the case-caption role check found no unsupported plaintiff/defendant assignments. Inspect the public sample dataset.

Coverage follows CourtListener and RECAP. Very recent, sealed, and unevenly covered state matters may be missing. Treat inferred party roles and cleaned names as best-effort enrichment and verify important facts against the source docket.

Try it on a small dataset, then let us know what you think in a review.


What does CourtListener Federal Dockets do?

CourtListener is operated by the non-profit Free Law Project. It maintains a public collection of federal and state court data sourced in part from RECAP, the community PACER archive. Coverage varies by court, date, document type, and RECAP availability; use CourtListener's coverage page for current details.

This actor wraps the CourtListener /api/rest/v4/search/?type=r endpoint, paginates through results, and normalizes each docket into a flat dataset row with these enrichments on top of the raw API output:

  1. Best-effort party-role inference. CourtListener returns party as a flat array with unreliable ordering. This actor matches names to the two sides of the case caption and leaves uncertain roles as other rather than guessing.
  2. Best-effort name cleanup. Common legal suffixes and punctuation are removed into a separate nameCanonical field while every original source value remains in nameRaw.
  3. Nature-of-suit taxonomy. The raw suitNature field is a free-text string with a leading JFC numeric code (e.g. "830 Patent"). The actor decodes the code into one of 17 top-level categories: intellectual_property, civil_rights, antitrust, securities, labor, contract, tort_personal_injury, etc. Filter on category in one expression.
  4. Date arithmetic. daysSinceFiled computed at scrape time. isTerminated boolean derived from the presence of a termination date.
  5. Firm cleanup plus source attorneys. Firm names include raw and best-effort cleaned values; attorney names remain exactly as CourtListener returned them.

Why scrape CourtListener?

PACER is the official federal court records system and charges for document access. CourtListener, operated by Free Law Project, maintains a public RECAP-backed search API. This Actor turns that API into scheduled, structured monitoring output without requiring a manual PACER search-and-download workflow.

What CourtListener gives you raw is good but not finished:

  • The party field is a flat array with no plaintiff/defendant tags. Every consumer writes their own splitter.
  • suitNature is "830 Patent" or "440 Civil Rights" - no enum, no category rollup. Every consumer writes their own taxonomy.
  • Corporate-entity normalization is on you. Same parent appears as "Apple Inc.", "APPLE, INC.", "Apple Computer Co." across cases.
  • Date math is on you. "Has this case been pending more than 2 years?" needs dateFiled parsing on every read.

This actor bakes all four into the output. Buyers consume; they don't pre-process.

Who needs this?

  • Litigation-finance shops building automated triage of new federal filings against companies in their portfolio.
  • IP and patent law firms tracking new infringement filings against competitors of their clients.
  • Class-action plaintiff firms monitoring new filings in a target nature-of-suit category.
  • Legal-news desks running daily new-filing alerts.
  • Corporate compliance teams tracking adverse-litigation exposure on portfolio companies (PE/VC).
  • General counsel offices at large companies tracking new filings naming the company as a party.
  • AI agents and automation pipelines that need clean, taxonomy-tagged docket data piped into Slack, LLM context, or a structured DB.

How to use CourtListener Federal Dockets

  1. Open the actor in the Apify Console.
  2. Set contactEmail to your work email (recommended; CourtListener asks scrapers to identify themselves but does not require it).
  3. (Optional, recommended) Set courtlistenerApiToken for substantially higher rate limits. Free 1-minute signup at https://www.courtlistener.com/help/api/.
  4. Choose at least one filter: searchTerm, courts, partyName, dateFiledFrom/To, or natureOfSuit.
  5. Set maxItems (default 10 trial; production typically 100-1000).
  6. Click Start.

How much will scraping CourtListener cost?

Pricing is per-result (per docket row written to the dataset).

Plan tierPer-result price
FREE$0.007
BRONZE$0.005
SILVER$0.004
GOLD$0.003
PLATINUM$0.003
DIAMOND$0.003

A 10-row trial costs $0.07 on the FREE tier or $0.03 on GOLD. Your final cost depends only on the number of docket rows saved; use maxItems to set a predictable ceiling before starting a broader search.

Yes. CourtListener's REST API is publicly documented and explicitly intended for programmatic use. Free Law Project's terms request attribution and ask scrapers to identify themselves in User-Agent (this actor enforces that). Commercial use is permitted under their terms. The underlying federal docket data is U.S. government public record.

We recommend setting your contactEmail and getting a free API token. Token requests are processed automatically and substantially raise your rate limit.

Examples

All new patent cases in NDCal in the last 90 days.

{
"courts": ["cand"],
"natureOfSuit": "830",
"dateFiledFrom": "2026-02-12",
"maxItems": 200
}

Every federal case where Apple is a party.

{
"partyName": "Apple",
"dateFiledFrom": "2026-01-01",
"maxItems": 500
}

Antitrust filings, market-wide.

{
"natureOfSuit": "antitrust",
"dateFiledFrom": "2026-01-01",
"maxItems": 300
}

Daily new-filing monitor (cron).

{
"dateFiledFrom": "2026-05-11",
"dateFiledTo": "2026-05-11",
"maxItems": 1000
}

Securities class-action filings in SDNY.

{
"courts": ["nysd"],
"natureOfSuit": "securities",
"dateFiledFrom": "2026-01-01",
"maxItems": 200
}

Search for cases mentioning "trade secret" + "AI".

{
"searchTerm": "trade secret AI",
"maxItems": 100
}

Input parameters

FieldTypeDescription
searchTermstringFree-text search across case names + parties + docket text.
courtsstring[]CourtListener court IDs (e.g. cand, nysd, txed).
partyNamestringSubstring match on party name.
dateFiledFromstringISO date inclusive.
dateFiledTostringISO date inclusive.
natureOfSuitstringJFC code (e.g. 830) or keyword (antitrust).
contactEmailstringRecommended. Included in User-Agent.
courtlistenerApiTokenstringOptional, raises rate limit.
maxItemsintegerUpper bound. Default 10.

Output format

FieldTypeNotes
recordTypestringAlways "docket".
docketIdintegerCourtListener docket ID.
docketNumberstringE.g. "4:26-cv-04382".
caseNamestringE.g. "Reynolds v. Google LLC".
caseNameFullstringLong-form case name when available.
pacerCaseIdstringPACER-side case ID.
courtstringCourt display name.
courtIdstringCourtListener court ID.
courtCitationStringstringE.g. "N.D. Cal.".
dateFiledstringISO date.
dateTerminatedstringISO date or null.
dateArguedstringISO date for appellate cases.
daysSinceFiledintegerComputed at scrape time.
isTerminatedbooleanTrue iff dateTerminated is set.
natureOfSuitRawstringOriginal JFC field.
natureOfSuitCategoryenum17-value top-level category.
causestringStatute or rule cited.
juryDemandstring"Plaintiff" / "Defendant" / "Both" / null.
parties, plaintiffs, defendantsobject[]{nameRaw, nameCanonical, role}.
firmsobject[]{nameRaw, nameCanonical} for filer law firms.
attorneysstring[]Named attorneys on the docket.
assignedToJudgestringFederal judge assigned.
referredToJudgestringMagistrate judge if applicable.
docketUrlstringDirect link to the docket page.
fieldCompletenessScoreinteger0-100.
agentMarkdownstringLLM-ready card.

The record below came from the verified current build, not a hand-written fixture:

{
"recordType": "docket",
"outputSchemaVersion": "2026-07-17",
"docketNumber": "2:26-cv-02178",
"caseName": "Doe v. Apple, Inc.",
"courtCitationString": "D. Nev.",
"dateFiled": "2026-07-15",
"natureOfSuitCategory": "tort_personal_injury",
"plaintiffs": [{ "nameRaw": "Jane Doe", "nameCanonical": "Jane Doe", "role": "plaintiff" }],
"defendants": [{ "nameRaw": "Apple Inc.", "nameCanonical": "Apple", "role": "defendant" }],
"assignedToJudge": "Anne R. Traum",
"docketUrl": "https://www.courtlistener.com/docket/73637870/doe-v-apple-inc/"
}

During the Actor run

The actor calls CourtListener's /api/rest/v4/search/?type=r endpoint with your filters, paging via cursor through results. Each result becomes one dataset row. The CourtListener Search API returns up to 100 results per page; the actor follows cursor pagination automatically until maxItems is hit or no more results exist.

Run artifacts:

  • OUTPUT: counts, unique courts, by-nature-of-suit breakdown, open vs terminated counts.
  • AGENT_BRIEFING: markdown digest with the 10 most recent filings.

FAQ

How does this differ from PACER?

PACER is the official federal courts records system. CourtListener is a public mirror operated by Free Law Project and sourced from RECAP uploads. Coverage depends on what CourtListener and RECAP index; very recent, sealed, and unevenly covered state matters may be absent.

How reliable is plaintiff / defendant classification?

CourtListener's search result contains a flat party array and its order is not reliable. The Actor compares each party name with the two sides of the case caption. It emits plaintiff or defendant only when that match is supportable; otherwise it emits other. Verify important role decisions against the linked source docket.

Can I get every case naming a specific company without listing every name variation?

Use partyName: "Apple" to search the source by substring. The output also includes a best-effort nameCanonical value for common suffix and punctuation cleanup, but it is not an authoritative entity-resolution ID. Keep nameRaw and the source URL for verification.

What about appellate / state / bankruptcy / specialized courts?

The Actor can filter any court ID exposed by CourtListener. Check the coverage page for the current federal, specialized, appellate, and state inventory. The Actor passes through what CourtListener indexes; coverage and freshness vary by court.

Do I need an API token?

Strongly recommended. CourtListener's anonymous rate limit is low. Free tokens are processed automatically at https://www.courtlistener.com/help/api/rest/ in 1-2 minutes. The actor uses the token only if you supply it; without one, it gracefully accepts lower throughput.

Can I use this with Python / Make / Zapier / n8n / Slack?

Yes. All four integrations work first-class. The agentMarkdown field is designed for direct posting into a Slack channel or LLM context.

What about full docket entries (motions, orders)?

This actor pulls docket-level metadata (one row per case). Full per-entry docket sheets are also available via CourtListener but are a separate scrape target - not in v0.1 of this actor. Open an issue if you want it added.

How fresh is the data?

Freshness follows CourtListener's own index. Use overlapping filing-date windows and deduplicate on docketId when monitoring time-sensitive filings.

Your feedback

Hit a bug or want a feature? Open an issue on the Issues tab rather than the reviews page, and we'll fix it fast (typically within 48 hours).

Why choose this CourtListener docket monitor?

  • Caption-backed party roles, with uncertain matches preserved as other.
  • Nature-of-suit taxonomy - 17 canonical categories, filterable in one expression.
  • Raw plus best-effort cleaned names on parties and firms.
  • Date arithmetic baked in - daysSinceFiled, isTerminated boolean.
  • Versioned schema (outputSchemaVersion: "2026-07-17").
  • fieldCompletenessScore per record.
  • agentMarkdown per record + AGENT_BRIEFING.md per run for LLM / Slack consumption.

Other Skootle actors you might want to check

Support and contact

Open an issue at the Issues tab for bugs or feature requests. Typical response time 48 hours.