cases with full text
courts, 1600s-present
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.