# AI Visibility Tracker — ChatGPT, Perplexity, Gemini · $0.03 (`tidydata/ai-brand-visibility-tracker`) Actor

Check if ChatGPT, Perplexity, Gemini and Claude recommend your brand: mention rate, position, competitors, cited sources and tone. Built-in Claude with live web search ($0.03/check, no key) or your own keys ($0.01).

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

## Pricing

from $24.00 / 1,000 check with the built-in ai (claude)s

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: does ChatGPT, Perplexity or Gemini recommend your brand?

More and more buyers ask an AI assistant instead of Google: *"What is the best CRM for a small business?"*, *"Alternatives to Mailchimp?"*. If the AI never names you, you lose those customers without noticing.

**AI Visibility Tracker** asks your buyers' questions to AI assistants **with live web search**, reads every answer and tells you:

- ✅ **Are you mentioned?** And are you **recommended**, or only named in passing?
- 🏆 **In which position** you appear among the brands the AI lists.
- ⚔️ **Which competitors** the AI recommends instead of you, and how often.
- 🔗 **Whether your website is cited** as a source.
- 💬 **The tone** about your brand (positive, neutral, negative) and why.
- 📄 **The full answer and its sources**, so you know which pages the AI trusts.

It is a simple **GEO / AEO (generative engine optimization)** and **LLM brand monitoring** tool: track your **AI share of voice** every week and see if your content work moves the needle.

**$0.03 per check with the built-in AI (Claude with live web search) — no key needed.** Or **$0.01 per check with your own key** (even a free Groq key works). Most AI visibility trackers charge $0.05 to $0.30 per question.

### What can it do?

- **Built-in AI, included:** Claude with live web search, citing its sources. No account or key needed.
- **Free Groq key option:** an OpenAI open-weight model (GPT-OSS) with web search on your own free Groq quota (get a key in a minute at console.groq.com/keys).
- **The real assistants with your own key:** ChatGPT (OpenAI Responses API with web search), Perplexity (Sonar), Gemini (Google Search grounding) and Claude (web search). You pay those providers directly at their price; we only charge $0.01 per check.
- **No questions? It writes them for you.** Describe what you sell (*"vegan protein powder in Spain"*) and it writes realistic buyer questions in any language.
- **Location-aware:** answers are asked as a buyer in your city or country.
- **Repeat questions** 2-5 times: AI answers change from one run to the next, so repeats give a steadier mention rate.
- **Summary report** with mention rate, recommended rate, #1 rate, average position, competitor share of voice, top other brands and the questions where you are missing.

### Typical uses

- **Brands and startups:** check if ChatGPT and Perplexity recommend you for your main buying questions.
- **SEO and GEO agencies:** monthly AI visibility reports for clients, with competitors and cited sources.
- **Content teams:** find the questions where competitors appear and you don't, and the pages the AI cites (write there or get listed there).
- **Product marketing:** see how AI describes your product versus alternatives.

### How to use it

1. Enter **your brand** (and optionally your website and other names of your brand).
2. Add **competitors** you want to compare against (optional: every other brand is listed anyway).
3. Add **your buyers' questions**, or leave them empty and fill **Category** so they are written for you.
4. Pick the **AI assistants**: the built-in Claude with web search is included; add your API key for ChatGPT, Perplexity, Gemini, Claude on your account, or a free Groq key.
5. Run it. Schedule it weekly in Apify to follow your AI visibility over time.

#### Example input

```json
{
  "brand": "HubSpot",
  "brandDomain": "hubspot.com",
  "competitors": ["Salesforce", "Pipedrive", "Zoho CRM"],
  "prompts": [
    "What is the best CRM for a small business?",
    "Which CRM is easiest to use for a startup?"
  ],
  "engines": ["built-in"],
  "repeats": 1
}
```

#### Example output (one row per question and assistant)

```json
{
  "prompt": "What is the best CRM for a small business?",
  "engine": "built-in",
  "brandMentioned": true,
  "brandRecommended": true,
  "brandPosition": 1,
  "brandsInAnswer": ["HubSpot", "Zoho CRM", "Monday.com CRM", "Pipedrive", "Salesforce"],
  "competitorsMentioned": [
    {"name": "Zoho CRM", "position": 2, "recommended": true},
    {"name": "Pipedrive", "position": 4, "recommended": true},
    {"name": "Salesforce", "position": 5, "recommended": true}
  ],
  "brandDomainCited": false,
  "sentiment": "positive",
  "sentimentReason": "Recommended as the best fit for a free tier with no contract.",
  "sources": [{"url": "https://...", "title": "Best CRM for Small Business 2026"}],
  "answer": "..."
}
```

The **Summary** (key-value store record `SUMMARY`) adds it all up per assistant: `mentionRate`, `recommendedRate`, `firstPlaceRate`, `averagePosition`, `domainCitedRate`, `competitorRecommendedRate`, `topOtherBrands` and `promptsWhereYouAreMissing`.

### Pricing

Pay only for checks that worked. One check = one question answered by one assistant once.

| | Price per check | Notes |
|---|---|---|
| Built-in AI: Claude with live web search | **$0.03** | AI and search cost included, no key needed |
| Your own key: Groq (free), ChatGPT, Perplexity, Gemini or Claude | **$0.01** | The provider bills you for its own usage (Groq's free tier: $0) |

Example: 20 questions × built-in AI = **$0.60**; with your own keys, 20 questions × 2 assistants = **$0.40**. Failed checks are free. Store discounts apply on paid Apify plans.

On Apify's free plan the built-in AI answers up to 10 checks per run; add your own key or upgrade for more.

### Tips

- Write questions the way buyers do: *"best X for Y"*, *"alternatives to <leader>"*, *"X vs Y"*, *"cheapest X in <country>"*.
- Use `repeats: 3` for the questions that matter most: one answer is a sample, three are a trend.
- Look at `sources` in the answers where you are missing: those are the pages to get listed on.
- Combine with [Merge & Deduplicate Datasets](https://apify.com/tidydata/merge-dedupe-datasets) to join weekly runs into one history table.

### FAQ

**Which AI is the built-in one?** Claude (Anthropic) with live web search. The Groq option is an OpenAI open-weight model (GPT-OSS) with web search. Neither is the ChatGPT app: to measure ChatGPT, Perplexity or Gemini themselves, add your API key for that assistant.

**Are the answers the same as in the consumer apps?** API answers with web search are very close but not identical to the apps (which add personalization and memory). They are the standard way to measure AI visibility at scale.

**Is my API key safe?** Keys are stored as secret inputs, encrypted by Apify, and only sent to that provider.

**Why did my brand get a position but "recommended: false" for a competitor?** The answer named the competitor without recommending it (for example, *"alternatives to Salesforce"*). Positions count only the options the AI recommends.

**Can I track several brands?** Run it once per brand, or put competitors in the list: every row shows all brands in the answer.

# Actor input Schema

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

The brand, product or company to look for in AI answers.

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

Optional. Your domain (e.g. hubspot.com) to see if the AI cites your site as a source.

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

Optional. Other spellings or product names that count as your brand (e.g. 'HubSpot CRM').

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

Optional. Competitors to compare against (up to 20). Every other brand the AI recommends is listed anyway.

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

The questions your buyers ask AI assistants, in any language (up to 200). Leave empty and fill 'Category' to have them written for you.

## `category` (type: `string`):

Used only when 'Questions' is empty. What you sell, e.g. 'CRM for small businesses' or 'vegan protein powder in Spain'.

## `autoPromptCount` (type: `integer`):

Used with 'Category'.

## `promptLanguage` (type: `string`):

Used with 'Category'. E.g. English, Spanish, German.

## `location` (type: `string`):

Optional. City or country of the buyer (e.g. 'Madrid, Spain'). Answers are localized like for a real user there.

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

The built-in AI (Claude with live web search) is included — no key needed. You can add ChatGPT, Perplexity, Gemini or Claude with your own API key (you pay those providers directly), or a free Groq key.

## `repeats` (type: `integer`):

AI answers vary. Ask 2-3 times for a more reliable mention rate (each repeat is a check).

## `includeAnswer` (type: `boolean`):

Keep the AI's full answer text in the results.

## `groqApiKey` (type: `string`):

Free at console.groq.com/keys. Runs an OpenAI open-weight model with live web search on your own free quota.

## `openaiApiKey` (type: `string`):

For ChatGPT answers with web search (Responses API).

## `perplexityApiKey` (type: `string`):

For Perplexity Sonar answers with sources.

## `geminiApiKey` (type: `string`):

From Google AI Studio. Answers use Google Search grounding.

## `anthropicApiKey` (type: `string`):

For Claude answers with web search.

## `groqModel` (type: `string`):

Default openai/gpt-oss-20b (switches to openai/gpt-oss-120b when its daily quota is used).

## `chatgptModel` (type: `string`):

Default gpt-5-mini.

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

Default sonar.

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

Default gemini-2.5-flash.

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

Default claude-opus-5-5. claude-sonnet-5-5 or claude-haiku-5-5 cost less.

## Actor input object example

```json
{
  "brand": "HubSpot",
  "brandDomain": "hubspot.com",
  "competitors": [
    "Salesforce",
    "Pipedrive",
    "Zoho CRM"
  ],
  "prompts": [
    "What is the best CRM for a small business?",
    "Which CRM is easiest to use for a startup?"
  ],
  "autoPromptCount": 5,
  "promptLanguage": "English",
  "engines": [
    "built-in"
  ],
  "repeats": 1,
  "includeAnswer": true
}
```

# Actor output Schema

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

One row per question and AI assistant.

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

Mention rate, average position, competitors and the questions where you are missing.

# 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 = {
    "brand": "HubSpot",
    "brandDomain": "hubspot.com",
    "competitors": [
        "Salesforce",
        "Pipedrive",
        "Zoho CRM"
    ],
    "prompts": [
        "What is the best CRM for a small business?",
        "Which CRM is easiest to use for a startup?"
    ],
    "engines": [
        "built-in"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("tidydata/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 = {
    "brand": "HubSpot",
    "brandDomain": "hubspot.com",
    "competitors": [
        "Salesforce",
        "Pipedrive",
        "Zoho CRM",
    ],
    "prompts": [
        "What is the best CRM for a small business?",
        "Which CRM is easiest to use for a startup?",
    ],
    "engines": ["built-in"],
}

# Run the Actor and wait for it to finish
run = client.actor("tidydata/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 '{
  "brand": "HubSpot",
  "brandDomain": "hubspot.com",
  "competitors": [
    "Salesforce",
    "Pipedrive",
    "Zoho CRM"
  ],
  "prompts": [
    "What is the best CRM for a small business?",
    "Which CRM is easiest to use for a startup?"
  ],
  "engines": [
    "built-in"
  ]
}' |
apify call tidydata/ai-brand-visibility-tracker --silent --output-dataset

```

## MCP server setup

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