Skip to content
Scrappa Get API key
Google Scholar API 1 credit/request

Google Scholar Case Law

GET https://scrappa.co/api/google/scholar/case-law?q=miranda&as_sdt=2006

Searches the case law index of Google Scholar. Each result has the case id, title, link, reporter citation, court, year, snippet, cited-by count and links to how the case was cited and to its versions. Filter by all US courts or by New York courts. Costs 9 credits per successful request. Failed and empty requests are free.

Google Scholar Case Law 1 credit/request

Endpoint

Request preview
GET
https://scrappa.co/api/google/scholar/case-law?q=miranda&as_sdt=2006
Auth header
x-api-key
Cost
1 credit/request
q = miranda
Response preview
200 OK
{
    "success": true,
    "data": {
        "search_parameters": {
            "engine": "google_scholar_case_law",
            "q": "miranda",
            "as_sdt": "2006",
            "start": 0,
            "hl": "en"
        },
        "search_information": {
            "total_results": 529000,
            "total_results_text": "About 529,000 results (0.03 sec)"
        },
...

Parameters

Start with the required fields, then add optional filters only when your use case needs them.

Runnable path

1 required parameter needed before sending a request.

3 optional filters available.

q string Required

Case law search query, for example miranda or a case name. 1 to 500 characters.

Example value miranda
as_sdt string Optional

Court filter. 2006 for all US courts (default). 4,33 for New York courts only.

Example value 2006
start integer Optional

Result offset in steps of 10, from 0 to 990. Defaults to 0.

Example value 0
hl string Optional

Interface language. Only en is supported.

Example value en

Request Examples

PHP
<?php

$curl = curl_init();

curl_setopt_array($curl, [
    CURLOPT_URL => "https://scrappa.co/api/google/scholar/case-law?q=miranda&as_sdt=2006",
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => "",
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => "GET",
    CURLOPT_HTTPHEADER => [
        "x-api-key: YOUR_API_KEY_HERE"
    ],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
    echo "cURL Error #:" . $err;
} else {
    echo $response;
}
PHP
<?php

use Illuminate\Support\Facades\Http;

$response = Http::timeout(30)
    ->withHeaders(['x-api-key' => 'YOUR_API_KEY_HERE'])
    ->get('https://scrappa.co/api/google/scholar/case-law?q=miranda&as_sdt=2006');

if ($response->successful()) {
    echo $response->body();
} else {
    echo "Error: " . $response->status();
}
JavaScript
const options = {
    method: 'GET',
    headers: {
        'x-api-key': 'YOUR_API_KEY_HERE'
    }
};

fetch('https://scrappa.co/api/google/scholar/case-law?q=miranda&as_sdt=2006', options)
    .then(response => {
        if (!response.ok) {
            throw new Error(`HTTP error! status: ${response.status}`);
        }
        return response.text();
    })
    .then(data => console.log(data))
    .catch(error => console.error('Error:', error));
JavaScript
const axios = require('axios');

const options = {
    method: 'GET',
    url: 'https://scrappa.co/api/google/scholar/case-law?q=miranda&as_sdt=2006',
    headers: {
        x-api-key: 'YOUR_API_KEY_HERE',
    }
};

try {
    const response = await axios(options);
    console.log(response.data);
} catch (error) {
    console.error('Error:', error.message);
}
Ruby
require 'net/http'
require 'uri'

uri = URI.parse("https://scrappa.co/api/google/scholar/case-law?q=miranda&as_sdt=2006")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == 'https'

request = Net::HTTP::Get.new(uri.request_uri)
request['x-api-key'] = 'YOUR_API_KEY_HERE'

begin
    response = http.request(request)
    puts response.body
rescue => e
    puts "Error: #{e.message}"
end
Python
import http.client
import json

conn = http.client.HTTPSConnection("scrappa.co")

headers = {
    'x-api-key': 'YOUR_API_KEY_HERE',
}

try:
    conn.request("GET", "/api/google/scholar/case-law?q=miranda&as_sdt=2006", headers=headers)
    res = conn.getresponse()
    data = res.read()
    print(data.decode("utf-8"))
except Exception as e:
    print(f"Error: {e}")
finally:
    conn.close()
Python
import requests

headers = {
    'x-api-key': 'YOUR_API_KEY_HERE',
}

try:
    response = requests.get('https://scrappa.co/api/google/scholar/case-law?q=miranda&as_sdt=2006', headers=headers)
    response.raise_for_status()
    print(response.text)
except requests.exceptions.RequestException as e:
    print(f"Error: {e}")
Java
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import java.io.IOException;

public class ApiExample {
    public static void main(String[] args) {
        OkHttpClient client = new OkHttpClient();

        Request request = new Request.Builder()
            .url("https://scrappa.co/api/google/scholar/case-law?q=miranda&as_sdt=2006")
        .addHeader("x-api-key", "YOUR_API_KEY_HERE")
            .build();

        try (Response response = client.newCall(request).execute()) {
            if (response.isSuccessful()) {
                System.out.println(response.body().string());
            } else {
                System.out.println("Error: " + response.code());
            }
        } catch (IOException e) {
            System.out.println("Error: " + e.getMessage());
        }
    }
}
Go
package main

import (
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {
    client := &http.Client{}
    req, err := http.NewRequest("GET", "https://scrappa.co/api/google/scholar/case-law?q=miranda&as_sdt=2006", nil)
    if err != nil {
        fmt.Println("Error creating request:", err)
        return
    }
    req.Header.Set("x-api-key", "YOUR_API_KEY_HERE")

    resp, err := client.Do(req)
    if err != nil {
        fmt.Println("Error making request:", err)
        return
    }
    defer resp.Body.Close()

    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        fmt.Println("Error reading response:", err)
        return
    }

    fmt.Println(string(body))
}
Terminal
#!/bin/bash

curl -X GET \
    -H "x-api-key: YOUR_API_KEY_HERE" \
    "https://scrappa.co/api/google/scholar/case-law?q=miranda&as_sdt=2006"
C#
using System;
using System.Net.Http;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        using var client = new HttpClient();
        client.DefaultRequestHeaders.Add("x-api-key", "YOUR_API_KEY_HERE");

        try
        {
            var response = await client.SendAsync(new HttpRequestMessage(HttpMethod.Get, "https://scrappa.co/api/google/scholar/case-law?q=miranda&as_sdt=2006"));
            var content = await response.Content.ReadAsStringAsync();
            Console.WriteLine(content);
        }
        catch (Exception ex)
        {
            Console.WriteLine($"Error: {ex.Message}");
        }
    }
}
TypeScript
import axios from 'axios';

async function run(): Promise<void> {
    try {
        const response = await axios({
            method: 'GET',
            url: 'https://scrappa.co/api/google/scholar/case-law?q=miranda&as_sdt=2006',
            headers: {
        'x-api-key': 'YOUR_API_KEY_HERE',
            },
        });

        console.log(response.data);
    } catch (error) {
        console.error('Error:', error);
    }
}

void run();
RUST
use reqwest::Client;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let client = Client::new();

    let response = client
        .get("https://scrappa.co/api/google/scholar/case-law?q=miranda&as_sdt=2006")
        .header("x-api-key", "YOUR_API_KEY_HERE")
        .send()
        .await?;

    println!("{}", response.text().await?);

    Ok(())
}

Response Schema

Example response fields are illustrative; inspect the JSON before integrating.

Example response fields

Scan these fields before integrating.

success data meta
JSON Response
200 OK
{
    "success": true,
    "data": {
        "search_parameters": {
            "engine": "google_scholar_case_law",
            "q": "miranda",
            "as_sdt": "2006",
            "start": 0,
            "hl": "en"
        },
        "search_information": {
            "total_results": 529000,
            "total_results_text": "About 529,000 results (0.03 sec)"
        },
        "organic_results": [
            {
                "position": 1,
                "result_id": "6386252699535531764",
                "title": "Miranda v. Arizona",
                "link": "https://scholar.google.com/scholar_case?case=6386252699535531764&q=miranda&hl=en&as_sdt=2006",
                "citation": "384 US 436, 86 S. Ct. 1602, 16 L. Ed. 2d 694",
                "court": "Supreme Court",
                "year": 1966,
                "snippet": "The cases before us raise questions which go to the roots of our concepts of American criminal jurisprudence\u2026",
                "publication_info": {
                    "summary": "384 US 436, 86 S. Ct. 1602, 16 L. Ed. 2d 694 - Supreme Court, 1966 - Google Scholar"
                },
                "inline_links": {
                    "cited_by": {
                        "total": 91835,
                        "cites_id": "6386252699535531764",
                        "link": "https://scholar.google.com/scholar?cites=6386252699535531764&as_sdt=2005&sciodt=2006&hl=en"
                    },
                    "how_cited_link": "https://scholar.google.com/scholar_case?about=6386252699535531764&q=miranda&hl=en&as_sdt=2006"
                }
            }
        ],
        "pagination": {
            "current": 1,
            "start": 0,
            "num": 10,
            "next_start": 10,
            "has_next": true
        }
    },
    "meta": {
        "duration_ms": 2400,
        "credits": 9
    }
}

Errors

Handle these documented responses before retrying or showing customer-facing failures.

Validation Error

q is missing, as_sdt is not 2006 or 4,33, start is not a multiple of 10, or hl is not en. This response is not billable.

Case Law Unavailable

Google Scholar blocked the request or returned a page that does not match the request. This response is not billable.

Generate Code with AI

Copy a ready-made prompt with all the endpoint details, parameters, and example responses. Paste it into ChatGPT, Claude, or any AI assistant to instantly generate working code.

Try It Live

Test this endpoint in our interactive playground with real data.