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
| PARAMETER | TYPE | REQ | DEFAULT | DESCRIPTION |
|---|---|---|---|---|
| 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
{
"query": "patent infringement",
"maxResults": 20
}
Tasks
Saved runs with the inputs already filled in — each one a standalone page and a working configuration example.
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)