CourtListener Scraper avatar

CourtListener Scraper

Pricing

$0.90 / 1,000 court records

Go to Apify Store
CourtListener Scraper

CourtListener Scraper

Search public CourtListener opinions, federal RECAP dockets, and oral arguments with one full-text query. Filter supported records by court, dates, judges, citations, or docket numbers, then save structured records with source links.

Pricing

$0.90 / 1,000 court records

Rating

0.0

(0)

Developer

Maxime Dupré

Maxime Dupré

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

8 days ago

Last modified

Share

⚖️ Search CourtListener case law and dockets

Legal researchers, compliance teams, journalists, and developers can search public CourtListener records with one full-text query. Get structured opinions, federal RECAP dockets, or oral arguments with available court, date, citation, docket, and source-link data for review and downstream work.

📚 CourtListener records you can review

What you get

Each saved row is one CourtListener record. Choose opinions, Federal dockets / RECAP records, or Oral arguments. Rows include the case name, record type, record ID, and source URL, and can include court, date, status, and fields for the selected record type. CourtListener may not provide every field for every record, so optional fields can be empty or missing.

Opinion rows can include the author, panel, citations, citation count, opinion type, excerpts, a document URL, and full opinion text when requested and available. Docket rows can include docket details, judges, nature of suit, filing entries, document links, and page counts when CourtListener provides them. Oral-argument rows can include the panel, duration, text snippet, and audio URL.

The Actor returns public source data for research and review. It does not give legal advice, explain what the law means, or decide a case outcome.

▶️ Search CourtListener records

Run steps

  1. Choose a target: Opinions, Federal dockets / RECAP records, or Oral arguments.
  2. Enter one full-text query, such as habeas corpus or a party name.
  3. Add filters that match the target, such as a court, date range, judge, citation, docket number, or nature of suit.
  4. For Opinions, choose the sort order and turn on full opinion text when you need it.
  5. Set Maximum records per run, or leave it blank to return all available records until the source is exhausted.
  6. Start the run and open the dataset or the run summary.

Each run uses one search setup. Filters for another record type are ignored. CourtListener controls which public records and fields are available for a match.

⚙️ Input

Input fields

FieldTypeWhat it does
targetenum stringChooses opinions, dockets, or oralArguments.
querystringRequired full-text words or phrase for the selected CourtListener record type.
courtstringOptionally limits matches to a CourtListener court or jurisdiction ID.
judgestringFor Opinions, filters by judge or author name. It is ignored for Federal dockets / RECAP records and Oral arguments.
citationstringFor Opinions, filters by citation. It is ignored for Federal dockets / RECAP records and Oral arguments.
sortByenum stringFor Opinions, orders results by relevance, dateFiled, or citationCount.
includeFullTextbooleanFor Opinions, asks for full opinion text when CourtListener provides it. It is ignored for Federal dockets / RECAP records and Oral arguments.
natureOfSuitstringFor Federal dockets / RECAP records, filters by nature of suit. It is ignored for Opinions and Oral arguments.
docketNumberstringFilters Opinions and Federal dockets / RECAP records by docket number. It is ignored for Oral arguments.
startDatestring (YYYY-MM-DD)Includes Opinions and Federal dockets / RECAP records filed on or after this date, or Oral arguments dated on or after it.
endDatestring (YYYY-MM-DD)Includes Opinions and Federal dockets / RECAP records filed on or before this date, or Oral arguments dated on or before it.
maxItemsintegerStops after this many records. Leave it empty to return all available records until the source is exhausted.

target and query are required. Date values must use YYYY-MM-DD. Fields that do not apply to the selected target are ignored.

Example input

This is the public input from a successful current-beta default-style run:

{
"target": "opinions",
"sortBy": "relevance",
"includeFullText": false,
"query": "habeas corpus",
"maxItems": 1
}

🧾 Output

Run summary

The Actor also publishes a run summary with links and counts:

FieldTypeWhat it does
datasetUrlstringURL for the dataset that holds the returned records.
returnedRecordsstringNumber of records saved in the dataset.
sourceTotalAvailablestringTotal matches reported by CourtListener, when available.

Opinion rows

FieldTypeWhat it does
recordTypestringThe record type, opinion.
recordIdstringStable ID for the CourtListener record.
caseNamestringName of the case.
courtobjectCourt and jurisdiction details for the record.
court.namestringName of the court.
court.idstringCourtListener court or jurisdiction ID.
court.jurisdictionstringJurisdiction linked to the court.
recordDatestringFiling date for the opinion.
statusstringStatus reported by CourtListener.
sourceUrlstringCourtListener page for the opinion.
opinionobjectDetails available for the opinion.
opinion.authorstringJudge or author named for the opinion.
opinion.panelstring[]Judges listed on the opinion panel.
opinion.dateArguedstringDate the case was argued, when given.
opinion.documentUrlstringURL for downloading the opinion document.
opinion.citationsstring[]Reporter citations listed for the opinion.
opinion.citationCountintegerNumber of citations reported for the opinion.
opinion.opinionTypestringType of opinion reported by CourtListener.
opinion.opinionCountintegerNumber of opinions in the source case record, when given.
opinion.syllabusstringSource-provided syllabus text, when available.
opinion.proceduralHistorystringSource-provided procedural history, when available.
opinion.excerptstringSource-provided opinion excerpt, when available.
opinion.fullTextstringFull opinion text when requested and available.

Opinion example

This is a shortened row from a successful current-beta opinion run with full opinion text requested. The fullText value is the public-copy omission marker "..."; the other shown values are from the returned row.

{
"recordType": "opinion",
"recordId": "4521308",
"caseName": "In re Habeas Corpus by Snyder",
"court": {
"name": "Supreme Court of Kansas",
"id": "kan",
"jurisdiction": "S"
},
"recordDate": "2018-07-27",
"status": "Published",
"sourceUrl": "https://www.courtlistener.com/opinion/4521308/in-re-habeas-corpus-by-snyder/",
"opinion": {
"author": "Stegall",
"citations": [
"422 P.3d 1152"
],
"citationCount": 6,
"opinionType": "combined-opinion",
"opinionCount": 1,
"excerpt": "\n\n\n The opinion of the court was delivered by Stegall, J:\n \n\n In May 2013, the Saline County District Court first found Clay Robert Snyder not competent to stand trial because of his intellectual disability. Since then, Snyder has cycled through competency detainment and involuntary commitment at least twice. Most recently in November 2016, the district court found Snyder was still not compete",
"fullText": "...",
"documentUrl": "http://www.kscourts.org/Cases-and-Opinions/Opinions/SupCt/2018/20180727/117167.pdf"
}
}

Docket rows

FieldTypeWhat it does
recordTypestringThe record type, docket.
recordIdstringStable ID for the CourtListener record.
caseNamestringName of the case.
courtobjectCourt and jurisdiction details for the record.
court.namestringName of the court.
court.idstringCourtListener court or jurisdiction ID.
court.jurisdictionstringJurisdiction linked to the court.
recordDatestringFiling date for the docket.
statusstringStatus reported by CourtListener, when available.
sourceUrlstringCourtListener page for the docket.
docketobjectFederal docket and RECAP details.
docket.docketNumberstringDocket number reported by the source.
docket.dateTerminatedstringDate the docket was terminated, when given.
docket.dateLastFilingstringDate of the latest docket filing, when given.
docket.natureOfSuitstringNature of suit for the docket, when available.
docket.assignedJudgesstring[]Judges assigned to the docket.
docket.referredJudgesstring[]Judges referred to the docket.
docket.entriesobject[]Filing entries and documents listed for the docket.
docket.entries[].entryIdstringStable ID for a docket entry.
docket.entries[].entryNumberstringDocket entry number reported by the source.
docket.entries[].dateFiledstringDate the docket entry was filed.
docket.entries[].descriptionstringSource description of the docket entry.
docket.entries[].pageCountintegerNumber of pages in the entry, when given.
docket.entries[].documentsobject[]Documents linked to the docket entry.
docket.entries[].documents[].documentIdstringStable ID for the source document.
docket.entries[].documents[].documentNumberstringDocument number reported by the source.
docket.entries[].documents[].descriptionstringSource description of the document.
docket.entries[].documents[].pageCountintegerNumber of pages in the document, when given.
docket.entries[].documents[].downloadUrlstringURL for downloading the document, when available.
docket.entries[].documents[].sourceUrlstringSource page for the document, when useful.

Docket example

This is an unshortened row from a successful current-beta docket run. Optional fields that CourtListener did not return are not added.

{
"recordType": "docket",
"recordId": "8366557",
"caseName": "Fuentes v. Habeas Corpus",
"court": {
"name": "District Court, S.D. New York",
"id": "nysd",
"jurisdiction": "FD"
},
"recordDate": "2018-11-30",
"sourceUrl": "https://www.courtlistener.com/docket/8366557/fuentes-v-habeas-corpus/",
"docket": {
"docketNumber": "1:18-cv-11232",
"dateTerminated": "2019-01-11",
"natureOfSuit": "550 Prisoner - civil rights",
"assignedJudges": [
"Colleen McMahon"
],
"entries": [
{
"entryId": "453256104",
"entryNumber": "1",
"dateFiled": "2018-11-30",
"description": "COMPLAINT against D.O.D, Habeas Corpus, NYS DOCCS, The Pentagon, The VA. Document filed by Peter Fuentes. (ks) (Entered: 12/04/2018)",
"documents": [
{
"documentId": "468143576",
"documentNumber": "1",
"description": "COMPLAINT against D.O.D, Habeas Corpus, NYS DOCCS, The Pentagon, The VA. Document filed by Peter Fuentes. (ks) (Entered: 12/04/2018)",
"sourceUrl": "https://www.courtlistener.com/docket/8366557/1/fuentes-v-habeas-corpus/"
}
]
},
{
"entryId": "453256106",
"dateFiled": "2018-11-30",
"description": "Case Designated ECF. (ks)",
"documents": [
{
"documentId": "468143578",
"description": "Case Designated ECF. (ks)"
}
]
},
{
"entryId": "453256107",
"entryNumber": "3",
"dateFiled": "2018-12-04",
"description": "ORDER DIRECTING PAYMENT OF FEE OR IFP APPLICATION: Plaintiff is directed to render payment of the filing fee or submit an IFP application to this Court's Pro Se Office within thirty (30) days of the date of this Order. The Clerk of Court is directed to assign this matter to my docket. The Court certifies, pursuant to 28 U.S.C. § 1915(a)(3), that any appeal from this Order would not be taken in good faith, and therefore in forma pauperis status is denied for the purpose of an appeal. See Coppedge v. United States, 369 U.S. 438, 444 (1962). Filing Fee due by 1/3/2019. In Forma Pauperis (IFP) Application due by 1/3/2019. (Signed by Judge Colleen McMahon on 12/4/2018) (Attachments: # 1 IFP application)(keb) Transmission to Docket Assistant Clerk for processing. (Entered: 12/04/2018)",
"documents": [
{
"documentId": "468143579",
"documentNumber": "3",
"description": "ORDER DIRECTING PAYMENT OF FEE OR IFP APPLICATION: Plaintiff is directed to render payment of the filing fee or submit an IFP application to this Court's Pro Se Office within thirty (30) days of the date of this Order. The Clerk of Court is directed to assign this matter to my docket. The Court certifies, pursuant to 28 U.S.C. § 1915(a)(3), that any appeal from this Order would not be taken in good faith, and therefore in forma pauperis status is denied for the purpose of an appeal. See Coppedge v. United States, 369 U.S. 438, 444 (1962). Filing Fee due by 1/3/2019. In Forma Pauperis (IFP) Application due by 1/3/2019. (Signed by Judge Colleen McMahon on 12/4/2018) (Attachments: # 1 IFP application)(keb) Transmission to Docket Assistant Clerk for processing. (Entered: 12/04/2018)",
"sourceUrl": "https://www.courtlistener.com/docket/8366557/3/fuentes-v-habeas-corpus/"
}
]
}
]
}
}

Oral-argument rows

FieldTypeWhat it does
recordTypestringThe record type, oralArgument.
recordIdstringStable ID for the CourtListener record.
caseNamestringName of the case.
courtobjectCourt and jurisdiction details for the record.
court.namestringName of the court.
court.idstringCourtListener court or jurisdiction ID.
court.jurisdictionstringJurisdiction linked to the court.
recordDatestringArgument date for the oral argument.
statusstringStatus reported by CourtListener, when available.
sourceUrlstringCourtListener page for the oral argument.
oralArgumentobjectDetails available for the oral argument.
oralArgument.durationSecondsintegerLength of the oral argument in seconds, when given.
oralArgument.panelstring[]Judges listed for the oral argument.
oralArgument.textSnippetstringText snippet from the oral argument, when available.
oralArgument.audioUrlstringURL for downloading the oral-argument audio.

Oral-argument example

This is an unshortened row from a successful current-beta oral-argument run.

{
"recordType": "oralArgument",
"recordId": "106003",
"caseName": "Sherrod Brown v. FCC",
"court": {
"name": "Court of Appeals for the Fourth Circuit",
"id": "ca4",
"jurisdiction": "F"
},
"recordDate": "2026-08-07",
"sourceUrl": "https://www.courtlistener.com/audio/106003/sherrod-brown-v-fcc/",
"oralArgument": {
"durationSeconds": 4655,
"panel": [
"Robert Bruce King",
"James Andrew Wynn jr"
],
"textSnippet": "The Honorable, the Judges of the United States Court of Appeals for the Fourth Circuit. Oyez, oyez, oyez. All persons having any manner or form of business before the Honorable of the United States Court of Appeals for the Fourth Circuit are admonished to draw a nod and give their attention till the Court is now sitting. The Honorable, the Judges of the United States Court of Appeals for the Fourth Circuit are admonished to draw a nod and give their attention till the Court is now sitting. We",
"audioUrl": "http://www.ca4.uscourts.gov/OAarchive/mp3/26-1785-20260807.mp3"
}
}

💳 Pricing

How charging works

The Actor uses pay-per-event pricing. The current charge is $0.0009 for each opinion, federal docket, or oral argument that is successfully saved to the dataset. The charge follows the saved public record, not a separate setup step.

Set maxItems when you want a smaller result set. Leave it blank to return all available records until the source is exhausted; the number of saved records then depends on the matches CourtListener provides.

🔌 Integrations

Use with Apify

Start runs in Apify Console or through the Apify API, then use datasetUrl to read the default dataset or export it from Apify. The Actor does not send records directly to outside services.

❓ FAQ

Do I need a CourtListener API token?

No. This Actor searches the public CourtListener service without a source credential field. CourtListener still controls public availability and rate limits.

Can I search opinions, RECAP dockets, and oral arguments?

Yes. Choose the matching value in target: opinions, dockets, or oralArguments. Filters that do not apply to that target are ignored.

Can I search for a party or case name?

Yes. Put the party or case name in query. For Opinions and Federal dockets / RECAP records, you can also use docketNumber when you know it.

Can I request full opinion text?

For Opinions, set includeFullText to true. Full text is returned only when CourtListener provides it for the opinion.

Why is a field empty or missing?

CourtListener does not provide every legal field for every record. Check the record's sourceUrl when you need to confirm a value.

How many records can a run return?

Set maxItems to stop after a chosen number of records. Leave it blank to return all available records until the source is exhausted; this schema does not set a fixed maximum.

Can one run use more than one search setup?

No. Each run uses one target, one query, and one set of filters. Start another run for a different search setup.

No. It returns public CourtListener records and source links for research and review. It does not interpret the law or predict a case outcome.

📝 Changelog

0.0: Initial release

🆘 Support

For issues, questions, or feature requests, file a ticket and I'll fix or implement it in less than 24h 🫡

Made with ❤️ by Maxime Dupré