# Brand AI Answers Tracker: ChatGPT brand visibility (`sillage-data/brand-ai-answers`) Actor

Check if ChatGPT mentions your brand. Track AI brand visibility and share of voice: get the full dated answer, the cited sources and your rank against up to 5 competitors, counted by code. Pay per check.

- **URL**: https://apify.com/sillage-data/brand-ai-answers.md
- **Developed by:** [Sillage Data](https://apify.com/sillage-data) (community)
- **Categories:** AI, SEO tools
- **Stats:** 2 total users, 1 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

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 AI Answers Tracker: check your brand visibility in ChatGPT

**Does ChatGPT recommend your brand, or your competitor's? Ask it your customers' questions and get the full, dated answer, the sources it cited, and your rank against up to 5 competitors. Counted by code. No AI judging. Pay only for answers you get.**

- **The full answer, not a score.** Every row keeps the complete ChatGPT answer, the exact model name and the time it was fetched (UTC).
- **The sources it cited.** See which websites ChatGPT used, and whether your own site is one of them.
- **Your rank, counted by code.** Who is mentioned first: you or your competitors? Whole-word matching, case insensitive, with your aliases. No language model "grades" your brand, so no invented sentiment.
- **No minimum, no subscription.** One question is enough. Failed or empty answers are never charged.

#### What one check looks like (real output, 15 Oct 2026)

```json
{
  "checkedAt": "2026-10-15T06:57:23.569Z",
  "engine": "chatgpt",
  "model": "gpt-6-luna",
  "question": "best CRM software for small business",
  "brandMentioned": true,
  "brandRank": 1,
  "brandMentionCount": 7,
  "brandCitedAsSource": true,
  "brandShareOfVoice": 0.5833,
  "competitors": [
    { "name": "Salesforce", "mentioned": false, "rank": null },
    { "name": "Zoho", "mentioned": true, "mentionCount": 5, "rank": 2, "citedAsSource": true }
  ],
  "sources": [
    { "url": "https://www.hubspot.com/pricing/crm?tier=starter", "domain": "hubspot.com", "position": 1 },
    { "url": "https://www.pipedrive.com/en/pricing/professional-crm", "domain": "pipedrive.com", "position": 2 },
    { "url": "https://www.zoho.com/crm/zohocrm-pricing-calculator.html", "domain": "zoho.com", "position": 3 }
  ],
  "answerText": "**Best all-around for many small businesses: HubSpot** ... (full answer)"
}
```

#### Pricing

You pay per successful check: **one question, one ChatGPT answer, fully analyzed**. The exact price per check is shown on the Pricing tab of this page. 10 questions with 1 answer each = 10 checks. Empty or failed answers are free. Set a maximum cost per run in Apify and the Actor stops before going over it.

***

### Who is it for?

- **Marketing managers** who want to know if AI assistants recommend their product.
- **SEO and GEO specialists** tracking "AI visibility" next to Google rankings.
- **Agencies** reporting AI share of voice to clients every week.
- **Founders** checking how ChatGPT compares them with bigger competitors.

### How to use it in 5 steps

1. Enter your **brand name** (plus aliases and your website domain).
2. Add up to **5 competitors**.
3. Write the **questions your customers ask** (for example "best CRM software for small business").
4. Click **Start**. The example input finishes in under a minute.
5. Read the **Overview** table, then the **Run summary** (presence rate, average rank, share of voice, most cited domains).

### Input

| Field | What it does | Default |
|---|---|---|
| `brandName` | Brand to track (whole word, case insensitive) | `HubSpot` |
| `brandAliases` | Other spellings that count as your brand | empty |
| `brandDomain` | Your domain, to detect when your site is cited | `hubspot.com` |
| `competitors` | Up to 5 competitor names | `Salesforce`, `Zoho` |
| `questions` | 1 to 50 questions | 2 examples |
| `samplesPerQuestion` | Ask each question 1 to 3 times (answers vary) | 1 |
| `country` | Approximate location sent to the web search | `US` |
| `includeFullAnswer` | Keep full answer text and all consulted URLs | `true` |

### Output: what each row contains

One row per question and answer.

| Field | Meaning |
|---|---|
| `checkedAt` | When the answer was fetched (ISO 8601, UTC) |
| `engine`, `model`, `searchMode` | `chatgpt`, exact model name from the API, `api_with_web_search` |
| `question`, `sampleIndex` | The question and which repetition it is |
| `status` | `ok`, `empty` or `error` (only `ok` is charged) |
| `brandMentioned`, `brandMentionCount` | Is your brand in the answer, and how many times |
| `brandRank` | Order of first appearance among your brand and competitors (1 = first, `null` = absent) |
| `brandFirstMentionChar` | Character position of the first mention |
| `brandCitedAsSource` | Your domain (or a subdomain) is among the cited sources |
| `brandInConsultedSources` | Your domain is among all pages the search consulted |
| `brandShareOfVoice` | Your mentions divided by all tracked mentions in this answer |
| `competitors` | Same counts for each competitor |
| `sources` | Cited sources: `url`, `title`, `domain`, `position` |
| `searchQueries` | The web searches ChatGPT ran to answer |
| `answerText` | The complete answer (if `includeFullAnswer`) |
| `note` | Reminder that this is the official API with web search |

The **Run summary** (key-value store record `SUMMARY`) adds, per engine: brand presence rate, average rank, cited-as-source rate, share of voice for every tracked name, competitor presence rates and the 10 most cited domains.

### Honest limits

- **This is the official OpenAI API with web search enabled, not the chatgpt.com interface.** Answers can differ from what a person sees in the ChatGPT app, which also uses memory, personalization and other settings.
- **AI answers vary from one run to the next.** Use 3 answers per question to measure a rate instead of trusting one answer.
- **Rank is among the names you track**, not among every brand in the answer.
- A competitor counts as "cited as source" when a cited domain label equals its name (for example `zoho.com` for "Zoho").
- **Not affiliated with OpenAI.** ChatGPT is a trademark of OpenAI.

### Schedule it every week

Use **Apify Schedules** to run the same input every Monday and build a history. Send results to Google Sheets, Slack, Make, Zapier or n8n with Apify integrations, or call the Actor from an AI agent through the Apify MCP server (turn off `includeFullAnswer` for a compact output).

### FAQ

#### How do I check if ChatGPT mentions my brand?

Run this Actor with your brand name and the questions your customers ask. Each row tells you if your brand is mentioned, how many times, in which position compared with your competitors, and whether your website is cited as a source.

#### What is AI share of voice?

It is the share of mentions your brand gets compared with your competitors in AI answers. This Actor computes it per answer (`brandShareOfVoice`) and for the whole run (`shareOfVoice` in the summary), by counting names in the answer text.

#### How is this different from an AI visibility score?

A score is a number someone computed for you. This Actor stores the full answer, the date, the model and the cited sources, so you can check every number yourself.

#### Why is there no sentiment or tone score?

Because a tone score needs another AI to judge the answer, and that judgment can be wrong. Everything here is counted by code, so the same answer always gives the same numbers.

#### Does it track Perplexity, Gemini or Google AI Overviews?

Not yet. This version tracks ChatGPT through the official OpenAI API with web search. Other engines are planned.

#### Do I need an OpenAI API key?

No. The Actor uses its own access. You only pay the price per check shown on the Pricing tab.

#### What happens if an answer is empty or fails?

The row is saved with `status` set to `empty` or `error` and an `errorMessage`, and it is not charged.

#### Which country are the answers for?

The `country` you choose is sent to the web search as the approximate user location, which changes which pages the search finds.

#### Is it legal?

It uses the official OpenAI API under OpenAI's terms. It does not scrape chatgpt.com or any website, and it does not collect personal data: the input is brand names and questions.

### Support

Found a bug or need another engine? Open an issue on the Issues tab. We answer every question within 6 hours.

# Actor input Schema

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

The exact name of the brand to track, as people write it. Matching is whole word and case insensitive.

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

Other spellings or product names that count as your brand (for example "Hub Spot" or "HubSpot CRM").

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

Your website domain, without https://. Used to detect when the answer cites your site as a source (subdomains included).

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

Competitor names, counted exactly like your brand.

## `questions` (type: `array`):

The questions your customers ask an AI assistant. Each question x each sample is one check.

## `samplesPerQuestion` (type: `integer`):

AI answers vary. Ask each question 1 to 3 times to measure how often your brand shows up. Each extra answer is one more check.

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

Approximate user location sent to the web search, as a two-letter country code.

## `includeFullAnswer` (type: `boolean`):

Keep the complete answer and the full list of consulted URLs in each row. Turn off for a lighter output (for AI agents or spreadsheets).

## Actor input object example

```json
{
  "brandName": "HubSpot",
  "brandAliases": [],
  "brandDomain": "hubspot.com",
  "competitors": [
    "Salesforce",
    "Zoho"
  ],
  "questions": [
    "best CRM software for small business",
    "HubSpot vs Salesforce for a startup"
  ],
  "samplesPerQuestion": 1,
  "country": "US",
  "includeFullAnswer": true
}
```

# Actor output Schema

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

Full dated answer, model, cited sources, brand and competitor mentions and ranks.

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

Brand presence rate, average rank, share of voice against competitors and 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 = {
    "brandName": "HubSpot",
    "brandDomain": "hubspot.com",
    "competitors": [
        "Salesforce",
        "Zoho"
    ],
    "questions": [
        "best CRM software for small business",
        "HubSpot vs Salesforce for a startup"
    ],
    "samplesPerQuestion": 1
};

// Run the Actor and wait for it to finish
const run = await client.actor("sillage-data/brand-ai-answers").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",
    "brandDomain": "hubspot.com",
    "competitors": [
        "Salesforce",
        "Zoho",
    ],
    "questions": [
        "best CRM software for small business",
        "HubSpot vs Salesforce for a startup",
    ],
    "samplesPerQuestion": 1,
}

# Run the Actor and wait for it to finish
run = client.actor("sillage-data/brand-ai-answers").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": "HubSpot",
  "brandDomain": "hubspot.com",
  "competitors": [
    "Salesforce",
    "Zoho"
  ],
  "questions": [
    "best CRM software for small business",
    "HubSpot vs Salesforce for a startup"
  ],
  "samplesPerQuestion": 1
}' |
apify call sillage-data/brand-ai-answers --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,sillage-data/brand-ai-answers"
        }
    }
}
```

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/9guu8Nkdsqbqny0NR/builds/0ZfgPi6l1mPrh4WxD/openapi.json
