AIDEVELOPER TOOLS API MCP READY

Google Scholar Case Law API

API for Google Scholar US case law. Search opinions and pull full case details with court, year, and citation filters. Returns structured JSON. MCP-ready.

MEDIAN LAGon demand
PARAMETERS10
TOTAL USERS18
MONTHLY ACTIVE10
TOTAL RUNS5,681
RUNS SUCCEEDED99.9%
RATING5.0 (3)

Input parameters

PARAMETERTYPEREQDEFAULTDESCRIPTION
query string no Case-law search query (e.g. 'patent infringement', 'Roe v.
maxResults integer no 20 Maximum number of search results to return. — drives your bill
yearFrom integer no Earliest decision year to include in the search (inclusive).
yearTo integer no Latest decision year to include in the search (inclusive).
courts string[] no List of Google Scholar court codes to limit the search to specific jurisdictions.
language string no Two-letter language code for the search interface (ISO 639-1, e.g. 'en', 'es', 'fr').
sortByDate boolean no False When true, sort results by decision date (newest first) instead of relevance.
excludeCitations boolean no False When true, exclude bare citation entries from results (only return full opinions).
caseIds string[] no List of Google Scholar case IDs to pull full case detail for.
fetchCaseDetailsForResults boolean no False When true and a `query` is provided, fetch the full case detail for every search result returned (one detail charge per result).

Worked examples

Basic — the required input, with the schema's own example values
{
  "query": "patent infringement",
  "maxResults": 20
}

Tasks

Saved runs with the inputs already filled in — each one a standalone page and a working configuration example.

Request a task →

Code

curl

curl -X POST "https://api.apify.com/v2/acts/johnvc~google-scholar-case-law/run-sync-get-dataset-items" \
  -H "Authorization: Bearer $APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"query": "patent infringement", "maxResults": 20}'

Python

from apify_client import ApifyClient

client = ApifyClient("APIFY_TOKEN")
run = client.actor("johnvc/google-scholar-case-law").call(
    run_input={'query': 'patent infringement', 'maxResults': 20}
)
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)