# Google Search Results Scraper – SERP API, AI Overview & AI Mode (`rt-solutions/google-search-results-scraper`) Actor

Scrape Google search results (SERP) for any keyword, country, language or city: organic results with real URLs, ads, AI Overview, People Also Ask, related searches, local pack and top stories, plus Google AI Mode answers. Licensed data, no blocks, $1.50 per 1,000 pages.

- **URL**: https://apify.com/rt-solutions/google-search-results-scraper.md
- **Developed by:** [RT SOLUTIONS](https://apify.com/rt-solutions) (community)
- **Categories:** SEO tools, AI, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.20 / 1,000 results pages

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Google Search Results Scraper – SERP API, AI Overview & AI Mode

Scrape **Google search results (SERP)** for any keyword, in 213 countries, any language or city, desktop or mobile: organic results with **real destination URLs**, ads, **AI Overview**, People also ask, related searches, local pack, top stories and featured snippet — plus optional **Google AI Mode** answers with their sources.

**$1.50 per 1,000 result pages** (3× cheaper than the official Google Search Scraper) and **$4 per 1,000 AI Mode answers** (50× cheaper). Licensed data from a SERP data provider: no CAPTCHA, no blocked runs, no proxies to manage.

### What you get (one item per results page)

| Field | Content |
|---|---|
| `searchQuery` | term, page, country, language, location, device |
| `organicResults` | position, title, **real URL** (Google's `goto` redirects resolved), displayed URL, description, site links, rating, price, date |
| `paidResults` | ads: position, title, URL, description |
| `aiOverview` | AI Overview text (markdown) + cited sources |
| `peopleAlsoAsk` | questions shown by Google |
| `relatedQueries`, `localResults`, `topStories`, `featuredSnippet` | the other SERP blocks |
| `resultsTotal`, `url` | Google's result count, link to the same search |

Optional: `type: "aiMode"` items with the full **Google AI Mode answer** and its sources.
Tick **One row per organic result** for an Excel-friendly table.

### How to use

1. Enter keywords, one per line (Google operators work: `site:`, `"exact"`, `intitle:`…), or paste Google search links (`gl=` / `hl=` are used).
2. Pick country, language, and optionally a city (`"New York,New York,United States"`), mobile, date range (`d7`, `m3`, `y1`).
3. Choose pages per search (1–10, 10 results each).
4. Run — export to JSON, CSV, Excel, Google Sheets, or use the API, Make, Zapier, n8n.

```json
{
  "queries": "best crm for small business\nproject management software",
  "countryCode": "us",
  "maxPagesPerQuery": 2,
  "includeAiOverview": true,
  "includeAiMode": true
}
```

### Pricing

| Event | Free plan | Bronze | Silver | Gold+ |
|---|---|---|---|---|
| Results page (10 results) | $0.0015 | $0.0014 | $0.0013 | $0.0012 |
| Search with advanced operator (`site:`, `intitle:`…) — added per page | $0.0045 | $0.0045 | $0.0045 | $0.0045 |
| Full AI Overview (only when one is found) | $0.002 | $0.002 | $0.002 | $0.002 |
| Google AI Mode answer | $0.004 | $0.004 | $0.004 | $0.004 |

No start fee. Searches with no results are never charged. Set a maximum cost per run and the Actor stops there.

**Apify free plan:** one free trial run (5 searches, 1 page each). Then use any paid Apify plan, or add your own DataForSEO login in the "Apify free plan" section.

### Speed and limits

- Results arrive in 15 s – 2 min (standard queue), many searches in parallel: 40 searches in about 2 minutes.
- Google hides most result links behind `google.com/goto` redirects; the Actor returns the real destination URL. In the rare case one cannot be resolved, `urlIsGoogleRedirect: true` is set and `domain` still shows the site.
- AI Overviews shown instantly are always included; "Full AI Overview" also loads the ones Google shows with a delay.
- The answers under "People also ask" are now AI answers loaded on click by Google and are not available — the questions are.

### Use cases

SEO rank tracking, competitor monitoring, AI Overview / AI Mode visibility (GEO), keyword research, lead lists by `site:` search, market research and LLM grounding.

### Related scrapers

- [AI Brand Visibility Tracker](https://apify.com/rt-solutions/ai-brand-visibility-tracker) — is your brand recommended by ChatGPT, Gemini, Perplexity?
- [Keyword Search Volume](https://apify.com/rt-solutions/keyword-search-volume)
- [Semrush Website Traffic](https://apify.com/rt-solutions/semrush-website-traffic-scraper)
- [Google Trends Scraper](https://apify.com/rt-solutions/google-trends-scraper)

### Use with AI agents (MCP)

You can call this Actor from Claude, ChatGPT, Cursor or any other MCP client through the Apify MCP server (https://mcp.apify.com), using the Actor ID `rt-solutions/google-search-results-scraper`. This lets an agent ground its answers in live Google results, for example: *"Search Google in the US for 'best crm for small business', return the top 10 organic results and the AI Overview sources."*

### FAQ

**How do I scrape Google search results without the Google API?** Enter your keywords (or paste Google search links), pick country, language and pages per search, and run. The data comes from a licensed SERP data provider, so there are no CAPTCHAs or proxies to manage.

**How much does it cost to scrape 10,000 Google result pages?** $15 at the free plan rate ($0.0015 per page), down to $12 on Gold. Searches with an advanced operator (`site:`, `intitle:`…) add $0.0045 per page; Full AI Overviews and AI Mode answers are charged separately.

**Can I track rankings over time?** Yes. Schedule the Actor daily or weekly on Apify with the same keywords and compare positions between runs.

**Why are some fields empty?** Blocks such as `aiOverview`, `localResults`, `topStories` or `featuredSnippet` are filled only when Google shows them for that search. Answers under "People also ask" are not available — only the questions.

**Can I export SERP data to CSV, Excel or Google Sheets?** Yes. Tick **One row per organic result** for a flat table, then export to CSV, Excel, JSON or Google Sheets.

**Is it legal to scrape Google search results?** It returns publicly visible Google results through a licensed data provider. You are responsible for how you use the data.

**Need another field?** Open an issue — we answer in writing within 24 h.

# Actor input Schema

## `queries` (type: `string`):

One per line. Plain keywords (any language, Google operators like site: or "quotes" work) or Google search links (google.com/search?q=…; their gl= and hl= are used).

## `maxPagesPerQuery` (type: `integer`):

Each page = 10 organic results. Charged per page actually returned.

## `countryCode` (type: `string`):

Two-letter Google country code (us, gb, fr, de, in, br, ae…). 213 countries.

## `languageCode` (type: `string`):

Google interface language (en, fr, de, es, ar, ja, zh-CN…). Empty = main language of the country.

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

Local results for a precise place, Google format: "New York,New York,United States", "Paris,Ile-de-France,France", "London,England,United Kingdom".

## `mobileResults` (type: `boolean`):

Get the results a phone user sees instead of desktop.

## `site` (type: `string`):

Restrict results to one domain (adds site:example.com).

## `forceExactMatch` (type: `boolean`):

Put each search between quotes.

## `quickDateRange` (type: `string`):

Only recent pages: h (hour), d (day), w (week), m (month), y (year), optionally followed by a number — e.g. d7 = last 7 days, m6 = last 6 months.

## `includeAiOverview` (type: `boolean`):

Also load AI Overviews that Google shows with a delay (full text + sources). Charged only when an AI Overview is found. Without this option, AI Overviews shown instantly are still included free.

## `includeAiMode` (type: `boolean`):

One extra AI Mode answer per search (full answer text + cited sources). Charged separately per answer.

## `flattenResults` (type: `boolean`):

Easier for Excel/CSV: one row per organic result instead of one item per results page.

## `dataForSeoLogin` (type: `string`):

Only needed on the Apify free plan after your free trial run. Paid Apify plans need no key.

## `dataForSeoPassword` (type: `string`):

From app.dataforseo.com → API Access.

## Actor input object example

```json
{
  "queries": "best crm for small business\nhttps://www.google.com/search?q=running+shoes&gl=gb",
  "maxPagesPerQuery": 1,
  "countryCode": "us",
  "mobileResults": false,
  "forceExactMatch": false,
  "includeAiOverview": false,
  "includeAiMode": false,
  "flattenResults": false
}
```

# Actor output Schema

## `results` (type: `string`):

One item per Google results page (or per organic result if flattened), plus AI Mode answers.

## `overview` (type: `string`):

Main fields.

# 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 = {
    "queries": `best crm for small business
https://www.google.com/search?q=running+shoes&gl=gb`
};

// Run the Actor and wait for it to finish
const run = await client.actor("rt-solutions/google-search-results-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 = { "queries": """best crm for small business
https://www.google.com/search?q=running+shoes&gl=gb""" }

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

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

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

```

## CLI example

```bash
echo '{
  "queries": "best crm for small business\\nhttps://www.google.com/search?q=running+shoes&gl=gb"
}' |
apify call rt-solutions/google-search-results-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,rt-solutions/google-search-results-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/pNruMAclTTnp4wZAz/builds/6ddLiv9cJzdcflrN8/openapi.json
