# Google Search Scraper — SERP, AI Overview, Ads (`scrape.badger/google-search-scraper`) Actor

Scrape Google Search (SERP) results at scale: organic, paid ads, AI Overview, knowledge graph, People Also Ask, local pack, news, related searches. Supports desktop / mobile, 200+ domains, location & language targeting. No CAPTCHAs — handled by ScrapeBadger's residential proxy + browser farm.

- **URL**: https://apify.com/scrape.badger/google-search-scraper.md
- **Developed by:** [ScrapeBadger](https://apify.com/scrape.badger) (community)
- **Categories:** SEO tools, Automation, Developer tools
- **Stats:** 166 total users, 35 monthly users, 60.9% runs succeeded, 5 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 serp page (full mode)s

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

### What does Google Search Scraper do?

Scrape Google Search (SERP) results at scale — organic listings, paid ads, AI Overview, knowledge graph, People Also Ask, local pack, news, related searches, inline videos — from [Google](https://www.google.com). No CAPTCHAs, no TLS fingerprint tuning, no browser management.

### Why use Google Search Scraper?

- **Every SERP block.** Organic, ads, AI Overview, knowledge graph, PAA, local pack, news, related, videos — one call returns them all.
- **200+ Google domains.** `google.com`, `google.co.uk`, `google.de`, `google.co.jp`, etc. + `gl` / `hl` / `device` targeting.
- **Fast and full modes.** `fast` uses Google's lite endpoint (≈40% faster, organic-only). `full` returns the rich SERP.
- **AI Overview chase.** Optional follow-up fetch for Google's deferred AI Overview page\_token.
- **No anti-bot work.** ScrapeBadger's residential proxy + browser-farm fallback handles SearchGuard, reCAPTCHA, consent walls.

### What data can Google Search Scraper extract?

| Field | Type | Description |
|---|---|---|
| organic\_results | array | Per-result `title`, `link`, `snippet`, `position`, rich metadata |
| ai\_overview | object | Google's AI-generated answer (optional chase) |
| knowledge\_graph | object | Entity card: title, description, website, social links, images |
| people\_also\_ask | array | PAA questions + snippets |
| related\_searches | array | "People also search for" suggestions |
| ads | array | Paid ad tiles (sponsored links) |
| news\_results | array | Top news section |
| local\_results | array | Local pack (Google Maps inline results) |
| inline\_videos | array | Video tiles inside the SERP |
| pagination | object | Next-page tokens for programmatic pagination |

### How to scrape Google Search

1. Click the **Try for free** button above.
2. Enter your search query in the **Search query** input (supports operators like `site:`, `intitle:`, `"quoted"`, `-exclude`).
3. Optional: set country (`gl`), language (`hl`), domain, device, city-level `location`, time filter (`tbs`), safe search.
4. Pick `mode`: `full` for every SERP block (2 credits/page) or `fast` for organic-only (1 credit/page).
5. Set `max_pages` to paginate — the actor stops early when Google reports no more pages.
6. Click **Start** — results stream into the dataset tab, one record per SERP page.

### How much will it cost?

**$0.002 per SERP page fetched (`mode=full`), $0.001 per page (`mode=fast`).** One dataset record per SERP page. `max_pages: 3` → 3 records → $0.006 full / $0.003 fast. Apify compute units are extra; a typical 3-page run uses less than one CU.

#### Competitor benchmark

| Actor | Author | Price | Notes |
|---|---|---|---|
| apify/google-search-scraper | Apify | ~$3.50 / 1k results | Official Apify actor |
| scrapestorm/google-search-api-scraper | ScrapeStorm | ~$2.00 / 1k results | Organic only, no AI Overview |
| compass/google-search-results | Compass | ~$2.50 / 1k results | Per-result pricing |
| **scrape-badger/google-search-scraper** | **ScrapeBadger** | **$2.00 / 1k full · $1.00 / 1k fast** | **All SERP blocks + AI Overview** |

### Input

Configure the run in the **Input** tab above, or pass a JSON object matching the fields below when calling the Actor via the Apify API.

| Field | Required | Description |
|---|---|---|
| q | ✅ | Search query — supports Google operators. |
| mode | — | `full` (default) or `fast`. |
| gl | — | Country code (default `us`). |
| hl | — | Language code (default `en`). |
| domain | — | Google domain (default `google.com`). |
| device | — | `desktop` or `mobile`. |
| location | — | City-level geo (e.g. `New York, NY`). |
| num | — | Results per page (1-100, default 10). |
| start | — | Page offset (0, 10, 20 …). |
| max\_pages | — | How many pages to fetch (1-10, default 1). |
| safe | — | `off` / `medium` / `high`. |
| tbs | — | Time filter (`qdr:d`, `qdr:w`, `qdr:m`, `qdr:y`). |
| lr | — | Language restrict (e.g. `lang_en`). |
| nfpr | — | Disable auto-correction. |
| ai\_overview | — | Chase deferred AI Overview (forces `mode=full`). |

### Output

Every successful run streams records into the run's dataset. Download as JSON, CSV, XML, Excel, or HTML from the **Dataset** tab; consume programmatically via the Apify API or webhooks.

Example record:

```json
{
  "search_parameters": {
    "q": "best coffee shops near me",
    "gl": "us"
  },
  "organic_results": [
    {
      "position": 1,
      "title": "Top 10 coffee shops in NYC",
      "link": "https://\u2026",
      "snippet": "\u2026"
    },
    {
      "position": 2,
      "title": "Local coffee near you",
      "link": "https://\u2026",
      "snippet": "\u2026"
    }
  ],
  "ai_overview": {
    "text_blocks": [
      {
        "type": "paragraph",
        "snippet": "\u2026"
      }
    ],
    "references": []
  },
  "pagination": {
    "next_page_token": "\u2026"
  }
}
```

### Tips / Advanced options

- **Use `mode=fast` when you only need organic results.** Half the price, 40% faster. Only upgrade to `full` when you need AI Overview, knowledge graph, local pack, or news.
- **Batch with the scheduler.** Apify's scheduler lets you run one query at a time on a cron. For bulk, start multiple runs in parallel.
- **Filter by time.** `tbs: qdr:d` for past 24h — perfect for brand monitoring.
- **Combine with `google-autocomplete-scraper`.** Expand seeds into long-tail keywords first, then SERP each one.

### FAQ, Disclaimers, Support

#### Does this actor bypass Google CAPTCHAs?

Yes. ScrapeBadger's residential proxy + browser-farm fallback handles SearchGuard, reCAPTCHA, and consent walls transparently. You'll never see a CAPTCHA in the output.

#### Can I target a specific city?

Yes — set `location` to a city string like `New York, NY`. For more precision use a Google UULE-encoded value in `uule` (SDK-level).

#### What's the max `num` per page?

Google enforces 1-100. The actor clamps into that range.

#### Why do I get fewer results than `max_pages` suggests?

The actor stops early when Google reports no next page, saving credits. This is intentional.

#### Can I scrape Google Jobs / Maps / News via this actor?

No — those have dedicated actors: `google-jobs-scraper`, `google-maps-scraper`, `google-news-scraper`. This one is pure SERP.

#### Disclaimer

This Actor scrapes public Google data only. You're responsible for compliance with Google's Terms of Service and any applicable data-protection laws (GDPR, CCPA, etc.) in your jurisdiction. ScrapeBadger does not store the scraped results — they are delivered directly to your Apify dataset.

#### Support

Something not working? Open a ticket in the **Issues** tab above — we triage within one business day. Full API reference: [docs.scrapebadger.com](https://docs.scrapebadger.com).

#### Related Actors

- [`google-maps-scraper`](https://apify.com/scrape-badger/google-maps-scraper) — Places, reviews, photos
- [`google-news-scraper`](https://apify.com/scrape-badger/google-news-scraper) — Search + topic + trending
- [`google-autocomplete-scraper`](https://apify.com/scrape-badger/google-autocomplete-scraper) — SEO seed expansion

#### Powered by

[ScrapeBadger](https://scrapebadger.com) — Google-optimised residential proxy pool + browser-farm fallback, 99.7% uptime, unmetered bandwidth. No CAPTCHAs reach you.

# Actor input Schema

## `q` (type: `string`):

Google search terms. Supports operators: <b>site:</b>, <b>intitle:</b>, <b>inurl:</b>, <b>"quoted phrase"</b>, <b>-exclude</b>. Example: <b>site:reddit.com best vpn 2026</b>

## `mode` (type: `string`):

<b>full</b> (default, 2 credits): every SERP block — organic, ads, knowledge graph, People Also Ask, AI Overview, local pack, news, related searches, videos. <b>fast</b> (1 credit, ~40% faster): lite endpoint returning only organic + related searches.

## `gl` (type: `string`):

ISO 3166-1 alpha-2 country code (lowercase). Controls which country's Google results are returned. Example: <b>us</b>, <b>gb</b>, <b>de</b>.

## `hl` (type: `string`):

ISO 639-1 language code. Example: <b>en</b>, <b>es</b>, <b>de</b>.

## `domain` (type: `string`):

Google domain to hit. Example: <b>google.com</b>, <b>google.co.uk</b>, <b>google.de</b>.

## `device` (type: `string`):

Browser profile: <b>desktop</b> (default) or <b>mobile</b>.

## `location` (type: `string`):

City-level geo-targeting. Example: <b>New York, NY</b>. Optional.

## `num` (type: `integer`):

Number of organic results to request per page (1-100).

## `start` (type: `integer`):

Page offset: 0 = page 1, 10 = page 2, 20 = page 3, etc.

## `max_pages` (type: `integer`):

How many pages to fetch. Each page is a separate API call (costs N credits).

## `safe` (type: `string`):

Content filter level.

## `tbs` (type: `string`):

Time range: <b>qdr:h</b> (past hour), <b>qdr:d</b> (24h), <b>qdr:w</b> (week), <b>qdr:m</b> (month), <b>qdr:y</b> (year). Optional.

## `lr` (type: `string`):

Restrict results to a specific language. Example: <b>lang\_en</b>. Optional.

## `nfpr` (type: `boolean`):

When true, Google will not auto-correct the query ("Did you mean…?").

## `ai_overview` (type: `boolean`):

When true, chase Google's deferred AI Overview page\_token with a follow-up fetch. Adds ~1s when present; no-op otherwise. Forces mode=full.

## Actor input object example

```json
{
  "q": "best coffee shops near me",
  "mode": "full",
  "gl": "us",
  "hl": "en",
  "domain": "google.com",
  "device": "desktop",
  "num": 10,
  "start": 0,
  "max_pages": 1,
  "safe": "off",
  "nfpr": false,
  "ai_overview": false
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "q": "best coffee shops near me"
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrape.badger/google-search-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "q": "best coffee shops near me" }

# Run the Actor and wait for it to finish
run = client.actor("scrape.badger/google-search-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "q": "best coffee shops near me"
}' |
apify call scrape.badger/google-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=scrape.badger/google-search-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/gccnZ65LlUOihPfvT/builds/TLAc2RiPAv1SUxiCb/openapi.json
