# Google AI Overview Scraper & GEO Citation Tracker (`datatrilha/google-ai-overviews`) Actor

$5 per 1,000 queries. Get Google's AI Overview for any search, country and language: full answer text, cited sources, and whether your domain is cited. Organic results and People also ask included. For SEO, GEO and AEO.

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

## Pricing

from $5.00 / 1,000 search queries

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/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 Overview Scraper & GEO Citation Tracker

Get the **AI Overview** Google shows at the top of the results for any search: the full answer text, its structure (headings, paragraphs, lists), and every source it cites, for any country and language. Optionally includes the first page of organic results and the "People also ask" questions, at no extra cost.

No Google account, API key or proxy setup needed. **$5 per 1,000 queries**, charged per query whether or not Google showed an AI Overview for it. Add your domains and each row says whether Google's AI cites you.

### What you can do with it

- **GEO / AEO tracking**: see whether your site is cited in the AI Overview for the queries that matter to you, and at which position.
- **Brand monitoring**: check what Google's AI says about your brand, products or competitors, in each market.
- **SEO research**: compare AI Overview sources with organic rankings, and find which queries trigger an AI Overview at all.
- **Content research**: collect the answers and sources Google's AI picks for a topic.

### Input

| Field | Example | What it does |
|---|---|---|
| Search queries | `best crm for small business` | One row per query. |
| Country | `US`, `BR`, `GB` | Google results for that country (gl), from that country's Google domain. |
| Language | `en`, `pt-BR` | Interface language (hl). |
| Domains to track | `hubspot.com` | Each row says whether each domain is cited in the AI Overview, at which positions, mentioned in the text, and where it ranks organically. |
| Include organic results | `true` | First page of organic results. |

```json
{
  "queries": ["best crm for small business", "how to lower cholesterol naturally"],
  "country": "US",
  "language": "en",
  "trackDomains": ["hubspot.com", "salesforce.com"]
}
```

### Output

One row per query:

```json
{
  "query": "how to lower cholesterol naturally",
  "country": "US",
  "language": "en",
  "hasAiOverview": true,
  "aiOverview": {
    "text": "To lower cholesterol naturally, focus on diet, exercise and habits. ...",
    "markdown": "To lower cholesterol naturally, ...\n\n### Diet\n\n- Eat more soluble fiber: oats, beans and apples.",
    "blocks": [
      { "type": "paragraph", "text": "To lower cholesterol naturally, ..." },
      { "type": "heading", "text": "Diet" },
      { "type": "list", "items": ["Eat more soluble fiber: oats, beans and apples."] }
    ],
    "sources": [
      { "position": 1, "title": "Top 5 lifestyle changes to improve your cholesterol", "url": "https://www.mayoclinic.org/...", "domain": "mayoclinic.org", "siteName": "Mayo Clinic", "snippet": null }
    ]
  },
  "trackedDomains": [
    { "domain": "mayoclinic.org", "citedInAiOverview": true, "aiOverviewPositions": [1], "mentionedInAiOverviewText": false, "organicPosition": 2 }
  ],
  "organicResults": [
    { "position": 1, "title": "Top 5 lifestyle changes to improve your cholesterol", "url": null, "link": "https://www.google.com/goto?url=...", "domain": "mayoclinic.org", "displayedUrl": "https://www.mayoclinic.org › ... › High cholesterol", "snippet": "1. Eat heart-healthy foods · Cut back on saturated fats..." }
  ],
  "relatedQuestions": ["What is the fastest way to lower cholesterol?"],
  "searchUrl": "https://www.google.com/search?q=how+to+lower+cholesterol+naturally&hl=en&gl=us&pws=0",
  "scrapedAt": "2026-11-02T12:00:00.000Z"
}
```

Cited sources come with their real destination URLs. For organic results Google now hides the destination behind a redirect, so `url` is often `null`; `domain` and `displayedUrl` still say which site it is, and `link` opens the result.

`aiOverview` is `null` when Google shows no AI Overview for the query (for example navigational searches like "facebook login"). Google decides per query, country and language, and the same query can show one today and not tomorrow.

### Pricing

**US$ 5 per 1,000 queries** (US$ 0.005 per query), charged once per query that returns a results page, with or without an AI Overview. Organic results, People also ask and domain tracking are included. Queries Google blocks after all retries are not charged. Set a maximum cost per run in the run options to cap spending.

### Tips

- Results pages are fetched through Apify's Google SERP proxy, so you don't need to set up any proxy.
- The AI Overview is personalised by country and language, so set both to match the market you care about.
- Schedule the Actor daily or weekly to track how answers and cited sources change.
- If something looks wrong, run once with **Save page snapshots** on and open an issue: the HTML in the key-value store shows exactly what Google returned.

### FAQ

**How do I check if my site is cited in Google AI Overviews?** Add your queries and your domain in **Domains to track**. Each row has `citedInAiOverview`, the citation positions and whether your brand is mentioned in the answer text.

**Is there a Google AI Overview API?** Google doesn't offer one. This Actor works as one: call it through the Apify API, schedule it, or connect it to Make, n8n, Zapier or an AI agent through the Apify MCP server.

**Which queries trigger an AI Overview?** Run your keyword list and filter by `hasAiOverview`. Queries without one cost the same, so you can map coverage across a whole keyword set.

**Does it work outside the US?** Yes. Set the country and language, for example `BR` + `pt-BR` or `DE` + `de`. AI Overviews vary a lot by market.

**Can I track changes over time?** Yes. Save the input as a task and schedule it daily or weekly. Each run is a dated dataset you can compare.

**What is GEO / AEO?** Generative Engine Optimization and Answer Engine Optimization: getting your content cited in AI-generated answers. This Actor measures it for Google's AI Overviews.

### Support

Open an issue on the Actor's Issues tab. Built by Datatrilha.

# Actor input Schema

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

What to search on Google, one query per line. Each query returns one result row, with or without an AI Overview.

## `country` (type: `string`):

Two-letter country code for Google's results (gl), for example US, BR, GB, DE.

## `language` (type: `string`):

Interface language (hl), for example en, pt-BR, es, de. AI Overviews are shown in this language when Google supports it.

## `trackDomains` (type: `array`):

Optional. Your own or competitors' domains, like hubspot.com. Each row then says whether, and at which position, each domain is cited in the AI Overview and ranks in the organic results.

## `includeOrganicResults` (type: `boolean`):

Also return the first page of organic results (title, URL, snippet, position). No extra charge.

## `maxRetriesPerQuery` (type: `integer`):

How many times to retry a query when Google's results page does not come back.

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

Saves each results page's HTML to the run's key-value store. Useful to report a problem.

## Actor input object example

```json
{
  "queries": [
    "how to lower cholesterol naturally",
    "best crm for small business"
  ],
  "country": "US",
  "language": "en",
  "includeOrganicResults": true,
  "maxRetriesPerQuery": 3,
  "saveHtml": false
}
```

# Actor output Schema

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

One row per query with every field.

## `overview` (type: `string`):

Answer text and sources in a table.

## `tracking` (type: `string`):

Where your tracked domains appear.

# 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 to lower cholesterol naturally",
        "best crm for small business"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("datatrilha/google-ai-overviews").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 to lower cholesterol naturally",
        "best crm for small business",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("datatrilha/google-ai-overviews").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 to lower cholesterol naturally",
    "best crm for small business"
  ]
}' |
apify call datatrilha/google-ai-overviews --silent --output-dataset

```

## MCP server setup

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

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/2cGL5vYWBccvvDUHU/builds/MuXEdKKxe9rlBQMpu/openapi.json
