CourtListener Litigation Party & Counsel Scraper avatar

CourtListener Litigation Party & Counsel Scraper

Pricing

from $3.62 / 1,000 results

Go to Apify Store
CourtListener Litigation Party & Counsel Scraper

CourtListener Litigation Party & Counsel Scraper

Scrape litigation parties and their counsel from CourtListener RECAP: one row per party, with law firms, attorneys, judge and case. Export to CSV, JSON, Excel or XML.

Pricing

from $3.62 / 1,000 results

Rating

0.0

(0)

Developer

ParseForge

ParseForge

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

ParseForge Banner

๐Ÿง‘โ€โš–๏ธ CourtListener Litigation Party & Counsel Scraper

๐Ÿš€ Export the litigants and the law firms behind federal court cases in seconds. Search by party, attorney or firm name and get one 39-field row per party, with the firms and attorneys of record, the judge, the nature of suit and the docket it belongs to. 2,838,130 federal dockets in the RECAP archive have counsel on record.

Every federal lawsuit is a list of names: the plaintiffs, the defendants, the intervenors, and the law firms that show up for each of them. CourtListener's RECAP archive carries that list for millions of PACER dockets, but its public search returns it buried inside a case record. This Actor turns it around: one row per party, with the counsel roster of the case attached to every row, so a firm's client list, a company's litigation history or a court's most active defense bar all fall out of a single export to CSV, JSON, Excel, or XML.

Search runs on the names themselves. party:(), attorney:() and firm:() are real fielded queries on the public API, so "every case where Kirkland and Ellis appeared since 2024" is one request, not a crawl. Coverage measured on 2026-09-08 across 60 live civil dockets: parties on 60 of 60, party IDs on 58, attorneys on 58, law firms on 53. No login and no API key required.

๐ŸŽฏ Target Audience๐Ÿ’ก Primary Use Cases
Law firm business developmentWhich firms appear opposite you, and for whom, by court and practice area
Litigation finance and insurersParty-level exposure across dockets, with counsel quality as a signal
Corporate legal and complianceEvery federal case a counterparty is named in, as plaintiff or defendant
Legal recruitersAttorneys of record by court, firm and nature of suit
Legal tech and AI teamsA party-and-counsel graph with stable CourtListener IDs

๐Ÿ“‹ What the CourtListener Litigation Party & Counsel Scraper does

๐Ÿ’ก Why it matters: PACER has no cross-district party search, and CourtListener's own dockets, parties and attorneys endpoints all return 401 without a token. The one open surface is the search index, and it publishes the party, attorney and firm arrays on every RECAP docket. This Actor expands those arrays into rows, so the unit of analysis is the litigant rather than the case, and it never bills for a record it did not deliver.

Give it a party, an attorney or a firm to look for, or just a nature of suit and a date range, and it queries the CourtListener search API live, following the cursor until it has the rows you asked for.

  • ๐Ÿง‘โ€โš–๏ธ One row per party. Party name and CourtListener party ID, the side of the caption it sits on, the co-parties on the same docket, the case caption and URL, court and court ID, PACER docket number and case ID, case type, filing and termination dates, JS-44 nature of suit as raw text, code, label and category, cause of action, jurisdiction type, jury demand, the judge and any magistrate referral, and the counsel roster.
  • ๐Ÿข Firm-first search. lawFirmKeywords runs a fielded firm:() query, so one firm name returns every docket where that firm appeared. Several names are ORed. Combine a firm with an attorney and you get only the cases where both are on the record.
  • ๐Ÿ’ผ Counsel and firm IDs on every row. attorneys, attorneyIds, lawFirms and lawFirmIds come straight from RECAP with their CourtListener IDs, plus attorneyCount and lawFirmCount for sorting.
  • โœ… Represented parties only, by default. A server-side _exists_:firm_id clause keeps the 2,838,130 dockets that have a firm on record and drops the bankruptcy petition stubs that carry a single unrepresented debtor. Turn it off to take everything.
  • ๐Ÿ”ฃ JS-44 nature of suit in 14 pickable groups. Civil rights, intellectual property, labor, contract, torts and the rest, each expanding to its cover-sheet codes and searched in turn with the row budget split between them.
  • ๐Ÿ—‚ Case types split. Civil, criminal, bankruptcy petitions and bankruptcy adversary proceedings are told apart from the PACER docket number and the bankruptcy chapter, and you can keep only the ones you want.
  • ๐Ÿท๏ธ No blanks. Values the source can carry but did not fill read Not Disclosed; values that do not apply to that record read N/A; booleans read Yes or No.

๐ŸŽฌ Full Demo (๐Ÿšง Coming soon)

A short walkthrough video is in production.

๐Ÿ“Š Output

Each row is one party to one federal docket. Fields, in dataset order:

FieldDescription
๐Ÿง‘โ€โš–๏ธ partyNameThe litigant as PACER records it, for example ELI LILLY AND COMPANY
๐Ÿ†” partyIdCourtListener party ID, stable across runs. N/A when the source ships an unequal ID list
โš–๏ธ captionSidePlaintiff side, Defendant side or Not Disclosed, derived from the case caption
๐Ÿ“Œ caseNameCase caption, for example Lida Sedgh v. Eli Lilly and Company
๐Ÿ”— urlDocket page on courtlistener.com
๐Ÿ†” docketIdCourtListener docket ID
๐Ÿ”ข docketNumberPACER docket number as written, for example 2:26-cv-06571
๐Ÿ› court / ๐Ÿท courtId / ๐Ÿ“Ž courtCitationStringCourt name, CourtListener court ID (for example paed), reporter-style abbreviation
๐Ÿงพ pacerCaseIdPACER's internal case ID
๐Ÿ—‚ caseTypeCivil, Criminal, Bankruptcy or Bankruptcy adversary
๐Ÿ“• bankruptcyChapterChapter on a bankruptcy petition, N/A on everything else
๐Ÿ“… dateFiled / ๐Ÿ dateTerminated / โณ isPendingFiling date, termination date (N/A while pending), Yes or No
๐Ÿ“ natureOfSuitRaw / ๐Ÿ”ฃ natureOfSuitCode / ๐Ÿ“„ natureOfSuit / ๐Ÿ—ƒ suitCategoryThe cover-sheet text as PACER wrote it, the JS-44 code, its label and its group
๐Ÿ“œ cause / ๐ŸŒ jurisdictionType / ๐Ÿ‘ฅ juryDemandStatute the complaint is brought under, basis of jurisdiction, who demanded a jury
๐Ÿ‘ฉโ€โš–๏ธ assignedTo / assignedToId / referredTo / referredToIdDistrict judge and any magistrate referral, with CourtListener IDs
๐Ÿ”ข partyCount / attorneyCount / lawFirmCount / โœ… hasCounselHow many litigants, attorneys and firms the docket carries
๐Ÿ’ผ attorneys / attorneyIdsAttorneys of record on the case, semicolon-separated, with IDs
๐Ÿข lawFirms / lawFirmIdsLaw firms on the case, semicolon-separated, with IDs
๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ง coPartiesThe other litigants on the same docket
๐Ÿ•“ dateCreatedWhen the docket entered RECAP
๐Ÿ•’ scrapedAtISO timestamp of the collection
โŒ errornull on success; error rows carry only this field and are never charged

Three real records from a verification run (lawFirmKeywords ["Kirkland and Ellis LLP"], filed since 01/01/2024, Max Items 5):

[
{
"partyName": "ELI LILLY AND COMPANY",
"partyId": 23629769,
"captionSide": "Defendant side",
"caseName": "Lida Sedgh v. Eli Lilly and Company",
"url": "https://www.courtlistener.com/docket/74735338/lida-sedgh-v-eli-lilly-and-company/",
"docketId": 74735338,
"docketNumber": "2:26-cv-06571",
"court": "District Court, E.D. Pennsylvania",
"courtId": "paed",
"courtCitationString": "E.D. Pa.",
"pacerCaseId": "661111",
"caseType": "Civil",
"bankruptcyChapter": "N/A",
"dateFiled": "2026-09-01",
"dateTerminated": "N/A",
"isPending": "Yes",
"natureOfSuitRaw": "367 P.I.: Health Care/Pharmaceutical Personal Injury Product Liability",
"natureOfSuitCode": "367",
"natureOfSuit": "Health care / pharmaceutical personal injury product liability",
"suitCategory": "Torts - personal injury",
"cause": "28:1441 Notice of Removal- Personal Injury",
"jurisdictionType": "Diversity",
"juryDemand": "Plaintiff",
"assignedTo": "Karen Spencer Marston",
"assignedToId": 15382,
"referredTo": "N/A",
"referredToId": "N/A",
"partyCount": 3,
"attorneyCount": 2,
"lawFirmCount": 2,
"hasCounsel": "Yes",
"attorneys": "Daniel Setareh; David I Horowitz",
"attorneyIds": "16012062; 16012063",
"lawFirms": "Setareth Law APLC; Kirkland and Ellis LLP",
"lawFirmIds": "1369015; 596983",
"coParties": "DOES 1 THROUGH 50 INCLUSIVE; Lida Sedgh",
"dateCreated": "2026-09-01T20:53:39.310719Z",
"scrapedAt": "2026-09-08T06:42:29.262Z",
"error": null
},
{
"partyName": "Lida Sedgh",
"partyId": 23629767,
"captionSide": "Plaintiff side",
"caseName": "Lida Sedgh v. Eli Lilly and Company",
"url": "https://www.courtlistener.com/docket/74735338/lida-sedgh-v-eli-lilly-and-company/",
"docketId": 74735338,
"docketNumber": "2:26-cv-06571",
"court": "District Court, E.D. Pennsylvania",
"courtId": "paed",
"courtCitationString": "E.D. Pa.",
"pacerCaseId": "661111",
"caseType": "Civil",
"bankruptcyChapter": "N/A",
"dateFiled": "2026-09-01",
"dateTerminated": "N/A",
"isPending": "Yes",
"natureOfSuitRaw": "367 P.I.: Health Care/Pharmaceutical Personal Injury Product Liability",
"natureOfSuitCode": "367",
"natureOfSuit": "Health care / pharmaceutical personal injury product liability",
"suitCategory": "Torts - personal injury",
"cause": "28:1441 Notice of Removal- Personal Injury",
"jurisdictionType": "Diversity",
"juryDemand": "Plaintiff",
"assignedTo": "Karen Spencer Marston",
"assignedToId": 15382,
"referredTo": "N/A",
"referredToId": "N/A",
"partyCount": 3,
"attorneyCount": 2,
"lawFirmCount": 2,
"hasCounsel": "Yes",
"attorneys": "Daniel Setareh; David I Horowitz",
"attorneyIds": "16012062; 16012063",
"lawFirms": "Setareth Law APLC; Kirkland and Ellis LLP",
"lawFirmIds": "1369015; 596983",
"coParties": "DOES 1 THROUGH 50 INCLUSIVE; ELI LILLY AND COMPANY",
"dateCreated": "2026-09-01T20:53:39.310719Z",
"scrapedAt": "2026-09-08T06:42:29.262Z",
"error": null
},
{
"partyName": "WWDC INDUSTRIAL PARK, LLC",
"partyId": 23533880,
"captionSide": "Defendant side",
"caseName": "GREATER DC DIAPER BANK v. WWDC INDUSTRIAL PARK, LLC",
"url": "https://www.courtlistener.com/docket/74659190/greater-dc-diaper-bank-v-wwdc-industrial-park-llc/",
"docketId": 74659190,
"docketNumber": "1:26-cv-02900",
"court": "District Court, District of Columbia",
"courtId": "dcd",
"courtCitationString": "D.D.C.",
"pacerCaseId": "295642",
"caseType": "Civil",
"bankruptcyChapter": "N/A",
"dateFiled": "2026-08-17",
"dateTerminated": "N/A",
"isPending": "Yes",
"natureOfSuitRaw": "190 Contract: Other",
"natureOfSuitCode": "190",
"natureOfSuit": "Other contract",
"suitCategory": "Contract",
"cause": "28:1332 Diversity-Breach of Contract",
"jurisdictionType": "Diversity",
"juryDemand": "Both",
"assignedTo": "Timothy James Kelly",
"assignedToId": 8589,
"referredTo": "N/A",
"referredToId": "N/A",
"partyCount": 3,
"attorneyCount": 4,
"lawFirmCount": 3,
"hasCounsel": "Yes",
"attorneys": "Madelaine Kramer Katz; Michael F. Williams; Joshua M. Hoffman; Michael T. Marr",
"attorneyIds": "15958104; 16004941; 16004942; 16004943",
"lawFirms": "Rifkin, Weiner, Livingston, LLC; Kirkland and Ellis LLP; Franklin & Prokopik, Pc",
"lawFirmIds": "922162; 58050; 458188",
"coParties": "DONOHOE REAL ESTATE SERVICES, INC; GREATER DC DIAPER BANK",
"dateCreated": "2026-08-17T20:13:48.431553Z",
"scrapedAt": "2026-09-08T06:42:29.263Z",
"error": null
}
]

โœจ Why choose this Actor

What you get
The party is the rowCase scrapers give you a docket with a semicolon-separated party blob. Here every litigant is its own row with its own CourtListener ID, so a group-by on party name or firm name works without any parsing on your side.
Firm and attorney search that really existsfirm:(), attorney:() and party:() are fielded queries on the live index, verified on 2026-09-08. One firm name returns 1,897 dockets for Kirkland and Ellis, 4,101 when Latham & Watkins is ORed in.
Counsel with IDs, not just namesattorneyIds and lawFirmIds are CourtListener IDs, so the same firm resolves across spelling variants that PACER records inconsistently.
Represented parties by defaultThe _exists_:firm_id clause runs server side on 2,838,130 dockets, so you are not paying for pages of unrepresented bankruptcy stubs to find the litigated cases.
Honest about the captioncaptionSide resolves 36% of parties, measured over 612 parties in 100 dockets. The rest say Not Disclosed rather than guessing, because PACER captions name one or two litigants out of six.
No API key neededCourtListener throttles anonymous callers at 5 requests a minute and 50 an hour per IP, and each request returns 20 dockets and every party on them. Turn the proxy on for a fresh exit IP per request, or paste your own free CourtListener key and the throttle disappears.
You pay for what you keepRows are billed as they are written and capped at maxItems, so a page that overshoots the cap is trimmed before it is charged. Duplicates and out-of-scope case types are dropped before billing, never after.

๐Ÿ“ˆ How it compares to alternatives

This ActorFederal case scrapersPACER directly
What a row isOne party to a docketOne docketOne docket sheet, per court
Search by law firmFielded firm:() query, several firms ORedNot exposedNo
Search by attorneyFielded attorney:() queryNot exposedPer court only
Party IDsCourtListener party ID per rowSemicolon-separated list, no per-row IDNone
Counsel rosterAttorneys and firms with IDs and counts on every rowSometimes, as one blobBehind the docket sheet
Party rolecaptionSide on 36% of parties, Not Disclosed on the restNot exposedOn the docket sheet
Rows a free account can preview10VariesNone
CeilingAnonymous API throttle of 5 requests a minute per IP, lifted by a free key or the proxySame source, same ceilingPer-page fees

๐Ÿš€ How to use

  1. Create a free Apify account with $5 in credit.
  2. Open the CourtListener Litigation Party & Counsel Scraper.
  3. Type a party, attorney or law firm name, set your dates, and click Start.
  4. Export the results as CSV, Excel, JSON, or XML from the Dataset tab.

One typical run: lawFirmKeywords ["Kirkland and Ellis LLP"], filedAfter 01/01/2024, maxItems 500. Run it programmatically through the Apify API or the ApifyClient for JavaScript and Python.

๐Ÿ’ผ Business use cases

๐Ÿข Build a law firm's federal client list

Put a firm name in lawFirmKeywords and every party on every docket that firm appeared in comes back, with the case, the court and the nature of suit. Business development teams use it to see which companies a rival firm actually represents, and in which practice areas, rather than relying on a website's client page.

๐Ÿ” Screen a counterparty before you sign

Put the company name in partyKeywords and you get every federal case it is named in, on either side of the caption, with the firm that defended it and the judge who heard it. Credit, procurement and M&A diligence teams run it as a standing check before a contract is signed.

๐Ÿ“ก Watch a practice area for new defendants

Pick a nature-of-suit category such as intellectual property or labor, set filedAfter to last week, and run it on a schedule. Each run returns the newest parties first, so a diff against the last run is an alert feed of companies that just got sued in your practice area.

๐Ÿง‘โ€๐Ÿ’ผ Map the bar in one court

Set court to cand, nysd or txed and pull every party filed in a date range. Group by lawFirms and attorneys to rank the firms most active before that bench, and by assignedTo to see which judge draws which counsel. Recruiters and marketing teams use attorneyIds to keep the list clean across spelling variants.

๐Ÿ”Œ Automating CourtListener Litigation Party & Counsel Scraper

  • Make / Zapier: trigger a run on a schedule, then push new parties to a CRM, a Google Sheet or a Slack channel.
  • Slack: post each new party, firm and case caption to a litigation-watch channel.
  • Airbyte: land the dataset in Snowflake, BigQuery or Postgres and join it to your customer table on party name.
  • GitHub: commit the JSON export to a repository to keep a versioned history of who is litigating what.
  • Google Drive: drop the CSV or Excel export into a shared folder for the practice group.

๐ŸŒŸ Beyond business use cases

  • Research: measure how often repeat-player firms appear opposite each other, or how counsel representation varies by district and nature of suit.
  • Personal: follow a case you are a party to, or check whether a company you deal with is in federal litigation.
  • Non-profit: track who defends civil rights and immigration cases in the districts you serve, and where parties appear without counsel.
  • Experimentation: build a party and counsel graph with CourtListener IDs, or train a model that predicts case outcome from the firms on the docket.

๐Ÿค– Ask an AI assistant about this scraper

Give an AI agent live access to federal litigation parties and counsel through the Model Context Protocol:

$claude mcp add --transport http apify "https://mcp.apify.com?tools=parseforge/courtlistener-party-scraper"

Then prompt it in plain language:

  • "Which parties has Kirkland and Ellis represented in the Northern District of California since 2024?"
  • "List every federal case where Eli Lilly is a party, with the firms on each side."
  • "Which law firms appear most often in employment discrimination cases in the Southern District of New York?"

Copy this into ChatGPT, Claude, or Cursor to start:

Use the Apify Actor "parseforge/courtlistener-party-scraper" to search federal litigation parties and counsel. Input: { "partyKeywords": ["<company>"], "attorneyKeywords": ["<name>"], "lawFirmKeywords": ["<firm>"], "suitCategories": ["civil-rights"|"intellectual-property"|"labor"|"contract"|"torts"|...], "natureOfSuitCodes": ["830"], "court": "cand", "filedAfter": "MM/DD/YYYY", "caseTypes": ["Civil"], "maxItems": <n> }. It returns one row per party with the party ID, the caption side, the case, court, docket number, dates, JS-44 nature of suit, cause, judge, co-parties, and the attorneys and law firms of record with their IDs. Call it with the ApifyClient and my APIFY_TOKEN.

โ“ Frequently Asked Questions

โ“ What exactly is a row?

One party to one federal docket. A case with six litigants produces six rows, each carrying that party's name and ID plus the full case and counsel context. maxItems counts parties, not cases.

โ“ Are the attorneys linked to the specific party?

No, and no public CourtListener surface exposes that link. The attorney and firm arrays are recorded per docket and deduplicated across the case, so every party row repeats the same case-level counsel roster. attorneyCount and lawFirmCount tell you how big that roster is. Per-party representation needs an authenticated CourtListener API token, which this Actor does not require.

โ“ Why is captionSide often Not Disclosed?

Because PACER does not publish party roles to anonymous callers, and the case caption names only one or two litigants out of however many are on the docket. captionSide is derived from the caption itself and resolves for about 36% of parties, measured over 612 parties in 100 dockets. When a name cannot be placed on exactly one side, the field says Not Disclosed instead of guessing.

โ“ Do I need a CourtListener account?

No. Everything runs on the public search API. A free CourtListener API key is optional and only lifts the anonymous throttle.

โ“ What is the difference from the case scrapers?

The case scrapers give you one row per docket with the parties as a semicolon-separated blob. This one gives you one row per party with a party ID, the co-parties and the counsel roster, and lets you search by firm and attorney name. Use the case scrapers when the case is the unit of analysis, this one when the litigant or the firm is.

โ“ Does it cover state courts?

Not through this Actor. RECAP is the federal PACER archive: district, bankruptcy and appellate courts. State dockets live in a separate CourtListener collection.

โ“ Why am I getting no results?

Every filter is ANDed. A firm name plus a nature-of-suit code plus a narrow date range can return an empty set. Widen the dates, drop a code, or turn off "Represented parties only". Firm names must match how PACER wrote them, so try Kirkland and Ellis LLP as well as Kirkland & Ellis LLP.

โ“ Why do some parties have no partyId?

The API ships the party names and the party IDs as two arrays. On 2 dockets out of 220 measured the lengths disagreed, which makes the index pairing unsafe, so the Actor writes N/A rather than attaching an ID that might belong to someone else.

โ“ How fast is it, and what is the ceiling?

Each request returns 20 dockets and every party on them, so a page usually yields 40 to 100 rows. Anonymous callers are throttled at 5 requests a minute and 50 an hour per IP, and a burst escalates the wait past 300 seconds. Turn the proxy on for a fresh exit IP per request or add a free CourtListener key for volume.

โ“ Does it deduplicate?

Yes. A party is written once per docket, keyed on docket, party ID and party name, so several nature-of-suit searches that hit the same case never bill twice.

โ“ What does "Represented parties only" actually do?

It adds a server-side clause that keeps dockets where PACER recorded at least one law firm. 2,838,130 dockets in the archive pass it. Without it, the unfiltered feed is dominated by bankruptcy petition stubs with one unrepresented debtor and no counsel.

โ“ How fresh is the data?

RECAP is populated as PACER dockets are fetched, and dateCreated on each row tells you when the docket entered the archive. Newly filed cases usually appear within a day.

โ“ Can I get the filings themselves?

Not from this Actor. It returns the party and counsel view of a docket. Use the case and filing scrapers listed below for the docket entries and PDFs.

โ“ Why fewer rows than Max Items?

The search ran out of matching dockets, or the run approached its time budget and stopped cleanly with what it had. The log prints how many dockets CourtListener reported for each search.

โ“ Are error rows charged?

No. Error rows carry only the error field and are pushed without a charge event.

๐Ÿ”Œ Integrate with any app

The dataset is available through the Apify API and the JavaScript and Python clients, and every run can be scheduled, triggered by webhook or wired into Make, Zapier, n8n, Airbyte, Google Sheets, Slack and GitHub from the Integrations tab.

๐Ÿ’ก Pro Tip: browse the complete ParseForge collection for more court, government and public-records scrapers.

๐Ÿ†˜ Need Help? Open our contact form with your run ID, your input, and what you expected.

โš ๏ธ Disclaimer: This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by the Free Law Project or CourtListener. It collects only publicly available court data through the public API. You are responsible for using the data in compliance with CourtListener's terms and applicable laws. Court records concern real people: do not use this data to identify, profile, or target individuals.