# AI Overviews Tracker — Brand Visibility in AI Answers (`khadinakbar/ai-overviews-tracker`) Actor

Track brand mention rate, sentiment & share of voice in AI-generated overviews. Perplexity, ChatGPT, Claude & Gemini. GEO & brand monitoring audit. MCP/API-ready.

- **URL**: https://apify.com/khadinakbar/ai-overviews-tracker.md
- **Developed by:** [Khadin Akbar](https://apify.com/khadinakbar) (community)
- **Categories:** SEO tools, AI, Agents
- **Stats:** 5 total users, 3 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$90.00 / 1,000 keyword × query × platform checks

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

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

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## AI Overviews Tracker — Brand Visibility in AI Answers

AI Overviews Tracker is an Apify Actor for marketers, SEO and GEO teams, brand managers, and AI agents that want to track a brand in AI-generated overviews. It accepts a brand name and commercial keywords, then returns one record per keyword x query x platform check. Each record includes whether the brand was mentioned, where it first appeared, whether it was recommended, the nearby sentiment, share of voice versus competitors, cited sources, and a response excerpt. This Actor is usable through Apify MCP and through the Apify API.

### Best fit and connected workflows

This Actor fits workflows centered on commercial-intent AI visibility:

- GEO and brand monitoring audits for category keywords where AI overviews surface product recommendations.
- Competitive tracking across Perplexity, ChatGPT, Claude, and Gemini.
- Brand presence reviews for queries such as "suitable CRM for small business", "email marketing software", or "project management tools".
- Agent-driven reporting pipelines that read dataset rows and summarize visibility by platform, keyword, and template.

If your workflow starts from a brand name and a list of purchase-intent keywords, this Actor turns that input into structured checks at the query level.

### Focused standalone workflow

This Actor is designed as a focused standalone workflow.

### Practical scenario

A product marketer at a SaaS company wants to check whether the company appears in AI overviews for "payment processing software" and "payment API for developers". They enter the brand name, choose a few commercial keywords, and run the Actor on Perplexity, ChatGPT, and Gemini.

The returned records show the platform, keyword, query template, whether an overview was triggered, whether the brand was mentioned, the first sentence position, recommendation status, sentiment, share of voice, and cited sources. The marketer reviews a record where the brand appears in sentence 2 with neutral sentiment and moderate share of voice, then uses that result to decide which category terms deserve a deeper review.

### Input fields

| Field | Type | Required | Purpose |
|---|---|---:|---|
| `brandName` | string | Yes | Brand, product, or company name to track in AI-generated overviews. |
| `keywords` | array of strings | Yes | Commercial keywords to query across AI platforms. Supports up to 20 keywords per run. |
| `competitors` | array of strings | No | Competitor brand names for comparison and share-of-voice analysis. |
| `platforms` | array of strings | No | AI platforms to query. Default: `perplexity`, `chatgpt`, `gemini`. |
| `queryTemplates` | array of strings | No | Query template categories such as `best_of`, `comparison`, and `how_to_choose`. |
| `customQueries` | array of strings | No | Extra custom questions that run in addition to query templates. |
| `maxQueriesPerKeyword` | integer | No | Maximum distinct queries per keyword across templates. Default: 3. |
| `responseFormat` | string | No | `concise` or `detailed`; controls excerpt length only. |
| `webhookUrl` | string | No | HTTPS endpoint that receives the run summary when the execution completes. |
| `demoMode` | boolean | No | Health-check mode that exits without making AI API calls. |

#### Focused input example

```json
{
  "brandName": "HubSpot",
  "keywords": [
    "CRM for small business",
    "email marketing software"
  ],
  "competitors": [
    "Salesforce",
    "Pipedrive"
  ],
  "platforms": [
    "perplexity",
    "chatgpt",
    "gemini"
  ],
  "queryTemplates": [
    "best_of",
    "comparison",
    "how_to_choose"
  ],
  "maxQueriesPerKeyword": 2,
  "responseFormat": "detailed"
}
```

### Output fields

Each dataset item represents one keyword x query x platform check.

| Field | Type | Meaning |
|---|---|---|
| `run_id` | string | Apify execution reference grouping results from the same run. |
| `platform` | string | AI platform queried: `perplexity`, `chatgpt`, `claude`, or `gemini`. |
| `keyword` | string | Commercial keyword submitted to the platform. |
| `query` | string | Full query text sent to the AI platform. |
| `query_template` | string | Template used to generate the query. |
| `brand_name` | string | Brand or product name being tracked. |
| `overview_triggered` | boolean | Whether the AI returned a rich informational overview. |
| `overview_type` | string | `comparison`, `recommendation`, `explanation`, or `none`. |
| `overview_word_count` | integer | Word count of the AI response for that query. |
| `brand_mentioned` | boolean | Whether the brand appeared in the overview response. |
| `brand_position` | integer or null | Sentence number where the brand first appears. |
| `brand_recommendation` | string | `recommended`, `mentioned`, or `not_mentioned`. |
| `brand_sentiment` | string or null | `positive`, `neutral`, or `negative`. |
| `brand_context` | string or null | 1-2 sentences around the brand mention. |
| `competitor_appearances` | array | Per-competitor mention and context details. |
| `share_of_voice` | number | Brand share of all brand+competitor mentions in the overview. |
| `cited_sources` | array | URLs cited by the AI platform. |
| `total_sources` | integer | Number of source URLs cited. |
| `overview_excerpt` | string | First 300-550 characters of the AI response. |
| `model_used` | string | Exact AI model or provider route used for the check. |
| `checked_at` | string | ISO 8601 timestamp of the check. |

#### Illustrative output record

```json
{
  "run_id": "run_123",
  "platform": "perplexity",
  "keyword": "CRM for small business",
  "query": "What are the suitable CRM for small business solutions available?",
  "query_template": "best_of",
  "brand_name": "HubSpot",
  "overview_triggered": true,
  "overview_type": "recommendation",
  "overview_word_count": 184,
  "brand_mentioned": true,
  "brand_position": 2,
  "brand_recommendation": "recommended",
  "brand_sentiment": "positive",
  "brand_context": "The response highlighted HubSpot as a strong option for small teams. It also compared it with several other CRM tools.",
  "competitor_appearances": [],
  "share_of_voice": 1,
  "cited_sources": [
    "https://example.com/source-1"
  ],
  "total_sources": 1,
  "overview_excerpt": "HubSpot is often presented as a strong choice for small businesses seeking a CRM with marketing automation and sales tooling...",
  "model_used": "perplexity/sonar",
  "checked_at": "2026-01-01T12:00:00.000Z"
}
```

### How it works

This Actor uses the supplied brand name, keywords, selected platforms, and query templates to generate commercial-intent AI overview checks.

Implementation facts visible in the contract:

1. It supports Perplexity, ChatGPT, Claude, and Gemini, with Perplexity, ChatGPT, and Gemini selected by default.
2. It generates queries from built-in templates such as `best_of`, `comparison`, `how_to_choose`, `buyer_intent`, `feature_query`, and `versus`, plus any `customQueries`.
3. It records one dataset item per keyword x query x platform combination.
4. It detects whether an overview was triggered, classifies the overview type, and tracks brand mention, sentence position, recommendation status, sentiment, and share of voice.
5. It stores cited sources, a response excerpt, the model or provider route used, and the check timestamp.
6. It can send a completion webhook with the run summary, and it stores a run summary in the key-value store under `LAST_RUN_SUMMARY`.

The dataset view is titled "AI Overview Brand Visibility" and surfaces the most practical fields for review: platform, keyword, template, overview presence, type, brand found status, position, recommendation status, sentiment, share of voice, total sources, and checked time.

### Pricing

This Actor uses Pay per event pricing plus standard Apify platform usage.

The charged events in the live contract are:

- `apify-actor-start`
- `overview-keyword-checked`

The `overview-keyword-checked` event is billed for one keyword x one query x one AI platform queried. Apify platform usage is billed separately for compute. For current pricing details and the live Pricing tab, check the Actor page in Apify.

Example in words: if you run five keywords across three queries on four platforms, that is sixty overview checks plus one actor start event, and the total combines event charges with Apify platform usage.

### Use with AI agents (MCP)

This Actor is an Apify Actor usable through Apify MCP. Its exact identity is `khadinakbar/ai-overviews-tracker`.

Tool description: submit a brand name, commercial keywords, and optional competitor, platform, query template, and webhook settings, then receive structured per-check records that agents can read for visibility analysis, reporting, and workflow branching.

> Use `khadinakbar/ai-overviews-tracker` for brand visibility analysis. Track the brand name "HubSpot" across the keywords "CRM for small business" and "email marketing software", include competitors such as "Salesforce" and "Pipedrive", and query Perplexity, ChatGPT, and Gemini. Return the dataset rows and summarize which queries triggered overviews, where HubSpot appeared, and how share of voice differs by platform.

Output interpretation:

- `brand_mentioned` and `brand_position` show whether the brand appears and where it first appears in the overview.
- `brand_recommendation` distinguishes explicit recommendation language from plain mention.
- `brand_sentiment` captures nearby tone.
- `share_of_voice` shows the brand's portion of brand-plus-competitor mentions in that overview.
- `cited_sources` and `total_sources` preserve provenance for the platform response.
- `overview_excerpt` provides a compact response sample for review.

Scope, pagination, and cost guidance:

- Each dataset row represents one keyword x query x platform check.
- Larger input sets produce more dataset rows because queries expand across keywords and platforms.
- `responseFormat` changes excerpt length only, which helps tune review depth and storage size.
- `demoMode` supports integration checks and workflow validation before a live run.

### Apify API example

```javascript
import { ApifyClient } from "apify-client";

const client = new ApifyClient({
  token: process.env.APIFY_TOKEN,
});

const input = {
  brandName: "HubSpot",
  keywords: ["CRM for small business", "email marketing software"],
  competitors: ["Salesforce", "Pipedrive"],
  platforms: ["perplexity", "chatgpt", "gemini"],
  maxQueriesPerKeyword: 2,
  responseFormat: "detailed",
};

const run = await client.actor("khadinakbar/ai-overviews-tracker").call(input);

const { items } = await client.dataset(run.defaultDatasetId).listItems();

console.log("Run ID:", run.id);
console.log("Dataset items:", items);
```

### Best results and outcome guidance

Use a brand name that matches how people and AI systems refer to the product in sentences. Pair it with commercial keywords that signal buying intent, such as category searches, comparison searches, and selection searches.

Helpful routing patterns:

- Use `best_of` for category discovery.
- Use `comparison` when you want competitive framing.
- Use `how_to_choose` for selection criteria coverage.
- Add `versus` when comparing your brand with alternatives.
- Increase `maxQueriesPerKeyword` when you want broader coverage across template types.
- Use `demoMode` for integration checks and workflow validation.

For cleaner review, start with a short keyword set and a narrow platform set, then expand once you see which categories produce the most useful overviews.

### Design note

I found that the dataset contract centers each record on a single keyword x query x platform check, which makes the output easy to aggregate by platform, keyword, or template.

### FAQ

#### Which inputs matter most for a first run?

`brandName` and `keywords` are required. A focused first run usually adds one or two platforms and a small set of query templates.

#### How is this different from domain citation tracking?

This Actor tracks brand visibility in commercial AI overview boxes. Domain citation tracking focuses on whether a URL is cited as a source.

#### Can I compare my brand with competitors?

Yes. Add competitor brand names in `competitors` and the Actor will capture mention, position, recommendation status, sentiment, and share of voice for each one.

#### Which platforms are available?

The live contract includes Perplexity, ChatGPT, Claude, and Gemini. Perplexity, ChatGPT, and Gemini are selected by default.

#### When should I use `customQueries`?

Use `customQueries` when you want exact wording across all platforms, or when you want to add a question that complements the built-in query templates.

### Responsible use

Use this Actor for legitimate brand monitoring, competitive intelligence, and workflow automation. The results reflect AI-generated content at the time of the run and may vary across subsequent runs. Review the terms and policies for each AI provider used in the run.

# Actor input Schema

## `brandName` (type: `string`):

Your brand, product, or company name to track in AI-generated overviews. The actor detects mentions, recommendation phrases, and sentiment for this exact name. Example: 'HubSpot', 'Notion', 'Figma', 'Stripe'. NOT a domain name (use ai-search-visibility-tracker for domain citation tracking) — this field expects the brand name humans and AI would use in sentences.

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

Purchase-intent or commercial keywords to submit to AI platforms as overview queries. Each keyword generates queries like 'best \[keyword] tools' or 'how to choose \[keyword]'. Example: \['best CRM for small business', 'email marketing software', 'project management tools']. NOT brand names — enter the product category or use case your brand serves. Supports up to 20 keywords per run.

## `competitors` (type: `array`):

Competitor brand names to compare against your brand in AI overviews. The actor tracks whether each competitor is mentioned, recommended, and at what position — and computes share of voice (your brand's mentions vs total brand+competitor mentions). Example: \['Salesforce', 'Pipedrive', 'Monday.com']. NOT domains — enter brand names as they appear in sentences. Leave empty to skip competitor comparison.

## `platforms` (type: `array`):

Which AI platforms to check for brand visibility in overviews. Valid values: 'perplexity' (Sonar with real-time citations), 'chatgpt' (OpenAI web search), 'claude' (Claude Sonnet with web\_search tool), 'gemini' (Gemini 2.5 Flash with Google Search grounding). Defaults to Perplexity, ChatGPT, and Gemini. Add 'claude' explicitly for deep audits.

## `queryTemplates` (type: `array`):

Built-in purchase-intent query templates to generate for each keyword. Options: 'best\_of' (best \[keyword] solutions in 2026), 'comparison' (how do leading \[keyword] platforms compare), 'how\_to\_choose' (how to select the right \[keyword] for your business), 'buyer\_intent' (what \[keyword] do most companies use), 'feature\_query' (what features matter in a good \[keyword]), 'versus' (your brand vs alternatives for \[keyword] — requires brandName). Defaults to best\_of, comparison, how\_to\_choose.

## `customQueries` (type: `array`):

Specific questions to submit verbatim to all AI platforms for every keyword. Supports {keyword} and {brand} placeholders (e.g., 'What do industry analysts say about {brand} for {keyword}?'). These run in addition to queryTemplates. Example: 'What are the most recommended {keyword} tools for enterprise use?'. NOT URLs — provide full question strings in plain English.

## `maxQueriesPerKeyword` (type: `integer`):

Maximum number of distinct queries to run per keyword across all templates. Each query × platform = one check billed at $0.096. Default is 3 queries/keyword — covers best\_of + comparison + how\_to\_choose at one query each. Set to 5–6 for deeper coverage including buyer\_intent and feature\_query. Lower to 1–2 for fast overview spot-checks.

## `responseFormat` (type: `string`):

Controls the length of the overview\_excerpt field stored per result. 'concise' stores the first 300 characters of the AI response — faster to review and lower storage. 'detailed' stores the first 550 characters — better for reading the full brand context and competitor mentions. Does not affect what is tracked or scored — only the excerpt length.

## `webhookUrl` (type: `string`):

An HTTPS endpoint that receives a POST request when the run completes. Payload is the full run summary JSON including brand\_visibility\_score, overview\_presence\_score, competitor\_threats, share\_of\_voice map, keyword\_scores, and recommendations. Compatible with Make.com, Zapier, n8n, Slack incoming webhooks, and any HTTP endpoint that accepts JSON.

## `demoMode` (type: `boolean`):

Set to true to verify the actor is functional without making any AI API calls and without consuming credits. The actor exits immediately with a success message. Use for integration testing, scheduling health checks, or MCP tool validation in CI pipelines. Set to false (default) for real brand visibility tracking runs.

## Actor input object example

```json
{
  "brandName": "HubSpot",
  "platforms": [
    "perplexity",
    "chatgpt",
    "gemini"
  ],
  "queryTemplates": [
    "best_of",
    "comparison",
    "how_to_choose"
  ],
  "maxQueriesPerKeyword": 3,
  "responseFormat": "detailed",
  "demoMode": false
}
```

# Actor output Schema

## `outcome` (type: `string`):

Terminal outcome and compact result counts.

## `runSummary` (type: `string`):

Full summary with attempted, successful, and failed checks.

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

One record per keyword, query, and platform combination.

# 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 = {
    "brandName": "HubSpot"
};

// Run the Actor and wait for it to finish
const run = await client.actor("khadinakbar/ai-overviews-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 = { "brandName": "HubSpot" }

# Run the Actor and wait for it to finish
run = client.actor("khadinakbar/ai-overviews-tracker").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 '{
  "brandName": "HubSpot"
}' |
apify call khadinakbar/ai-overviews-tracker --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/YCgzf38U3nKnK2yrl/builds/8Aejytp3nyGdK5MVQ/openapi.json
