# Google Search Scraper - ($0.35/1000 Pages) (`scrapesmith/google-search-scraper`) Actor

🔥$0.35/1000 pages🔥Scrape Google search results for just $0.35 per 1,000 searches — organic results, knowledge panels, related searches, dates, and sitelinks. Multi-query, multi-page. Charge per search, not per result. Fast, lightweight, and the most affordable SERP scraper on the platform.

- **URL**: https://apify.com/scrapesmith/google-search-scraper.md
- **Developed by:** [Scrape Smith](https://apify.com/scrapesmith) (community)
- **Categories:** Developer tools, SEO tools
- **Stats:** 15 total users, 14 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.35 / 1,000 results

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/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

## Google Search Results Scraper 🔍 — SERP Data at Scale

**Scrape Google search results for any query and get clean, structured data — organic results, knowledge panels, related searches, dates, and sitelinks.** Feed it one keyword or a thousand and get back analysis-ready search data you can drop straight into Excel, Google Sheets, BigQuery, or your own SEO and marketing tools.

Charged **per search page, not per result** — one search returning 10 organic results costs the same as one charge. The most cost-effective way to pull Google SERP data at scale.

***

### ⭐ Key features

- 🔎 **Organic results** — position, title, URL, description, and publication date for every result
- 🏢 **Knowledge panels** — entity info (company details, people, places) when Google shows one
- 🔗 **Sitelinks** — sub-page links Google shows under top results
- 🔍 **Related searches** — "People also search for" keywords
- 🌍 **20+ countries** — localized results via country and language codes
- 📄 **Multi-page** — scrape up to 10 pages per query (100 results)
- 📦 **Multi-query** — batch hundreds of keywords in a single run
- ⏰ **Time filters** — past hour, day, week, month, year, or custom date ranges
- 📊 **Merged export** — optionally combine all pages into one dataset item for easy spreadsheet imports
- 💰 **Per-search billing** — pay per search page, not per individual result

***

### 🎯 Who it is for

| Audience | Use case |
|---|---|
| 📈 SEO professionals | Track keyword rankings, monitor SERP features, audit competitors |
| 🏢 Marketing teams | Research competitors, find content gaps, track brand mentions |
| 🔍 Lead generation | Harvest URLs from search results for outreach campaigns |
| 📊 Data analysts | Build keyword datasets, trend analysis, market research |
| 🤖 Developers | Feed SERP data into dashboards, alerts, and monitoring tools |
| 📰 Journalists & researchers | Verify claims, track news coverage, gather sources |

***

### 📊 Output

Each search page is **one dataset item** containing all results and metadata for that page:

```json
{
  "page_number": 1,
  "search_term": "best laptops 2025",
  "results": [
    {
      "position": 1,
      "url": "https://www.laptopmag.com/best-picks/best-laptops",
      "title": "Best Laptops 2025: Top Picks Based on Testing and Reviews",
      "description": "Our expert-tested picks for the best laptops you can buy...",
      "date": "Jun 15, 2025",
      "sitelinks": [
        {"title": "Gaming Laptops", "url": "https://..."},
        {"title": "Budget Laptops", "url": "https://..."}
      ]
    },
    {
      "position": 2,
      "url": "https://www.rtings.com/laptop/reviews/best/by-usage/home-office",
      "title": "The 5 Best Laptops for Home & Office Use - RTINGS.com",
      "description": "Updated weekly. We buy and test every laptop ourselves..."
    }
  ],
  "knowledge_panel": {
    "name": "Laptop",
    "description": {"text": "A laptop is a portable personal computer...", "site": "Wikipedia", "url": "https://en.wikipedia.org/wiki/Laptop"},
    "image": {"url": "https://encrypted-tbn0.gstatic.com/..."},
    "info": [
      {"title": "Invented", "labels": ["1981"]},
      {"title": "Inventor", "labels": ["Adam Osborne"]}
    ]
  },
  "related_keywords": {
    "spelling_suggestion": null,
    "keywords": [
      {"position": 1, "keyword": "best laptops for students"},
      {"position": 2, "keyword": "best budget laptop 2025"},
      {"position": 3, "keyword": "best laptop brands"}
    ]
  },
  "next_page": 2,
  "next_start": 10
}
```

#### Per-result fields

| Field | Description |
|---|---|
| `position` | Ranking position on the page (1–10) |
| `url` | Result URL |
| `title` | Result title / headline |
| `description` | Snippet text shown by Google |
| `date` | Publication date (when available) |
| `sitelinks` | Sub-page links (on brand/authority results) |

#### Page-level fields

| Field | Description |
|---|---|
| `page_number` | Page number (1, 2, 3... or "all" for merged) |
| `search_term` | The query that produced these results |
| `knowledge_panel` | Entity card (company info, person details, etc.) |
| `related_keywords` | "People also search for" suggestions |
| `next_page` / `next_start` | Pagination info for the next page |

***

### 📥 Input

```json
{
  "queries": ["best laptops 2025", "python tutorial", "apple"],
  "maxPagesPerQuery": 3,
  "countryCode": "us",
  "searchLanguage": "en",
  "timeFilter": "",
  "includeMerged": true
}
```

| Parameter | Type | Default | Description |
|---|---|---|---|
| **queries** | string\[] | required | List of search queries (supports Google operators: `"exact phrase"`, `-exclude`, `site:example.com`) |
| maxPagesPerQuery | integer | 1 | Pages per query (1–10, each page ≈ 10 results) |
| countryCode | string | us | Country code for localized results (us, gb, de, fr, jp, br, in...) |
| searchLanguage | string | en | Language code (en, de, fr, ja, pt, es...) |
| timeFilter | string | any time | Time filter: past hour / day / week / month / year, or custom range like `cdr:1,cd_min:01/01/2024,cd_max:06/30/2024` |
| includeMerged | boolean | false | Add a final "all" item combining all pages per query into one |

***

### 🚀 Popular use cases

- **Keyword rank tracking** — monitor where your pages rank for target keywords across regions
- **Competitor monitoring** — track who ranks above you and how their snippets change
- **Content research** — find what Google surfaces for a topic, including dates and related queries
- **Lead generation** — harvest URLs from search results for outreach
- **Brand monitoring** — check how your brand appears in search, including knowledge panel data
- **Market research** — compare search landscapes across countries and languages
- **News monitoring** — use time filters to track recent coverage of any topic

***

### 🌍 Supported countries

Works with any Google country code — us, gb, de, fr, es, it, nl, ca, au, jp, in, br, mx, kr, se, pl, and dozens more. Each returns localized results in the language you specify.

***

### 💰 Pricing

Charged **per search page** — not per individual result. One search page contains up to 10 organic results plus knowledge panel and related searches. This means scraping 10 results costs the same as scraping 1.

***

### 🔌 Automation & integrations

Connect to **Make, Zapier, n8n, Slack, Discord, Google Sheets, Airtable, BigQuery, Snowflake, Postgres**, or any REST/webhook endpoint. Use the Apify scheduler to track keywords daily, weekly, or on any cadence.

***

### ❓ FAQ

**How many results per page?** Google returns up to 10 organic results per page. Use `maxPagesPerQuery` to go deeper (up to 100 results per query).

**Can I search in different languages?** Yes — set `countryCode` and `searchLanguage` to get localized results in any supported language.

**Does it return ads?** No — this scraper focuses on organic results, knowledge panels, and related searches. No ads, no People Also Ask, no AI overviews.

**Can I filter by date?** Yes — use `timeFilter` for preset ranges (past hour/day/week/month/year) or a custom date range.

**What's the merged output?** When `includeMerged` is true, the scraper adds one extra dataset item per query that combines all pages into a single results array — perfect for spreadsheet exports.

**Can I use Google operators?** Yes — `"exact phrase"`, `-exclude`, `site:example.com`, `filetype:pdf` all work.

**What export formats are available?** JSON, CSV, Excel, XML, JSONL, and HTML — plus direct API access.

***

### 📈 Start scraping Google Search now

Give it your keywords and get structured SERP data in seconds — rankings, snippets, knowledge panels, dates, and related searches, ready for SEO, marketing, lead gen, and research workflows.

# Actor input Schema

## `queries` (type: `array`):

List of Google search queries to scrape results for.

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

How many pages of results to scrape per query (10 results per page). Default 1.

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

Google country code for localized results (e.g. us, gb, de, fr, jp, br, in).

## `searchLanguage` (type: `string`):

Language code for results (e.g. en, de, fr, ja, pt, es).

## `timeFilter` (type: `string`):

Filter results by time. Use presets or a custom date range like cdr:1,cd\_min:01/01/2024,cd\_max:06/30/2024

## `includeMerged` (type: `boolean`):

Add a final dataset item combining all pages into one (page\_number='all'). Useful for single-file exports.

## Actor input object example

```json
{
  "queries": [
    "web scraping python"
  ],
  "maxPagesPerQuery": 1,
  "countryCode": "us",
  "searchLanguage": "en",
  "timeFilter": "",
  "includeMerged": false
}
```

# 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": [
        "web scraping python",
        "best restaurants new york"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapesmith/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 = { "queries": [
        "web scraping python",
        "best restaurants new york",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("scrapesmith/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 '{
  "queries": [
    "web scraping python",
    "best restaurants new york"
  ]
}' |
apify call scrapesmith/google-search-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/gy8aLxbVhY8LjQIkS/builds/gchXY3BbFQp7MTI4I/openapi.json
