AI Brand Visibility Tracker (ChatGPT, Gemini...) avatar

AI Brand Visibility Tracker (ChatGPT, Gemini...)

Pricing

from $28.00 / 1,000 provider checks

Go to Apify Store
AI Brand Visibility Tracker (ChatGPT, Gemini...)

AI Brand Visibility Tracker (ChatGPT, Gemini...)

AI brand visibility tracker: run prompt sets across OpenAI, Gemini, Perplexity and Claude web search via official APIs. Get mentions, rank, sentiment, cited URLs and share of voice vs competitors, with history and Slack reports. Bring your own keys, $0.04 per check.

Pricing

from $28.00 / 1,000 provider checks

Rating

0.0

(0)

Developer

Andrew Boiko

Andrew Boiko

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

4 days ago

Last modified

Categories

Share

AI brand visibility tracker that uses official provider APIs with web search (OpenAI Responses API, Google Gemini Search grounding, Perplexity Sonar and Anthropic Claude web search) instead of fragile UI scraping, so results are repeatable and fast. Define your prompts, locales and competitors once, then run it weekly and watch your AI visibility move.

For every prompt x locale x provider combination you get: was your brand mentioned, in which position among the brands you track, a sentiment label, the cited URLs and domains, and share of voice against your competitors. A history store turns each run into a delta against the previous one, and an optional Slack webhook posts the weekly report.

What does AI Brand Visibility Tracker do?

This actor answers one question: when someone asks an AI assistant about your category, does your brand show up, and compared to whom? It is built for GEO (generative engine optimization), AEO and LLM SEO monitoring.

  • Prompt sets x locales x providers. Each combination is one "provider check". The actor sends your prompt to the provider's official API with web search switched on, and the user's country is passed where the API supports it.
  • Mention detection. Your brand and its aliases are matched case-insensitively on word boundaries, so "Notion" does not match "notional". Competitors are matched the same way.
  • Rank. The order of first mention among the brands you track (1 = mentioned first). Brands you do not list are not ranked.
  • Sentiment. A simple English keyword lexicon applied to the sentences that mention your brand. It is a heuristic, labelled as such in the output, not a trained model.
  • Citations. Every URL the provider returned as a source, plus the list of cited domains and a flag for whether one of your own domains was cited.
  • Share of voice. Per run, per provider, per prompt and per locale: the entity's mentioning checks divided by the mentioning checks of all tracked brands.
  • History and delta. Each report is saved in a named key-value store (ai-brand-visibility-history). The next run shows the change in mention rate, share of voice and average rank.
  • Slack report. Paste an incoming webhook URL and schedule the actor weekly.

Google AI Overviews are not included in this version. There is no official API for them, and this actor deliberately does not scrape Google results.

Bring your own keys

By default you paste your own provider API keys. The AI providers then bill your own accounts directly and this actor bills only its event prices (below). You only need keys for the providers you want to query. A provider without a key is skipped with a warning and is never charged.

Why use AI Brand Visibility Tracker?

  1. Official APIs, not scraped chat windows. No logins, cookies, browser sessions or proxies, so there is nothing to block and runs are deterministic in shape. A default run with 12 checks finishes in about two to four minutes.
  2. Everything in one run. Prompt sets, locales, four providers, competitors, share of voice, sentiment, cited domains, history and a Slack report. Many Store actors cover a single provider and return raw answers only.
  3. Pay per result, no subscription. $0.04 per provider check and $0.15 per report on the FREE tier, with volume discounts on paid plans. Dedicated GEO platforms are typically priced as monthly subscriptions.
  4. You decide what is billed. Failed checks, skipped providers and empty answers are never charged, and maxItems caps the number of checks in a run.

How results differ from consumer chat apps

API answers are not identical to what a person sees in the consumer apps. Perplexity Sonar and Gemini with Google Search grounding are the same model families as their consumer products; for OpenAI and Anthropic the API web-search tool is used, which is a different surface from the ChatGPT or Claude apps. Treat the numbers as a consistent, repeatable measurement of each provider's search-enabled answers, best used as a trend over time.

How much does it cost to scrape AI visibility?

You pay per event. Prices per single event:

EventFREEBRONZESILVERGOLD
provider-check (one prompt, one provider, one locale)$0.04$0.036$0.032$0.028
report (one aggregated report per run)$0.15$0.135$0.12$0.105

Examples at FREE prices:

  • 1,000 provider checks = $40 (plus $0.15 per run if the report is on).
  • 3 prompts x 4 providers x 1 locale = 12 checks = $0.48 + $0.15 report = $0.63 per weekly run, about $2.70 per month.

Provider API usage is billed by OpenAI, Google, Perplexity and Anthropic to the key you paste, at their own rates. Check their pricing pages; web-search calls are usually the largest part.

Free Apify plans are limited to 25 results per run (checks and the report row count). After that the run ends normally with a soft message. Use maxItems to cap checks and the Apify maxTotalChargeUsd run option to cap spend: when the limit is reached, the actor stops gracefully.

Input

FieldTypeDescription
brandstringBrand to track (required).
brandAliasesarrayOther names that count as a mention.
brandDomainsarrayYour domains, to detect whether answers cite your site.
competitorsarrayCompetitor names; add aliases after pipes: Evernote | Evernote Business.
promptsarrayQuestions to ask (required).
localesarrayLocale codes such as en-US, de-DE. Default en-US.
providersarrayperplexity, openai, gemini, anthropic.
perplexityApiKey, openaiApiKey, geminiApiKey, anthropicApiKeysecretYour own provider keys.
useOwnerKeysbooleanUse keys configured by the actor owner, if any. Default off.
perplexityModel, openaiModel, geminiModel, anthropicModelstringModel names; change them if a default is retired.
maxItemsintegerMax provider checks per run. Default 20.
generateReportbooleanAdd one aggregated report row. Default on.
trackHistorybooleanSave a snapshot for deltas. Default on.
historyLabelstringKeep separate histories for the same brand.
slackWebhookUrlsecretPost the report summary to Slack.
includeAnswerTextbooleanStore the answer text (max 6,000 chars).
concurrency, requestTimeoutSecsintegerParallel requests and per-request timeout.

Quick check on two providers:

{
"brand": "Notion",
"brandDomains": ["notion.so"],
"competitors": ["Evernote", "Obsidian", "Coda"],
"prompts": ["What are the best note-taking apps for teams?"],
"locales": ["en-US"],
"providers": ["perplexity", "gemini"],
"perplexityApiKey": "pplx-...",
"geminiApiKey": "AIza..."
}

Multi-locale share of voice with a Slack report:

{
"brand": "Notion",
"brandAliases": ["Notion AI"],
"competitors": ["Evernote", "Obsidian | Obsidian MD", "Coda"],
"prompts": ["Best note-taking apps for teams", "Notion alternatives"],
"locales": ["en-US", "de-DE", "fr-FR"],
"providers": ["openai", "perplexity", "gemini", "anthropic"],
"openaiApiKey": "sk-...", "perplexityApiKey": "pplx-...", "geminiApiKey": "AIza...", "anthropicApiKey": "sk-ant-...",
"maxItems": 100,
"slackWebhookUrl": "https://hooks.slack.com/services/..."
}

Output example

Illustrative example, not from a real run. One dataset row per check (type: "provider-check"):

{
"type": "provider-check",
"checkedAt": "2026-10-19T09:00:00.000Z",
"brand": "Notion",
"prompt": "What are the best note-taking apps for teams?",
"locale": "en-US",
"provider": "perplexity",
"model": "sonar",
"brandMentioned": true,
"brandMentionCount": 2,
"brandRank": 2,
"listedBrandsInOrder": ["Obsidian", "Notion"],
"competitors": [{ "name": "Evernote", "mentioned": false, "count": 0, "rank": null }, { "name": "Obsidian", "mentioned": true, "count": 1, "rank": 1 }],
"sentimentLabel": "positive",
"sentimentScore": 1,
"sentimentDetail": { "positiveHits": 2, "negativeHits": 0, "sentencesAnalysed": 2, "method": "english-lexicon-heuristic" },
"citations": [{ "url": "https://notion.so/product", "title": "Notion", "domain": "notion.so" }],
"citedDomains": ["notion.so"],
"brandDomainCited": true,
"answer": "Obsidian is great for local notes. Notion is excellent for teams..."
}

The report row (type: "report") contains brand (mention rate, share of voice, average rank), entities sorted by share of voice, sentimentDistribution, topCitedDomains, breakdowns by provider, prompt and locale, and delta against the previous snapshot (a negative avgRank change means you moved up). The same report is stored in the OUTPUT record together with counts, charged events and warnings.

How to use AI Brand Visibility Tracker (tutorial)

  1. Create API keys with the providers you want (any subset of Perplexity, OpenAI, Google AI Studio, Anthropic). Make sure web search is enabled for your OpenAI and Anthropic accounts.
  2. Open the actor, enter your brand, aliases, own domains and two to five competitors.
  3. Add 3 to 10 prompts a real buyer would type, and one or more locales.
  4. Paste your keys, keep maxItems low for the first run and click Start. The overview table shows one row per check plus the report.
  5. Create a weekly schedule with the same input. Add a Slack webhook to receive the report, and compare the delta block from week to week.

Run via API

curl -X POST "https://api.apify.com/v2/acts/tiger19935~ai-brand-visibility-tracker/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"brand":"Notion","competitors":["Evernote","Obsidian"],"prompts":["Best note-taking apps for teams"],"providers":["perplexity"],"perplexityApiKey":"pplx-..."}'
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('tiger19935/ai-brand-visibility-tracker').call({
brand: 'Notion', competitors: ['Evernote', 'Obsidian'],
prompts: ['Best note-taking apps for teams'], providers: ['perplexity'], perplexityApiKey: process.env.PPLX_KEY,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();

MCP: the actor can be called from any MCP client through the Apify MCP server; all main inputs are plain arrays and strings.

Integrations

Use Apify integrations to connect it to n8n, Make and Zapier, push the dataset to Google Sheets, or call a webhook when a run finishes. The built-in Slack webhook posts the weekly summary without any extra tooling. Schedule it weekly from the Apify Console.

The actor calls official provider APIs with keys you own, under those providers' terms of use, and does not scrape websites or log in anywhere. It processes only the prompts you send and the public answers and source URLs the providers return. Do not put personal data into prompts. You are responsible for complying with each provider's terms and for how you use the results.

FAQ and support

Are results the same as the consumer ChatGPT app? Not identical. Perplexity Sonar and Gemini grounding use the same model families as their consumer products; for OpenAI and Anthropic the API web-search tool is used. See the section above.

How is pricing calculated? Per provider check (one prompt on one provider and locale) and per report. Provider API costs are billed to your own keys by default.

Can I compare against competitors? Yes. Add competitor names (and aliases after pipes) and the report shows share of voice, rank and mention rate per competitor, provider, prompt and locale.

Does it track Google AI Overviews? Not in this version.

What if a model name is retired? The provider is skipped with a clear error naming the input field to change (for example openaiModel). Nothing is charged.

Is sentiment reliable? It is a transparent keyword heuristic on English text. Use it as a rough signal and read the answer text for important prompts.

Why is my brand not detected? Add alternative spellings to brandAliases. Matching is whole-word and case-insensitive.

Can I use your keys instead of mine? Only if the owner has configured them and you set useOwnerKeys; by default you bring your own.

Questions or a provider that changed its API? Open the Issues tab; replies usually within 12 hours.

More tools by the same author

ai visibility tracker, geo tracking, aeo monitoring, chatgpt brand mentions, perplexity brand tracking, ai overview tracker, share of voice ai, llm seo monitoring, generative engine optimization, ai search ranking, brand mention in chatgpt, ai citations tracker.