Skip to content
Scrappa Get API key

Google Search

Perform a Google search and get structured results including organic results, related searches, knowledge graphs, and more.

Run this endpoint

Google Search 1 credit/request

Endpoint

GET https://scrappa.co/api/search?query=best+restaurants+in+Berlin&hl=en&safe=off
Request preview GET
https://scrappa.co/api/search?query=best+restaurants+in+Berlin&hl=en&safe=off
Auth header x-api-key
Cost 1 credit/request
query = best restaurants in Berlin
Response preview 200 OK
{
    "search_information": {
        "query_displayed": "best restaurants in Berlin",
        "total_results": 428000000,
        "time_taken_displayed": "0.42 seconds"
    },
    "organic_results": [
        {
            "position": 1,
            "title": "The 38 Best Restaurants in Berlin",
            "link": "https://www.example.com/berlin/best-restaurants",
            "redirect_link": "https://www.google.com/url?q=https://www.example.com/berlin/best-restaurants",
            "displayed_link": "www.example.com > berlin > best-restaurants",
            "snippet": "A curated guide to Berlin restaurants, from modern German dining rooms to casual neighborhood favorites.",
...

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.

22 optional filters available.

query string Required

Search query

Example value best restaurants in Berlin
location string Optional

Location for results (currently ignored by backend)

Example value Austin, Texas
uule string Optional

Encoded location (deprecated; supported)

Example value example
google_domain string Optional

Google domain (e.g., google.de)

Example value example
gl string Optional

Country code (e.g., us, de, fr)

Example value us
cr string Optional

Restrict results to countries (e.g., countryUS|countryDE)

Example value countryUS
hl string Optional

Interface language code

Example value en
lr string Optional

Restrict results to language (e.g., lang_en)

Example value lang_en
ludocid string Optional

Google Customer ID for places

Example value example
lsig string Optional

Knowledge graph map signature

Example value example
kgmid string Optional

Knowledge graph entity ID (e.g., /g/11b6gq7c8p)

Example value example
si string Optional

Encrypted cached search parameters

Example value example
ibp string Optional

Controls rendering layouts and expansions

Example value example
uds string Optional

Google-provided filter strings

Example value example
tbs string Optional

Advanced search filters (dates, patents, etc.)

Example value example
as_qdr string Optional

Simple time range filter (e.g., d, w, m, y)

Example value example
safe string Optional

Safe search mode (active, off)

Example value off
nfpr integer Optional

Exclude auto-corrected results (0 or 1)

Example value 10
filter integer Optional

Enable/disable similar/omitted filters (0 or 1)

Example value 1
tbm string Optional

Search type (isch, vid, nws, lcl, shop, pts)

Example value example
start integer Optional

Result offset for pagination (0-indexed)

Example value 0
page integer Optional

Page number for pagination (0-indexed)

Example value 1
amount integer Optional

Results per page (1-10, may return fewer)

Example value 10

Request Examples

<?php

$curl = curl_init();

curl_setopt_array($curl, [
    CURLOPT_URL => "https://scrappa.co/api/search?query=best+restaurants+in+Berlin&hl=en&safe=off",
    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

use Illuminate\Support\Facades\Http;

$response = Http::timeout(30)
    ->withHeaders(['x-api-key' => 'YOUR_API_KEY_HERE'])
    ->get('https://scrappa.co/api/search?query=best+restaurants+in+Berlin&hl=en&safe=off');

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

fetch('https://scrappa.co/api/search?query=best+restaurants+in+Berlin&hl=en&safe=off', 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));
const axios = require('axios');

const options = {
    method: 'GET',
    url: 'https://scrappa.co/api/search?query=best+restaurants+in+Berlin&hl=en&safe=off',
    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);
}
require 'net/http'
require 'uri'

uri = URI.parse("https://scrappa.co/api/search?query=best+restaurants+in+Berlin&hl=en&safe=off")
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
import http.client
import json

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

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

try:
    conn.request("GET", "/api/search?query=best+restaurants+in+Berlin&hl=en&safe=off", headers=headers)
    res = conn.getresponse()
    data = res.read()
    print(data.decode("utf-8"))
except Exception as e:
    print(f"Error: {e}")
finally:
    conn.close()
import requests

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

try:
    response = requests.get('https://scrappa.co/api/search?query=best+restaurants+in+Berlin&hl=en&safe=off', headers=headers)
    response.raise_for_status()
    print(response.text)
except requests.exceptions.RequestException as e:
    print(f"Error: {e}")
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/search?query=best+restaurants+in+Berlin&hl=en&safe=off")
        .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());
        }
    }
}
package main

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

func main() {
    client := &http.Client{}
    req, err := http.NewRequest("GET", "https://scrappa.co/api/search?query=best+restaurants+in+Berlin&hl=en&safe=off", 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))
}
#!/bin/bash

curl -X GET \
    -H "x-api-key: YOUR_API_KEY_HERE" \
    "https://scrappa.co/api/search?query=best+restaurants+in+Berlin&hl=en&safe=off"
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/search?query=best+restaurants+in+Berlin&hl=en&safe=off"));
            var content = await response.Content.ReadAsStringAsync();
            Console.WriteLine(content);
        }
        catch (Exception ex)
        {
            Console.WriteLine($"Error: {ex.Message}");
        }
    }
}
import axios from 'axios';

async function run(): Promise<void> {
    try {
        const response = await axios({
            method: 'GET',
            url: 'https://scrappa.co/api/search?query=best+restaurants+in+Berlin&hl=en&safe=off',
            headers: {
        'x-api-key': 'YOUR_API_KEY_HERE',
            },
        });

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

void run();
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/search?query=best+restaurants+in+Berlin&hl=en&safe=off")
        .header("x-api-key", "YOUR_API_KEY_HERE")
        .send()
        .await?;

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

    Ok(())
}

Response Schema

JSON Response
200 OK
{
    "search_information": {
        "query_displayed": "best restaurants in Berlin",
        "total_results": 428000000,
        "time_taken_displayed": "0.42 seconds"
    },
    "organic_results": [
        {
            "position": 1,
            "title": "The 38 Best Restaurants in Berlin",
            "link": "https://www.example.com/berlin/best-restaurants",
            "redirect_link": "https://www.google.com/url?q=https://www.example.com/berlin/best-restaurants",
            "displayed_link": "www.example.com > berlin > best-restaurants",
            "snippet": "A curated guide to Berlin restaurants, from modern German dining rooms to casual neighborhood favorites.",
            "source": "example.com",
            "sitelinks": {
                "inline": [
                    {
                        "title": "Fine Dining",
                        "link": "https://www.example.com/berlin/fine-dining"
                    },
                    {
                        "title": "Neighborhood Guides",
                        "link": "https://www.example.com/berlin/neighborhoods"
                    }
                ]
            }
        },
        {
            "position": 2,
            "title": "Berlin Restaurant Guide",
            "link": "https://guide.example.org/berlin-restaurants",
            "displayed_link": "guide.example.org > berlin-restaurants",
            "snippet": "Compare highly rated restaurants in Berlin by cuisine, district, price level, and opening hours.",
            "source": "guide.example.org"
        }
    ],
    "related_searches": [
        {
            "query": "best restaurants berlin mitte",
            "link": "https://www.google.com/search?q=best+restaurants+berlin+mitte"
        },
        {
            "query": "berlin restaurants with tasting menu",
            "link": "https://www.google.com/search?q=berlin+restaurants+with+tasting+menu"
        }
    ],
    "people_also_search_for": [
        "Berlin food guide",
        "restaurants in Kreuzberg",
        "Michelin restaurants Berlin"
    ],
    "related_questions": [
        {
            "question": "What food is Berlin best known for?",
            "text_blocks": [
                {
                    "type": "paragraph",
                    "snippet": "Berlin is known for currywurst, doner kebab, schnitzel, and a large international restaurant scene."
                }
            ]
        }
    ],
    "local_results": {
        "places": [
            {
                "position": 1,
                "title": "Example Berlin Bistro",
                "rating": 4.7,
                "reviews": 1842,
                "type": "Restaurant",
                "address": "Mitte, Berlin"
            }
        ]
    },
    "knowledge_graph": null,
    "inline_images": [
        {
            "title": "Berlin restaurant dining room",
            "thumbnail": "https://images.example.com/berlin-restaurant.jpg",
            "source": "example.com"
        }
    ],
    "total_results": 428000000,
    "engine_used": "google",
    "service_used": "google"
}

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.

Related reading

Try It Live

Test this endpoint in our interactive playground with real data.