Case Repository

A published record of American case law, as a simple REST API.

10.1M

cases with full text

3,361

courts, 1600s-present

77M

citation links

What it is

Millions of published U.S. court opinions from the Supreme Court, federal circuits, and state courts. All with full text, metadata, and citation counts, behind a clean JSON API. Search and filter cases, pull complete opinion text, or export bulk datasets as JSONL or CSV. Data is public domain, sourced from the Free Law Project.

Built for bulk

The entire API is documented in one place, so it's simple to get started: browse the API reference, or take the complete guide as a single plain-text file, doc.txt. This platform lets you quickly download large data samples for your project, whether you need a handful of records or a bulk export. Just grab the URL and your API key, and start pulling data.

Example request

$ curl -H "Authorization: Bearer $KEY" \
  "https://caserepository.com/api/v1/cases?court=scotus&min_citations=50000"

{
  "cases": [
    {"id": 107252, "case_name": "Miranda v. Arizona",
     "date_filed": "1966-06-13", "citation_count": 58288},
    {"id": 107423, "case_name": "Anders v. California",
     "date_filed": "1967-05-08", "citation_count": 87848},
    ...
  ]

Search parameters

Case listings (GET /api/v1/cases), ranked search (GET /api/v1/search), and bulk exports accept the same filters, combined freely:

court=scotus Limit to one court, by slug. See the court list below.
name=padilla Case names containing this text, case-insensitive. At least 3 characters.
cite=559 U.S. 356 Exact lookup by reporter citation. Abbreviation variants are normalized; Westlaw and LEXIS cites work.
text="oil and gas" royalty Full-text search over the opinions themselves. Phrases, OR, -exclusions, stemming. Works in exports.
q="oil and gas" royalty On /search only: the same query syntax, but ranked. The top matches, best first, each with a snippet.
filed_after=2020-01-01 Only cases decided on or after this date.
filed_before=2023-12-31 Only cases decided on or before this date.
min_citations=100 Only cases cited at least this many times by other cases.
max_citations=5 Only cases cited at most this many times. Pair with min_citations for a range.
status=Published Only cases with this precedential status, usually Published or Unpublished.
cites=1723 Only cases that cite this one. 4,760 cases cite Padilla v. Kentucky.
cited_by=1723 The reverse: only cases this one relies on. Padilla cites 58.
per_page=20 Results per page when browsing (max 100).
include_text=true Exports only: include the full opinion text for every case.

Results return in a stable order: by id, or by filing date when a date filter is applied. Sort by anything else on your side after fetching. Full details, pagination, and export workflow are in doc.txt.

What a case holds, in one line

GET /api/v1/cases/:id/parentheticals returns short statements of what a case stands for, written by later courts that cited it and scored by how well each works as a summary. 6.4 million of them, covering 1.2 million opinions.

{
  "text": "holding that counsel has a duty under the Sixth Amendment
           to inform a noncitizen defendant that his plea would make
           him eligible for deportation",
  "score": 0.9557,
  "describing_case": {"id": 626207, "case_name": "Vartelas v. Holder"}
}

Know what you're working with

GET /api/v1/meta reports what is actually in the corpus right now: case and court counts, the date range covered, and when the snapshot was taken. If your work needs to be reproducible, record that instead of hardcoding a date.

Every response also tells you where you stand against the rate limit, via the X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset headers, so a long job can pace itself rather than discovering the limit by hitting it.

Supported courts

Every court in the corpus has a short slug used in the court= parameter: scotus for the Supreme Court, ca1-ca11 for the federal circuits, state slugs like mo and cal, plus district, bankruptcy, and specialty courts.

courts.txt lists every court slug with its full name. (Your app can also fetch it live: GET /api/v1/courts.)

Access

Case Repository is currently in private beta. API keys are issued personally to researchers and builders. If you'd like one, email [email protected].

Who runs this

Built and maintained by Nicholas Clark, a J.D. / M.S. Computer Science candidate at UMKC, as research-assistant work at the UMKC School of Law. The project exists to supply reproducible corpora for legal research, which is why every corpus is a dated snapshot and bulk export is a first-class feature.