# AI Visibility Tracker: ChatGPT, Perplexity & AI Overviews (`zaiq/ai-answer-tracker`) Actor

Track whether ChatGPT, Perplexity, Gemini, Claude, Grok and Google's AI Overview name and cite your brand, by country. Newest models every run. Answers, cited sources, mention rate and citation share. $0.10 per answer; no-overview questions free.

- **URL**: https://apify.com/zaiq/ai-answer-tracker.md
- **Developed by:** [Zaiq](https://apify.com/zaiq) (community)
- **Categories:** AI, SEO tools
- **Stats:** 7 total users, 6 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $80.00 / 1,000 ai answers

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

## AI Visibility Tracker: ChatGPT, Perplexity, Gemini, Claude, Grok & Google AI Overviews

See what AI assistants and Google's AI Overview answer when your buyers ask a question, which websites they cite, and
whether your brand is named or cited, by country. One run asks the same questions of **ChatGPT's models (OpenAI GPT),
Perplexity, Google Gemini, Anthropic Claude and xAI Grok**, each through its official API with live web search, and
reads **Google's AI Overview** for the same question from Google's own results page. You get every answer, every cited
source, and a per-brand **mention rate** and **citation share** for GEO / AEO tracking.

**Always the newest models.** Each run uses each company's newest model at that moment, so your tracking follows what
people actually get: on 12 October 2026 that was GPT-6.1 Sol, Perplexity Sonar Pro Search, Gemini 3.8 Flash, Claude
Sonnet 5.5 and Grok 4.7. You can pin a model under Advanced if you want a fixed one.

### What it does

For every question, engine and run, it returns:

- The full answer text (for Google, the whole AI Overview, including the part behind "Show more").
- Every source the answer cites, in order (position, URL, domain), with redirect links resolved to the real pages.
- For each brand you track: whether the answer names it, its rank among your brands by first mention, whether its site
  is cited, and at what position.
- The model that answered, the country used for the search, the time, and the AI cost of that answer.

When the run finishes, the key-value store record `SUMMARY` gives, per brand, overall and per engine:

- **Mention rate**: share of answers that name the brand.
- **Citation share**: share of answers that cite the brand's site.
- **Average mention rank** and **average cited position**.
- The **most-cited sites** overall and per engine, and the **source mix** (Reddit, Wikipedia, YouTube, marketplaces).

### Who uses it

- **Brands and agencies tracking GEO / AEO**: are we recommended when buyers ask AI assistants or see Google's AI
  Overview, and who is recommended instead?
- **SEO teams**: which pages Google's AI Overview and the assistants cite, so you know where to be mentioned.
- **Local markets**: the same question asked as a searcher in the US, the UK, Germany, India, South Africa or anywhere
  else.

### Example

Two questions buyers ask about project management software, asked as a searcher in the US of all six engines, one run
each, 12 October 2026. 11 answers: Google showed an AI Overview for one of the two questions (the other was free).

| Brand | Named in the answer | Its site cited | Average rank when named |
|---|---|---|---|
| ClickUp | 11 of 11 | 5 of 11 | 2.1 |
| Asana | 11 of 11 | 5 of 11 | 2.2 |
| Trello | 11 of 11 | 6 of 11 | 2.7 |
| monday.com | 9 of 11 | 4 of 11 | 2.8 |
| Notion | 5 of 11 | 0 of 11 | 5.0 |

The engines disagree on who comes first: ChatGPT named Asana first in both answers, Perplexity and Google's AI Overview
led with ClickUp, Claude with monday.com. The most-cited site was none of the five: another vendor's "best tools"
blog posts were cited 21 times (mostly by Grok and Perplexity), more than any of the five products' own sites. Notion
was named in under half the answers and never cited.

### Input

```json
{
  "prompts": ["What is the best project management software for a small team?"],
  "brands": ["Asana | asana.com", "Trello | trello.com", "monday.com"],
  "engines": ["openai", "perplexity", "gemini", "claude", "grok", "google-ai-overview"],
  "country": "US",
  "runsPerPrompt": 3
}
```

- `prompts`: the questions, one per line, as buyers would type them into an assistant or Google.
- `brands`: a name, a domain, or both as `Name | domain.com`. With a domain, citations are matched on the site; with
  only a name, on the name in the address.
- `engines`: any of `openai` (ChatGPT's models), `perplexity`, `gemini`, `claude`, `grok`, `google-ai-overview`.
- `country`: ChatGPT, Perplexity, Claude and Grok search as from that country, and Google's AI Overview is read from
  that country's Google. Gemini's API takes no location. `language` sets Google's results language (optional).
- `runsPerPrompt`: assistants' answers change from run to run; use 3 or more for a stable rate. Google's AI Overview is
  read once per question.
- Advanced: a fixed model for any engine (an OpenRouter model id), answer length and concurrency.

### Output

One row per question, engine and run (answer text and citations shortened):

```json
{
  "prompt": "best project management tool for small business",
  "engine": "google-ai-overview",
  "model": "google-ai-overview",
  "run": 1,
  "country": "US",
  "channel": "serp",
  "status": "ok",
  "answer": "...",
  "citations": [{ "position": 1, "url": "https://clickup.com/...", "domain": "clickup.com", "source": "ClickUp",
                  "kind": "other" }],
  "citedDomains": ["clickup.com", "..."],
  "brands": [{ "brand": "ClickUp", "domain": "clickup.com", "mentioned": true, "mentionRank": 1,
               "cited": true, "citedPosition": 1 }],
  "mentionedBrands": ["ClickUp", "monday.com", "Asana", "Trello"],
  "aiCostUsd": null,
  "charged": true
}
```

`status` is `ok` (answer with sources), `zero-cite` (answer without sources, still data), `no-ai-overview` (Google
showed none for that question, free) or `error` (free).

### Pricing

- **$0.10 per AI answer analysed**: one engine's answer to one question, with its citations and brand matches.
- **Free**: failed calls, and questions for which Google shows no AI Overview.
- **AI usage** for the assistants is billed to your Apify account by Apify's own OpenRouter gateway, at OpenRouter's
  rates for paying Apify plans (Apify charges free-plan accounts more for it). Google's AI Overview has no AI usage.
  Measured per answer on 12 October 2026 with the newest models: Gemini 3.8 Flash about $0.007, Perplexity Sonar Pro
  Search about $0.026, Claude Sonnet 5.5 about $0.048, GPT-6.1 Sol about $0.085, Grok 4.7 $0.15-0.23 (it reads 60 or
  more pages per answer).
- Plus Apify's standard run start fee of $0.00005. Your spending limit for the run is respected.

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

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

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_TOKEN")
run = client.actor("zaiq/ai-answer-tracker").call(run_input={
    "prompts": ["What is the best project management software for a small team?"],
    "brands": ["Asana | asana.com", "Trello | trello.com"],
    "engines": ["openai", "perplexity", "google-ai-overview"],
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["engine"], item["mentionedBrands"])
```

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

### FAQ

**Is this what people see in the ChatGPT, Gemini, Claude or Grok apps?** These are the vendors' official APIs with web
search: the same models and search the vendors offer to developers. The consumer apps can differ (memory,
personalisation, their own interface). This Actor does not log in to or scrape any AI app. Google's AI Overview is read
from Google's public results page, as a signed-out searcher in the country you choose.

**Why do answers change between runs?** AI answers are sampled. One run is a sample, not a verdict: track the same
questions weekly with 3 or more runs and watch the mention rate.

**Does every question get a Google AI Overview?** No. Google shows one for many questions but not all, and it varies
by country and day. Questions without one are free and are marked `no-ai-overview`.

**Which model does each engine use?** The newest in the company's main family at the time of the run (ChatGPT: GPT Sol;
Gemini: Flash; Claude: Sonnet; Grok: the newest Grok; Perplexity: Sonar Pro Search). Each row records the exact model.

**Does it invent citations?** No. What the engine returned is what you get; an answer that cites nothing is recorded as
`zero-cite`.

### Limits

- Up to 10 runs per question and 10 answers at a time.
- Grok's answers take about a minute each; the others 5-25 seconds.
- Google's AI Overview is read in the country's usual language unless you set `language`.

# Actor input Schema

## `prompts` (type: `array`):

Questions your buyers ask, one per line, as they would type them into an AI assistant or Google.

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

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

## `engines` (type: `array`):

Each AI assistant answers through its official API with live web search, using the company's newest model unless you name one under Advanced. Google AI Overview is read from Google's own results page for the question in your country; questions without an overview are free.

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

The searcher's country (two-letter code). ChatGPT, Perplexity, Claude and Grok search as from there and Google's AI Overview is read from that country's Google; Gemini does not take a location.

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

Language of Google's results page, e.g. en, de, fr, pt-BR. Empty: the country's usual language.

## `runsPerPrompt` (type: `integer`):

AI answers vary from run to run. Use 3 or more for a stable mention rate; 1 for a quick look.

## `openaiModel` (type: `string`):

OpenRouter model id. Empty: the newest in the family at run time (on 12 Oct 2026: openai/gpt-6.1-sol).

## `perplexityModel` (type: `string`):

OpenRouter model id. Empty: the newest in the family at run time (on 12 Oct 2026: perplexity/sonar-pro-search).

## `geminiModel` (type: `string`):

OpenRouter model id. Empty: the newest in the family at run time (on 12 Oct 2026: google/gemini-3.8-flash).

## `claudeModel` (type: `string`):

OpenRouter model id. Empty: the newest in the family at run time (on 12 Oct 2026: anthropic/claude-sonnet-5.5).

## `grokModel` (type: `string`):

OpenRouter model id. Empty: the newest in the family at run time (on 12 Oct 2026: x-ai/grok-4.7).

## `maxAnswerTokens` (type: `integer`):

Searching uses part of this budget; below about 1,500 some engines return empty answers.

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

How many answers are requested at the same time.

## Actor input object example

```json
{
  "prompts": [
    "What is the best project management software for a small team?"
  ],
  "brands": [
    "Asana | asana.com",
    "Trello | trello.com",
    "monday.com"
  ],
  "engines": [
    "openai",
    "perplexity",
    "google-ai-overview"
  ],
  "country": "US",
  "runsPerPrompt": 1,
  "maxAnswerTokens": 2000,
  "maxConcurrency": 4
}
```

# Actor output Schema

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

Dataset: one row per question x engine x run.

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

Mention rate, citation share, average position per brand and engine; most-cited sites; source mix.

# 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 = {
    "prompts": [
        "What is the best project management software for a small team?"
    ],
    "brands": [
        "Asana | asana.com",
        "Trello | trello.com",
        "monday.com"
    ],
    "engines": [
        "openai",
        "perplexity",
        "google-ai-overview"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("zaiq/ai-answer-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 = {
    "prompts": ["What is the best project management software for a small team?"],
    "brands": [
        "Asana | asana.com",
        "Trello | trello.com",
        "monday.com",
    ],
    "engines": [
        "openai",
        "perplexity",
        "google-ai-overview",
    ],
}

# Run the Actor and wait for it to finish
run = client.actor("zaiq/ai-answer-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 '{
  "prompts": [
    "What is the best project management software for a small team?"
  ],
  "brands": [
    "Asana | asana.com",
    "Trello | trello.com",
    "monday.com"
  ],
  "engines": [
    "openai",
    "perplexity",
    "google-ai-overview"
  ]
}' |
apify call zaiq/ai-answer-tracker --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,zaiq/ai-answer-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/O9P8PRPFYME39hQkU/builds/Z6C8fxiVsLdRCalSk/openapi.json
