Next free-source hunt
We check for new free data every weekday.
Datasets / OSINT
courtlistener.com/

Free Law Project CourtListener API

Freemiumauth: free account and API tokenCustom#osint#event-data#historical-data#risk✓ verified Nov 2, 2026

Free Law Project CourtListener API

Free Law Project exposes U.S. case law, federal dockets and filings, judges, court metadata, oral arguments, citations and financial disclosures through a JSON REST API. Records include court and case identifiers, dates, parties, docket entries, opinions, citations, document links and source-specific metadata; some endpoints are open, while most production use needs a free account and API token.

Coverage

CourtListener covers American case law extending more than 365 years, continuously adds newly released decisions, and gathers federal district and bankruptcy case metadata shortly after filing. RECAP document coverage depends on contributions and targeted collection, while supported oral-argument courts are gathered hourly; the free authenticated tier permits 5 requests per minute, 50 per hour and 125 per day.

Verdict

This API gives legal-event and litigation signals for decisions, dockets, filings, citations, judges and oral arguments. Case dates, filing dates, modification times and source acquisition dates describe different events and should remain separate. RECAP document coverage varies because many files enter through contributors or targeted collection, and court records can contain names and other public personal information. Provider terms prohibit consumer-reporting uses for credit, insurance, employment, housing and other FCRA purposes, and credentials for a product or team require a commercial agreement.

Get the free weekly email

Free weekly email of newly verified free data. Unsubscribe by emailing us.

Use in your agent

Load the keyless CourtListener court directory into Parquet. Checked against the provider's documentation on Nov 2, 2026.

Raw skill file (/skills/courtlistener-api.md)Also in our MCP server: call get_ingestion_skill with {"slug": "courtlistener-api"}.

Access

  • Observed 2026-11-02: the v4 court-directory endpoint returned JSON without an account or token.
  • Create a free account and token for case-law, opinion and other authenticated endpoints.

Request

bash
curl -H 'Accept: application/json' -H 'User-Agent: Mozilla/5.0 (X11; Linux x86_64) SignalLabCheck/1.0' 'https://www.courtlistener.com/api/rest/v4/courts/?page_size=25'

Format

Paginated JSON court records with stable court ID, names, jurisdiction code, dates, status, parent and appellate relationships, PACER fields and provider URLs.

Load into pandas and Parquet

Needs Python 3 with requests, pandas and pyarrow.

python
"""CourtListener public court directory -> pandas -> Parquet. No key."""
import requests
import pandas as pd

URL = "https://www.courtlistener.com/api/rest/v4/courts/"
headers = {
    "Accept": "application/json",
    "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) SignalLabCheck/1.0",
}
response = requests.get(URL, params={"page_size": 25}, headers=headers, timeout=60)
response.raise_for_status()
payload = response.json()
columns = [
    "id", "full_name", "short_name", "jurisdiction",
    "start_date", "end_date", "in_use", "url",
]
df = pd.DataFrame(payload["results"])[columns]
df["start_date"] = pd.to_datetime(df["start_date"], errors="coerce")
df["end_date"] = pd.to_datetime(df["end_date"], errors="coerce")
df.to_parquet("courtlistener_courts.parquet", index=False)
print(len(df), "courts of", payload["count"], "records;",
      int(df["in_use"].sum()), "marked in use")

Run by us on 2026-11-02 (python 3.13.5 | pandas 3.1.0 | pyarrow 26.0.0 | requests 2.34.2). Result: 20 courts of 3359 records; 19 marked in use

Limits

  • Rate limit: 5 requests per minute, 50 requests per hour and 125 requests per day for default authenticated users.
  • Endpoint permissions differ; the checked courts endpoint was keyless, while opinion and cluster endpoints required authentication.
  • Follow the next URL in paginated responses rather than constructing page numbers from the count.

Quirks

  • Court IDs are more stable than names; keep id for joins and retain jurisdiction as the provider code.
  • start_date and end_date describe the court institution, while date_modified records API metadata changes.
  • Case-law and RECAP endpoints have nested relationships and different permissions from the court directory.

Terms and attribution

  • Court records can contain third-party copyrighted material even when judicial opinions and filings are generally public domain.
  • The service cannot be used for consumer-reporting purposes covered by the FCRA, and credentials cannot be shared or pooled.
  • A product or team needing shared access must arrange a commercial agreement with Free Law Project.

Sources

Information and education only. Not financial, investment, legal or tax advice. Listings can be inaccurate, incomplete or out of date and are provided "as is". Free tiers, limits and licenses belong to each provider and can change, so check the provider's own terms before you rely on them. Terms & Disclaimer