# Google AI Overviews Scraper (AI Overview Answers and Sources) (`webdatatools/google-ai-overviews-scraper`) Actor

Google AI Overviews Scraper returns the AI Overview answer for a query: answer text, bullet points and the cited sources with titles and URLs. Uses the Apify GOOGLE_SERP proxy, no browser.

- **URL**: https://apify.com/webdatatools/google-ai-overviews-scraper.md
- **Developed by:** [Murat Uzun](https://apify.com/webdatatools) (community)
- **Categories:** SEO tools, AI, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $10.50 / 1,000 ai overviews

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

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

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

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

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

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

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

# README

## Google AI Overviews Scraper (AI Overview Answers and Sources)

### What is Google AI Overviews Scraper?

Google AI Overviews Scraper returns the **AI Overview** answer that Google shows above the search results for a query: the answer text, the bullet points, and the sources Google cites (title and URL). Send a list of questions or keywords and you get one row per query. It reads the normal Google results page through the Apify `GOOGLE_SERP` proxy group, so it needs no browser.

### What data does Google AI Overviews Scraper extract?

| Field | Type | Description |
|---|---|---|
| `query` | string | The search query as sent |
| `countryCode` / `languageCode` | string | The `gl` and `hl` parameters used |
| `searchUrl` | string | The exact Google URL fetched through the proxy |
| `hasOverview` | boolean | `true` when Google showed an AI Overview block for the query |
| `overviewText` | string or null | The answer text, paragraphs separated by new lines |
| `overviewPoints` | string array | Bullet points of the answer (for example "Best Overall: ...") |
| `sources` | array | Cited sources, each `{title, url}`, up to 10, deduplicated |
| `sourceCount` | integer | Number of entries in `sources` |
| `note` | string or null | Why there is no overview: `no-overview-block` or `overview-unavailable` |
| `scrapedAt` | string | ISO timestamp of the run |

### How to use Google AI Overviews Scraper

1. Open the Actor and type your questions in **Search queries**, one per line (for example `how does solar power work`).
2. Set **Country (gl)** and **Language (hl)** if you need a market other than US/English.
3. Keep **Return queries without an AI Overview** on to get a row for every query, or turn it off to receive only queries that have an overview.
4. Start the run and download the dataset as JSON, CSV or Excel.

### Example input

```json
{
    "queries": ["how does solar power work", "why is the sky blue"],
    "countryCode": "us",
    "languageCode": "en",
    "includeNoOverview": true
}
```

### Example output

Real row from a cloud run on 23 October 2026 (`countryCode` us, `languageCode` en), shortened:

```json
{
    "query": "why do cats purr",
    "hasOverview": true,
    "overviewText": "Cats\npurr to communicate, express emotions, and even help their bodies heal, operating at a frequency of 25 to 150 Hertz.\n...",
    "overviewPoints": [
        "Contentment and Joy: Cats often purr when they feel safe, relaxed, and happy, such as when curled up on a lap or receiving affection.",
        "Kitten and Mother Communication: Blind and deaf newborn kittens purr to let their mother know where they are, and mother cats purr while nursing to guide and reassure their young."
    ],
    "sources": [
        {
            "title": "American Animal Hospital Association - AAHA",
            "url": "https://www.aaha.org/resources/the-secret-feline-language-5-reasons-why-your-cat-purrs/"
        }
    ],
    "sourceCount": 1,
    "note": null
}
```

A query without an overview:

```json
{ "query": "best running shoes 2026", "hasOverview": false, "overviewText": null, "overviewPoints": [], "sources": [], "sourceCount": 0, "note": "no-overview-block" }
```

### Input parameters

| Parameter | Type | Default | Description |
|---|---|---|---|
| `queries` | string array | `["how does solar power work"]` | Questions or keywords, one per line. At most 100 per run. |
| `countryCode` | string | `us` | Two-letter `gl` code |
| `languageCode` | string | `en` | Two-letter `hl` code |
| `includeNoOverview` | boolean | `true` | Return rows for queries without an overview (not charged) |

### Pricing

Pay per AI Overview: you are charged **one event per query that returns an AI Overview**. Queries without an overview, and failed fetches, are not charged.

| Plan | Price per AI Overview |
|---|---|
| FREE | $0.0125 |
| BRONZE | $0.0115 |
| SILVER | $0.011 |
| GOLD | $0.0105 |
| PLATINUM | $0.0105 |
| DIAMOND | $0.0105 |

Cost measured on the platform on 23 October 2026: one 16-query run used about $0.042 of platform usage (run `ZUseFoxdW9vgx3Tog`), and a one-query run about $0.0007. The difference suggests roughly $0.0027 of proxy usage per Google request; this is an estimate from two runs, not an invoice line. The lowest price keeps the margin around 70 % at that cost.

### Google AI Overviews Scraper vs. other AI Overview scrapers

Google AI Overviews Scraper is pay-per-event and bills only queries that have an overview, so a query with no overview costs you nothing extra. It returns the cited sources as structured `{title, url}` pairs next to the answer text. It does not take screenshots, and it does not run a browser.

### Using Google AI Overviews Scraper with AI agents and MCP

The Actor is pay-per-event with limited permissions, so it can be called through the Apify MCP server. An agent sends `queries` and gets back one structured row per query, with the answer and the sources it can cite or check.

### FAQ

**Why is `hasOverview` false for some queries?** Google shows AI Overviews only for some queries and markets. In two 16-query runs on 23 October 2026, 16 of 16 and then 14 of 16 queries returned an overview; the two without one had no overview block in the results page (`note: no-overview-block`).

**Why is `sources[].url` sometimes a site root such as `https://www.example.com`?** Google cites the page it used, and some citations point to the site root. Product cards in shopping answers are skipped, but a few shop roots can remain.

**Can `overviewText` contain text from source cards?** Yes, in some layouts Google places source-card snippets between the answer paragraphs. `overviewPoints` and `sources` are the cleaner fields to use; the text field is the answer as printed on the page.

**Does it get the AI Mode answer?** No. This Actor reads the AI Overview block of the normal results page only.

**What about errors and limits?** A failed fetch is retried twice and then skipped; it is not pushed and not charged. The run stops early, without losing finished rows, when its timeout is close or the spending limit is reached.

### Related Actors

Google Search Results Scraper (organic results with real URLs) and Google Images Scraper are in the same Google SERP family.

### Support

Open an issue on the Actor's Issues tab. Include the query, the country and language codes, and the run ID.

# Actor input Schema

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

Questions or keywords to search in Google, one per line, e.g. how does solar power work. Queries without an AI Overview are returned with hasOverview false and are not charged.

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

Two-letter country code that Google uses for the results, e.g. us, gb, de. AI Overviews are not shown for every country.

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

Two-letter interface language code, e.g. en, de, fr.

## `includeNoOverview` (type: `boolean`):

When on, every query gets a row even if Google shows no AI Overview (hasOverview false, not charged). Turn off to get only the queries that have an overview.

## Actor input object example

```json
{
  "queries": [
    "how does solar power work"
  ],
  "countryCode": "us",
  "languageCode": "en",
  "includeNoOverview": true
}
```

# Actor output Schema

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

All ai overviews from this run.

# 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": [
        "how does solar power work"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("webdatatools/google-ai-overviews-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": ["how does solar power work"] }

# Run the Actor and wait for it to finish
run = client.actor("webdatatools/google-ai-overviews-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "queries": [
    "how does solar power work"
  ]
}' |
apify call webdatatools/google-ai-overviews-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,webdatatools/google-ai-overviews-scraper"
        }
    }
}
```

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

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/cADUNnLY52JINw06R/builds/2tTaIObdskbg2RGgC/openapi.json
