# ChatGPT Brand Visibility Tracker: Mentions & Citations (`zaiq/chatgpt-brand-visibility-tracker`) Actor

Does ChatGPT recommend your brand? Ask it your buyers' questions with live web search, newest model each run: answers, cited sites, mention rate and citation share per brand, by country. $0.10 per answer.

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

## Pricing

from $80.00 / 1,000 chatgpt 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

## ChatGPT Brand Visibility Tracker: Mentions & Citations

**Does ChatGPT recommend your brand when your buyers ask?** This Actor asks ChatGPT your buyers' questions
through OpenAI's official API with **OpenAI's own web search**, and returns every answer, every source it cites, and whether
each of your brands is **named** and whether its **site is cited**, with a per-brand **mention rate** and **citation
share** for GEO / AEO tracking.

**Always the newest model.** Each run uses the newest GPT Sol model, the family behind ChatGPT at that moment (on 12 October 2026: GPT-6.1 Sol), so your
tracking follows what people actually get. You can pin a model under Advanced.

### What you get

For every question and run:

- The full ChatGPT answer.
- Every cited source in order: position, URL, domain.
- For each brand you track: named or not, its rank among your brands by first mention, its site cited or not and at
  what position.
- The exact model, the country used, the time, and the AI cost of that answer.

The key-value store record `SUMMARY` gives, per brand: **mention rate**, **citation share**, average rank and cited
position, plus the **most-cited sites** and the **source mix** (Reddit, Wikipedia, YouTube, marketplaces).

### Input

```json
{
  "prompts": ["What is the best CRM for a small business?", "best accounting software for freelancers"],
  "brands": ["HubSpot | hubspot.com", "Zoho | zoho.com", "Pipedrive | pipedrive.com"],
  "country": "US",
  "runsPerPrompt": 3
}
```

- `prompts`: the questions, one per line, as buyers would type them into ChatGPT.
- `brands`: a name, a domain, or both as `Name | domain.com`. With a domain, citations are matched on the site.
- `country`: ChatGPT searches as a user in that country (two-letter code).
- `runsPerPrompt`: answers vary from run to run; use 3 or more for a stable mention rate.
- Advanced: a fixed model (an OpenRouter model id), answer length and concurrency.

### Output

One row per question and run:

```json
{
  "prompt": "What is the best CRM for a small business?",
  "engine": "openai",
  "model": "...",
  "run": 1,
  "status": "ok",
  "answer": "...",
  "citations": [{ "position": 1, "url": "https://...", "domain": "...", "kind": "other" }],
  "citedDomains": ["..."],
  "brands": [{ "brand": "HubSpot", "domain": "hubspot.com", "mentioned": true, "mentionRank": 1, "cited": false, "citedPosition": null }],
  "mentionedBrands": ["HubSpot", "Zoho", "Pipedrive"],
  "aiCostUsd": 0.03,
  "charged": true
}
```

`status` is `ok` (answer with sources), `zero-cite` (answer without sources, still data) or `error` (free).

### Pricing

- **$0.10 per ChatGPT answer** analysed, with its citations and brand matches. Lower on Apify's Scale and Business
  plans (Store discounts).
- **AI usage** is billed to your Apify account by Apify's own OpenRouter gateway at OpenRouter's rates for paying Apify
  plans: ChatGPT (GPT-6.1 Sol) cost about $0.085 per answer on 12 October 2026.
- Failed calls are free. Your spending limit for the run is respected.

### All engines in one run

To ask ChatGPT, Perplexity, Gemini, Claude, Grok and Google's AI Overview the same questions in one run, with one
summary across them, use [AI Visibility Tracker](https://apify.com/zaiq/ai-answer-tracker). For Google's AI Overview
alone, by keyword and country, use [Google AI Overview Tracker](https://apify.com/zaiq/google-ai-overview-tracker).

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

- **API**: `POST https://api.apify.com/v2/acts/zaiq~chatgpt-brand-visibility-tracker/run-sync-get-dataset-items?token=YOUR_TOKEN` with the input
  as JSON. The API tab has Python, JavaScript and cURL examples.
- **No code**: schedule weekly runs in Apify Console and send rows to Google Sheets, Zapier, Make or n8n from the
  Integrations tab.
- **AI agents (MCP)**: `https://mcp.apify.com?tools=zaiq/chatgpt-brand-visibility-tracker`.

### Optional: weekly monitoring, competitor gaps and a report

Off by default and at no extra charge (no new events):

- **Project name** (`projectName`): keeps every run's results under that name and compares each run with the last one: mentions gained and lost per question and engine, citation-rate moves, cited sites gained and lost, and competitors that appeared (record `CHANGES`). Schedule the Actor weekly to follow the movement.
- **Report** (`includeReport`): a one-page `REPORT.html` with the visibility score and its formula, per-engine tables, competitor gaps (the questions where a competitor is named or cited and you are not, with the sites cited there) and a fix list drawn from the pages the engines cite.
- **Cited pages to read** (`maxCitedPages`, default 8): how many of the cited pages are read for the fix list.

### FAQ

**Is this what people see in the ChatGPT app?** It is OpenAI's official API with OpenAI's own web search: the same
model and search OpenAI offers to developers. The consumer app can differ (memory, personalisation, its own
interface). This Actor does not log in to or scrape any app.

**Why do answers change between runs?** AI answers are sampled. Track the same questions weekly with 3 or more runs and
watch the mention rate rather than one answer.

**How long does an answer take?** about 20-25 seconds.

# Actor input Schema

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

Questions your buyers ask, one per line, as they would type them into ChatGPT.

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

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

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

The searcher's country (two-letter code): ChatGPT searches as from there.

## `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).

## `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.

## `includeReport` (type: `boolean`):

Opt in to REPORT.html, competitor gaps and evidence-based recommendations. No extra event or model call. The first tracked brand is the subject; remaining brands are competitors. Public cited pages may be read directly.

## `projectName` (type: `string`):

Opt in to reports and persistent run history in a named key-value store. Reuse exactly the same project name for comparisons; schedule runs sequentially. Failed or incomparable answers do not become losses.

## `maxCitedPages` (type: `integer`):

Maximum public cited pages read for recommendations when reporting is enabled. Zero uses citation URLs only and labels coverage unknown. No proxy or AI calls are used.

## 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"
  ],
  "country": "US",
  "runsPerPrompt": 1,
  "maxAnswerTokens": 2000,
  "maxConcurrency": 4,
  "includeReport": false,
  "maxCitedPages": 8
}
```

# 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.

## `report` (type: `string`):

Opt-in HTML report. Available only when Create visibility report or a monitoring project is set.

## `reportData` (type: `string`):

Opt-in report data: score, coverage, gaps, recommendations and evidence.

## `changes` (type: `string`):

Opt-in project comparison. First run establishes a baseline.

# 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"
    ]
};

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

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

```

## MCP server setup

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