Google Scholar Case Law API avatar

Google Scholar Case Law API

Pricing

from $0.01 / 1,000 results

Go to Apify Store
Google Scholar Case Law API

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.

Pricing

from $0.01 / 1,000 results

Rating

5.0

(3)

Developer

John

John

Maintained by Community

Actor stats

6

Bookmarked

18

Total users

10

Monthly active users

19 hours ago

Last modified

Share

🏛️ Google Scholar Case Law API

Case law API for US court opinions on Google Scholar. Search opinions and pull full case details (parties, court, decision dates, full citations, cited cases) as structured JSON. Filter by court, by decision year, by language. MCP-ready, so Claude and other AI agents can call it as a tool inside AI agent workflows.


📋 What this API returns

FieldWhereDescription
result_idsearch resultsGoogle Scholar identifier. Use to fetch full case detail.
titlebothCase title with reporter citation.
snippetsearch resultsShort text preview from the opinion.
publication_infosearch resultsAuthor, source, and date block.
inline_linkssearch resultsCited-by, related, versions, cached links.
namecase detailShort party-name designation (e.g. Brown v. Board of Education).
court_namecase detailDeciding court.
datescase detailDecision, argued, and filed dates with type labels.
short_citationscase detailAbbreviated case references.
case_numberscase detailDocket numbers.
cited_casescase detailEvery case referenced in the opinion.
first_page, last_pagecase detailReporter page range.

🔍 Use cases

  • Legal research API. Pull every Supreme Court opinion mentioning a phrase, scoped by year.
  • Citation analysis. Get cited_cases for a known opinion and walk the citation graph.
  • Jurisdictional studies. Restrict to a specific court (e.g. 158 for SCOTUS, 33 for New York state courts) and export the corpus.
  • Litigation prep. Pre-load case-fact summaries into your case-management workflow.
  • AI agent workflows. Drive this API over MCP from Claude (see below) to research case law in-conversation.

🔌 Integrations: Automate Case Law API Monitoring and AI Agent Workflows

A single run answers one question ("which Ninth Circuit opinions cite qualified immunity?"). The real value comes from running this case law API on a repeat, so new opinions land in your stack the moment Google Scholar indexes them. See the full list of Apify platform integrations.

Tasks and Schedules (the core recipe). Save one task per query you watch (a phrase like "qualified immunity" scoped to a court, or a citation-tracking query for a landmark opinion), then attach a schedule from the Actor's Actions, then Schedule menu. Useful cron strings: 0 7 * * * (daily at 7 AM), 0 */6 * * * (every six hours), 0 9 * * 1 (Mondays). One schedule can trigger many tasks at once, so a whole watchlist of legal queries refreshes on one timer. The Find Ninth Circuit opinions on qualified immunity task is a ready-made starting point.

n8n. This API ships an n8n community node (see the n8n integration section below). A four-step monitor: Schedule Trigger, then the Google Scholar Case Law API node, then a Filter on court_name, then Slack or email.

Make and Zapier. The same pattern works no-code with Make and Zapier: trigger on a schedule, run the Actor, then route the new opinions where you need them.

Store the history (Supabase). Send each run's rows into a table so a case law archive accumulates across runs. No-code: the n8n Actor node, then a Supabase node. Or in Python (each row carries result_type, title, case_id, court_name, publication_info, and snippet):

from apify_client import ApifyClient
from supabase import create_client
apify = ApifyClient("YOUR_APIFY_TOKEN")
supabase = create_client("YOUR_SUPABASE_URL", "YOUR_SUPABASE_KEY")
run = apify.actor("johnvc/google-scholar-case-law").call(run_input={
"query": "qualified immunity",
"maxResults": 30,
"yearFrom": 2015,
})
rows = list(apify.dataset(run["defaultDatasetId"]).iterate_items())
supabase.table("case_law").upsert(rows).execute()

MCP and AI agents. Add this API as a tool in Claude or Cursor through the Apify MCP server so an agent can search opinions and pull case detail mid-conversation, the building block for legal-research AI agent workflows (see the Use this API from Claude section below).

Webhooks. For anything custom, fire an Apify webhook on ACTOR.RUN.SUCCEEDED to push each run's dataset into your own service.


⚙️ Input examples

{
"query": "patent infringement",
"maxResults": 20
}
{
"query": "First Amendment school speech",
"maxResults": 30,
"yearFrom": 2010,
"yearTo": 2024,
"courts": ["158"],
"sortByDate": true
}

courts: ["158"] restricts to the Supreme Court of the United States. Leave courts empty to search every US state and federal court.

Fetch full case detail by ID

{
"caseIds": [
"1810530706706468549",
"5036225562552830387"
]
}

Search and auto-fetch detail for every hit

{
"query": "trademark dilution",
"maxResults": 5,
"fetchCaseDetailsForResults": true
}

Returns 5 search_result rows AND 5 case_detail rows in the dataset.


🧾 Common court codes

CodeCourt
(omitted / empty courts)All US state and federal
158Supreme Court of the United States
159US Court of Appeals, Federal Circuit
160 to 172US Courts of Appeals, 1st through DC Circuits
192US Tax Court
33New York state courts
5California state courts

Any numeric court code shown in Google Scholar's case-law UI is accepted.


🔌 Use this API from Claude (MCP)

This Actor is MCP-server-compatible. Once published to the Apify Store, it is reachable from any MCP client (Claude Desktop, Claude Code (free trial), etc.) via Apify's hosted MCP server at https://mcp.apify.com.

Add it with this Actor-specific URL:

https://mcp.apify.com/?tools=actors,docs,johnvc/google-scholar-case-law

Setup walkthrough:

Apify MCP integration docs: https://docs.apify.com/platform/integrations/mcp

Add this to your MCP client config (e.g. ~/.claude/mcp.json or Claude Desktop's claude_desktop_config.json):

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com",
"headers": {
"Authorization": "Bearer YOUR_APIFY_TOKEN"
}
}
}
}

Then ask Claude:

"Use the Google Scholar Case Law API to find patent infringement cases from 2020 onward. Return the top 5 results, then fetch the full case detail for each one."

Claude will call this Actor through the MCP server. The input schema's field descriptions become tool-arg docs, and the structured dataset comes straight back into the conversation.


💰 Pricing (pay-per-event)

EventPriceWhen it fires
actor-start$0.02Once per Actor run, at startup.
search-result$0.02Per organic search result returned.
case-detail$0.02Per full case detail fetched.

A 10-result search costs $0.02 + 10 x $0.02 = $0.22. A 10-result search plus detail for every result costs $0.02 + 10 x $0.02 + 10 x $0.02 = $0.42.


🚀 How to get started

  1. Open the Actor and enter a query (add yearFrom / yearTo or courts to narrow it).
  2. Set maxResults, then run the Actor.
  3. Read the rows from the dataset (JSON, CSV, Excel, or API). Set fetchCaseDetailsForResults: true to also pull the full case detail for every hit.

View on Apify Store

Want working code? See the Google Scholar Case Law API example repo for a Python quick-start and MCP setup walkthroughs for Claude, Cursor, and ChatGPT.

Data source: Google Scholar case law.


🗂️ Output format

Every dataset item has a result_type field. It is either "search_result", "case_detail", or "error". Filter the dataset on this field to separate the two kinds of rows. Search results carry result_id; case-detail rows carry case_id (they are the same identifier).

Example output (real search result row)

{
"result_type": "search_result",
"position": 1,
"title": "Markman v. Westview Instruments, Inc.",
"link": "https://scholar.google.com/scholar_case?case=10285146068541901213&q=patent+infringement&hl=en&num=1&as_sdt=80006",
"publication_info": {
"summary": "52 F. 3d 967 - Court of Appeals, Federal Circuit, 1995 - Google Scholar"
},
"snippet": "... not useful, however, in the context of a patent infringement suit ... Patents are not contracts per se and patent infringement ...",
"inline_links": {
"cited_by": {
"total": 7058,
"link": "https://scholar.google.com/scholar?cites=10285146068541901213&as_sdt=80005&sciodt=80006&hl=en&num=1",
"cites_id": "10285146068541901213"
}
},
"result_id": "nQlyNtstvI4J",
"case_id": "10285146068541901213",
"fetched_at": "2026-07-03T23:55:09.942747+00:00"
}

n8n integration

Available as an n8n community node, n8n-nodes-google-scholar-case-law-api. In n8n: Settings, Community Nodes, install n8n-nodes-google-scholar-case-law-api, then use it in any workflow (it also works as an AI Agent tool).


Building a legal or academic research pipeline? These tools from the same catalog pair well with US case law:

  • Google Scholar API: research papers, author profiles, and academic citations, for the scholarship that surrounds a legal question.
  • Google Scholar Lite API: cheap bulk academic paper metadata when you need volume over full detail.
  • Google Patents API: the patent record behind an infringement dispute, to pair with the case law that interprets it.

Alternatives such as Google Scholar Case Law Scraper exist, but show minimal adoption (a handful of users and no reviews) and bill a $0.10 start fee on every run. This API is actively maintained, returns structured JSON with full case detail (parties, court, citations, and every cited case), carries public reviews, and is MCP-ready out of the box.


❓ FAQ

How do I find a court code?

Use the common codes table above; any numeric court code shown in Google Scholar's case-law court picker works here. Leave courts empty to search every US state and federal court.

Why did I get fewer results than maxResults?

maxResults is a ceiling, not a guarantee. Tight yearFrom / yearTo bounds or a narrow court filter simply match fewer opinions.

How do I get the full opinion details?

Either pass known IDs in caseIds, or set fetchCaseDetailsForResults: true on a search to auto-fetch the detail for every hit.

What does result_type mean?

Each dataset row is "search_result", "case_detail", or "error". Filter on it to separate the row kinds.

A query came back empty - what should I try?

Widen the year range, drop the court filter, or simplify the query phrase; very specific phrases may match no opinions.

Can I schedule case law searches?

Yes. Any run can be automated on a schedule. Create a saved task with your query, court, and year filters, then attach a schedule from the Actor's Actions, then Schedule menu. Concrete cron strings: 0 7 * * * for daily at 7 AM, 0 */6 * * * for every six hours, 0 9 * * 1 for Mondays. One schedule can trigger many tasks at once, so a full watchlist of legal queries refreshes together. See the Integrations section above for the full Tasks-and-Schedules monitoring recipe.

Should I use an API or a web scraper for case law?

Both, and this Actor is both. An official legal-data API is usually rate limited, quota bound, and often paywalls full opinions, while a plain web scraper returns messy HTML you still have to parse. This Actor gives you the clean, structured result of a purpose-built API: call it yourself or run it no-code, pay per result, no quotas, and get the same JSON whether you want one opinion or a full corpus.

Can I use the Case Law API programmatically?

Yes. The Apify API runs the Actor, schedules it, and fetches datasets, and the apify-client package exists for both Node.js and Python. See the Actor's API tab for ready-made snippets and your endpoint URLs.

Can I use this API through an MCP server?

Yes. Add it as a tool in any MCP client (Claude, Cursor, and others) through the hosted Apify MCP server with the Actor-specific URL https://mcp.apify.com/?tools=actors,docs,johnvc/google-scholar-case-law. In Claude Code (free trial) or Claude Cowork (free trial) your agent can then research US case law in-conversation, with citations and courts. See the Apify MCP docs.

Can I integrate this API with other apps?

Yes. It connects to almost any cloud service through Apify integrations: Make, Zapier, Slack, the n8n community node, and webhooks on ACTOR.RUN.SUCCEEDED for custom actions. See the Integrations section above for the full recipes.

What are AI agent workflows for case law research?

AI agent workflows chain one or more AI agents and tools so a model can complete a multi-step task on its own. For legal research, an agent connected to this API over MCP can search opinions on Google Scholar, read the snippet and publication_info, then follow cited_cases to walk the citation graph, all without a human running each query. That turns a one-shot search into an autonomous research loop.

What is citation analysis?

Citation analysis studies which cases cite which, and how often, to measure influence and trace how a legal doctrine developed. This API supports it directly: each search result carries a cited_by count and link, and every case_detail row lists its cited_cases, so you can build a citation graph from a seed opinion outward. Background: citation analysis.

Pair this API with related tools in the same catalog: the Google Scholar API for research papers, author profiles, and academic citations, the Google Scholar Lite API for cheap bulk paper metadata, and the Google Patents API for the patent record behind an infringement dispute. See the Related Tools section above for how each one fits.


Ready-to-run examples that show this API solving a specific problem. Each opens its own setup so you can run it on your account in one click.