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

Scrape Google Search Engine Results Pages (SERPs). Select the country or language and extract organic and paid results, AI Mode, AI overviews, ads, queries, People Also Ask, prices, reviews, like a Google SERP API. Export data, run the scraper via API, schedule runs, or integrate with other tools.

- **URL**: https://apify.com/apify/google-search-scraper.md
- **Developed by:** [Apify](https://apify.com/apify) (Apify)
- **Categories:** SEO tools, AI, Lead generation
- **Stats:** 138,494 total users, 11,484 monthly users, 100.0% runs succeeded, 1,316 bookmarks
- **User rating**: 4.78 out of 5 stars

## Pricing

from $1.80 / 1,000 scraped search result 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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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 is Google Search Results Scraper?

Google Search Results Scraper crawls Google Search Results Pages (SERPs) and extracts data from those web pages. With this SERP scraper API, you can:

- Extract almost any **Google data** from each Google page
- Data includes **organic and paid results**, as well as suggested results
- Scrape **Google AI Mode**, **Perplexity AI search**, **ChatGPT search**, **Copilot search**, and **Gemini search** to improve AEO and GEO results
- **Compare AI answers across platforms** (Google, Perplexity, ChatGPT, Copilot, Gemini) to spot narrative differences and search engine biases
- Also extract **review ratings, review counts, and product ads**
- Find **related queries and People Also Ask** answers
- Find **prices** for products or services
- Use **business lead enrichment** to further enrich your data with contact details (full name, work email address, phone number, job title, LinkedIn profile)
- Export data in multiple formats: **JSON, CSV, Excel, or HTML**
- Export via SDKs (Python & Node.js), use **API Endpoints**, **webhooks**, or integrate with workflows

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

<table>
<tbody>
<tr>
<td>🌱 Organic results</td>
<td>🛍 Paid results</td>
</tr>
<tr>
<td>🤖 AI Mode + AI Overviews</td>
<td>📢 Product ads</td>
</tr>
<tr>
<td>❓ Related queries</td>
<td>🙋‍♀️ People Also Ask</td>
</tr>
<tr>
<td>🎯 Business leads enrichment</td>
<td>⭐️ Review rating and review count</td>
</tr>
<tr>
<td>🪴 Suggested results</td>
<td>🔍 Additional custom attributes</td>
</tr>
</tbody>
</table>

**🤖 Add-on: Google AI Mode**

Scrapes results from Google AI Mode - Google's dedicated AI-powered search interface on google.com, distinct from the standard AI Overviews snippets that appear in regular search results. AI Mode provides deeper, conversational answers with cited sources. Essential for Answer Engine Optimization (AEO) and Generative Engine Optimization (GEO) - track how your brand or content appears when users switch to Google's AI search experience.

**🧠 Add-on: Perplexity AI search**

Enables you to fetch AI-generated answers using the Perplexity Sonar model. This feature is designed for **cross-platform analysis**, allowing you to directly compare other AI search model results against Perplexity's perspective to identify narrative differences and coverage gaps.

**💬 Add-on: ChatGPT search**

Enables you to fetch AI-generated answers using OpenAI's search model. This feature is designed for **cross-platform analysis**, allowing you to directly compare other AI search model results against ChatGPT's perspective to identify narrative differences, coverage gaps, and search engine biases.

The output includes query fan-out under `queryFanOut`, showing additional search queries the model generated to answer your question.

**⏩ Add-on: Copilot search**

Enables you to fetch AI-generated answers using Microsoft Copilot. This feature is designed for **cross-platform analysis**, allowing you to directly compare other AI search model results against Copilot's perspective to identify narrative differences, coverage gaps, and search engine biases.

You can choose from four modes to control how Copilot structures its response: **chat** (conversational, quick answers), **reasoning** (deep analytical, multi-step logic), **smart** (balanced speed and reasoning), or **study** (detailed explanations for educational and research prompts).

**⏩ Add-on: Gemini search**

Fetches AI-generated answers from Google Gemini (gemini.google.com) - Google's standalone AI assistant, separate from Google Search. Use this for **cross-platform comparison** to identify narrative differences and coverage gaps across AI platforms.

**📢 Add-on: Paid results (ads) extraction**

Determines whether ads are present on the page and, if so, shows what they are. This is useful for anybody planning their own campaigns, or who want to know what competitors are showing.

**👥 Add-on: Business leads enrichment**

This setting allows you to add contact information for companies and the employees working there, including **full name, work email address, phone number, job title, and LinkedIn profile**.

Under the **'Organic results' tab**, you can now find multiple business leads associated with each individual search result.

⚠️ **Warning!**

Leads enrichment is applied to all domains discovered in your search, including news articles, directories, and comparison sites, not just the primary company websites.

Large company chains are filtered out so as not to clutter up your results. [This list](https://api.apify.com/v2/key-value-stores/6IlJKTI235OLr3OVR/records/ignored_domains) shows you which sites are never included.

**✅ Add-on: Email verification**

When `verifyLeadsEnrichmentEmails` is enabled, each lead's email address is verified and an `emailVerification` object is added to the lead output. Requires business leads enrichment to be active.

**Charged (decisive results):**

- `ok` – Valid, deliverable email address
- `invalid` – Invalid or non-existent email address
- `disposable` – Disposable or temporary email address

**Not charged:**

- `catch_all` – The domain accepts all addresses; individual deliverability cannot be confirmed
- `unknown` – Verification result could not be determined
- `error` – Verification encountered a technical error

```json
{
    "email": "james.hill@apify.com",
    "quality": "good",
    "result": "ok",
    "subResult": "accepted_email",
    "free": false,
    "role": false,
    "error": ""
}
````

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

- **Use it for SEO** and keep an eye on how your website performs on Google for certain queries over time
- **Monitor how frequently a search term has been used** on Google, and how it compares with total search volume
- **Analyze display ads** for a given set of keywords
- **Monitor your competition** in both organic and paid results
- **Build a URL list for certain keywords** for scraping web pages containing specific phrases
- **Analyze the Google algorithm** and identify its main trends
- Better **lead generation** with the business leads enrichment add-on
- **Monitor AI overview summaries** to see how a site performs
- **Improved AEO, GEO, and brand visibility tracking** with AI search add-ons (Google AI Mode, Perplexity, ChatGPT, Copilot, Gemini)

### 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](https://console.apify.com/actors/nFJndFXA5zjCTuudP/) a free Apify account using your email
2. Open [Google Search Results Scraper](https://apify.com/apify/google-search-scraper)
3. Add one or more \[relevant data]
4. Click the “Start” button and wait for the data to be extracted
5. Download your data in JSON, XML, CSV, Excel, or HTML

Check out Apify's video tutorial for more details:
https://www.youtube.com/watch?v=wjLskDlPfvo

**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 100 results, you need to set `maxPagesPerQuery` to `10`. The Actor will then navigate through 10 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 your browsing history, exact 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, but only a fixed price for specific events, check the [pricing tab](https://apify.com/apify/google-search-scraper/pricing) for details.

On the Free plan, you get $5 worth of credit, which lets you scrape over a 1,000 Google Search results, without use of add-ons. If you upgrade to any of Apify's paid plans, you get a further discount, which means you could scrape thousands of results in just seconds.

### ⬇️ Input

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

- Query phrases or raw Google search URLs
- Country/search domain
- Language of search
- Exact geolocation
- Number of results per page
- Mobile or desktop version results

For a complete description of all settings, see the [Input tab](https://apify.com/apify/google-search-scraper/input-schema).

#### How to scrape Google Search results by URL or keyword

There are two ways you can scrape Google search pages: either by URL or by search term.

1. Scraping **by URL** will get you data from Google Search results page. You'll get Google data from a copy-pasted Google URL with any Google country domain (e.g. `google.co.uk`). You can add as many URLs as you want.
2. Scraping **by search term** will also get you data from Google Search results page. You can also add as many search terms as you want.

#### Example input for scraping Google Search search term

To get Google search data by search term, enter the search term and a number of Google pages to scrape. Using search terms, you can:

- Scrape by multiple keywords in parallel by adding more search terms and separating them by a new line
- Say how many results you want to see per each Google page (10-100)
- Determine the country of search (domain), language, and UULE location parameter

<a href="https://console.apify.com/actors/cHedUknx10dsaavpI/">
<img src="https://github.com/apify-projects/actor-readme-images/blob/master/google-search-results-scraper-input.png?raw=true" alt="Google Search Results Scraper input" style="width:70%;">
</a>

Here's its equivalent in JSON:

```json
{
    "countryCode": "us",
    "customDataFunction": "async ({ input, $, request, response, html }) => {\\\\n  return {\\\\n    pageTitle: $('title').text(),\\\\n  };\\\\n};",
    "includeUnfilteredResults": false,
    "languageCode": "en",
    "maxPagesPerQuery": 2,
    "mobileResults": false,
    "queries": "hotels in Seattle \\n hotels in New York",
    "saveHtml": false,
    "saveHtmlToKeyValueStore": false,
    "maxConcurrency": 10
}
```

#### Scrape Google Search results by URL

To input URLs instead, simply replace `queries` with full URLs:

```json
"queries": "<https://www.google.com/search?q=hotels+in+Seattle> \\n <https://www.google.com/search?q=hotels+in+New+York>",
```

### ⬆️ Output

The scraper stores its result in the default [dataset](https://apify.com/docs/storage#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 results page, the dataset will contain a single record, which looks as follows. Note that the output preview will be organized in table and tabs for viewing convenience:

<a href="https://console.apify.com/actors/cHedUknx10dsaavpI/">
<img src="https://github.com/apify-projects/actor-readme-images/blob/master/google-search-results-scraper-output.png?raw=true" alt="Google Search Results Scraper output" style="width:70%;">
</a>

Here’s the equivalent of the same scraped data but in JSON. Bear in mind that some fields have example values:

```json
[
    {
        "searchQuery": {
            "term": "Hotels in Seattle",
            "url": "http://www.google.com/search?q=Hotels+in+Seattle&num=5",
            "device": "DESKTOP",
            "page": 1,
            "type": "SEARCH",
            "domain": "google.com",
            "countryCode": "US",
            "languageCode": null,
            "locationUule": null
        },
        "resultsTotal": null,
        "relatedQueries": [
            {
                "title": "Airbnb",
                "url": "https://www.google.com/search?num=5&sca_esv=49b6c55cfef21711&hl=en&q=Airbnb&stick=H4sIAAAAAAAAAOMwVOLWz9U3MDQozC2uKvjFyLCBheEVCy8XsugrFh4uLhDfOL3QxMgAwQVKF1m8YuHi4gBx06tKcuByecZV6clVcK5RdnlVeckrFm4uThDXsqDSsAguWVlRlWxYBZc0MU02T3rFwsnFDuJlW1QtYmVzzCxKyku6xSbJsHtRx08W1_2GGy2NN24Se7yd_Zf739q0GSsXcYgFpOYX5KQqJOYU5ysUpyYWJWcopOUXreBgBABeO2g95gAAAA&sa=X&ved=2ahUKEwiEk-Li5qWPAxXzrokEHTUEOVcQs9oBKAB6BAglEAo"
            },
            {
                "title": "Expedia Group",
                "url": "https://www.google.com/search?num=5&sca_esv=49b6c55cfef21711&hl=en&q=Expedia+Group&stick=H4sIAAAAAAAAAOMwVOLSz9U3ME4vNDEy-MXIsIGF4RULLxc3SNDQoDC3uKrgFQsPF5IiBBcoXWTxioWLiwPETa8qyYHL5RlXpSdXwblG2eVV5SWvWLi5OEFcy4JKwyK4ZGVFVbJhFVzSxDTZPOkVCycXO4iXbVG1iJXXtaIgNSUzUcG9KL-04BabJMPuRR0_WVz3G260NN64SezxdvZf7n9r02asXMQhFpCaX5CTqpCYU5yvUJyaWJScoZCWX7SCgxEARw2QBewAAAA&sa=X&ved=2ahUKEwiEk-Li5qWPAxXzrokEHTUEOVcQs9oBKAB6BAglEA8"
            },
            {
                "title": "Vrbo",
                "url": "https://www.google.com/search?num=5&sca_esv=49b6c55cfef21711&hl=en&q=Vrbo&stick=H4sIAAAAAAAAAOMwVOLSz9U3MDYozC2y-MXIsIGF4RULLxc3SNAQKFhcVfCKhYcLoii90MTIAMEF63nFwsXFAeKmV5XkwOXyjKvSk6vgXKPs8qryklcs3FycIK5lQaVhEVyysqIq2bAKLmlimmye9IqFk4sdxMu2qFrEyhJWlJR_i02SYfeijp8srvsNN1oab9wk9ng7-y_3v7VpM1Yu4hALSM0vyElVSMwpzlcoTk0sSs5QSMsvWsHBCACk6JiV4wAAAA&sa=X&ved=2ahUKEwiEk-Li5qWPAxXzrokEHTUEOVcQs9oBKAB6BAglEBQ"
            },
            {
                "title": "Southwest Airlines",
                "url": "https://www.google.com/search?num=5&sca_esv=49b6c55cfef21711&hl=en&q=Southwest+Airlines&stick=H4sIAAAAAAAAAOMwVOLQz9U3SK8qyfnFyLCBheEVCy8XN0jI0KAwt7iq4BULDxcXiG-cXmhiZIDgAqWLLF6xcHHBDYDL5RlXpSdXwblG2eVV5SWvWLi5OEFcy4JKwyK4ZGVFVbJhFVzSxDTZPOkVCycXO4iXbVG1iFUoOL-0JKM8tbhEwTGzKCczL7X4Fpskw-5FHT9ZXPcbbrQ03rhJ7PF29l_uf2vTZqxcxCEWkJpfkJOqkJhTnK9QnJpYlJyhkJZftIKDEQCjBkmc7wAAAA&sa=X&ved=2ahUKEwiEk-Li5qWPAxXzrokEHTUEOVcQs9oBKAB6BAglEBk"
            },
            {
                "title": "trivago",
                "url": "https://www.google.com/search?num=5&sca_esv=49b6c55cfef21711&hl=en&q=trivago&stick=H4sIAAAAAAAAAOMwVOLSz9U3yDOuSk-u-sXIsIGF4RULLxc3SNDQoDC3uKrgFQsPF1iRcXqhiZEBgguULrJ4xcLFxQHipleV5MDlIObBuUbZ5VXlJa9YuLk4QVzLgkrDIrhkZUVVsmEVXNLENNk86RULJxc7iJdtUbWIlb2kKLMsMT3_Fpskw-5FHT9ZXPcbbrQ03rhJ7PF29l_uf2vTZqxcxCEWkJpfkJOqkJhTnK9QnJpYlJyhkJZftIKDEQArWf7U5gAAAA&sa=X&ved=2ahUKEwiEk-Li5qWPAxXzrokEHTUEOVcQs9oBKAB6BAglEB4"
            },
            {
                "title": "KAYAK",
                "url": "https://www.google.com/search?num=5&sca_esv=49b6c55cfef21711&hl=en&q=KAYAK&stick=H4sIAAAAAAAAAOMwVOLSz9U3MMouryov-cXIsIGF4RULLxc3SNDQoDC3uKrgFQsPF1iRcXqhiZEBgguULrJ4xcLFxQHipleV5MDl8oyr0pOr4FyI8a9YuLk4QVzLgkrDIrhkZUVVsmEVXNLENNk86RULJxc7iJdtUbWIldXbMdLR-xabJMPuRR0_WVz3G260NN64SezxdvZf7n9r02asXMQhFpCaX5CTqpCYU5yvUJyaWJScoZCWX7SCgxEA3hWrWOQAAAA&sa=X&ved=2ahUKEwiEk-Li5qWPAxXzrokEHTUEOVcQs9oBKAB6BAglECM"
            },
            {
                "title": "Hotels in seattle downtown",
                "url": "https://www.google.com/search?num=5&sca_esv=49b6c55cfef21711&hl=en&q=Hotels+in+seattle+downtown&sa=X&ved=2ahUKEwiEk-Li5qWPAxXzrokEHTUEOVcQ1QJ6BAg7EAE"
            },
            {
                "title": "Best hotels in seattle",
                "url": "https://www.google.com/search?num=5&sca_esv=49b6c55cfef21711&hl=en&q=Best+hotels+in+seattle&sa=X&ved=2ahUKEwiEk-Li5qWPAxXzrokEHTUEOVcQ1QJ6BAg6EAE"
            },
            {
                "title": "Hotels in Seattle Washington near Airport",
                "url": "https://www.google.com/search?num=5&sca_esv=49b6c55cfef21711&hl=en&q=Hotels+in+Seattle+Washington+near+Airport&sa=X&ved=2ahUKEwiEk-Li5qWPAxXzrokEHTUEOVcQ1QJ6BAg9EAE"
            },
            {
                "title": "Cheap hotels in seattle",
                "url": "https://www.google.com/search?num=5&sca_esv=49b6c55cfef21711&hl=en&q=Cheap+hotels+in+seattle&sa=X&ved=2ahUKEwiEk-Li5qWPAxXzrokEHTUEOVcQ1QJ6BAg8EAE"
            },
            {
                "title": "Hotels in seattle luxury",
                "url": "https://www.google.com/search?num=5&sca_esv=49b6c55cfef21711&hl=en&q=Hotels+in+seattle+luxury&sa=X&ved=2ahUKEwiEk-Li5qWPAxXzrokEHTUEOVcQ1QJ6BAg_EAE"
            },
            {
                "title": "hotels in seattle, washington near cruise port",
                "url": "https://www.google.com/search?num=5&sca_esv=49b6c55cfef21711&hl=en&q=hotels+in+seattle,+washington+near+cruise+port&sa=X&ved=2ahUKEwiEk-Li5qWPAxXzrokEHTUEOVcQ1QJ6BAgrEAE"
            },
            {
                "title": "Boutique hotels Seattle",
                "url": "https://www.google.com/search?num=5&sca_esv=49b6c55cfef21711&hl=en&q=Boutique+hotels+Seattle&sa=X&ved=2ahUKEwiEk-Li5qWPAxXzrokEHTUEOVcQ1QJ6BAgoEAE"
            },
            {
                "title": "Best hotels in Seattle Downtown",
                "url": "https://www.google.com/search?num=5&sca_esv=49b6c55cfef21711&hl=en&q=Best+hotels+in+Seattle+Downtown&sa=X&ved=2ahUKEwiEk-Li5qWPAxXzrokEHTUEOVcQ1QJ6BAgnEAE"
            },
            {
                "title": "Hotels in seattle downtown",
                "url": "https://www.google.com/search?num=5&sca_esv=49b6c55cfef21711&hl=en&q=Hotels+in+seattle+downtown&sa=X&ved=2ahUKEwiEk-Li5qWPAxXzrokEHTUEOVcQ1QJ6BAg7EAE"
            },
            {
                "title": "Best hotels in seattle",
                "url": "https://www.google.com/search?num=5&sca_esv=49b6c55cfef21711&hl=en&q=Best+hotels+in+seattle&sa=X&ved=2ahUKEwiEk-Li5qWPAxXzrokEHTUEOVcQ1QJ6BAg6EAE"
            },
            {
                "title": "Hotels in Seattle Washington near Airport",
                "url": "https://www.google.com/search?num=5&sca_esv=49b6c55cfef21711&hl=en&q=Hotels+in+Seattle+Washington+near+Airport&sa=X&ved=2ahUKEwiEk-Li5qWPAxXzrokEHTUEOVcQ1QJ6BAg9EAE"
            },
            {
                "title": "Cheap hotels in seattle",
                "url": "https://www.google.com/search?num=5&sca_esv=49b6c55cfef21711&hl=en&q=Cheap+hotels+in+seattle&sa=X&ved=2ahUKEwiEk-Li5qWPAxXzrokEHTUEOVcQ1QJ6BAg8EAE"
            },
            {
                "title": "Hotels in seattle luxury",
                "url": "https://www.google.com/search?num=5&sca_esv=49b6c55cfef21711&hl=en&q=Hotels+in+seattle+luxury&sa=X&ved=2ahUKEwiEk-Li5qWPAxXzrokEHTUEOVcQ1QJ6BAg_EAE"
            },
            {
                "title": "hotels in seattle, washington near cruise port",
                "url": "https://www.google.com/search?num=5&sca_esv=49b6c55cfef21711&hl=en&q=hotels+in+seattle,+washington+near+cruise+port&sa=X&ved=2ahUKEwiEk-Li5qWPAxXzrokEHTUEOVcQ1QJ6BAgrEAE"
            },
            {
                "title": "Boutique hotels Seattle",
                "url": "https://www.google.com/search?num=5&sca_esv=49b6c55cfef21711&hl=en&q=Boutique+hotels+Seattle&sa=X&ved=2ahUKEwiEk-Li5qWPAxXzrokEHTUEOVcQ1QJ6BAgoEAE"
            },
            {
                "title": "Best hotels in Seattle Downtown",
                "url": "https://www.google.com/search?num=5&sca_esv=49b6c55cfef21711&hl=en&q=Best+hotels+in+Seattle+Downtown&sa=X&ved=2ahUKEwiEk-Li5qWPAxXzrokEHTUEOVcQ1QJ6BAgnEAE"
            }
        ],
        "paidResults": [],
        "paidProducts": [],
        "organicResults": [
            {
                "title": "Downtown Seattle Hotel | Luxury Waterfront Hotel Rooms",
                "url": "https://www.edgewaterhotel.com/",
                "displayedUrl": "https://www.edgewaterhotel.com",
                "description": "The Edgewater Hotel is laden with a rich musical past and surrounded by breathtaking views of the Olympic Mountains, Elliott Bay and the sparkling city.",
                "emphasizedKeywords": ["The Edgewater Hotel"],
                "siteLinks": [],
                "productInfo": {},
                "type": "organic",
                "position": 1
            },
            {
                "title": "Top 10 Hotels in Seattle, WA",
                "url": "https://www.hotels.com/de1481165/hotels-seattle-washington/",
                "displayedUrl": "https://www.hotels.com › ... › Hotels in Washington",
                "description": "Flexible booking options on most hotels. Compare 2963 hotels in Seattle using 47993 real guest reviews. Pay what you see with upfront pricing on all hotels.",
                "emphasizedKeywords": ["Compare 2963 hotels in Seattle"],
                "siteLinks": [],
                "productInfo": {},
                "type": "organic",
                "position": 2
            },
            {
                "title": "Hotels in Seattle, WA",
                "url": "https://www.marriott.com/en-us/destinations/united-states/washington/seattle.mi",
                "displayedUrl": "https://www.marriott.com › united-states › washington",
                "description": "Marriott Bonvoy's hotels in Seattle provide the ideal starting point for your exploration, ensuring you are always close to the best the city has to offer.",
                "emphasizedKeywords": ["Marriott Bonvoy's hotels in Seattle"],
                "siteLinks": [],
                "productInfo": {},
                "type": "organic",
                "position": 3
            }
        ],
        "peopleAlsoAsk": [],
        "aiModeResult": {
            "engine": "AI Mode",
            "provider": "Google",
            "text": "You can find many hotel options in Seattle, from high-end downtown hotels to budget-friendly hostels. Some options, like Hampton Inn & Suites, offer free amenities, while others focus on prime locations near major attractions. The best area to stay often depends on your budget and what you want to see. Downtown Seattle Known for being walkable and close to attractions, Downtown Seattle is home to a wide range of hotels. The Paramount Hotel: A 3-star hotel with a prime location for exploring downtown attractions like Pike Place Market and the Space Needle. Reviewers mention its modern rooms and friendly staff.Hyatt Regency Seattle: A 4-star hotel located downtown, receiving high marks for being an exceptional place to stay.Mayflower Park Hotel: Another downtown 4-star option, with travelers highlighting its excellent breakfast and beautiful dining room.Green Tortoise Hostel Seattle: For budget-conscious travelers, this highly-rated hostel is located directly across from Pike Place Market and offers free breakfast. Hampton Inn & Suites Seattle-Downtown4.1(1.6K)3-star hotel700 5th Ave NThe Paramount Hotel4.5(2.4K)3-star hotel724 Pine StHyatt Regency Seattle4.6(3.8K)4-star hotel808 Howell StMayflower Park Hotel4.4(1.4K)3-star hotel405 Olive WyGreen Tortoise Hostel Seattle4.5(2.3K)2-star hotel105B Pike StSee moreBelltown and South Lake Union These trendy neighborhoods offer a mix of boutique hotels and serviced apartments. The Ace Hotel (Belltown): A popular mid-range option.Hotel Ändra (Belltown): A cool boutique hotel.CitizenM South Lake Union: This location of a popular hotel chain is a great option for modern stays. Hôtel Ändra Seattle - MGallery Collection4.5(1.3K) · $$$$4-star hotel2000 4th AvecitizenM Seattle South Lake Union hotel4.3(1K)4-star hotel201 Westlake Ave NSeattle Center and Queen Anne This area is convenient for accessing attractions like the Space Needle, MoPOP, and Climate Pledge Arena. Hampton Inn & Suites Seattle-Downtown: Located in the Seattle Center area, this 3-star hotel offers free hot breakfast and is within walking distance of many tourist spots.Mediterranean Inn (near Seattle Center): A mid-range hotel that is consistently well-reviewed for its location and comfort. Northgate Located north of the downtown core, this area is a good option if you want to be near the University of Washington or other northern attractions. Hampton Inn & Suites by Hilton Seattle/Northgate: A 2-star hotel offering an indoor pool and free breakfast. Reviewers praise the friendly staff and find it a good value, especially if you plan to use the light rail to get downtown. Which Seattle hotels have the best views?Any hotels in Seattle known for unique architecture?Elaborate on the price ranges for hotels in different Seattle neighborhoods",
            "sources": [
                {
                    "title": "Where To Stay In Seattle: A Complete Guide For First Timers",
                    "url": "https://wheatlesswanderlust.com/where-to-stay-in-seattle/",
                    "description": "Here are some cool places to stay in Belltown that caught our eye. * The Ace Hotel: A Great Mid-Range Option (Where We've Stayed) * Hotel Ändra: A Cool Boutique...",
                    "imageUrl": "data:image/png;base64,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"
                },
                {
                    "title": "Top 10 Hotels in Seattle, WA from $93 - Fully Refundable Options - Expedia",
                    "url": "https://www.expedia.com/Seattle-Hotels.d178307.Travel-Guide-Hotels",
                    "description": "Compare 4,566 hotels, room rates, hotel reviews and availability. Most hotels are fully refundable. * The Belltown Inn. The Belltown Inn. The Belltown Inn. The ...",
                    "imageUrl": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAD90lEQVRogc2av28cRRTHP+/t+mgogoA6sZyN7QBOfEiEGAokfkkYRBRBhXAQLTSYBEj4B1AICZKBhiCBJbqAUsRUFEggxSDl5JjICXc55ISCAhLSpFnfzlDsnuNz7rx7tz/uvtIWdzs783kzb9/MvB1hk8zVR8VaOwK8ArwIjAPbAN1cNmcZ4BawApwDziDyp7Pzgt1YSDb+CGrle4FDwFvALsAphjVWAfAH8Bkw73iV280b6wYEtfIDwEfADDBUNGFC+cDXwDHHq9yAyICo5z8F3mTTqAygLPAlMOt4ldtNv56JrkGHh5DxDeB1AAlqZQ84C+zuI1QvugS8rITRZrTPML1oHDjoAi/QRbQRBcnb0SwYE1vKAaZdunAdEbhcV36vCsbGl+9FpSEYG7aMDZskHbXbJZykYqUKv1SUD06VqP8luY2CCDx4n2X2UIPXphtx7WxTEsywqnB+SXnvZIna9fzgAayFv/8VTs27VK8pujVdzO2oxOJF5cgnYc87BSwoHIV/bgrVVYkN7FviqMKvyyF87Xox8E1ZYK0RX87tdEMVlq4o7xwvUV0VVKERpAdTBc3QBTsaAKE/PjcV8PxUNo01O+X8xeyGsqMBxsDeMcPkeHxATiSF35aVHxcdrM1uLokdAZtBvFeFxSXlyIkS1WvZvku5v5aqsLicDzzkbEAS+LQjnJsBSeADA7t2WPZNmJ6XJrkYkBh+u+Xjd332jJoki7f2baVDbVNhN/CHfR7bY7ApAl2mBnQL//iECXMPadpM9/iGinqA79VtWtpNX0X/4CEDA/oJDykNUOkvPKQwQBWurArvn+wfPKQZAYFLNaXWR3hI6UKdlgFFwUMOE1mR8JDSgCGXu9xnbEdx8BCzH4Bw49F2X2BhatIwd8xf37uKwMM7LaPDxcBDjAGqsFJXTn/n4q/d+d9aeHZ/wIGnAw4807pRtpZUa5tutfUICKzUhW8XnJYRaEQ9/tJTQW45oqTbzlgXAnCdu10oz+RWYML04iOeCfMrW6jo716xakax47M+3nYb+y7FGpBTDretmvAnDvvsmzCJtptKzIq8FIVKkdbrnqHs3Mi2gU8YxYwL/Afc37ZiA09MGuY+9PHX7qQpLfDQiF0PsWklwGj38AC3JKiVfwae7Fi5hB81NiurcCkSZutEwkRal/PHTy6wAOynw1caa8FmkBPtJGthb5T96xI+AH5Q4AzhR+S+yZqeRvMy8L06XuUq8DmwFvPAIMkHvnC8Sr3p3d9EV5FRs1dZQtZ5iOaB6OzBUeArQusGVT5wGjjaPC/R7rDHDPA2g3fYowrM0emwx3rJalkQRoBXgWkG47jNAmGwqTtepcXN/wc7PMQyfEwyGgAAAABJRU5ErkJggg=="
                },
                {
                    "title": "Green Tortoise Hostel Seattle",
                    "url": "https://www.google.com/viewer/place?mid=/g/1td7sx3h",
                    "description": "Low-key hostel offering basic dorms & private rooms, plus a full communal kitchen & free Wi-Fi.",
                    "imageUrl": "data:image/png;base64,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"
                },
                {
                    "title": "Where Should I Stay in Seattle? (An Unofficial Seattle Accommodation ...",
                    "url": "https://totallyseattle.com/where-should-i-stay-in-seattle-an-unofficial-seattle-accommodation-guide/",
                    "description": "Recommended hotels in Downtown Seattle: * Four Seasons Hotel. * Fairmont Olympic Hotel. * The Alexis Hotel. * The Inn at the Market. Staying in Seattle's Bellto...",
                    "imageUrl": "data:image/png;base64,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"
                }
            ],
            "query": "Hotels in Seattle",
            "kvsHtmlUrl": "https://api.apify.com/v2/key-value-stores/CzC2EqsvcNUUhWsSH/records/Hotels-in-Seattle_522be799a1919512562f544878e95f5e5ecfa59da52aeda4bcc768a3f9afacd2.html?signature=1PWgT4hZ9FTMZ9sBjH55k",
            "url": "http://www.google.com/search?q=Hotels+in+Seattle&num=5"
        }
    }
]
```

You can **download the results directly from the platform using a button** or from the [Get dataset items](https://www.apify.com/docs/api/v2#/reference/datasets/item-collection/get-items) API endpoint:

```json
<https://api.apify.com/v2/datasets/[DATASET_ID]/items?format=[FORMAT]>
```

where `[DATASET_ID]` is the ID of the dataset and `[FORMAT]`can be `csv`, `html`, `xlsx`, `xml`, `rss` or `json`.

### Frequently asked questions

#### How to get one search result per row

Simply choose the Export view for `Organic results` and/or `Paid results`, it automatically spreads each result into a separate row. For API access, you can add `&view=paid_results` or `&view=organic_results` to the URL and with the API client, you can do the same using the `view` field.

An organic result is represented using the following format:

```json
{
    "searchQuery": {
        "term": "laptop",
        "device": "DESKTOP",
        "page": 1,
        "type": "SEARCH",
        "domain": "google.com",
        "countryCode": "US",
        "languageCode": "en",
        "locationUule": null
    },
    "type": "organic",
    "position": 1,
    "title": "Laptops & Notebook Computers - Best Buy",
    "url": "<https://www.bestbuy.com/site/computers-pcs/laptop-computers/abcat0502000.c?id=abcat0502000>",
    "displayedUrl": "<https://www.bestbuy.com> › Computers & Tablets",
    "description": "Shop Best Buy for laptops. Work & play from anywhere with a notebook computer. We can help you find the best laptop for your specific needs in store and online.",
    "emphasizedKeywords": "laptops | laptop",
    "productInfo": {}
}
```

A paid result has an `adPosition` field instead of `position` and `"type": "paid"`. **Paid result position is calculated separately from the organic results**.

When using a tabular format such as `csv` or `xls`, you'll get a table where each row contains just one organic result. For more details about exporting and formatting the dataset records, please see the documentation for the [Get dataset items](https://apify.com/docs/api/v2#/reference/datasets/item-collection/get-items) API endpoint.

#### 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](https://docs.apify.com/integrations).

Alternatively, you could use [webhooks](https://docs.apify.com/integrations/webhooks) to carry out an action whenever an event occurs, such as getting a notification whenever Google Search Results 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](https://apify.com/apify/google-search-scraper/api/javascript). To access the API using Python, use the `apify-client` [PyPI package](https://apify.com/apify/google-search-scraper/api/python).

Click on the [API tab](https://apify.com/apify/google-search-scraper/api/python) for code examples, or check out the [Apify API reference](https://docs.apify.com/api/v2) docs for all the details.

#### Can I use Google Search Results Scraper through an MCP Server?

With Apify API, you can use almost any Actor in conjunction with an MCP server. You can connect to the MCP server using clients like ClaudeDesktop and LibreChat, or even build your own. Read all about how you can [set up Apify Actors with MCP](https://blog.apify.com/how-to-use-mcp/).

For Google Search Results Scraper, go to the [MCP tab](https://apify.com/apify/google-search-scraper/api/mcp) and then go through the following steps:

1. Start a Server-Sent Events (SSE) session to receive a `sessionId`
2. Send API messages using that `sessionId` to trigger the scraper
3. The message starts the Google Search Results Scraper with the provided input
4. The response should be: `Accepted`

#### 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](https://policies.google.com/terms?hl=en).

If you're unsure whether your reason is legitimate, consult your lawyers. You can also read Apify's blog post on the [legality of web scraping](https://blog.apify.com/is-web-scraping-legal/).

#### Your feedback

If you are not sure that the results are complete and of good quality, each run stores the full HTML page to the default Key-Value Store. You can view the KVS by clicking on it and comparing the results.

We’re always working on improving the performance of our Actors and monitoring the quality but we are happy for any reports. So if you’ve got any technical feedback for this Google SERP API or simply found a bug, please create an issue on the Actor’s [Issues tab](https://apify.com/apify/google-search-scraper/issues/open).

# Actor input Schema

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

Use regular search words or enter Google Search URLs. You can also apply [advanced Google search techniques](https://blog.apify.com/how-to-scrape-google-like-a-pro/), such as <code>AI site:twitter.com</code> or <code>javascript OR python</code>. You can also define selected search filters as separate fields below (in the <code>Advanced search filters</code> section). Just ensure that your queries do not exceed 32 words to comply with Google Search limits.

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

Maximum number of pages to scrape per search query. Each page contains approximately 10 results.

## `disableGoogleSearchResults` (type: `boolean`):

When enabled, skips extraction of traditional organic search results and focuses exclusively on AI-powered search features (Google AI Mode, Perplexity AI, ChatGPT search, Copilot search, Gemini search). Use this option when you only need AI-generated answers and want to reduce processing time and costs by excluding standard search results.

## `aiModeSearch` (type: `object`):

Scrapes results from Google AI Mode — Google's dedicated AI-powered search interface on google.com, distinct from the standard AI Overviews snippets that appear in regular search results. AI Mode provides deeper, conversational answers with cited sources. Essential for Answer Engine Optimization (AEO) and Generative Engine Optimization (GEO) strategies — track how your brand or content appears when users switch to Google's AI search experience. An additional fee applies per successful result retrieved. See the Pricing tab for your subscription tier rate.

## `geminiSearch` (type: `object`):

Fetches an AI answer from Google Gemini (gemini.google.com) — Google's standalone AI assistant, separate from Google Search. Use this for cross-platform comparison to identify narrative differences and coverage gaps across AI platforms.<br><br>Note: An additional fee applies per result when this feature is active. Please refer to the Pricing tab for your specific rate.

## `perplexitySearch` (type: `object`):

Enable Perplexity to retrieve AI-generated answers and citations using the Sonar model. This feature is designed for cross-platform analysis, allowing you to directly compare other AI search model results against Perplexity's perspective to identify narrative differences and coverage gaps.<br><br>Note: An additional fee applies per result when this feature is active. Please refer to the Pricing tab for your specific rate.

## `chatGptSearch` (type: `object`):

Enable ChatGPT to retrieve AI-generated answers powered by OpenAI's search model. This feature is designed for cross-platform analysis, allowing you to directly compare other AI search model results against ChatGPT's perspective to identify narrative differences, coverage gaps, and search engine biases.<br><br>The output includes query fan-out under <code>queryFanOut</code>, showing additional search queries the model generated to answer your question.<br><br>Note: An additional fee applies per result when this feature is active. Please refer to the Pricing tab for your specific rate.

## `copilotSearch` (type: `object`):

Enable Copilot to retrieve AI-generated answers powered by Microsoft Copilot.

## `maximumLeadsEnrichmentRecords` (type: `integer`):

Enrich your results with detailed contact and company information, including employee names, job titles, emails, phone numbers, LinkedIn profiles, and key company data like industry and number of employees.<br><br>This setting allows you to set the maximum number of leads records you want to scrape per each domain found. By default, it's set to 0 which means that no leads information will be scraped.<br><br>⚠️ Note that some of the fields contain <b>personal data</b>. GDPR protects personal data in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your use case is legitimate, please consult an attorney.<br><br>To keep your leads relevant, we automatically filter out large chains and online platforms (e.g., social media, retail giants, food delivery services).<br><br>⚠️ <b>Cost warning:</b> This is a multiplier. Requesting 10 leads for 1,000 domains will attempt to find 10,000 total leads. You are only charged for leads successfully found.

## `leadsEnrichmentDepartments` (type: `array`):

You can use this filter to include only specific departments (like Sales, Marketing, or C-Suite). Note: This will only work if the ⏩ Add-on: Extract business leads information - Maximum leads per domain (maximumLeadsEnrichmentRecords) option is enabled. Please note that some job titles are sometimes miscategorized in the wrong departments.

## `verifyLeadsEnrichmentEmails` (type: `boolean`):

When enabled, verifies the email address of each lead extracted during business leads enrichment. Each lead receives an <b>emailVerification</b> object with the verification result and quality assessment.<br><br><b>Charged (decisive results):</b> valid (<code>ok</code>), invalid, and disposable email addresses.<br><b>Not charged:</b> catch-all, unknown, and error results.<br><br>⚠️ This add-on requires business leads enrichment to be enabled.

## `focusOnPaidAds` (type: `boolean`):

Enable extraction of paid results (Google Ads). This feature improves ad detection accuracy by using an ad-specialized proxy to perform up to 3 retries for each search query. Best used for queries likely to show ads. An extra cost per search page applies when enabled, regardless of ads found. Pricing depends on your Apify subscription plan.

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

Specifies the country used for the search and the Google Search domain (e.g. <code>google.es</code> for Spain). By default, the Actor uses United States (<code>google.com</code>).

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

Restricts search results to pages in a specific language. For example, choosing 'German' results in pages only in German. Passed to Google Search as the <code>lr</code> URL query parameter. <a href='https://developers.google.com/custom-search/v1/reference/rest/v1/cse/list' target='_blank'>Read more here</a>.

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

Language of the Google Search interface (menus, buttons, etc. - not the search results themselves). Passed to Google Search as the <code>hl</code> URL query parameter. From Google Reference: You can use the <code>hl</code> request parameter to identify the language of your graphical interface. The <code>hl</code> parameter value may affect search results, especially on international queries when language restriction (using the <code>lr</code> parameter) is not explicitly specified. <a href='https://developers.google.com/custom-search/v1/reference/rest/v1/cse/list' target='_blank'>Read more here</a>.

## `locationUule` (type: `string`):

The code for the exact location for the Google search. It's passed to Google Search as the <code>uule</code> URL query parameter. You can use the <a href='https://padavvan.github.io/' target='_blank'>UULE code generator</a>. Learn more about <a href='https://moz.com/ugc/geolocation-the-ultimate-tip-to-emulate-local-search' target='_blank'>emulating local search</a>.

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

If checked, the scraper will search for the exact phrase in the query. This is done by wrapping the query in quotes. Note that this may return fewer results. Also note that if you're using operators such as OR or AND, the whole query will be wrapped in quotes, such as <code>"Windows AND macOS"</code>. If you want to search for queries such as <code>"Windows" AND "macOS"</code>, you need to specify them directly in the <code>queries</code> field.

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

Limits the search to a specific site, such as: <code>site:example.com</code>. Note that the <code>site</code> filter takes precedence over the <code>relatedToSite</code> filter. If both filters are set, the <code>relatedToSite</code> filter will be ignored and not added to the search queries.

## `relatedToSite` (type: `string`):

Filters pages related to a specific site, such as: <code>related:example.com</code>. Note that the <code>site</code> filter takes precedence over the <code>relatedToSite</code> filter. If both filters are set, the <code>relatedToSite</code> filter will be ignored and not added to the search queries.

## `wordsInTitle` (type: `array`):

Filters pages with specific words in the title. The scraper uses the <code>intitle:</code> operator, even for multiple words (e.g. <code>recipe site:allrecipes.com intitle:"easy apple" intitle:pie</code>). There's also a <code>allintitle:</code> operator available, but it's problematic when combined with other search filters, so the scraper avoids using it. If you need to use the <code>allintitle:</code> operator specifically, you can include it in your custom queries from the <code>queries</code> field.

## `wordsInText` (type: `array`):

Filters pages with specific words in the text. The scraper uses the <code>intext:</code> operator, even for multiple words (e.g. <code>cartoon site:wikipedia.com intext:cat intext:mouse</code>). There's also a <code>allintext:</code> operator available, but it's problematic when combined with other search filters, so the scraper avoids using it. If you need to use the <code>allintext:</code> operator specifically, you can include it in your custom queries from the <code>queries</code> field.

## `wordsInUrl` (type: `array`):

Filters pages with specific words in the URL. The scraper uses the <code>inurl:</code> operator, even for multiple words (e.g. <code>recipe site:allrecipes.com inurl:apple inurl:pie</code>). There's also a <code>allinurl:</code> operator available, but it's problematic when combined with other search filters, so the scraper avoids using it. If you need to use the <code>allinurl:</code> operator specifically, you can include it in your custom queries from the <code>queries</code> field.

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

Filters results from a specific date range. d\[number] specifies the number of past days (e.g. the past 10 days can be written as d10). The same applies to hours, weeks, months, and years: h\[number], w\[number], m\[number], y\[number]. Example for the past year: 'y1' or even 'y'. The value is passed to Google Search using the <code>tbs</code> URL query parameter, prefixed with <code>qdr:</code>. You should avoid combining this filter with the <code>beforeDate</code> and <code>afterDate</code> filters to prevent conflicts.

## `beforeDate` (type: `string`):

Filters results from before the specified date. Either absolute date (e.g. `2024-05-03`) or relative date from now into the past (e.g. `8 days`, `3 months`). Absolute time is always interpreted in the UTC timezone, not your local timezone - please convert accordingly. Supported relative date & time units: `days`, `weeks`, `months`, `years`. You should avoid combining this filter with the `quickDateRange` filter to prevent conflicts.

## `afterDate` (type: `string`):

Filters results from after the specified date. Either absolute date (e.g. `2024-05-03`) or relative date from now into the past (e.g. `8 days`, `3 months`). Absolute time is always interpreted in the UTC timezone, not your local timezone - please convert accordingly. Supported relative date & time units: `days`, `weeks`, `months`, `years`. You should avoid combining this filter with the `quickDateRange` filter to prevent conflicts.

## `fileTypes` (type: `array`):

Filters results of specific file types using the <code>filetype:</code> operator, such as <code>filetype:pdf</code>. You can select multiple file types as well. They will be combined with the <code>OR</code> operator, for example: <code>filetype:doc OR filetype:txt</code>. If you need to use a file type that is not in the list (such as a source code file type), you can include it in your custom queries from the <code>queries</code> field, using the <code>filetype:</code> operator.

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

If checked the scraper will return results for mobile version of Google search. Otherwise desktop results are returned.

## `includeUnfilteredResults` (type: `boolean`):

If checked the lower quality results that Google normally filters out will be included.

## `saveHtml` (type: `boolean`):

If checked the HTML of the Google Search results pages will be stored to the default dataset, under the <code>html</code> property. This is useful if you need to process the HTML, but it makes the dataset large.

## `saveHtmlToKeyValueStore` (type: `boolean`):

If checked the HTML of the Google Search results pages will be stored to the default key-value store and links to the files stored to the dataset under the <code>htmlSnapshotUrl</code> property. This is useful for debugging since you can easily view the pages in the browser. However, the use of this feature may slow down the Actor.

## `includeIcons` (type: `boolean`):

If checked, all of the results (organicResults, paidResults, suggestedResults) will contain Base64-encoded icon image data if found.

## Actor input object example

```json
{
  "queries": "best SEO tools\napify web scraping",
  "maxPagesPerQuery": 5,
  "disableGoogleSearchResults": false,
  "aiModeSearch": {
    "enableAiMode": true
  },
  "geminiSearch": {
    "enableGemini": true
  },
  "perplexitySearch": {
    "enablePerplexity": true,
    "returnImages": false,
    "returnRelatedQuestions": true
  },
  "chatGptSearch": {
    "enableChatGpt": true
  },
  "copilotSearch": {
    "enableCopilot": true
  },
  "maximumLeadsEnrichmentRecords": 5,
  "leadsEnrichmentDepartments": [
    "marketing",
    "sales"
  ],
  "verifyLeadsEnrichmentEmails": true,
  "focusOnPaidAds": true,
  "countryCode": "us",
  "searchLanguage": "en",
  "languageCode": "en",
  "locationUule": "w+CAIQICIhVW5pdGVkIFN0YXRlcyx1c2E=",
  "forceExactMatch": true,
  "site": "example.com",
  "relatedToSite": "example.com",
  "wordsInTitle": [
    "easy",
    "tutorial"
  ],
  "wordsInText": [
    "artificial intelligence"
  ],
  "wordsInUrl": [
    "blog"
  ],
  "quickDateRange": "m6",
  "beforeDate": "2024-12-31",
  "afterDate": "2024-01-01",
  "fileTypes": [
    "pdf",
    "doc"
  ],
  "mobileResults": true,
  "includeUnfilteredResults": true,
  "saveHtml": true,
  "saveHtmlToKeyValueStore": true,
  "includeIcons": true
}
```

# Actor output Schema

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

Dataset containing all scraped data

# 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": "What are the top 5 CRM tools",
    "maxPagesPerQuery": 1,
    "geminiSearch": {
        "enableGemini": false
    },
    "perplexitySearch": {
        "enablePerplexity": false,
        "returnImages": false,
        "returnRelatedQuestions": false
    },
    "chatGptSearch": {
        "enableChatGpt": false
    },
    "copilotSearch": {
        "enableCopilot": false
    },
    "maximumLeadsEnrichmentRecords": 0
};

// Run the Actor and wait for it to finish
const run = await client.actor("apify/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": "What are the top 5 CRM tools",
    "maxPagesPerQuery": 1,
    "geminiSearch": { "enableGemini": False },
    "perplexitySearch": {
        "enablePerplexity": False,
        "returnImages": False,
        "returnRelatedQuestions": False,
    },
    "chatGptSearch": { "enableChatGpt": False },
    "copilotSearch": { "enableCopilot": False },
    "maximumLeadsEnrichmentRecords": 0,
}

# Run the Actor and wait for it to finish
run = client.actor("apify/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": "What are the top 5 CRM tools",
  "maxPagesPerQuery": 1,
  "geminiSearch": {
    "enableGemini": false
  },
  "perplexitySearch": {
    "enablePerplexity": false,
    "returnImages": false,
    "returnRelatedQuestions": false
  },
  "chatGptSearch": {
    "enableChatGpt": false
  },
  "copilotSearch": {
    "enableCopilot": false
  },
  "maximumLeadsEnrichmentRecords": 0
}' |
apify call apify/google-search-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Google Search Results Scraper",
        "description": "Scrape Google Search Engine Results Pages (SERPs). Select the country or language and extract organic and paid results, AI Mode, AI overviews, ads, queries, People Also Ask, prices, reviews, like a Google SERP API. Export data, run the scraper via API, schedule runs, or integrate with other tools.",
        "version": "0.0",
        "x-build-id": "ezAR7UMMHFteCI75b"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/apify~google-search-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-apify-google-search-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/apify~google-search-scraper/runs": {
            "post": {
                "operationId": "runs-sync-apify-google-search-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/apify~google-search-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-apify-google-search-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "queries"
                ],
                "properties": {
                    "queries": {
                        "title": "Search term(s)",
                        "pattern": "[^\\s]+",
                        "type": "string",
                        "description": "Use regular search words or enter Google Search URLs. You can also apply [advanced Google search techniques](https://blog.apify.com/how-to-scrape-google-like-a-pro/), such as <code>AI site:twitter.com</code> or <code>javascript OR python</code>. You can also define selected search filters as separate fields below (in the <code>Advanced search filters</code> section). Just ensure that your queries do not exceed 32 words to comply with Google Search limits."
                    },
                    "maxPagesPerQuery": {
                        "title": "Max pages per search",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum number of pages to scrape per search query. Each page contains approximately 10 results."
                    },
                    "disableGoogleSearchResults": {
                        "title": "Disable Google Search results",
                        "type": "boolean",
                        "description": "When enabled, skips extraction of traditional organic search results and focuses exclusively on AI-powered search features (Google AI Mode, Perplexity AI, ChatGPT search, Copilot search, Gemini search). Use this option when you only need AI-generated answers and want to reduce processing time and costs by excluding standard search results.",
                        "default": false
                    },
                    "aiModeSearch": {
                        "title": "⏩ Add-on: Google AI Mode ($)",
                        "type": "object",
                        "description": "Scrapes results from Google AI Mode — Google's dedicated AI-powered search interface on google.com, distinct from the standard AI Overviews snippets that appear in regular search results. AI Mode provides deeper, conversational answers with cited sources. Essential for Answer Engine Optimization (AEO) and Generative Engine Optimization (GEO) strategies — track how your brand or content appears when users switch to Google's AI search experience. An additional fee applies per successful result retrieved. See the Pricing tab for your subscription tier rate.",
                        "properties": {
                            "enableAiMode": {
                                "title": "Enable Google AI Mode",
                                "description": "Fetches results from Google AI Mode on google.com for every query.",
                                "type": "boolean"
                            }
                        },
                        "default": {
                            "enableAiMode": false
                        }
                    },
                    "geminiSearch": {
                        "title": "⏩ Add-on: Gemini search ($)",
                        "type": "object",
                        "description": "Fetches an AI answer from Google Gemini (gemini.google.com) — Google's standalone AI assistant, separate from Google Search. Use this for cross-platform comparison to identify narrative differences and coverage gaps across AI platforms.<br><br>Note: An additional fee applies per result when this feature is active. Please refer to the Pricing tab for your specific rate.",
                        "properties": {
                            "enableGemini": {
                                "title": "Enable Gemini search",
                                "description": "Fetches an AI answer from Gemini (gemini.google.com) for every query to compare against other AI platforms.",
                                "type": "boolean"
                            }
                        },
                        "default": {
                            "enableGemini": false
                        }
                    },
                    "perplexitySearch": {
                        "title": "⏩ Add-on: Perplexity AI search ($)",
                        "type": "object",
                        "description": "Enable Perplexity to retrieve AI-generated answers and citations using the Sonar model. This feature is designed for cross-platform analysis, allowing you to directly compare other AI search model results against Perplexity's perspective to identify narrative differences and coverage gaps.<br><br>Note: An additional fee applies per result when this feature is active. Please refer to the Pricing tab for your specific rate.",
                        "properties": {
                            "enablePerplexity": {
                                "title": "Enable Perplexity AI search",
                                "description": "Fetches an AI answer from Perplexity.",
                                "type": "boolean"
                            },
                            "searchRecency": {
                                "title": "Search Recency",
                                "type": "string",
                                "enum": [
                                    "day",
                                    "week",
                                    "month",
                                    "year"
                                ],
                                "description": "Filter search results based on their recency."
                            },
                            "returnImages": {
                                "title": "Include images in Perplexity AI answers",
                                "description": "If enabled, Perplexity will search for and return relevant images as part of the AI response.",
                                "type": "boolean"
                            },
                            "returnRelatedQuestions": {
                                "title": "Include related questions in Perplexity AI answers",
                                "description": "If enabled, Perplexity will generate and return a list of follow-up questions related to your search query.",
                                "type": "boolean"
                            }
                        },
                        "default": {
                            "enablePerplexity": false,
                            "returnImages": false,
                            "returnRelatedQuestions": false
                        }
                    },
                    "chatGptSearch": {
                        "title": "⏩ Add-on: ChatGPT search ($)",
                        "type": "object",
                        "description": "Enable ChatGPT to retrieve AI-generated answers powered by OpenAI's search model. This feature is designed for cross-platform analysis, allowing you to directly compare other AI search model results against ChatGPT's perspective to identify narrative differences, coverage gaps, and search engine biases.<br><br>The output includes query fan-out under <code>queryFanOut</code>, showing additional search queries the model generated to answer your question.<br><br>Note: An additional fee applies per result when this feature is active. Please refer to the Pricing tab for your specific rate.",
                        "properties": {
                            "enableChatGpt": {
                                "title": "Enable ChatGPT search",
                                "description": "Fetches an AI answer from ChatGPT for every query to compare against other AI models.",
                                "type": "boolean"
                            }
                        },
                        "default": {
                            "enableChatGpt": false
                        }
                    },
                    "copilotSearch": {
                        "title": "⏩ Add-on: Copilot search ($)",
                        "type": "object",
                        "description": "Enable Copilot to retrieve AI-generated answers powered by Microsoft Copilot.",
                        "properties": {
                            "enableCopilot": {
                                "title": "Enable Copilot search",
                                "description": "Fetches an AI answer from Copilot for every query to compare against other AI models",
                                "type": "boolean"
                            },
                            "copilotSearchMode": {
                                "title": "Copilot search mode",
                                "type": "string",
                                "enum": [
                                    "chat",
                                    "reasoning",
                                    "smart",
                                    "study"
                                ],
                                "description": "Select which Copilot chat mode to use for the request:<br><br>• <b>chat</b> - Standard conversational mode. Best for general queries and quick answers.<br>• <b>reasoning</b> - Deep analytical mode. Best for complex questions requiring logical depth.<br>• <b>smart</b> - Balanced mode combining speed and reasoning for most use cases.<br>• <b>study</b> - Detailed explanatory mode. Best for educational and research-oriented prompts."
                            }
                        },
                        "default": {
                            "enableCopilot": false
                        }
                    },
                    "maximumLeadsEnrichmentRecords": {
                        "title": "⏩ Add-on: Extract business leads information - Maximum leads per domain ($)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Enrich your results with detailed contact and company information, including employee names, job titles, emails, phone numbers, LinkedIn profiles, and key company data like industry and number of employees.<br><br>This setting allows you to set the maximum number of leads records you want to scrape per each domain found. By default, it's set to 0 which means that no leads information will be scraped.<br><br>⚠️ Note that some of the fields contain <b>personal data</b>. GDPR protects personal data in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your use case is legitimate, please consult an attorney.<br><br>To keep your leads relevant, we automatically filter out large chains and online platforms (e.g., social media, retail giants, food delivery services).<br><br>⚠️ <b>Cost warning:</b> This is a multiplier. Requesting 10 leads for 1,000 domains will attempt to find 10,000 total leads. You are only charged for leads successfully found.",
                        "default": 0
                    },
                    "leadsEnrichmentDepartments": {
                        "title": "Leads departments selection",
                        "type": "array",
                        "description": "You can use this filter to include only specific departments (like Sales, Marketing, or C-Suite). Note: This will only work if the ⏩ Add-on: Extract business leads information - Maximum leads per domain (maximumLeadsEnrichmentRecords) option is enabled. Please note that some job titles are sometimes miscategorized in the wrong departments.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "c_suite",
                                "product",
                                "engineering_technical",
                                "design",
                                "education",
                                "finance",
                                "human_resources",
                                "information_technology",
                                "legal",
                                "marketing",
                                "medical_health",
                                "operations",
                                "sales",
                                "consulting"
                            ],
                            "enumTitles": [
                                "C-Suite",
                                "Product",
                                "Engineering & Technical",
                                "Design",
                                "Education",
                                "Finance",
                                "Human Resources",
                                "Information Technology",
                                "Legal",
                                "Marketing",
                                "Medical & Health",
                                "Operations",
                                "Sales",
                                "Consulting"
                            ]
                        }
                    },
                    "verifyLeadsEnrichmentEmails": {
                        "title": "⏩ Add-on: Email verification ($)",
                        "type": "boolean",
                        "description": "When enabled, verifies the email address of each lead extracted during business leads enrichment. Each lead receives an <b>emailVerification</b> object with the verification result and quality assessment.<br><br><b>Charged (decisive results):</b> valid (<code>ok</code>), invalid, and disposable email addresses.<br><b>Not charged:</b> catch-all, unknown, and error results.<br><br>⚠️ This add-on requires business leads enrichment to be enabled.",
                        "default": false
                    },
                    "focusOnPaidAds": {
                        "title": "⏩ Add-on: Enable paid results (ads) extraction ($)",
                        "type": "boolean",
                        "description": "Enable extraction of paid results (Google Ads). This feature improves ad detection accuracy by using an ad-specialized proxy to perform up to 3 retries for each search query. Best used for queries likely to show ads. An extra cost per search page applies when enabled, regardless of ads found. Pricing depends on your Apify subscription plan.",
                        "default": false
                    },
                    "countryCode": {
                        "title": "Country",
                        "enum": [
                            "",
                            "af",
                            "al",
                            "dz",
                            "as",
                            "ad",
                            "ao",
                            "ai",
                            "aq",
                            "ag",
                            "ar",
                            "am",
                            "aw",
                            "au",
                            "at",
                            "az",
                            "bs",
                            "bh",
                            "bd",
                            "bb",
                            "by",
                            "be",
                            "bz",
                            "bj",
                            "bm",
                            "bt",
                            "bo",
                            "ba",
                            "bw",
                            "bv",
                            "br",
                            "io",
                            "bn",
                            "bg",
                            "bf",
                            "bi",
                            "kh",
                            "cm",
                            "ca",
                            "cv",
                            "ky",
                            "cf",
                            "td",
                            "cl",
                            "cn",
                            "cx",
                            "cc",
                            "co",
                            "km",
                            "cg",
                            "cd",
                            "ck",
                            "cr",
                            "ci",
                            "hr",
                            "cu",
                            "cy",
                            "cz",
                            "dk",
                            "dj",
                            "dm",
                            "do",
                            "ec",
                            "eg",
                            "sv",
                            "gq",
                            "er",
                            "ee",
                            "et",
                            "fk",
                            "fo",
                            "fj",
                            "fi",
                            "fr",
                            "gf",
                            "pf",
                            "tf",
                            "ga",
                            "gm",
                            "ge",
                            "de",
                            "gh",
                            "gi",
                            "gr",
                            "gl",
                            "gd",
                            "gp",
                            "gu",
                            "gt",
                            "gn",
                            "gw",
                            "gy",
                            "ht",
                            "hm",
                            "va",
                            "hn",
                            "hk",
                            "hu",
                            "is",
                            "in",
                            "id",
                            "ir",
                            "iq",
                            "ie",
                            "il",
                            "it",
                            "jm",
                            "jp",
                            "jo",
                            "kz",
                            "ke",
                            "ki",
                            "kp",
                            "kr",
                            "kw",
                            "kg",
                            "la",
                            "lv",
                            "lb",
                            "ls",
                            "lr",
                            "ly",
                            "li",
                            "lt",
                            "lu",
                            "mo",
                            "mk",
                            "mg",
                            "mw",
                            "my",
                            "mv",
                            "ml",
                            "mt",
                            "mh",
                            "mq",
                            "mr",
                            "mu",
                            "yt",
                            "mx",
                            "fm",
                            "md",
                            "mc",
                            "mn",
                            "me",
                            "ms",
                            "ma",
                            "mz",
                            "mm",
                            "na",
                            "nr",
                            "np",
                            "nl",
                            "an",
                            "nc",
                            "nz",
                            "ni",
                            "ne",
                            "ng",
                            "nu",
                            "nf",
                            "mp",
                            "no",
                            "om",
                            "pk",
                            "pw",
                            "ps",
                            "pa",
                            "pg",
                            "py",
                            "pe",
                            "ph",
                            "pn",
                            "pl",
                            "pt",
                            "pr",
                            "qa",
                            "re",
                            "ro",
                            "ru",
                            "rw",
                            "sh",
                            "kn",
                            "lc",
                            "pm",
                            "vc",
                            "ws",
                            "sm",
                            "st",
                            "sa",
                            "sn",
                            "rs",
                            "sc",
                            "sl",
                            "sg",
                            "sk",
                            "si",
                            "sb",
                            "so",
                            "za",
                            "gs",
                            "es",
                            "lk",
                            "sd",
                            "sr",
                            "sj",
                            "sz",
                            "se",
                            "ch",
                            "sy",
                            "tw",
                            "tj",
                            "tz",
                            "th",
                            "tl",
                            "tg",
                            "tk",
                            "to",
                            "tt",
                            "tn",
                            "tr",
                            "tm",
                            "tc",
                            "tv",
                            "ug",
                            "ua",
                            "ae",
                            "gb",
                            "us",
                            "um",
                            "uy",
                            "uz",
                            "vu",
                            "ve",
                            "vn",
                            "vg",
                            "vi",
                            "wf",
                            "eh",
                            "ye",
                            "zm",
                            "zw"
                        ],
                        "type": "string",
                        "description": "Specifies the country used for the search and the Google Search domain (e.g. <code>google.es</code> for Spain). By default, the Actor uses United States (<code>google.com</code>)."
                    },
                    "searchLanguage": {
                        "title": "Search language",
                        "enum": [
                            "",
                            "ar",
                            "bg",
                            "ca",
                            "cs",
                            "da",
                            "de",
                            "el",
                            "en",
                            "es",
                            "et",
                            "fi",
                            "fr",
                            "hr",
                            "hu",
                            "id",
                            "is",
                            "it",
                            "iw",
                            "ja",
                            "ko",
                            "lt",
                            "lv",
                            "nl",
                            "no",
                            "pl",
                            "pt",
                            "ro",
                            "ru",
                            "sk",
                            "sl",
                            "sr",
                            "sv",
                            "th",
                            "tr",
                            "zh-CN",
                            "zh-TW"
                        ],
                        "type": "string",
                        "description": "Restricts search results to pages in a specific language. For example, choosing 'German' results in pages only in German. Passed to Google Search as the <code>lr</code> URL query parameter. <a href='https://developers.google.com/custom-search/v1/reference/rest/v1/cse/list' target='_blank'>Read more here</a>.",
                        "default": ""
                    },
                    "languageCode": {
                        "title": "Interface Language",
                        "enum": [
                            "",
                            "af",
                            "sq",
                            "sm",
                            "ar",
                            "az",
                            "eu",
                            "be",
                            "bn",
                            "bh",
                            "bs",
                            "bg",
                            "ca",
                            "zh-CN",
                            "zh-TW",
                            "hr",
                            "cs",
                            "da",
                            "nl",
                            "en",
                            "eo",
                            "et",
                            "fo",
                            "fi",
                            "fr",
                            "fy",
                            "gl",
                            "ka",
                            "de",
                            "el",
                            "gu",
                            "iw",
                            "hi",
                            "hu",
                            "is",
                            "id",
                            "ia",
                            "ga",
                            "it",
                            "ja",
                            "jw",
                            "kn",
                            "ko",
                            "la",
                            "lv",
                            "lt",
                            "mk",
                            "ms",
                            "ml",
                            "mt",
                            "mr",
                            "ne",
                            "no",
                            "nn",
                            "oc",
                            "fa",
                            "pl",
                            "pt-BR",
                            "pt-PT",
                            "pa",
                            "ro",
                            "ru",
                            "gd",
                            "sr",
                            "si",
                            "sk",
                            "sl",
                            "es",
                            "su",
                            "sw",
                            "sv",
                            "tl",
                            "ta",
                            "te",
                            "th",
                            "ti",
                            "tr",
                            "uk",
                            "ur",
                            "uz",
                            "vi",
                            "cy",
                            "xh",
                            "zu"
                        ],
                        "type": "string",
                        "description": "Language of the Google Search interface (menus, buttons, etc. - not the search results themselves). Passed to Google Search as the <code>hl</code> URL query parameter. From Google Reference: You can use the <code>hl</code> request parameter to identify the language of your graphical interface. The <code>hl</code> parameter value may affect search results, especially on international queries when language restriction (using the <code>lr</code> parameter) is not explicitly specified. <a href='https://developers.google.com/custom-search/v1/reference/rest/v1/cse/list' target='_blank'>Read more here</a>.",
                        "default": ""
                    },
                    "locationUule": {
                        "title": "Exact location (Google UULE parameter)",
                        "type": "string",
                        "description": "The code for the exact location for the Google search. It's passed to Google Search as the <code>uule</code> URL query parameter. You can use the <a href='https://padavvan.github.io/' target='_blank'>UULE code generator</a>. Learn more about <a href='https://moz.com/ugc/geolocation-the-ultimate-tip-to-emulate-local-search' target='_blank'>emulating local search</a>."
                    },
                    "forceExactMatch": {
                        "title": "Force exact match",
                        "type": "boolean",
                        "description": "If checked, the scraper will search for the exact phrase in the query. This is done by wrapping the query in quotes. Note that this may return fewer results. Also note that if you're using operators such as OR or AND, the whole query will be wrapped in quotes, such as <code>\"Windows AND macOS\"</code>. If you want to search for queries such as <code>\"Windows\" AND \"macOS\"</code>, you need to specify them directly in the <code>queries</code> field.",
                        "default": false
                    },
                    "site": {
                        "title": "Site",
                        "pattern": "^([\\w-]+\\.)+\\w+$",
                        "type": "string",
                        "description": "Limits the search to a specific site, such as: <code>site:example.com</code>. Note that the <code>site</code> filter takes precedence over the <code>relatedToSite</code> filter. If both filters are set, the <code>relatedToSite</code> filter will be ignored and not added to the search queries."
                    },
                    "relatedToSite": {
                        "title": "Related to site",
                        "pattern": "^([\\w-]+\\.)+\\w+$",
                        "type": "string",
                        "description": "Filters pages related to a specific site, such as: <code>related:example.com</code>. Note that the <code>site</code> filter takes precedence over the <code>relatedToSite</code> filter. If both filters are set, the <code>relatedToSite</code> filter will be ignored and not added to the search queries."
                    },
                    "wordsInTitle": {
                        "title": "Words in title",
                        "maxItems": 32,
                        "type": "array",
                        "description": "Filters pages with specific words in the title. The scraper uses the <code>intitle:</code> operator, even for multiple words (e.g. <code>recipe site:allrecipes.com intitle:\"easy apple\" intitle:pie</code>). There's also a <code>allintitle:</code> operator available, but it's problematic when combined with other search filters, so the scraper avoids using it. If you need to use the <code>allintitle:</code> operator specifically, you can include it in your custom queries from the <code>queries</code> field.",
                        "items": {
                            "type": "string",
                            "pattern": "^[^\\s](.+[^\\s])*$"
                        },
                        "default": []
                    },
                    "wordsInText": {
                        "title": "Words in text",
                        "maxItems": 32,
                        "type": "array",
                        "description": "Filters pages with specific words in the text. The scraper uses the <code>intext:</code> operator, even for multiple words (e.g. <code>cartoon site:wikipedia.com intext:cat intext:mouse</code>). There's also a <code>allintext:</code> operator available, but it's problematic when combined with other search filters, so the scraper avoids using it. If you need to use the <code>allintext:</code> operator specifically, you can include it in your custom queries from the <code>queries</code> field.",
                        "items": {
                            "type": "string",
                            "pattern": "^[^\\s](.+[^\\s])*$"
                        },
                        "default": []
                    },
                    "wordsInUrl": {
                        "title": "Words in URL",
                        "maxItems": 32,
                        "type": "array",
                        "description": "Filters pages with specific words in the URL. The scraper uses the <code>inurl:</code> operator, even for multiple words (e.g. <code>recipe site:allrecipes.com inurl:apple inurl:pie</code>). There's also a <code>allinurl:</code> operator available, but it's problematic when combined with other search filters, so the scraper avoids using it. If you need to use the <code>allinurl:</code> operator specifically, you can include it in your custom queries from the <code>queries</code> field.",
                        "items": {
                            "type": "string",
                            "pattern": "^[^\\s](.+[^\\s])*$"
                        },
                        "default": []
                    },
                    "quickDateRange": {
                        "title": "Quick date range",
                        "pattern": "^[hdwmy]\\d*$",
                        "type": "string",
                        "description": "Filters results from a specific date range. d[number] specifies the number of past days (e.g. the past 10 days can be written as d10). The same applies to hours, weeks, months, and years: h[number], w[number], m[number], y[number]. Example for the past year: 'y1' or even 'y'. The value is passed to Google Search using the <code>tbs</code> URL query parameter, prefixed with <code>qdr:</code>. You should avoid combining this filter with the <code>beforeDate</code> and <code>afterDate</code> filters to prevent conflicts."
                    },
                    "beforeDate": {
                        "title": "Before date",
                        "pattern": "^(\\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])(T[0-2]\\d:[0-5]\\d(:[0-5]\\d)?(\\.\\d+)?Z?)?$|^(\\d+)\\s*(minute|hour|day|week|month|year)s?$",
                        "type": "string",
                        "description": "Filters results from before the specified date. Either absolute date (e.g. `2024-05-03`) or relative date from now into the past (e.g. `8 days`, `3 months`). Absolute time is always interpreted in the UTC timezone, not your local timezone - please convert accordingly. Supported relative date & time units: `days`, `weeks`, `months`, `years`. You should avoid combining this filter with the `quickDateRange` filter to prevent conflicts."
                    },
                    "afterDate": {
                        "title": "After date",
                        "pattern": "^(\\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])(T[0-2]\\d:[0-5]\\d(:[0-5]\\d)?(\\.\\d+)?Z?)?$|^(\\d+)\\s*(minute|hour|day|week|month|year)s?$",
                        "type": "string",
                        "description": "Filters results from after the specified date. Either absolute date (e.g. `2024-05-03`) or relative date from now into the past (e.g. `8 days`, `3 months`). Absolute time is always interpreted in the UTC timezone, not your local timezone - please convert accordingly. Supported relative date & time units: `days`, `weeks`, `months`, `years`. You should avoid combining this filter with the `quickDateRange` filter to prevent conflicts."
                    },
                    "fileTypes": {
                        "title": "File types",
                        "maxItems": 10,
                        "type": "array",
                        "description": "Filters results of specific file types using the <code>filetype:</code> operator, such as <code>filetype:pdf</code>. You can select multiple file types as well. They will be combined with the <code>OR</code> operator, for example: <code>filetype:doc OR filetype:txt</code>. If you need to use a file type that is not in the list (such as a source code file type), you can include it in your custom queries from the <code>queries</code> field, using the <code>filetype:</code> operator.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "pdf",
                                "csv",
                                "epub",
                                "ps",
                                "htm",
                                "html",
                                "xls",
                                "xlsx",
                                "ppt",
                                "pptx",
                                "doc",
                                "docx",
                                "odp",
                                "ods",
                                "odt",
                                "rtf",
                                "svg",
                                "tex",
                                "txt",
                                "wml",
                                "wap",
                                "xml",
                                "xps",
                                "md",
                                "readme",
                                "log",
                                "yml",
                                "yaml",
                                "toml",
                                "ipynb",
                                "sas",
                                "sql",
                                "rdf",
                                "avif",
                                "avi",
                                "mkv",
                                "mov",
                                "flv",
                                "asf",
                                "ogv"
                            ],
                            "enumTitles": [
                                "Adobe Portable Document Format (pdf)",
                                "Comma-Separated Values (csv)",
                                "Electronic Publication (epub)",
                                "Adobe PostScript (ps)",
                                "HTML (htm)",
                                "HTML (html)",
                                "Microsoft Excel (xls)",
                                "Microsoft Excel (xlsx)",
                                "Microsoft PowerPoint (ppt)",
                                "Microsoft PowerPoint (pptx)",
                                "Microsoft Word (doc)",
                                "Microsoft Word (docx)",
                                "OpenOffice presentation (odp)",
                                "OpenOffice spreadsheet (ods)",
                                "OpenOffice text (odt)",
                                "Rich Text Format (rtf)",
                                "Scalable Vector Graphics (svg)",
                                "TeX/LaTeX (tex)",
                                "Text (txt)",
                                "Wireless Markup Language (wml)",
                                "Wireless Markup Language (wap)",
                                "XML (xml)",
                                "XML Paper Specification (xps)",
                                "Markdown (md)",
                                "Readme (readme)",
                                "Log file (log)",
                                "YAML (yml)",
                                "YAML (yaml)",
                                "TOML (toml)",
                                "Jupyter Notebook (ipynb)",
                                "SAS (sas)",
                                "SQL (sql)",
                                "Resource Description Framework (rdf)",
                                "AV1 Image File Format (avif)",
                                "Audio Video Interleave (avi)",
                                "Matroska Multimedia Container (mkv)",
                                "QuickTime Movie (mov)",
                                "Flash Video (flv)",
                                "Advanced Systems Format (asf)",
                                "Ogg Video (ogv)"
                            ]
                        }
                    },
                    "mobileResults": {
                        "title": "Mobile results",
                        "type": "boolean",
                        "description": "If checked the scraper will return results for mobile version of Google search. Otherwise desktop results are returned.",
                        "default": false
                    },
                    "includeUnfilteredResults": {
                        "title": "Unfiltered results",
                        "type": "boolean",
                        "description": "If checked the lower quality results that Google normally filters out will be included.",
                        "default": false
                    },
                    "saveHtml": {
                        "title": "Save HTML to dataset",
                        "type": "boolean",
                        "description": "If checked the HTML of the Google Search results pages will be stored to the default dataset, under the <code>html</code> property. This is useful if you need to process the HTML, but it makes the dataset large.",
                        "default": false
                    },
                    "saveHtmlToKeyValueStore": {
                        "title": "Save HTML to key-value store",
                        "type": "boolean",
                        "description": "If checked the HTML of the Google Search results pages will be stored to the default key-value store and links to the files stored to the dataset under the <code>htmlSnapshotUrl</code> property. This is useful for debugging since you can easily view the pages in the browser. However, the use of this feature may slow down the Actor.",
                        "default": true
                    },
                    "includeIcons": {
                        "title": "Include icon image data (base64)",
                        "type": "boolean",
                        "description": "If checked, all of the results (organicResults, paidResults, suggestedResults) will contain Base64-encoded icon image data if found.",
                        "default": false
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
