CourtListener Citation Scraper - Case Law Citation Graph avatar

CourtListener Citation Scraper - Case Law Citation Graph

Pricing

from $3.62 / 1,000 results

Go to Apify Store
CourtListener Citation Scraper - Case Law Citation Graph

CourtListener Citation Scraper - Case Law Citation Graph

Scrape US court opinions from CourtListener with every reporter citation, times-cited counts and the citation graph. 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 Citation Scraper

🚀 Export US case law citations and the citation graph from CourtListener in seconds. Search 8,308,570 opinions, sort by how often each one is cited, and get one 39-field row per case with every reporter citation, the times-cited count, and the opinions it cites in turn. 92,525 opinions have been cited more than 100 times.

A citation is how a case is found, cited and shepardized, and a citation graph is what tells you whether a case still carries weight. This Actor reads CourtListener's public case-law index and returns, for every opinion it collects, the official reporter citation and every parallel one, how many later opinions cite it, a link to those citing opinions, and the list of opinions it cites itself. No login and no API key required, and the results export to CSV, JSON, Excel, or XML.

The archive holds 8,308,570 opinions from the US Supreme Court, the 13 federal circuits, the federal district courts and the state courts, going back to the early 1800s. Ordering is what makes it a citation dataset rather than a news feed: the default is most-cited first, because a slip opinion filed last week has no reporter citation yet and no case has cited it. Measured on 2026-09-08, every one of the top 20 most-cited results carried reporter citations and a citation graph, against 2 of 20 for the newest-first ordering.

🎯 Target Audience💡 Primary Use Cases
Litigators and appellate counselCheck whether the case in a brief is still heavily cited, and by whom
Legal researchers and law librariansPull citation lists and parallel reporters for a doctrine or a court
Legal tech and AI teamsBuild a citation graph, a retrieval corpus or a Shepard's-style index
Law schools and empirical scholarsMeasure how doctrine spreads across circuits and decades
Publishers and citation-checkersResolve a reporter citation to the case, with every parallel cite

📋 What the CourtListener Citation Scraper does

💡 Why it matters: commercial citators cost thousands a year and give you a web page, not a dataset. CourtListener publishes the same citation relationships for free, but its public API returns them anonymously only through the search index, and only if you know that cites: and citation: are queryable fields. This Actor sends those queries for you, flattens each cluster into one row, and never bills for a record it did not deliver.

Give it a phrase, an exact citation, or the ID of a case whose citing opinions you want, and the Actor queries CourtListener's search API live, following the cursor until it has the rows you asked for.

  • 📗 One row per case, 39 fields. The official reporter citation picked out of the parallel ones, every citation the case carries, LEXIS and neutral cites, times cited, the opinions it cites, court and jurisdiction, docket number, precedential status, opinion type, judges, counsel, the SCOTUS database ID, the court's own PDF and CourtListener's permanent mirror.
  • 🕸 The citation graph, both directions. citedByCount is how many later opinions cite the case and citedByUrl lists them; citedOpinionIds is what the case cites itself. Put an opinion ID in Cited-by graph and the run collects every opinion citing it: Ashcroft v. Iqbal returns 12,095.
  • 📖 Exact citation lookup. Type 556 U.S. 662 in Exact citation and the run returns that one case with all four of its parallel citations. It is the anonymous route to what CourtListener's citation-lookup endpoint does behind an API key.
  • 📈 Slice the citation curve. Minimum times cited at 100 gives you landmark case law, at 1,000 the few hundred opinions that anchor a doctrine. Combine it with a maximum to take a band.
  • 🏛 66 high courts pickable, every court searchable. The US Supreme Court, the 13 federal circuits and 52 state and territorial high courts, read from CourtListener's own courts endpoint. Leave the picker empty and the search covers every court in the archive, district courts included.
  • 📎 Resolved cited cases (opt-in). Turn the cited opinion IDs into names, citations, courts and dates. Costs one extra request per 20 references, so it is off by default.
  • 🏷️ No blanks. Values the source can carry but did not fill read Not Disclosed; values that do not apply read N/A; booleans read Yes or No.

🎬 Full Demo (🚧 Coming soon)

A short walkthrough video is in production.

📊 Output

Each row is one opinion cluster. Fields, in dataset order:

FieldTypeDescription
clusterIdIntegerCourtListener opinion cluster ID, the stable key for the case
caseNameStringShort case caption, for example Ashcroft v. Iqbal
caseNameFullStringFull caption as the reporter prints it
urlStringCourtListener page for the case
citationStringThe official reporter citation, picked over the parallel ones
allCitationsStringEvery citation the case carries, semicolon separated
reporterCountIntegerHow many parallel citations the case has
lexisCitationStringLEXIS citation when the archive has one
neutralCitationStringCourt-assigned neutral citation, common in state courts
citedByCountIntegerHow many later opinions cite this case
citedByUrlStringCourtListener search listing every opinion that cites it
citedOpinionCountIntegerHow many earlier opinions this case cites
precedentialStatusStringPublished, Unpublished, Errata, Separate, In-chambers, Relating-to or Unknown
isPrecedentialStringYes when the opinion is published and therefore binding
courtStringFull court name
courtIdStringCourtListener court slug, for example scotus or ca9
courtCitationStringStringHow the court is abbreviated inside a citation
courtJurisdictionStringFederal appellate, state supreme, federal district and so on
dateFiledStringDate the opinion was filed, YYYY-MM-DD
dateArguedStringDate the case was argued, when the archive records it
docketNumberStringDocket number the court assigned
docketIdIntegerCourtListener docket ID
opinionTypeStringCombined opinion, lead opinion, plurality and so on
opinionCountIntegerHow many sub-opinions the case holds, dissents included
perCuriamStringYes or No
judgesStringJudges on the opinion
attorneysStringCounsel of record as the reporter lists them
scdbIdStringSupreme Court Database ID, for SCOTUS cases
dataSourceStringWhich archives the record was merged from
snippetStringFirst few hundred characters of the opinion text
courtDocumentUrlStringThe court's own PDF, on the court's site
pdfUrlStringCourtListener's permanent PDF mirror
dateAddedStringWhen the record entered the archive
citationStringsArrayEvery citation as separate strings
opinionIdsArrayOpinion IDs inside the cluster, the input for a cited-by graph run
citedOpinionIdsArrayOpinion IDs this case cites
citedCasesArrayResolved cited cases with name, citation, court and date (opt-in)
scrapedAtStringISO timestamp of the run
errorStringOnly present on an error row; null on data rows

Three real records from a run with query qualified immunity, orderBy citeCount desc, maxItems 5:

[
{
"clusterId": 145875,
"caseName": "Ashcroft v. Iqbal",
"caseNameFull": "ASHCROFT, FORMER ATTORNEY GENERAL, Et Al. v. IQBAL Et Al.",
"url": "https://www.courtlistener.com/opinion/145875/ashcroft-v-iqbal/",
"citation": "556 U.S. 662",
"allCitations": "173 L. Ed. 2d 868; 129 S. Ct. 1937; 556 U.S. 662; 2009 U.S. LEXIS 3472",
"reporterCount": 4,
"lexisCitation": "2009 U.S. LEXIS 3472",
"neutralCitation": "Not Disclosed",
"citedByCount": 157704,
"citedByUrl": "https://www.courtlistener.com/?type=o&q=cites%3A(9435340%20OR%209435339%20OR%20145875)",
"citedOpinionCount": 43,
"precedentialStatus": "Published",
"isPrecedential": "Yes",
"court": "Supreme Court of the United States",
"courtId": "scotus",
"courtCitationString": "SCOTUS",
"courtJurisdiction": "Federal appellate",
"dateFiled": "2009-05-18",
"dateArgued": "Not Disclosed",
"docketNumber": "07-1015",
"docketId": 191796,
"opinionType": "Combined opinion",
"opinionCount": 3,
"perCuriam": "No",
"judges": "Kennedy, Souter, Stevens, Ginsburg, Breyer",
"attorneys": "Former Solicitor General Garre argued the cause for petitioners. With him on the briefs were Assistant Attorney General Katsas, Deputy Assistant Attorney General Cohn, Curtis E. Gannon, Barbara L. Herwig, and Robert M. Loeb. Michael L. Martinez, David E. Bell, and Matthew F. Scarlato filed briefs for Dennis Hasty as respondent under this Court’s Rule 12.6 urging reversal. Brett M. Schuman, Lauren J. Resnick, and Thomas D Warren filed briefs for Michael Rolince et al. as respondents under this Court’s Rule 12.6 urging reversal., Alexander A. Reinert argued the cause for respondents. With him on the brief for respondent Javaid Iqbal were Joan M. Magoolaghan, Elizabeth L. Koob, and Rima J. Oken*",
"scdbId": "2008-056",
"dataSource": "Lawbox; Court website; Harvard Caselaw Access Project",
"snippet": "129 S.Ct. 1937 (2009)\nJohn D. ASHCROFT, Former Attorney General, et al., Petitioners,\nv.\nJavaid IQBAL et al.\nNo. 07-1015.\nSupreme Court of United States.\nArgued December 10, 2008.\nDecided May 18, 2009.\n*1942 Gregory G. Garre, Solicitor General, Washington, DC, for Petitioners.\nAlexander A. Reinert, for Res",
"courtDocumentUrl": "http://www.supremecourt.gov/opinions/08pdf/07-1015.pdf",
"pdfUrl": "https://storage.courtlistener.com/pdf/2009/05/18/Ashcroft_v._Iqbal.pdf",
"dateAdded": "2016-01-29T22:18:21.469986Z",
"citationStrings": [
"173 L. Ed. 2d 868",
"129 S. Ct. 1937",
"556 U.S. 662",
"2009 U.S. LEXIS 3472"
],
"opinionIds": [
9435340,
9435339,
145875
],
"citedOpinionIds": [
2716,
145730,
84992,
92277,
104695,
105573,
106285,
108375,
109469,
109881,
110075,
110097,
110098,
110763,
110965,
111218,
111481,
111742,
112254,
112594,
112881,
117906,
117950,
117996,
118038,
118289,
118466,
118505,
145662,
145677,
145705,
145918,
201947,
511655,
516408,
609804,
692283,
783945,
790530,
1087956,
7275134,
8487689,
9435339
],
"citedCases": [
{
"clusterId": 145730,
"caseName": "Bell Atlantic Corp. v. Twombly",
"citation": "550 U.S. 544",
"allCitations": "167 L. Ed. 2d 929; 127 S. Ct. 1955; 550 U.S. 544; 2007 U.S. LEXIS 5901; 41 Communications Reg. (P&F) 567; 20 Fla. L. Weekly Fed. S 267; 68 Fed. R. Serv. 3d 661; 75 U.S.L.W. 4337",
"court": "Supreme Court of the United States",
"courtCitationString": "SCOTUS",
"dateFiled": "2007-05-21",
"citedByCount": 154417,
"url": "https://www.courtlistener.com/opinion/145730/bell-atlantic-corp-v-twombly/",
"opinionIds": [
145730,
9435068,
9435069
]
},
{
"clusterId": 2716,
"caseName": "Iqbal v. Hasty",
"citation": "490 F.3d 143",
"allCitations": "490 F.3d 143",
"court": "Court of Appeals for the Second Circuit",
"courtCitationString": "2d Cir.",
"dateFiled": "2007-06-18",
"citedByCount": 614,
"url": "https://www.courtlistener.com/opinion/2716/iqbal-v-hasty/",
"opinionIds": [
2716,
9413360,
9413361
]
},
{
"clusterId": 84992,
"caseName": "Dunlop v. Munroe",
"citation": "11 U.S. 242",
"allCitations": "11 U.S. 242; 3 L. Ed. 329; 7 Cranch 242; 1812 U.S. LEXIS 391",
"court": "Supreme Court of the United States",
"courtCitationString": "SCOTUS",
"dateFiled": "1812-03-14",
"citedByCount": 45,
"url": "https://www.courtlistener.com/opinion/84992/dunlop-v-munroe/",
"opinionIds": [
84992
]
}
],
"scrapedAt": "2026-09-08T06:24:14.881Z",
"error": null
},
{
"clusterId": 109881,
"caseName": "Monell v. New York City Dept. of Social Servs.",
"caseNameFull": "MONELL Et Al. v. DEPARTMENT OF SOCIAL SERVICES OF THE CITY OF NEW YORK Et Al.",
"url": "https://www.courtlistener.com/opinion/109881/monell-v-new-york-city-dept-of-social-servs/",
"citation": "436 U.S. 658",
"allCitations": "56 L. Ed. 2d 611; 98 S. Ct. 2018; 436 U.S. 658; 1978 U.S. LEXIS 100; 16 Empl. Prac. Dec. (CCH) 8345; 17 Fair Empl. Prac. Cas. (BNA) 873",
"reporterCount": 6,
"lexisCitation": "1978 U.S. LEXIS 100",
"neutralCitation": "Not Disclosed",
"citedByCount": 42895,
"citedByUrl": "https://www.courtlistener.com/?type=o&q=cites%3A(9427233%20OR%209427232%20OR%20109881%20OR%209427234%20OR%209427235)",
"citedOpinionCount": 109,
"precedentialStatus": "Published",
"isPrecedential": "Yes",
"court": "Supreme Court of the United States",
"courtId": "scotus",
"courtCitationString": "SCOTUS",
"courtJurisdiction": "Federal appellate",
"dateFiled": "1978-06-06",
"dateArgued": "Not Disclosed",
"docketNumber": "75-1914",
"docketId": 266243,
"opinionType": "Combined opinion",
"opinionCount": 3,
"perCuriam": "No",
"judges": "Blackmun, BrennaN, Brennan, Marshall, Powell, Rehnquist, Stevens, Stewart, White",
"attorneys": "Oscar Chase argued the cause for petitioners. With him on the briefs were Nancy Stearns, Jack Greenberg, and Eric Schnapper., L. Kevin Sheridan argued the cause for respondents. With him on the brief was W. Bernard Richland.*",
"scdbId": "1977-103",
"dataSource": "Lawbox; public.resource.org; Harvard Caselaw Access Project",
"snippet": "436 U.S. 658 (1978)\nMONELL ET AL.\nv.\nDEPARTMENT OF SOCIAL SERVICES OF THE CITY OF NEW YORK ET AL.\nNo. 75-1914.\nSupreme Court of the United States.\nArgued November 2, 1977.\nDecided June 6, 1978.\nCERTIORARI TO THE UNITED STATES COURT OF APPEALS FOR THE SECOND CIRCUIT\n*660 Oscar Chase argued the cause for pet",
"courtDocumentUrl": "N/A",
"pdfUrl": "N/A",
"dateAdded": "2016-01-29T20:40:07.127891Z",
"citationStrings": [
"56 L. Ed. 2d 611",
"98 S. Ct. 2018",
"436 U.S. 658",
"1978 U.S. LEXIS 100",
"16 Empl. Prac. Dec. (CCH) 8345",
"17 Fair Empl. Prac. Cas. (BNA) 873"
],
"opinionIds": [
9427233,
9427232,
109881,
9427234,
9427235
],
"citedOpinionIds": [
84759,
96537,
96819,
101894,
104285,
104614,
106170,
107705,
107841,
108154,
108362,
108375,
108730,
108782,
108810,
108913,
108990,
109199,
109503,
109508,
109574,
109716,
109723,
109763,
109776,
109823,
249412,
334135,
1460310,
84894,
85272,
85827,
86231,
86293,
87371,
87413,
87567,
87795,
87903,
87904,
87985,
87989,
87995,
88010,
88174,
88308,
90041,
90262,
92688,
97779,
103172,
103360,
103833,
105221,
106440,
106629,
106630,
106658,
107706,
107707,
107971,
107993,
108016,
108094,
108153,
108316,
108751,
108813,
108844,
109009,
109027,
109102,
109349,
109397,
109499,
109520,
109728,
1415269,
1480162,
1490664,
6507289,
6599360,
6633878,
7036523,
7037170,
7652067,
8639091,
8939977,
9004895,
9299595,
9300237,
9301445,
88079,
103531,
104135,
104272,
104455,
104709,
106285,
107685,
108987,
109509,
282871,
3876939,
6607492,
8632804,
8822445,
8903338,
9427232
],
"citedCases": [
{
"clusterId": 96819,
"caseName": "Ex Parte Young",
"citation": "209 U.S. 123",
"allCitations": "209 U.S. 123; 28 S. Ct. 441; 52 L. Ed. 714; 1908 U.S. LEXIS 1726",
"court": "Supreme Court of the United States",
"courtCitationString": "SCOTUS",
"dateFiled": "1908-03-23",
"citedByCount": 9804,
"url": "https://www.courtlistener.com/opinion/96819/ex-parte-young/",
"opinionIds": [
96819,
9418117,
9418118
]
},
{
"clusterId": 84759,
"caseName": "Marbury v. Madison",
"citation": "5 U.S. 137",
"allCitations": "5 U.S. 137; 2 L. Ed. 60; 1 Cranch 137; 1803 U.S. LEXIS 352",
"court": "Supreme Court of the United States",
"courtCitationString": "SCOTUS",
"dateFiled": "1803-02-24",
"citedByCount": 6047,
"url": "https://www.courtlistener.com/opinion/84759/marbury-v-madison/",
"opinionIds": [
84759
]
},
{
"clusterId": 96537,
"caseName": "Chattanooga Foundry & Pipe Works v. City of Atlanta",
"citation": "203 U.S. 390",
"allCitations": "203 U.S. 390; 27 S. Ct. 65; 51 L. Ed. 241; 1906 U.S. LEXIS 1603",
"court": "Supreme Court of the United States",
"courtCitationString": "SCOTUS",
"dateFiled": "1906-12-03",
"citedByCount": 384,
"url": "https://www.courtlistener.com/opinion/96537/chattanooga-foundry-pipe-works-v-city-of-atlanta/",
"opinionIds": [
96537
]
}
],
"scrapedAt": "2026-09-08T06:24:14.882Z",
"error": null
},
{
"clusterId": 108786,
"caseName": "McDonnell Douglas Corp. v. Green",
"caseNameFull": "McDONNELL DOUGLAS CORP. v. GREEN",
"url": "https://www.courtlistener.com/opinion/108786/mcdonnell-douglas-corp-v-green/",
"citation": "411 U.S. 792",
"allCitations": "36 L. Ed. 2d 668; 93 S. Ct. 1817; 411 U.S. 792; 1973 U.S. LEXIS 154; 5 Empl. Prac. Dec. (CCH) 8607; 5 Fair Empl. Prac. Cas. (BNA) 965",
"reporterCount": 6,
"lexisCitation": "1973 U.S. LEXIS 154",
"neutralCitation": "Not Disclosed",
"citedByCount": 38977,
"citedByUrl": "https://www.courtlistener.com/?type=o&q=cites%3A(108786)",
"citedOpinionCount": 15,
"precedentialStatus": "Published",
"isPrecedential": "Yes",
"court": "Supreme Court of the United States",
"courtId": "scotus",
"courtCitationString": "SCOTUS",
"courtJurisdiction": "Federal appellate",
"dateFiled": "1973-05-14",
"dateArgued": "Not Disclosed",
"docketNumber": "72-490",
"docketId": 409902,
"opinionType": "Combined opinion",
"opinionCount": 1,
"perCuriam": "No",
"judges": "Powell",
"attorneys": "Veryl L. Riddle argued the cause for petitioner. With him on the briefs were R. H. McRoberts and Thomas C. Walsh., Louis Gilden argued the cause for respondent. With him on the brief were Jack Greenberg, James M. Nabrit III, William L. Robinson, and Albert Rosenthal.*",
"scdbId": "1972-118",
"dataSource": "Lawbox; public.resource.org; Harvard Caselaw Access Project",
"snippet": "411 U.S. 792 (1973)\nMcDONNELL DOUGLAS CORP.\nv.\nGREEN.\nNo. 72-490.\nSupreme Court of United States.\nArgued March 28, 1973.\nDecided May 14, 1973.\nCERTIORARI TO THE UNITED STATES COURT OF APPEALS FOR THE EIGHTH CIRCUIT.\n*793 Veryl L. Riddle argued the cause for petitioner. With him on the briefs were R. H.",
"courtDocumentUrl": "N/A",
"pdfUrl": "N/A",
"dateAdded": "2015-11-04T18:46:10.682096Z",
"citationStrings": [
"36 L. Ed. 2d 668",
"93 S. Ct. 1817",
"411 U.S. 792",
"1973 U.S. LEXIS 154",
"5 Empl. Prac. Dec. (CCH) 8607",
"5 Fair Empl. Prac. Cas. (BNA) 965"
],
"opinionIds": [
108786
],
"citedOpinionIds": [
103153,
104923,
108284,
289439,
291916,
291925,
294671,
297540,
298273,
302977,
303251,
304478,
1468898,
1480855,
2346563
],
"citedCases": [
{
"clusterId": 108284,
"caseName": "Griggs v. Duke Power Co.",
"citation": "401 U.S. 424",
"allCitations": "28 L. Ed. 2d 158; 91 S. Ct. 849; 401 U.S. 424; 1971 U.S. LEXIS 134; 3 Empl. Prac. Dec. (CCH) 8137; 3 Fair Empl. Prac. Cas. (BNA) 175",
"court": "Supreme Court of the United States",
"courtCitationString": "SCOTUS",
"dateFiled": "1971-03-08",
"citedByCount": 3600,
"url": "https://www.courtlistener.com/opinion/108284/griggs-v-duke-power-co/",
"opinionIds": [
108284
]
},
{
"clusterId": 103153,
"caseName": "National Labor Relations Board v. Fansteel Metallurgical Corp.",
"citation": "306 U.S. 240",
"allCitations": "306 U.S. 240; 59 S. Ct. 490; 83 L. Ed. 627; 1939 U.S. LEXIS 1092; 123 A.L.R. 599; 4 L.R.R.M. (BNA) 515",
"court": "Supreme Court of the United States",
"courtCitationString": "SCOTUS",
"dateFiled": "1939-02-27",
"citedByCount": 367,
"url": "https://www.courtlistener.com/opinion/103153/national-labor-relations-board-v-fansteel-metallurgical-corp/",
"opinionIds": [
103153,
9419015,
9419016,
9419017
]
},
{
"clusterId": 104923,
"caseName": "Garner v. Board of Public Works of Los Angeles",
"citation": "341 U.S. 716",
"allCitations": "95 L. Ed. 2d 1317; 71 S. Ct. 909; 341 U.S. 716; 1951 U.S. LEXIS 1731; 95 L. Ed. 1317",
"court": "Supreme Court of the United States",
"courtCitationString": "SCOTUS",
"dateFiled": "1951-06-04",
"citedByCount": 271,
"url": "https://www.courtlistener.com/opinion/104923/garner-v-board-of-public-works-of-los-angeles/",
"opinionIds": [
104923,
9420626,
9420623,
9420624,
9420625,
9420627
]
}
],
"scrapedAt": "2026-09-08T06:24:14.882Z",
"error": null
}
]

✨ Why choose this Actor

What you get
Citations, not just opinionsThe official reporter citation is picked out of the parallel ones, so 556 U.S. 662 lands in citation and 129 S. Ct. 1937 and 173 L. Ed. 2d 868 stay in allCitations. Most CourtListener scrapers hand you the raw array.
The citation graph in both directionsTimes cited and a working link to the citing opinions, plus the list of opinions the case cites. Ashcroft v. Iqbal comes back with 157,704 citing opinions and 43 cited ones.
Ordering that fills the columnsMost-cited first is the default. Newest-first returns slip opinions that no reporter has cited yet, which is a valid search and a useless citation dataset.
Exact citation lookup, anonymouslycitation: is a queryable field on the public search index, so a reporter citation resolves to its case with no API key. CourtListener's dedicated citation-lookup endpoint needs one.
66 courts verified, not typed from memoryRead from CourtListener's courts endpoint on 2026-09-08, in use and still sitting. A single wrong court slug silently returns zero results, which is why the list is a picker.
No API key neededCourtListener throttles anonymous callers at about 5 requests a minute per IP, and each request returns 20 rows. 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 are dropped before billing, never after.

📈 How it compares to alternatives

This ActorGeneral CourtListener scrapersCommercial citators
What a row isA case with its citations and its citation graphAn opinion recordA citator entry behind a login
Official citation picked outYes, parallel cites kept separatelyRaw array, if at allYes
Times citedOn every row, filterable both waysRarelyYes
Opinions this case citesYes, IDs always, resolved on requestNoYes
Cited-by listingA working CourtListener search link per rowNoYes
Exact citation lookupYes, anonymouslySometimes, with a keyYes
Rows a free account can preview10VariesNone
CeilingAnonymous API throttle of about 5 requests a minute per IP, lifted by a free key or the proxySame source, same ceilingSeat licence

🚀 How to use

  1. Create a free Apify account with $5 in credit.
  2. Open the CourtListener Citation Scraper.
  3. Type a phrase or a citation, set your courts, dates and minimum times cited, and click Start.
  4. Export the results as CSV, Excel, JSON, or XML from the Dataset tab.

One typical run: query qualified immunity, courts ["scotus","ca9"], minCitedByCount 100, maxItems 200. Run it programmatically through the Apify API or the ApifyClient for JavaScript and Python.

💼 Business use cases

📗 Check whether a case still carries weight

Pull the case by its citation, read citedByCount, then open citedByUrl to see who has cited it and when. A doctrine that stopped being cited in 2014 shows up as a flat number.

🕸 Build a citation graph around a leading case

Put the case's opinion ID in Cited-by graph and collect every opinion that cites it, with each one's own court, date and times-cited count. That is the raw edge list for a network of how a rule spread.

📚 Assemble a reading list for a doctrine

Search the phrase, set Minimum times cited to 100, and take the top 200. You get the cases that practitioners actually cite, not the 90,000 that merely mention the words.

🏛 Compare how circuits cite each other

Run the same query per circuit with the courts picker and compare the citation counts and the cited-opinion lists. Splits show up as circuits citing different ancestors.

🔌 Automating CourtListener Citation Scraper

  • Make / Zapier: trigger a run on a schedule, then push new rows to a CRM, a Google Sheet or a Slack channel.
  • Slack: post each newly published opinion that cites a case you are watching to a research channel.
  • Airbyte: land the dataset in Snowflake, BigQuery or Postgres for analytics.
  • GitHub: commit the JSON export to a repository to keep a versioned history of the citation graph.
  • Google Drive: drop the CSV or Excel export into a shared folder for the practice group.

🌟 Beyond business use cases

  • Research: measure how long a Supreme Court holding takes to reach state courts, or which dissents get cited more than the majority they answered.
  • Personal: look up the citation for a case you read about in the news, with every parallel reporter.
  • Non-profit: track the case law behind an access-to-justice issue and see which opinions courts keep returning to.
  • Experimentation: train a citation-prediction model, or build a Shepard's-style checker on top of the JSON export.

🤖 Ask an AI assistant about this scraper

Give an AI agent live access to US case law citations through the Model Context Protocol:

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

Then prompt it in plain language:

  • "What is the citation for Ashcroft v. Iqbal, and how many cases cite it?"
  • "Find the twenty most-cited Ninth Circuit opinions on qualified immunity since 2015."
  • "Which opinions does Farmer v. Brennan cite?"

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

Use the Apify Actor "parseforge/courtlistener-citation-scraper" to search US case law citations. Input: { "query": "<phrase>", "citation": "556 U.S. 662", "citedOpinionId": <opinion id>, "courts": ["scotus","ca9"], "minCitedByCount": <n>, "filedAfter": "YYYY-MM-DD", "orderBy": "citeCount desc", "includeCitedCases": true, "maxItems": <n> }. It returns per row the official reporter citation, every parallel citation, times cited, a link to the citing opinions, the opinion IDs it cites, court, jurisdiction, docket number, precedential status, judges and counsel. Call it with the ApifyClient and my APIFY_TOKEN.

❓ Frequently Asked Questions

❓ Which citation ends up in the citation column?

The official reporter one. Commercial and annotation reporters (LEXIS, Westlaw, BNA, CCH, U.S.L.W.) are ruled out first, and among what is left the official reporter always has the shortest abbreviation. For Ashcroft v. Iqbal that picks 556 U.S. 662 over 129 S. Ct. 1937 and 173 L. Ed. 2d 868. Every citation is still in allCitations and citationStrings.

❓ Do I need a CourtListener account?

No. The search index answers anonymously. A free CourtListener key only lifts the throttle, and you can paste one into the API key field if you have it.

❓ How do I find every case that cites a given case?

Run the case once, take a number out of its opinionIds column, and put that number in Cited-by graph: opinion ID. Ashcroft v. Iqbal is 145875 and returns 12,095 citing opinions.

❓ Why is the default sort most-cited first?

Because it is the ordering that fills the citation columns. Reporters assign citations months after an opinion is filed, so a newest-first run returns slip opinions with no citation and a times-cited count of zero. Measured on 2026-09-08: 18 of the 20 newest results had no reporter citation, against 0 of the top 20 most-cited.

❓ Does it return the full opinion text?

No, and nothing on the public surface does. CourtListener's opinions/ endpoint carries the full text but answers HTTP 401 without an API key, so this Actor ships the first few hundred characters in snippet plus two PDF links: the court's own document and CourtListener's permanent mirror.

❓ Why is a case missing its neutral citation or argument date?

Because the archive does not have it. Neutral citations are assigned by some state courts and not by the federal ones, and argument dates are recorded for a minority of opinions. Those cells read Not Disclosed rather than sitting empty.

❓ How complete is citedOpinionIds?

It is what the search index carries for the case, taken from every sub-opinion in the cluster and de-duplicated. It reflects the citations CourtListener's parser recognised in the opinion text, so a case whose text was scanned badly can list fewer than it really cites.

❓ What does turning on Resolve the cases this opinion cites cost?

One extra request per 20 references, so an opinion citing 40 cases costs two. Anonymously that is roughly 24 seconds of throttle per opinion, which is why it is off by default and capped by Cited cases per opinion.

❓ Which courts can I pick?

66: the US Supreme Court, the 13 federal circuits, and 52 state and territorial high courts, all read from CourtListener's own courts endpoint on 2026-09-08. Leave the picker empty and the search covers every court in the archive, including the federal district courts and the state intermediate appellate courts.

❓ How fast is it, and what is the ceiling?

Each request returns 20 rows. Anonymously CourtListener allows about 5 requests a minute per IP, so roughly 100 rows a minute, and a burst answers HTTP 429 with a Retry-After the Actor waits out, up to 300 seconds. Turning the proxy on gives a fresh exit IP per request; a free CourtListener key removes the limit.

❓ Why am I getting no results?

Every filter is combined with AND. A minimum times-cited of 1,000 with a date range starting in 2020 returns nothing, because no opinion has been cited a thousand times in five years. Widen the dates, lower the minimum, or drop the court filter.

❓ Why fewer rows than Max Items?

Either the search genuinely has fewer matches, or Only cases with a reporter citation dropped uncited slip opinions, or the run reached its time budget while waiting out a throttle. The log says which.

❓ Does it deduplicate?

Yes, on the opinion cluster ID, before anything is written or charged. A case with a lead opinion, a concurrence and a dissent is one cluster and one row.

❓ How fresh is the data?

CourtListener adds opinions within hours of a court publishing them, and this Actor reads the live index every run. Citation counts and reporter citations lag by design: a reporter assigns a citation months later, and other courts take longer still to cite it.

❓ How many rows per run?

Free accounts preview 10. Paid accounts go up to 1,000,000, subject to how many opinions match and how long the throttle allows.

🔌 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.