← LeaderboardThe Skill Leaderboard

caselaw-access-api

Query 360+ years of US case law via the Harvard Caselaw Access Project

Published by brycewang-stanford ↗brycewang-stanford/Auto-Empirical-Research-Skills

Try your first task

caselaw-access-api

Start a fresh conversation. Replace the highlighted placeholders.

Use caselaw-access-api to research US cases concerning [legal issue] in [jurisdiction or court] during [date range], returning a cited table of case name, citation, court, decision date, and case-law URL; retrieve post-1923 full text only when an existing environment credential is available.

Required inputs

  • [legal issue]
  • [jurisdiction or court]
  • [date range]

User-approved starter prompt based on a pinned source version; check current skill requirements before running. Task evidence ↗

SKILL.md

name: caselaw-access-apidescription: "Query 360+ years of US case law via the Harvard Caselaw Access Project"metadata:   openclaw:     emoji: "⚖️"    category: "domains"    subcategory: "law"    keywords: ["case law", "legal database", "court opinions", "Harvard law", "judicial data", "legal research"]    source: "https://case.law/"

Caselaw Access Project API

Overview

The Caselaw Access Project (CAP) by Harvard Law School provides free access to 6.9 million US court opinions spanning 360+ years. The REST API enables searching, filtering, and downloading full-text case opinions from all federal and state courts. No authentication required for metadata; API key (free registration) required for full text of post-1923 cases.

API Endpoints

Base URL

https://api.case.law/v1/

Cases

# Search cases by keyword
curl "https://api.case.law/v1/cases/?search=free+speech&decision_date_min=2020-01-01"

# Get a specific case by ID
curl "https://api.case.law/v1/cases/12345678/"

# Filter by jurisdiction and court
curl "https://api.case.law/v1/cases/?jurisdiction=us&court=us-sup-ct&search=miranda+rights"

# Filter by date range
curl "https://api.case.law/v1/cases/?decision_date_min=2015-01-01&decision_date_max=2025-12-31"

# Get full text (requires API key for post-1923)
curl -H "Authorization: Token YOUR_API_KEY" \
  "https://api.case.law/v1/cases/12345678/?full_case=true"

Query Parameters

ParameterDescriptionExample
searchFull-text searchsearch=due+process
jurisdictionFilter by jurisdiction slugjurisdiction=cal (California)
courtFilter by court slugcourt=us-sup-ct
decision_date_minEarliest datedecision_date_min=2020-01-01
decision_date_maxLatest datedecision_date_max=2025-12-31
citeSearch by citationcite=410+U.S.+113
name_abbreviationCase namename_abbreviation=Roe+v.+Wade
orderingSort resultsordering=-decision_date
page_sizeResults per page (max 100)page_size=50
full_caseInclude full textfull_case=true

Courts and Jurisdictions

# List all courts
curl "https://api.case.law/v1/courts/"

# List all jurisdictions
curl "https://api.case.law/v1/jurisdictions/"

# List all reporters (case report series)
curl "https://api.case.law/v1/reporters/"

Python Usage

import requests

BASE_URL = "https://api.case.law/v1"

def search_cases(query: str, jurisdiction: str = None,
                 court: str = None, max_results: int = 20) -> list:
    """Search US case law."""
    params = {"search": query, "page_size": min(max_results, 100)}
    if jurisdiction:
        params["jurisdiction"] = jurisdiction
    if court:
        params["court"] = court

    resp = requests.get(f"{BASE_URL}/cases/", params=params)
    resp.raise_for_status()
    data = resp.json()

    cases = []
    for case in data.get("results", []):
        cases.append({
            "id": case["id"],
            "name": case["name_abbreviation"],
            "citation": case["citations"][0]["cite"] if case.get("citations") else None,
            "court": case["court"]["name"],
            "date": case["decision_date"],
            "url": case["frontend_url"]
        })
    return cases

# Search Supreme Court cases
results = search_cases("fourth amendment", court="us-sup-ct")
for case in results:
    print(f"{case['citation']}: {case['name']} ({case['date']})")

Bulk Data Access

For large-scale research, download bulk datasets instead of querying the API:

# Bulk data available at:
# https://case.law/bulk/download/
# Formats: JSON (full case data) or text-only
# Organized by jurisdiction and reporter

Key Jurisdictions

SlugJurisdictionCases
usFederal (all)~1.5M
us-sup-ctUS Supreme Court~65K
calCalifornia~500K
nyNew York~600K
texTexas~300K
illIllinois~250K

Authentication

1. Register at https://case.law/user/register/
2. Get API token from your account page
3. Include in requests: Authorization: Token YOUR_TOKEN

Free accounts get full text for pre-1923 cases. Post-1923 full text requires an API token (still free).

References