# Google Search Scraper — Organic SERP Results (`hipersoft/google-search-scraper`) Actor

Scrape Google Search results (organic listings) for any query: title, URL, displayed URL, snippet and position. Multi-query, per-country/language, pagination. Uses Google SERP proxy — reliable, no captcha, no setup.

- **URL**: https://apify.com/hipersoft/google-search-scraper.md
- **Developed by:** [hiper soft](https://apify.com/hipersoft) (community)
- **Categories:** SEO tools, Developer tools
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.0005 / result scraped

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?

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 Scraper — Organic SERP Results with Title, URL, Snippet & Position

Scrape **Google** search results for any query and export **title, URL, displayed URL, snippet and rank position** as structured data. Target results by country and language, then download clean **JSON, CSV, Excel or XML**. No account and no API key — fast and reliable. Built for SEO teams, rank trackers and researchers monitoring the SERP at scale.

![Google Search Scraper input — queries, results per query and country/language in the Apify Console](https://api.apify.com/v2/key-value-stores/SUfvnaFLd9z9eBCtV/records/google-search-scraper-input.png?v=2)

### What does Google Search Scraper do?

Google Search Scraper is a crawler that extracts organic search results from Google. Give it one or more queries and it returns the blue-link listings — title, URL, displayed URL, snippet and position — for each query, geotargeted by country and language. Results export to a dataset you can download or pull through the API.

### What data can you scrape from Google Search?

| Data point | Description |
| --- | --- |
| Query | The search query the result belongs to |
| Position | Organic rank of the result |
| Title | Result title |
| URL | Destination link |
| Displayed URL | The URL as shown in the SERP |
| Snippet | Result description text |
| Locale | Country and language codes used |
| Timestamp | When the result was scraped |

### What you get

![Google Search Scraper output example — organic results with title, snippet and position as structured JSON](https://api.apify.com/v2/key-value-stores/SUfvnaFLd9z9eBCtV/records/google-search-scraper-output.png?v=5)

Each row is one organic result:

```json
{
  "query": "apify web scraping",
  "position": 1,
  "title": "Apify: Full-stack web scraping and data extraction platform",
  "url": "https://apify.com/",
  "displayedUrl": "https://apify.com/",
  "snippet": "Cloud platform for web scraping, browser automation, and data extraction...",
  "countryCode": "us",
  "languageCode": "en",
  "scrapedAt": "2026-07-23T12:00:00.000Z"
}
```

#### Output schema

| Field | Type | Description |
| --- | --- | --- |
| `query` | string | The search query this result belongs to. |
| `position` | integer | Organic rank of the result within the query. |
| `title` | string | Title of the search result. |
| `url` | string (URL) | Destination URL of the result. |
| `displayedUrl` | string (URL) | The URL as shown in the search results. |
| `snippet` | string | Description snippet shown under the title. |
| `countryCode` | string | Two-letter country code used for the search. |
| `languageCode` | string | Two-letter interface language code used. |
| `scrapedAt` | string (ISO date) | Timestamp when the result was collected. |

### Use cases

- Track keyword rankings and SERP positions over time.
- Build competitor and share-of-voice reports from organic listings.
- Harvest titles and snippets for content and metadata analysis.
- Run `site:` and other advanced queries to audit indexed pages.
- Monitor branded and product terms across countries and languages.
- Assemble SERP datasets for research and dashboards.

### How to scrape Google Search data

1. Add Google Search Scraper to your Apify account and open the input.
2. Enter one or more `queries`, each scraped separately.
3. Set `resultsPerQuery` (1–100) and choose `countryCode` and `languageCode`.
4. Click **Run** and watch results stream into the dataset.
5. Export the results as JSON, CSV, Excel or XML, or pull them through the Apify API.

### Input

```json
{
  "queries": ["apify web scraping", "best coffee shops austin"],
  "resultsPerQuery": 20,
  "countryCode": "us",
  "languageCode": "en"
}
```

| Field | Description |
| --- | --- |
| `queries` | One or more Google search queries; each is scraped separately (required). |
| `resultsPerQuery` | Organic results to collect per query, 1–100 (in pages of 10). Default `10`. |
| `countryCode` | Two-letter country code for geolocated results (gl). Default `us`. |
| `languageCode` | Two-letter interface language (hl). Default `en`. |

### Need more Google data?

- [Google News Scraper](https://apify.com/hipersoft/google-news-scraper)
- [Google Trends Scraper](https://apify.com/hipersoft/google-trends-scraper)
- [Google Autocomplete Scraper](https://apify.com/hipersoft/google-autocomplete-scraper)
- [Google Ads Transparency Scraper](https://apify.com/hipersoft/google-ads-transparency-scraper)
- [Google Maps Scraper](https://apify.com/hipersoft/google-maps-scraper)

### FAQ

**Do I need a Google account or API key?**
No. There's no setup and no login — just add your queries and run.

**How many results can I get per query?**
Up to 100 organic results per query, and you can pass many queries in one run.

**Can I target a specific country or language?**
Yes. Set `countryCode` (gl) and `languageCode` (hl) to geolocate and localize the results.

**What export formats are supported?**
JSON, CSV, Excel and XML, plus programmatic access via the Apify API.

**How fresh is the data?**
Every run reads live search results, so positions and snippets reflect the current SERP.

**Can Google Search Scraper connect to my other tools?**
The Google Search Scraper can be connected with almost any cloud service or web app thanks to [integrations on the Apify platform](https://apify.com/integrations). It works with [Make](https://apify.com/integrations/make), [Zapier](https://apify.com/integrations/zapier), [Slack](https://docs.apify.com/platform/integrations/slack), [Airbyte](https://docs.apify.com/platform/integrations/airbyte), [GitHub](https://docs.apify.com/platform/integrations/github), [Google Drive](https://docs.apify.com/platform/integrations/drive) and [many more](https://apify.com/integrations), plus the [Apify API](https://docs.apify.com/api/v2), JavaScript/Python clients and MCP. Or use [webhooks](https://docs.apify.com/platform/integrations/webhooks) to trigger an action whenever a run finishes.

**Is scraping Google Search legal?**
The Actor parses only publicly visible organic listings. You are responsible for complying with Google's terms and applicable laws.

### Related Actors

- [Google News Scraper](https://apify.com/hipersoft/google-news-scraper)
- [Google Trends Scraper](https://apify.com/hipersoft/google-trends-scraper)
- [Google Autocomplete Scraper](https://apify.com/hipersoft/google-autocomplete-scraper)
- [Google Maps Scraper](https://apify.com/hipersoft/google-maps-scraper)

### Notes

Original clean-room implementation. Parses only publicly visible organic listings; you are responsible for compliance with Google's terms. Not affiliated with Google.

# Actor input Schema

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

One or more Google search queries. Each is scraped separately.

## `resultsPerQuery` (type: `integer`):

Number of organic results to collect per query (paginates in pages of 10).

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

Two-letter country code for geolocated results (Google gl parameter), e.g. us, gb, de.

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

Two-letter interface language (Google hl parameter), e.g. en, es, de.

## Actor input object example

```json
{
  "queries": [
    "site:example.com pricing"
  ],
  "resultsPerQuery": 10,
  "countryCode": "us",
  "languageCode": "en"
}
```

# Actor output Schema

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

The scraped results as dataset items.

# 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": [
        "apify web scraping",
        "best coffee shops austin"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("hipersoft/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": [
        "apify web scraping",
        "best coffee shops austin",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("hipersoft/google-search-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": [
    "apify web scraping",
    "best coffee shops austin"
  ]
}' |
apify call hipersoft/google-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,hipersoft/google-search-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/963u5AQmglYylRHhp/builds/qJVIpCXU3leDN8YH2/openapi.json
