AI Brand Visibility Tracker: LLM Mentions & Share of Voice avatar

AI Brand Visibility Tracker: LLM Mentions & Share of Voice

Pricing

from $10.50 / 1,000 answer checkeds

Go to Apify Store
AI Brand Visibility Tracker: LLM Mentions & Share of Voice

AI Brand Visibility Tracker: LLM Mentions & Share of Voice

Track your AI search visibility (GEO/AEO): do AI models name your brand when buyers ask? Mention rate, rank, competitors and share of voice per model, with change since the last run. Asks the API models behind ChatGPT, Claude, Gemini and Perplexity (not the apps); $15 per 1,000 checks plus tokens.

Pricing

from $10.50 / 1,000 answer checkeds

Rating

0.0

(0)

Developer

Michael Costa

Michael Costa

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 hours ago

Last modified

Share

What does AI Brand Visibility Tracker do?

AI Brand Visibility Tracker asks AI models the questions your buyers ask ("what are the best project management tools for a small team?") and checks each answer for your brand: whether it's named, where it ranks, which competitors are named instead and which links are cited. A free summary row gives the mention rate per model, share of voice against your competitors and the change since your last run. It's a way to track your AI search visibility (what marketers call GEO or AEO: generative or answer engine optimization).

It asks the models through their APIs (OpenAI, Anthropic, Google, Perplexity and others via OpenRouter). These are not the answers the ChatGPT or Gemini apps show a signed-in user (why).

Input fields · API · Use it from Claude, ChatGPT or Cursor (MCP)

Jump to: Fields · Price · How to use · Track weekly · Input · Output · AI agents (MCP) · Limits · FAQ

Try it in one click: the input comes pre-filled with Trello against Asana and Monday.com, one question and one model. That's 1 check: $0.015, plus the $0.00005 start fee, plus about $0.001 of model tokens on a paid Apify plan. Then put in your own brand, competitors and buyer questions.

What data does AI Brand Visibility Tracker return?

One row per check (one question asked once of one model), including checks that failed (with the reason, never charged), and one summary row per run (free).

FieldExampleNotes
brandMentionedtrueWhether the answer names your brand (any of the names you gave).
brandRank2Its position among every brand the answer names, in the answer's order. null when not named.
competitorsMentioned["Asana", "Monday.com"]Your competitors the answer names.
competitorRanks{"Asana": 1, "Monday.com": 3}Their positions, on the same scale as brandRank.
brandsNamed["Asana", "Trello", "Monday.com", "ClickUp"]Every brand the answer names, tracked or not: the competitors you didn't know about.
citedUrls, brandCited["https://trello.com/guide"], trueLinks the answer cites or writes out; true when one is on your domain.
answer"For a small team, these stand out: ..."The full answer, up to about 1,000 tokens.
prompt, model, sample"What are the best ...", "openai/gpt-4.1-mini", 1Which question, which model, which ask.
changedfalseWhether the mention, rank or competitors differ from the same check last run; null the first time.
valid, errorstrue, []Only valid checks are charged and counted in the summary.
mentionRate (summary)0.67Share of valid checks that name your brand, overall and per model.
shareOfVoice (summary)[{"brand": "Trello", "shareOfVoice": 0.33, ...}]Each tracked brand's share of all tracked-brand mentions, with mention rate and average rank.
changes (summary){"mentionRate": {"now": 0.67, "before": 0.5, "change": 0.17}, ...}Against your last run with the same brand and questions.

The full list is under Output.

How much does it cost to track brand visibility in AI answers?

Two parts, both on your Apify account:

  1. This actor: $15.00 per 1,000 checks ($0.015 a check), plus $0.00005 each time a run starts. A check is one question asked once of one model, and only checks whose answer came back and was read are charged.
  2. The models' tokens, billed by Apify's own OpenRouter actor, which this actor calls with your run's token. On paid Apify plans that's OpenRouter's list price; on the Free plan the OpenRouter actor charges 10 times as much (its pricing, not ours). Each check is two calls: the answer (capped at 1,000 tokens) and a short call on openai/gpt-4.1-mini that lists the brands it names. With the default model that's about $1 per 1,000 checks on a paid plan; bigger models cost more.
  • The example below: 1 check × $0.015, plus the start fee and about $0.001 of tokens.
  • A month, for example: an agency tracking 4 clients weekly, each with 10 questions × 3 models × 3 samples = 90 checks a week: 4 × 90 × 4.3 weeks ≈ 1,550 checks ≈ $23, plus roughly $2-10 of tokens depending on the models.
  • Caps: Max checks per run in the input, and Maximum cost per run in the run options (it covers this actor's charges; the token charges are the OpenRouter actor's, so cap those with the number of questions, models and samples). The run stops cleanly at whichever comes first: each check is counted against the limit before it's asked, and the count is given back if it fails.

Never charged by this actor: checks whose model call failed, empty answers, answers whose brand list couldn't be read, and the summary row. (A call that reached the model still used its tokens.)

How to track your brand's visibility in AI answers

  1. Open AI Brand Visibility Tracker and click Try for free (or Start if you're signed in).
  2. Put your brand in Your brand (add other names after a |, e.g. Trello | trello.com) and your rivals in Competitors, one per line.
  3. Write the questions your buyers ask in Questions to ask, without your brand in them: "best CRM for a 10-person agency", not "is HubSpot good?".
  4. Pick the Models and Samples per question (3 gives a steadier rate than 1), then click Start.
  5. Open the Output tab: the summary row has the rates; the check rows have each answer. Export as JSON, CSV or Excel.

Track it weekly: changes since the last run, in Slack, email or a webhook

Every run remembers its figures for the same brand and questions, and the next run's summary row says what changed: mention rate overall and per model, share of voice per brand, and which brands the answers started or stopped naming. Adding a competitor or a model keeps the history; changing a question starts a new one.

  1. Fill in your brand, competitors and questions and click Start. This first run is the baseline.
  2. Click Save as a new task (top right of the actor page).
  3. In Apify Console, open Schedules, click Create new, set how often (for example weekly, Monday 07:00), then Add your task.
  4. On the task, open the Integrations tab and pick where the results go:
    • Slack: click Configure, sign in, pick the channel and the "run succeeded" event. A useful message: {{resource.statusMessage}} (for example "Trello named in 8 of 12 checks (67%)") and a link, <https://console.apify.com/storage/datasets/{{resource.defaultDatasetId}}|results>.
    • Gmail: click Connect with Google, set the subject and body, and attach the dataset.
    • HTTP webhook: event ACTOR.RUN.SUCCEEDED, your URL; fetch GET https://api.apify.com/v2/datasets/<defaultDatasetId>/items?format=json (with your API token).

Turn on Only checks that changed since the last run (onlyChanges) to leave unchanged checks out of the dataset. The summary row still covers them, and they're still charged: the question was still asked.

Example: Trello vs Asana and Monday.com

The pre-filled input:

{
"brand": "Trello",
"competitors": ["Asana", "Monday.com"],
"prompts": ["What are the best project management tools for a small team?"],
"models": ["openai/gpt-4.1-mini"],
"samples": 1
}

It ran in 19 seconds on Apify (2026-10-02) and used 741 input and 485 output tokens across both calls. The check row, answer shortened:

{
"rowType": "check",
"brand": "Trello",
"prompt": "What are the best project management tools for a small team?",
"model": "openai/gpt-4.1-mini",
"sample": 1,
"webSearch": false,
"answer": "For a small team, the best project management tools are those that combine ease of use, essential features, and affordability. Here are some of the top options:\n\n1. **Trello**\n - Visual, card-based organization ... \n\n2. **Asana** ...",
"answerTruncated": false,
"brandMentioned": true,
"brandRank": 1,
"brandCited": false,
"competitorsMentioned": ["Asana", "Monday.com"],
"competitorRanks": {"Asana": 2, "Monday.com": 4},
"brandsNamed": ["Trello", "Asana", "ClickUp", "Monday.com", "Basecamp", "Notion"],
"citedUrls": [],
"valid": true,
"errors": [],
"changed": null,
"inputTokens": 741,
"outputTokens": 485,
"checkedAt": "2026-10-02T14:19:06.335185Z"
}

And the summary row (the first run, so changes is null; topBrandsNamed shortened):

{
"rowType": "summary",
"brand": "Trello",
"competitors": ["Asana", "Monday.com"],
"prompts": ["What are the best project management tools for a small team?"],
"samples": 1,
"webSearch": false,
"checksFailed": 0,
"checks": 1,
"mentions": 1,
"mentionRate": 1,
"models": [{"model": "openai/gpt-4.1-mini", "checks": 1, "mentions": 1, "mentionRate": 1,
"sampleMentionRates": [1], "spread": 0, "averageRank": 1}],
"shareOfVoice": [
{"brand": "Trello", "tracked": "brand", "mentions": 1, "mentionRate": 1, "shareOfVoice": 0.333, "averageRank": 1},
{"brand": "Asana", "tracked": "competitor", "mentions": 1, "mentionRate": 1, "shareOfVoice": 0.333, "averageRank": 2},
{"brand": "Monday.com", "tracked": "competitor", "mentions": 1, "mentionRate": 1, "shareOfVoice": 0.333, "averageRank": 4}
],
"topBrandsNamed": [{"brand": "Trello", "checks": 1, "rate": 1}, {"brand": "Asana", "checks": 1, "rate": 1}, "..."],
"changes": null,
"checkedAt": "2026-10-02T14:19:06.198691Z"
}

Run the same input again and the summary's changes compares with this run: mention rate, per model, share of voice, and the brands newly named or no longer named; each check row says whether it changed.

Input

FieldWhat it does
Your brand (brand)The company, product or website to track. Other names after |; a domain marks links to it.
Competitors (competitors)Up to 20 rivals, one per line, same format.
Questions to ask (prompts)Up to 100 buyer questions, written without your brand.
Models (models)Up to 5 OpenRouter model ids. Default openai/gpt-4.1-mini.
Samples per question (samples)1-5 asks of each question per model. Default 1.
Only checks that changed (onlyChanges)Leave unchanged checks out of the dataset. Default off.
Max checks per run (maxChecks)Stop after this many valid checks.
{
"brand": "Trello | trello.com",
"competitors": ["Asana", "Monday.com | monday", "ClickUp"],
"prompts": ["What are the best project management tools for a small team?",
"Which kanban app is easiest for non-technical people?"],
"models": ["openai/gpt-4.1-mini", "anthropic/claude-haiku-4.5", "google/gemini-2.5-flash-lite"],
"samples": 3,
"maxChecks": 100
}

Output

Check rows (rowType: "check") have the fields in the table above, plus webSearch, answerTruncated (the answer reached the 1,000-token cap), inputTokens and outputTokens (both calls) and checkedAt. The summary row (rowType: "summary") has brand, competitors, prompts, samples, checks, checksFailed, mentions, mentionRate, and:

  • models: per model, checks, mentions, mentionRate, sampleMentionRates (the rate in each sample round) and spread (highest minus lowest round: how much the answers wobble), averageRank.
  • shareOfVoice: per tracked brand, mentions, mentionRate, shareOfVoice, averageRank.
  • topBrandsNamed: the 20 brands the answers name most, tracked or not, with how many checks named each.
  • changes: against the last run, null on the first.

The run's RUN_STATS record counts valid, failed and unchanged checks, tokens, and the first error.

Run it on a schedule, or from your own code

  1. Save your input as a task (Save as a new task, top right of the actor page) and add it to a schedule (Console → Schedules → Create new).
  2. Collect results: download the dataset as JSON, CSV or Excel; fetch the latest run's results from the API (GET https://api.apify.com/v2/actor-tasks/<task id>/runs/last/dataset/items?status=SUCCEEDED&format=csv, with your API token); let a webhook tell your system when a run succeeds; or connect it to Make, Zapier or n8n through Apify's integrations.

Can I use AI Brand Visibility Tracker from an AI agent (MCP)?

Yes, through Apify's MCP server, from Claude, ChatGPT, Cursor or any other MCP client. Add this to your client's MCP configuration; your client signs you in to Apify:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=humble-echidna/ai-visibility"
}
}
}

To use an Apify API token instead of signing in, add "headers": {"Authorization": "Bearer <APIFY_TOKEN>"} next to url.

The agent passes {"brand": "Trello", "competitors": ["Asana"], "prompts": ["best kanban app for a small team?"]} and reads the summary row (rowType: "summary") for the rates.

Who it's for

SEO and marketing agencies, and in-house marketers, who check every week or month whether AI models recommend their client's brand for the questions buyers ask, which competitors they name instead, and whether that's moving.

Why this one?

  • Ranks against every brand named, not just yours. brandRank counts the brands you didn't list, and brandsNamed / topBrandsNamed show who they are.
  • Sampling with its spread. Ask each question up to 5 times per model; the summary shows the rate in each round and how far they differ, so one lucky answer doesn't read as a trend.
  • History built in. Each run compares itself with the last run of the same brand and questions, in your own account. No spreadsheet to keep.
  • Honest matching. Names match as whole words, only the names you give ("Monday.com" doesn't match the weekday), and the brand list comes from a separate, validated structured-output call.
  • You pay for what worked. Failed calls, empty answers and unreadable ones are rows with the reason, not charges.

Limits

  • API answers, not the consumer apps. No ChatGPT, Gemini or Perplexity app pages, no Google AI Overviews and no scraping of any app. The apps add their own search, location, memory and personalisation, so their answers can differ from these.
  • No web search option in this version: answers come from what each model learned in training. Apify's OpenRouter actor didn't pass OpenRouter's web search through when tested (2026-10-02). perplexity/sonar searches the web itself, so its answers reflect current pages and cite them in citedUrls (21 links on the example question).
  • Answers are capped at about 1,000 tokens. A model that "thinks" first (reasoning models) can spend that on thinking and return an empty answer, which isn't charged; pick a non-reasoning model.
  • Brands, not people. Don't use it to track private individuals.
  • Up to 100 questions, 5 models, 5 samples and 20 competitors per run.

FAQ

Are these the answers ChatGPT, Gemini or Perplexity users see?

No. They're the answers the same companies' models give through their APIs, to the question exactly as you wrote it, with no system prompt, no user history and no location. The apps add their own instructions, web search, memory and personalisation. API answers are a consistent, repeatable measure of what a model says about your category; they aren't a screenshot of any one user's chat.

Why ask the same question several times?

Models don't answer the same way twice. One ask can name your brand and the next can't. With 3 samples, the mentionRate is the share of all asks, and sampleMentionRates / spread show how much it varies between rounds.

How is the rank worked out?

A second, small call on openai/gpt-4.1-mini lists every brand the answer names, in the answer's order (its numbered list, else the order they first appear). Your brand's rank is its position in that list. That list is checked against a JSON Schema; if it doesn't validate, the check isn't charged. Whether your brand is named at all is also matched directly in the answer text, so the two never contradict each other.

Who pays for the model?

You do, on your own Apify account, through Apify's OpenRouter actor: this actor calls it with your run's token. No API key is needed, and we never see one.

This actor scrapes nothing: it sends your questions to AI models through Apify's official OpenRouter actor, the providers' APIs, and reads the answers. Track companies, products and websites; don't use it for people. You're responsible for the questions you send and for following each model provider's usage policies.

Can I get only what changed since my last run?

Yes: the summary row's changes compares every run with the last one for the same brand and questions, and Only checks that changed leaves unchanged check rows out (how to schedule it).

ActorUse it when
SEO Audit CrawlerYou also want the classic on-page SEO checks for the same client sites.
AI Data ExtractorYou want structured data from the pages the answers cite.

Feedback and support

Found a bug, or need a field or model option that isn't here? Open an issue on the Issues tab with the input you used.

Versions

Current version: 0.1. See the Changelog tab for what changed in each version.