# Brand Visibility Tracker - ChatGPT, Claude, Gemini & Perplexity (`seemuapps/chatgpt-brand-visibility-tracker`) Actor

See if ChatGPT, Claude, Gemini, Perplexity and Google's answer boxes mention or cite your brand for any prompt, with competitor share of voice and sources.

- **URL**: https://apify.com/seemuapps/chatgpt-brand-visibility-tracker.md
- **Developed by:** [Seemu Scraping](https://apify.com/seemuapps) (community)
- **Stats:** 2 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $45.00 / 1,000 answer 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/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

## Brand Visibility Tracker - ChatGPT, Claude, Gemini & Perplexity

Find out whether ChatGPT, Claude, Gemini, Perplexity and Google's answer boxes recommend your brand when people ask about your category. For every question you enter, you see whether your brand is mentioned, where it comes in the answer compared with competitors, and whether your website is cited as a source. Schedule it daily or weekly to track your answer-engine visibility over time, with no subscription.

### What you get

One row per prompt per answer engine with:

- **mentioned**, **mentionCount** and **mentionPosition**: whether your brand appears in the answer, how often, and its rank among the brands you track (1 = mentioned first)
- **cited** and **citedUrls**: whether the answer links to or cites your website
- **mentionContext**: the sentence where your brand is mentioned
- **brandsMentionedInOrder**: you and your competitors in the order the answer names them
- **competitors**: mentioned, position and cited for each competitor
- **sources** and **sourceDomains**: every page the answer cites, so you can see which sites shape the answer
- **fanOutQueries**: the web searches the engine ran to build its answer (ChatGPT, Perplexity)
- **change**, **previousMentioned** and **previousCited**: comparison with your previous run (gained, lost, unchanged)
- **answerText**: the full answer in markdown (optional)
- **answerMethod**: `app` (captured from the ChatGPT or Gemini app), `model` (asked directly; also used for ChatGPT if the app capture is unavailable) or `search` (Google)

A **SUMMARY** record in the key-value store adds the mention and citation rate per engine, share of voice for every brand and the most-cited domains.

Engines covered:

- **ChatGPT**: answers captured from the ChatGPT app, with its web sources
- **Claude**: answers from Claude Sonnet using its own knowledge (no web search, so no sources)
- **Gemini**: answers captured from the Gemini app
- **Perplexity**: Sonar answers with citations
- **Google AI Overview**: the summary at the top of Google results
- **Google AI Mode**: Google's conversational search answer

### Use cases

- **Answer-engine visibility tracking**: measure how often ChatGPT and Google recommend you for your key buying questions
- **Competitor share of voice**: see which competitors are named first and most often
- **Content and PR strategy**: find the sources the engines cite and get your brand onto those pages
- **Client reporting**: export visibility per prompt and engine to Google Sheets every week
- **Launch monitoring**: check when a new product starts appearing in answers

### How to use

1. Enter your **Prompts**: the questions your customers ask, e.g. "best CRM for small business".
2. Enter your **Brand name** and, optionally, your **Brand website** to detect citations.
3. Optional: add **Other brand spellings** and up to 20 **Competitors** (`Name`, `domain.com` or `Name|domain.com`).
4. Pick the **Answer engines** and a **Country & language**.
5. Run the actor, or schedule it. Each run compares results with your previous run of the same prompt and engine.

### Output example

```json
{
  "prompt": "best web scraping tools for developers",
  "engine": "chatgpt",
  "engineName": "ChatGPT",
  "brand": "Apify",
  "mentioned": true,
  "mentionCount": 4,
  "mentionPosition": 2,
  "cited": true,
  "citedUrls": ["https://apify.com/"],
  "brandsMentionedInOrder": ["Firecrawl", "Apify", "Bright Data"],
  "competitors": [
    { "name": "Firecrawl", "domain": "firecrawl.dev", "mentioned": true, "mentionCount": 5, "position": 1, "cited": true },
    { "name": "Bright Data", "domain": "brightdata.com", "mentioned": true, "mentionCount": 3, "position": 3, "cited": true }
  ],
  "sourceDomains": ["playwright.dev", "scrapy.org", "firecrawl.dev", "apify.com"],
  "change": "first-check",
  "location": "United States",
  "checkedAt": "2026-10-08T22:44:12.000Z"
}
```

### Pricing

Pay per event, no subscription:

- **Answer check**: charged per prompt per engine for ChatGPT, Gemini, Perplexity, Google AI Overview and Google AI Mode.
- **Claude check**: charged per prompt on Claude.

See the **Pricing** tab for current prices. Failed checks are not charged.

### Free plan limits

Free Apify plans can check 2 prompts per run, 3 runs per day, with 30 minutes between runs. Upgrade to any paid Apify plan to remove these limits.

### FAQ

**Are the answers live?** Yes. Every prompt is asked at run time. Answers change from one run to the next, so tracking over several days gives a more reliable picture than a single check.

**How is a mention detected?** Your brand name, any extra spellings and your domain are matched as whole words, ignoring case. Link targets are ignored, so a cited URL alone doesn't count as a mention; it counts as a citation.

**Why does Google AI Overview show `answerShown: false`?** Google doesn't show an AI Overview for every search. The check still ran, so it is still charged.

**How long does a run take?** Each answer takes about 5 to 15 seconds, so 10 prompts across all 5 engines take around 10 to 15 minutes.

# Actor input Schema

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

Questions your customers would ask, one per line (up to 500). Each prompt is asked on every engine you pick.

## `brand` (type: `string`):

Your brand as people write it, e.g. Apify. Matched as a whole word, case-insensitive.

## `brandDomain` (type: `string`):

Optional: your domain, e.g. apify.com. Used to detect when an answer cites or links to your site.

## `brandAliases` (type: `array`):

Optional: product names or alternative spellings that should also count as a mention of your brand.

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

Optional: up to 20 competitors to compare against. Enter a name (Firecrawl), a domain (firecrawl.dev) or both as 'Name|domain' (Bright Data|brightdata.com).

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

Where to ask each prompt. ChatGPT and Gemini answers are captured from the consumer apps, Claude answers from its own knowledge, Perplexity with web search, and Google AI Overview and AI Mode from live Google results.

## `market` (type: `string`):

Country and language the questions are asked from. Perplexity answers aren't location-specific.

## `includeAnswerText` (type: `boolean`):

Save the complete answer (markdown) in each record. Turn off for smaller exports.

## Actor input object example

```json
{
  "prompts": [
    "best web scraping tools for developers"
  ],
  "brand": "Apify",
  "brandDomain": "apify.com",
  "competitors": [
    "Firecrawl|firecrawl.dev",
    "Bright Data|brightdata.com"
  ],
  "engines": [
    "chatgpt",
    "claude",
    "gemini",
    "perplexity",
    "google_ai_overview",
    "google_ai_mode"
  ],
  "market": "2840:en",
  "includeAnswerText": true
}
```

# Actor output Schema

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

One record per prompt per engine: mentioned, mentionPosition, cited, citedUrls, mentionContext, competitors, sources, change vs last run, answerText.

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

SUMMARY record in the default key-value store: mention and citation rate per engine, share of voice and the most-cited domains.

# 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": [
        "best web scraping tools for developers"
    ],
    "brand": "Apify",
    "brandDomain": "apify.com",
    "competitors": [
        "Firecrawl|firecrawl.dev",
        "Bright Data|brightdata.com"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("seemuapps/chatgpt-brand-visibility-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": ["best web scraping tools for developers"],
    "brand": "Apify",
    "brandDomain": "apify.com",
    "competitors": [
        "Firecrawl|firecrawl.dev",
        "Bright Data|brightdata.com",
    ],
}

# Run the Actor and wait for it to finish
run = client.actor("seemuapps/chatgpt-brand-visibility-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": [
    "best web scraping tools for developers"
  ],
  "brand": "Apify",
  "brandDomain": "apify.com",
  "competitors": [
    "Firecrawl|firecrawl.dev",
    "Bright Data|brightdata.com"
  ]
}' |
apify call seemuapps/chatgpt-brand-visibility-tracker --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,seemuapps/chatgpt-brand-visibility-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/0kdjDJwObkXnmtFY9/builds/Mgnt6mCcXHcnJ9ubs/openapi.json
