# Google Search Results Scraper (`ha55an_dev/google-search-results-scraper`) Actor

Scrape Google Search results in bulk. Exports title, URL, cite, and snippet for every result.

- **URL**: https://apify.com/ha55an\_dev/google-search-results-scraper.md
- **Developed by:** [Hassan Amer](https://apify.com/ha55an_dev) (community)
- **Categories:** SEO tools, Automation, Developer tools
- **Stats:** 1 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 google result scrapeds

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

## Google Search Results Scraper

Google Search Results Scraper crawls Google Search Results Pages (SERPs) and extracts data from those web pages at scale. Specifically designed to bypass Google's removal of the `&num=100` parameter, this scraper seamlessly navigates through multiple pagination pages (up to 100+ pages) to merge and deliver thousands of results in a single, clean dataset.

With this SERP scraper API, you can:

- **Extract almost any Google organic data** from each search page.
- **Bypass the 10-result limit**: Intelligently harvests pages 2-100+ automatically.
- **Perform SEO monitoring**: Keep an eye on how your website or competitors perform on Google for certain queries over time.
- **Find prices and related entities**: Use the descriptive snippets for large-scale analysis.
- **Export data in multiple formats**: JSON, CSV, Excel, XML, or HTML.
- **Export via SDKs** (Python & Node.js), use API Endpoints, webhooks, or integrate directly with workflows.

### What data can I extract with Google Search Results Scraper?

🌱 Organic search results (Titles, URLs, Display URLs)\
📝 Descriptive snippets and emphasized keywords\
🥇 Absolute ranking positions (1 to 1000+)

### How can I use data scraped from Google Search?

Google SERP API has a lot to offer in terms of how extracted Google data can be applied:

- **SEO Monitoring**: Keep an eye on how your website performs on Google for certain queries over time.
- **Content Gap Analysis**: Analyze snippets and ranking domains for a given set of keywords.
- **Competitor Tracking**: Monitor your competition in organic results across different countries and languages.
- **Lead Generation**: Build a massive URL list for certain keywords to scrape web pages containing specific phrases.
- **Algorithm Analysis**: Analyze the Google algorithm and identify its main trends by tracking rank volatility.

### How to use Google Search Results Scraper

Google Search Results Scraper is designed with users in mind, even those who have never extracted data from the web before. Using it takes just a few steps:

1. Create a free Apify account using your email.
2. Open **Google Search Results Scraper**.
3. Add one or more search queries.
4. Click the “Start” button and wait for the data to be extracted.
5. Download your data in JSON, XML, CSV, Excel, or HTML.

#### How to adapt your queries

To get a larger number of results, simply increase the number of pages you want to scrape. For example, to get approximately 150 results, you need to set `maxPages` to `15`. The Actor will then navigate through 15 pages for your query, collecting ~10 results from each.

*Please note that your results will be determined by the country you select, as well as the proxy IP address location and browser fingerprint.*

### How much will scraping Google Search cost you?

This scraper uses a **pay-per-event (PPE)** pricing model. You are not charged for the Apify platform usage (compute units), but only a fixed price for specific events:

- **$1.00 per 1,000 results scraped** ($0.001 per result row).

On the Apify Free plan, you get $5 worth of credit, which lets you scrape over 5,000 Google Search results completely free!

### ⬇️ Input

The scraper lets you control what kind of Google Search data you can extract. You can specify the following settings:

- **Query phrases**: The exact search terms you want to run. You can add as many search terms as you want.
- **Country/search domain (`gl`)**: Geolocation parameter to target specific regional results.
- **Language of search (`hl`)**: The interface language for the search.
- **Max Pages**: Determine how deep into the pagination the scraper should go.
- **Recency filter (`tbs`)**: Filter results by the past hour, 24 hours, week, month, or year.

#### Example input

To get Google search data by search term, enter the search term and a number of Google pages to scrape:

```json
{
  "queries": [
    "chrome extensions for SEO 2026",
    "best proxy services"
  ],
  "maxPages": 10,
  "maxResults": 100,
  "gl": "us",
  "hl": "en",
  "tbs": "",
  "proxyCountryCode": "US"
}
```

### ⬆️ Output

The scraper stores its result in the default dataset associated with the scraper run, from which you can export it to various formats, such as JSON, XML, CSV, or Excel.

For each Google Search organic result, the dataset will contain a single record, which looks as follows:

```json
[
  {
    "query": "chrome extensions for SEO 2026",
    "rank": 1,
    "title": "15 Best SEO Chrome Extensions in 2026",
    "url": "https://example.com/best-seo-extensions",
    "cite": "example.com › blog › best-seo-extensions",
    "snippet": "Discover the top Chrome extensions for SEO professionals this year. Analyze backlinks, perform keyword research, and optimize on-page content...",
    "scrapedAt": "2026-08-09T12:00:00.000Z"
  },
  {
    "query": "chrome extensions for SEO 2026",
    "rank": 2,
    "title": "Top Chrome Extensions every SEO needs",
    "url": "https://test.org/top-seo-tools",
    "cite": "test.org › top-seo-tools",
    "snippet": "We tested 50+ SEO extensions to find the absolute best ones for technical SEO audits...",
    "scrapedAt": "2026-08-09T12:00:00.005Z"
  }
]
```

### Frequently asked questions

#### Can I use integrations with Google Search Results Scraper?

You can integrate Google Search Results Scraper with almost any cloud service or web app. Apify offers integrations with Make, Zapier, Slack, Airbyte, GitHub, Google Sheets, Google Drive, and plenty more.

Alternatively, you could use webhooks to carry out an action whenever an event occurs, such as getting a notification whenever the scraper successfully finishes a run.

#### Can I use Google Search Results Scraper with the Apify API?

The Apify API gives you programmatic access to the Apify platform. The API is organized around RESTful HTTP endpoints that enable you to manage, schedule, and run Apify Actors. The API also lets you access any datasets, monitor Actor performance, fetch results, create and update versions, and more.

To access the API using Node.js, use the `apify-client` NPM package. To access the API using Python, use the `apify-client` PyPI package.

#### Is it legal to scrape Google Search data?

Web scraping is legal if you are extracting publicly available data, which is most data on Google Search. However, you should respect boundaries such as personal data and intellectual property regulations. You should only scrape personal data if you have a legitimate reason to do so, and you should also factor in Google's Terms of Use.

#### 🛡️ Anti-Bot & Proxies

Because Google strictly blocks automated traffic, this Actor automatically utilizes **Apify Residential Proxies**. Datacenter proxies are highly discouraged as they will almost certainly result in blocked requests (429 errors or CAPTCHAs). The residential proxy rotation is handled completely automatically for you.

# Actor input Schema

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

One or more Google search queries to scrape. Each query runs independently.

## `maxPages` (type: `integer`):

Number of Google result pages to fetch per query (10 results per page). Max 100 pages = 1000 results.

## `maxResults` (type: `integer`):

Hard cap on results per query. The scraper stops when this many unique results are collected.

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

Google country/geo parameter. Controls which country's results to show. Examples: 'us', 'gb', 'de', 'au', 'pk'.

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

Google language parameter. Controls the language of search results. Examples: 'en', 'de', 'fr', 'ar'.

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

Filter results by date/recency. Leave empty for all-time results.

## `proxyCountryCode` (type: `string`):

ISO country code for residential proxy selection. Leave empty for automatic. Examples: 'US', 'GB', 'DE'.

## Actor input object example

```json
{
  "queries": [
    "apify scraper",
    "best chrome extensions 2026"
  ],
  "maxPages": 15,
  "maxResults": 150,
  "gl": "us",
  "hl": "en",
  "tbs": "",
  "proxyCountryCode": "US"
}
```

# Actor output Schema

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

Organic search results extracted from Google SERPs.

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("ha55an_dev/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 = {}

# Run the Actor and wait for it to finish
run = client.actor("ha55an_dev/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 '{}' |
apify call ha55an_dev/google-search-results-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,ha55an_dev/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/FHO2Z2EYl4LHt1NS0/builds/Kxuh9me6OqX2et4Rj/openapi.json
