# AI Brand Visibility Tracker — ChatGPT & Perplexity (GEO) (`kala4/ai-brand-visibility-tracker`) Actor

Check if ChatGPT and Perplexity mention your brand for the questions your customers ask. Get position vs competitors, cited sources, and a share-of-voice summary. Official APIs, no login or cookies.

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

## Pricing

from $50.00 / 1,000 ai engine 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

### What does AI Brand Visibility Tracker do?

**AI Brand Visibility Tracker** checks whether **ChatGPT** and **Perplexity** mention your brand when people ask them the questions your customers ask, such as *"What is the best CRM for startups?"* or *"Alternatives to Evernote"*.

For every prompt and every AI engine you get:

- ✅ **Is your brand mentioned?** How many times, and the sentence around it
- 🥇 **Your position vs. competitors**: who is mentioned first, second, third
- 🔗 **Which sources the AI cites**, and whether **your own website** is one of them
- 📊 A **share-of-voice summary**: mention rate, average position, and top cited domains, overall and per engine

It's a simple, affordable tool for **GEO / AEO (Generative Engine Optimization)**, **LLM brand monitoring**, and **AI search visibility** tracking.

### Why use it?

More and more buyers ask AI assistants instead of Google. If ChatGPT recommends your competitor and not you, you're losing customers you never see. Use this Actor to:

- **Benchmark** your AI visibility against competitors
- **Find the sources AI trusts** in your niche (review sites, blogs, Reddit threads) so you know where to get mentioned
- **Track progress over time** by scheduling the Actor weekly and comparing results
- **Report to clients** if you run an SEO or marketing agency

### How it works

- Uses the **official OpenAI API** (with web search) and the **official Perplexity API**. No logins, cookies, or browser automation, so it's fast and reliable.
- Brand and competitor matching is case-insensitive and whole-word. "Notion" matches "Notion's" but not "Notional".
- Add **aliases** (e.g. "Notion AI") and your **domain** (e.g. `notion.com`) for more accurate results.
- Optionally set a **country** (e.g. `US`, `DE`, `GB`) to localize the AI's web search.

### How to use it

1. Enter your **brand name**.
2. Add **prompts**: real questions your customers might ask an AI assistant (one per line).
3. Add **competitors** to compare against (optional but recommended).
4. Choose **engines**: ChatGPT, Perplexity, or both.
5. Click **Start**, then download the results as JSON, CSV, or Excel, or open the **summary**.

💡 Tip: use 10–30 prompts that cover different buying intents ("best X", "X vs Y", "X alternatives", "X for small business"). AI answers vary between runs, so more prompts give you a more stable picture.

### Input example

```json
{
    "brandName": "Notion",
    "brandDomain": "notion.com",
    "competitors": ["Obsidian", "Evernote", "Confluence", "Coda"],
    "prompts": ["What is the best note-taking app for teams?", "Best alternatives to Evernote in 2026"],
    "engines": ["chatgpt", "perplexity"],
    "country": "US"
}
```

### Output example

Each row is one prompt checked in one AI engine:

```json
{
    "prompt": "What is the best note-taking app for teams?",
    "engine": "chatgpt",
    "brandMentioned": true,
    "brandMentionCount": 2,
    "brandPosition": 2,
    "brandMentionContext": "…Obsidian is great for personal notes, while Notion is the most popular choice for teams…",
    "brandDomainCited": true,
    "competitors": [
        { "name": "Obsidian", "mentioned": true, "mentionCount": 1, "position": 1 },
        { "name": "Coda", "mentioned": false, "mentionCount": 0, "position": null }
    ],
    "mentionOrder": ["Obsidian", "Notion", "Evernote"],
    "citedDomains": ["g2.com", "zapier.com", "notion.com"],
    "answerText": "…full AI answer…",
    "checkedAt": "2026-10-14T09:00:00.000Z"
}
```

A **SUMMARY** record (in the run's key-value store, linked in the Output tab) contains mention rate, average position, first-place rate, how often your site is cited, competitor mention rates, and the top 20 cited domains, both overall and per engine.

### How much does it cost?

You pay **per AI engine check**: 1 prompt × 1 engine = 1 check. 10 prompts checked in both ChatGPT and Perplexity = 20 checks. See the exact price in the **Pricing** tab.

- **Failed checks are not charged.**
- The Actor respects your **maximum cost per run**. If your limit covers fewer checks than requested, it runs as many as the limit allows and stops.

### FAQ

**Are the answers identical to what I see in the ChatGPT app?**
Not always. AI answers vary from run to run and between users, and the API model can differ from the one in the consumer app. This Actor gives you a consistent, repeatable measurement for comparing brands and tracking change over time, not a screenshot of one person's chat.

**Can I track several brands?**
Run the Actor once per brand, or put the other brands in **Competitors**: you get mention rate and position for all of them from the same answers.

**Can I schedule it?**
Yes. Use Apify **Schedules** to run weekly and compare the summaries.

**Do I need my own OpenAI or Perplexity API key?**
No. Everything is included in the per-check price.

**Is it legal?**
The Actor uses official, paid APIs from OpenAI and Perplexity under their terms. It doesn't scrape websites or log in to any accounts.

### Support

Found a bug or need another AI engine (Gemini, Claude, Google AI Overviews)? Open an issue in the **Issues** tab and I'll respond quickly.

# Actor input Schema

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

The brand or product name to look for in AI answers, e.g. "Notion". Matching is case-insensitive and whole-word.

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

Questions your potential customers ask ChatGPT or Perplexity. One prompt per line. Every prompt is checked in each selected AI engine (1 prompt × 2 engines = 2 checks).

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

Competitor names to track in the same answers. You get each competitor's mention rate and position next to yours.

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

Which AI assistants to check. Each engine counts as a separate check.

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

Your website, e.g. "notion.com". Used to detect whether AI engines cite your own site as a source.

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

Other spellings or product names that should count as a brand mention, e.g. "Notion AI", "Notion.so".

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

Optional. Approximate user location for the AI web search, as an ISO country code like US, GB, DE or UA. Leave empty for no location.

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

How many checks run at the same time. Higher is faster; lower is gentler on rate limits.

## Actor input object example

```json
{
  "brandName": "Notion",
  "prompts": [
    "What is the best note-taking app for teams?",
    "Best alternatives to Evernote in 2026",
    "Which tool should a startup use for internal documentation?"
  ],
  "competitors": [
    "Obsidian",
    "Evernote",
    "Confluence",
    "Coda"
  ],
  "engines": [
    "chatgpt",
    "perplexity"
  ],
  "brandDomain": "notion.com",
  "maxConcurrency": 3
}
```

# Actor output Schema

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

No description

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

No description

# 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": "Notion",
    "prompts": [
        "What is the best note-taking app for teams?",
        "Best alternatives to Evernote in 2026",
        "Which tool should a startup use for internal documentation?"
    ],
    "competitors": [
        "Obsidian",
        "Evernote",
        "Confluence",
        "Coda"
    ],
    "brandDomain": "notion.com"
};

// Run the Actor and wait for it to finish
const run = await client.actor("kala4/ai-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 = {
    "brandName": "Notion",
    "prompts": [
        "What is the best note-taking app for teams?",
        "Best alternatives to Evernote in 2026",
        "Which tool should a startup use for internal documentation?",
    ],
    "competitors": [
        "Obsidian",
        "Evernote",
        "Confluence",
        "Coda",
    ],
    "brandDomain": "notion.com",
}

# Run the Actor and wait for it to finish
run = client.actor("kala4/ai-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 '{
  "brandName": "Notion",
  "prompts": [
    "What is the best note-taking app for teams?",
    "Best alternatives to Evernote in 2026",
    "Which tool should a startup use for internal documentation?"
  ],
  "competitors": [
    "Obsidian",
    "Evernote",
    "Confluence",
    "Coda"
  ],
  "brandDomain": "notion.com"
}' |
apify call kala4/ai-brand-visibility-tracker --silent --output-dataset

```

## MCP server setup

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