# Google AI Overview Tracker: Brand Mentions & Citations (`zaiq/google-ai-overview-tracker`) Actor

Google's AI Overview for your keywords in 50 countries: the full answer (incl. Show more), every cited site with its real URL, and whether your brands are named or cited. $0.01 per AI Overview; keywords without one are free.

- **URL**: https://apify.com/zaiq/google-ai-overview-tracker.md
- **Developed by:** [Zaiq](https://apify.com/zaiq) (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 $8.00 / 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 Overview Tracker: Brand Mentions & Citations by Country

Read **Google's AI Overview** for your keywords, country by country, and see exactly what it says, **which sites it
cites**, and **whether it names your brand or cites your site**. Built for SEO, GEO and AEO teams who need to know how
Google's AI answers their buyers' searches in the US, the UK, Germany, India, South Africa or any of 50 countries.

**Pay only for AI Overviews found.** Keywords for which Google shows no AI Overview are free, and so are failed pages.

### What you get

For each keyword and country:

- **The whole AI Overview text**, including the part Google hides behind "Show more", as readable text with its lists.
- **Every cited source** in order: the real page URL (not Google's redirect link), domain and source name.
- **Your brands**: for each brand you track, whether the overview names it, its rank among your brands by first mention,
  whether your site is cited and at what position.
- Whether Google showed an AI Overview at all (`status`), the exact search used, and the time.

When the run finishes, the key-value store record `SUMMARY` gives:

- The **AI Overview rate** per country: how many of your keywords show one.
- Per brand, overall and per country: **mention rate**, **citation share**, average rank and cited position.
- The **most-cited sites** across your keywords, overall and per country.

### Who uses it

- **SEO and content teams**: which keywords trigger an AI Overview, which pages Google's AI cites, and where you are
  missing.
- **Brands and agencies tracking GEO / AEO**: share of voice in Google's AI answers next to your rivals, tracked weekly.
- **International teams**: the same keyword in the US, the UK, Australia, India or South Africa often cites different
  sites and names different brands.

### Example

Three keywords about small-business software, searched in the US, the UK and South Africa on 12 October 2026 (9
checks). Google showed an AI Overview for 7 of them: all three in the US, two of three in the UK and South Africa (the
2 without were free).

| Brand | Named in the AI Overviews | Its site cited |
|---|---|---|
| Zoho | 7 of 7 | 0 of 7 |
| HubSpot | 4 of 7 | 1 of 7 |
| Pipedrive | 4 of 7 | 0 of 7 |
| QuickBooks | 3 of 7 | 2 of 7 |
| Xero | 3 of 7 | 0 of 7 |

Zoho was named in every overview, for CRM and accounting searches alike, but its own site was never cited. The most-cited
site was a business association's guide, cited in 6 of the 7 overviews, ahead of YouTube (5 citations) and a tech
publication (4). In South Africa the accounting overview named Xero first; in the US and the UK it named QuickBooks first.

### Input

```json
{
  "keywords": ["best crm for small business", "best accounting software for small business"],
  "brands": ["HubSpot | hubspot.com", "Zoho | zoho.com", "QuickBooks | quickbooks.intuit.com"],
  "countries": ["US", "GB", "ZA"]
}
```

- `keywords`: searches or questions, one per line, as people type them into Google.
- `brands`: a name, a domain, or both as `Name | domain.com`. With a domain, citations are matched on the site.
- `countries`: each keyword is searched as a signed-out searcher on that country's Google (google.co.uk, google.de,
  google.co.za and so on).
- `language` (optional): the results language, e.g. `en`, `de`, `pt-BR`. Empty: each country's usual language.
- `maxConcurrency`: searches at the same time (default 5).

### Output

One row per keyword and country (text and lists shortened):

```json
{
  "keyword": "best crm for small business",
  "country": "US",
  "status": "ok",
  "aiOverview": "The best CRM for a small business depends on your specific goals, but HubSpot CRM is the top choice for beginners ...",
  "citations": [
    { "position": 1, "url": "https://slack.com/blog/crm/best-crm-for-small-business", "domain": "slack.com",
      "source": "Slack", "kind": "other" }
  ],
  "citedDomains": ["slack.com", "uschamber.com", "fayedigital.com", "youtube.com"],
  "brands": [
    { "brand": "HubSpot", "domain": "hubspot.com", "mentioned": true, "mentionRank": 1, "cited": false,
      "citedPosition": null }
  ],
  "mentionedBrands": ["HubSpot", "Pipedrive", "Zoho"],
  "anyBrandNamed": true,
  "anyBrandCited": false,
  "searchUrl": "https://www.google.com/search?q=best+crm+for+small+business&hl=en&gl=us&num=10&pws=0",
  "charged": true
}
```

`status` is one of:

- `ok`: AI Overview read (charged).
- `no-ai-overview`: Google showed none for that keyword (free).
- `ai-overview-loads-later`: Google left an empty overview box that it fills after the page has loaded, so there is
  nothing to read on the results page (free). This happens more outside English-language markets; check again later.
- `error`: the page failed after retries (free).

### Pricing

- **$0.01 per AI Overview read** ($10 per 1,000), with its citations and brand matches.
- **Free**: keywords without an AI Overview, and failed pages.
- Lower prices on Apify's Scale and Business plans (Store discounts). Plus Apify's standard run start fee of $0.00005.

### Use it from code, automations and AI agents

- **API**: `POST https://api.apify.com/v2/acts/zaiq~google-ai-overview-tracker/run-sync-get-dataset-items?token=YOUR_TOKEN`
  with the input as JSON returns the rows in one call. The API tab has Python, JavaScript and cURL examples.
- **Python** (`pip install apify-client`):

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_TOKEN")
run = client.actor("zaiq/google-ai-overview-tracker").call(run_input={
    "keywords": ["best crm for small business"],
    "brands": ["HubSpot | hubspot.com", "Zoho | zoho.com"],
    "countries": ["US", "GB"],
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["country"], item["status"], item["mentionedBrands"], item["citedDomains"])
```

- **No code**: schedule it weekly in Apify Console, send rows to Google Sheets, Zapier, Make or n8n from the
  Integrations tab, and get a webhook when a run finishes.
- **AI agents (MCP)**: `https://mcp.apify.com?tools=zaiq/google-ai-overview-tracker` adds it as a tool to Claude, Cursor
  or any MCP client.

### Tracking ChatGPT, Perplexity, Gemini, Claude and Grok too

To ask the same questions of the AI assistants as well as Google, use
[AI Visibility Tracker](https://apify.com/zaiq/ai-answer-tracker): one run covers ChatGPT's models, Perplexity, Gemini,
Claude, Grok and Google's AI Overview, with the newest model of each.

### FAQ

**Is this what people see on Google?** It is Google's own results page for the keyword, as a signed-out searcher in the
country you choose, with no personalisation. Signed-in users, other cities and other days can see different overviews.

**Why does a keyword have no AI Overview?** Google shows one for many searches but not all, and it changes by country,
language and day. Those keywords are free and marked `no-ai-overview`; check them again later. Some keywords get an
empty overview box that Google fills after the page loads (`ai-overview-loads-later`, also free).

**Does it work in other languages?** Yes. The overview is found by Google's own page structure, not by its English
heading, so German ("Übersicht mit KI"), French and other overviews are read the same way.

**Do you get the whole overview?** Yes: Google sends the rest of a long overview in the same page and shows it after
"Show more"; it is joined back in. Each citation's real address comes from Google's own data for that citation.

**Does it log in or solve captchas?** No. It reads public results pages through Apify's Google SERP proxy. A page that
fails is retried and, if it still fails, returned as `error` at no charge.

### Limits

- Up to 20 searches at a time; a search takes about 5-40 seconds.
- 50 countries with their own Google domain; set `language` for a different results language.

# Actor input Schema

## `keywords` (type: `array`):

Searches or questions, one per line, as people type them into Google.

## `brands` (type: `array`):

One per line: a brand name, a domain, or both as 'Name | domain.com'. Each AI Overview is checked for whether the brand is named and whether its site is cited.

## `countries` (type: `array`):

Each keyword is searched on Google as a signed-out searcher in each of these countries.

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

Language of Google's results, e.g. en, de, fr, pt-BR. Empty: each country's usual language (English for the US, UK, India, South Africa...).

## `maxConcurrency` (type: `integer`):

How many Google searches run at the same time.

## Actor input object example

```json
{
  "keywords": [
    "best crm for small business",
    "best project management software for small teams",
    "how to choose a crm"
  ],
  "brands": [
    "HubSpot | hubspot.com",
    "Zoho | zoho.com",
    "Pipedrive | pipedrive.com"
  ],
  "countries": [
    "US"
  ],
  "maxConcurrency": 5
}
```

# Actor output Schema

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

Dataset: one row per keyword x country.

## `summary` (type: `string`):

AI Overview rate per country, mention rate and citation share per brand, most-cited sites.

# 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 = {
    "keywords": [
        "best crm for small business",
        "best project management software for small teams",
        "how to choose a crm"
    ],
    "brands": [
        "HubSpot | hubspot.com",
        "Zoho | zoho.com",
        "Pipedrive | pipedrive.com"
    ],
    "countries": [
        "US"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("zaiq/google-ai-overview-tracker").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 = {
    "keywords": [
        "best crm for small business",
        "best project management software for small teams",
        "how to choose a crm",
    ],
    "brands": [
        "HubSpot | hubspot.com",
        "Zoho | zoho.com",
        "Pipedrive | pipedrive.com",
    ],
    "countries": ["US"],
}

# Run the Actor and wait for it to finish
run = client.actor("zaiq/google-ai-overview-tracker").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 '{
  "keywords": [
    "best crm for small business",
    "best project management software for small teams",
    "how to choose a crm"
  ],
  "brands": [
    "HubSpot | hubspot.com",
    "Zoho | zoho.com",
    "Pipedrive | pipedrive.com"
  ],
  "countries": [
    "US"
  ]
}' |
apify call zaiq/google-ai-overview-tracker --silent --output-dataset

```

## MCP server setup

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

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/UVz0J2fztaZDx9Gkf/builds/3uDOg5ntTaS9IQELb/openapi.json
