Skip to main content
GET
/
v1
/
google
/
search
Google web search
curl --request GET \
  --url https://scrapebadger.com/v1/google/search \
  --header 'x-api-key: <api-key>'
import requests

url = "https://scrapebadger.com/v1/google/search"

headers = {"x-api-key": "<api-key>"}

response = requests.get(url, headers=headers)

print(response.text)
const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};

fetch('https://scrapebadger.com/v1/google/search', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));
<?php

$curl = curl_init();

curl_setopt_array($curl, [
CURLOPT_URL => "https://scrapebadger.com/v1/google/search",
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: <api-key>"
],
]);

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

curl_close($curl);

if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
package main

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

func main() {

url := "https://scrapebadger.com/v1/google/search"

req, _ := http.NewRequest("GET", url, nil)

req.Header.Add("x-api-key", "<api-key>")

res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()
body, _ := io.ReadAll(res.Body)

fmt.Println(string(body))

}
HttpResponse<String> response = Unirest.get("https://scrapebadger.com/v1/google/search")
.header("x-api-key", "<api-key>")
.asString();
require 'uri'
require 'net/http'

url = URI("https://scrapebadger.com/v1/google/search")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'

response = http.request(request)
puts response.read_body
{
  "search_information": {
    "query_displayed": "<string>",
    "total_results": 123,
    "time_taken": 123,
    "organic_results_state": "<string>",
    "url": "<string>"
  },
  "pagination": {
    "current": 1,
    "next": "<string>",
    "total_results": 123,
    "total_pages": 123,
    "page_no": {}
  },
  "ai_overview": {
    "text_blocks": [
      {
        "snippet": "<string>",
        "snippet_links": [
          {
            "link": "<string>",
            "link_text": "<string>"
          }
        ],
        "list_items": [
          {
            "title": "<string>",
            "snippet": "<string>",
            "snippet_links": [
              {
                "link": "<string>",
                "link_text": "<string>"
              }
            ]
          }
        ],
        "video": {
          "link": "<string>",
          "channel": "<string>",
          "source": "<string>",
          "date": "<string>",
          "thumbnail": "<string>",
          "duration": "<string>"
        },
        "video_links": [
          {
            "link": "<string>",
            "channel": "<string>",
            "source": "<string>",
            "date": "<string>",
            "thumbnail": "<string>",
            "duration": "<string>"
          }
        ]
      }
    ],
    "references": [
      {
        "index": 123,
        "title": "<string>",
        "link": "<string>",
        "snippet": "<string>",
        "source": "<string>",
        "logo": "<string>"
      }
    ],
    "page_token": "<string>",
    "deferred": false
  },
  "organic_results": [
    {
      "position": 123,
      "title": "<string>",
      "link": "<string>",
      "displayed_link": "<string>",
      "snippet": "<string>",
      "highlighted_keywords": [
        "<string>"
      ],
      "source": "<string>",
      "favicon": "<string>",
      "sitelinks": [
        {
          "title": "<string>",
          "link": "<string>",
          "snippet": "<string>"
        }
      ],
      "inline_sitelinks": [
        {
          "title": "<string>",
          "date": "<string>"
        }
      ],
      "date": "<string>",
      "rank": 123,
      "page_rank": 123
    }
  ],
  "ads": [
    {
      "title": "<string>",
      "link": "<string>",
      "position": 123,
      "displayed_link": "<string>",
      "description": "<string>",
      "extensions": [
        "<string>"
      ]
    }
  ],
  "knowledge_graph": {
    "title": "<string>",
    "type": "<string>",
    "description": "<string>",
    "image": "<string>",
    "source": "<string>",
    "attributes": {}
  },
  "local_results": [
    {
      "title": "<string>",
      "place_id": "<string>",
      "rating": 123,
      "reviews": 123,
      "address": "<string>",
      "phone": "<string>",
      "type": "<string>",
      "gps_coordinates": {
        "lat": 123,
        "lng": 123
      }
    }
  ],
  "related_questions": [
    {
      "question": "<string>",
      "rank": 123,
      "title": "<string>",
      "link": "<string>",
      "snippet": "<string>",
      "displayed_link": "<string>",
      "source_logo": "<string>"
    }
  ],
  "related_searches": [
    {
      "query": "<string>",
      "link": "<string>"
    }
  ],
  "news_results": [
    {
      "title": "<string>",
      "link": "<string>",
      "source": "<string>",
      "date": "<string>",
      "thumbnail": "<string>"
    }
  ],
  "inline_videos": [
    {
      "title": "<string>",
      "source": "<string>",
      "thumbnail": "<string>",
      "platform": "<string>",
      "duration": "<string>",
      "date": "<string>",
      "position": 123
    }
  ],
  "shopping_results": [
    {
      "title": "<string>",
      "price": "<string>",
      "source": "<string>",
      "link": "<string>",
      "thumbnail": "<string>",
      "rating": 123,
      "reviews": 123
    }
  ]
}
{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}
The num parameter is deprecated. Google no longer honours num to widen a page — a single request returns roughly 10 organic results per page, regardless of the value you pass. To collect more results, paginate with the start offset (start=0, 10, 20, …) and merge the pages client-side.

Authorizations

x-api-key
string
header
required

Query Parameters

q
string
required

Search query (supports Google operators like site:, inurl:, intitle:)

gl
string
default:us

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

hl
string
default:en

Language code (e.g. en, es, fr)

num
integer
default:10

Results per page

Required range: 1 <= x <= 100
start
integer
default:0

Pagination offset (0, 10, 20...)

Required range: x >= 0
domain
string
default:google.com

Google domain (e.g. google.com, google.co.uk)

device
string
default:desktop

desktop or mobile

location
string | null

City-level geo-targeting (e.g. 'New York, USA')

lr
string | null

Language restrict (e.g. lang_en)

tbs
string | null

Time-based search filter (e.g. qdr:d for past 24h)

safe
string
default:off

Safe search (active/off)

uule
string | null

Encoded location parameter (UULE)

filter
integer | null

Include omitted results (0=show all, 1=filter)

Required range: 0 <= x <= 1
nfpr
integer
default:0

Disable auto-correction (1=exact match)

Required range: 0 <= x <= 1
cr
string | null

Country restrict (e.g. countryUS|countryGB)

ludocid
string | null

Google My Business CID (place ID)

lsig
string | null

Knowledge Graph map view ID

kgmid
string | null

Knowledge Graph entity ID

si
string | null

Cached search parameters

ibp
string | null

Layout control (e.g. gwp;0,7)

uds
string | null

Google filter string

ai_overview
boolean
default:false

When true, chase Google's deferred AI Overview page_token with a follow-up fetch and merge the result into ai_overview. Adds ~1s and 1 credit when the SERP actually defers the overview.

mode
enum<string>
default:full

Response mode. full (default): complete SERP with all blocks (organic, ads, knowledge graph, local pack, AI overview, news, related questions, etc). fast: lite endpoint via gbv=1 that returns ONLY organic results + related searches in ~0.6-1s cold (vs 1.5-2s full). Use when you only need organic results and can skip rich features.

Available options:
full,
fast

Response

Successful Response

Response for GET /api/v1/search.

search_information
SearchInformation · object
required

Metadata about the search query.

pagination
Pagination · object
required

Pagination metadata.

ai_overview
AiOverview · object | null

Google AI Overview (AI-generated summary).

Google increasingly serves the AI Overview as a deferred block — the initial SERP HTML contains only a placeholder plus a page_token that the client has to POST back to retrieve the actual content. When that happens, the SERP parser populates page_token and leaves text_blocks/references empty. Callers of /v1/google/search can pass ai_overview=true to have the scraper chase the token automatically and merge the result back into this object.

organic_results
OrganicResult · object[]
ads
AdResult · object[]
knowledge_graph
KnowledgeGraph · object | null

Knowledge Graph panel.

local_results
LocalResult · object[]
news_results
NewsResult · object[]
inline_videos
InlineVideo · object[]
shopping_results
ShoppingResult · object[]