AI Search Visibility Tracker: Brand in AI avatar

AI Search Visibility Tracker: Brand in AI

Pricing

from $0.03 / answer checked

Go to Apify Store
AI Search Visibility Tracker: Brand in AI

AI Search Visibility Tracker: Brand in AI

Returns, for each question asked to OpenAI, Claude and Perplexity models, whether your brand was named, its position and list rank, competitors named, share of voice and cited links. Monitor mode shows what changed since the last run. No AI account needed.

Pricing

from $0.03 / answer checked

Rating

0.0

(0)

Developer

Brightknot

Brightknot

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

12 days ago

Last modified

Security

Limited permissions

Share

Find out if AI assistants recommend your brand. Ask OpenAI, Anthropic and Perplexity models the questions your buyers ask, such as "What are the best CRM tools for a small business?", and get one row per answer: was your brand named, in what position, at what rank in the list, which competitors were named before you, your share of voice, and which links were cited.

Turn on monitor mode and schedule it weekly: each run also tells you what changed for every question and model since the last run (gained mention, lost mention, moved up, moved down). This is the data behind GEO (generative engine optimization) and AI SEO reporting.

No AI account is needed. Model calls go through Apify's OpenRouter proxy and the model cost is added to your Apify bill.

For AI agents

Use this Actor when you need to know whether AI assistants recommend a brand for given buyer questions, and which competitors they name instead. Not for web search rankings. It asks AI models, it does not read Google results.

  • Actor id: brightknot/ai-search-visibility-tracker
  • Required input: brand
  • Call: MCP call-actor with the input below, then get-dataset-items. Over HTTP: POST https://api.apify.com/v2/acts/brightknot~ai-search-visibility-tracker/run-sync-get-dataset-items with the input as the JSON body.
  • Cap the spend with maxTotalChargeUsd in the call options, not in the input.

Example input

{
"brand": "Notion",
"brandDomains": ["notion.com"],
"competitors": ["Confluence", "Coda", "ClickUp"],
"prompts": ["What are the best team wiki apps?", "What is a good alternative to Confluence?"],
"monitorMode": false
}

Example output row

Trimmed to the main fields. See the Output schema tab for every field.

{
"prompt": "What are the best team wiki apps?",
"model": "~openai/gpt-luna-latest",
"brand_mentioned": true,
"brand_position": 1,
"brand_list_rank": 1,
"competitors_mentioned": ["Confluence", "Coda", "Obsidian"],
"share_of_voice": 0.333,
"cited_urls": [],
"brand_domain_cited": false
}

A SUMMARY record has the visibility rate per model and prompt.

Cost per call

EventPriceWhen
Answer checkedUSD 0.03per answer row returned (failed calls are not charged)
Actor startApify defaultonce per run
Model usageunder USD 0.001 per answer for Haiku or GPT Luna, about USD 0.006 for Perplexity Sonar (estimates)billed by Apify's OpenRouter proxy

The example input is 2 prompts x 3 models = 6 answers: about USD 0.18 plus about USD 0.01 of model cost.

Limits

  • Answers = prompts x models x repeatsPerPrompt, capped by maxAnswers (default 600). Each answer is billed.
  • 6 answers take about 30 to 60 seconds. call-actor waits at most 45 seconds, so poll larger runs.
  • AI answers vary between asks; use repeatsPerPrompt 3 for a steadier rate.
  • No API key needed with the default provider. Runs with limited permissions.

What it does

  • Asks each prompt to each model, once or up to 5 times (AI answers vary from one ask to the next, so repeats give a steadier rate).
  • Writes prompts for you from your product category, brand and competitors when you do not give your own.
  • Finds your brand and its other names as whole words (so "Notion" does not match "notional"), and every competitor you list.
  • Reads ranked answers: numbered lists, bullet lists and heading lists. Gives your rank in the list and the competitors' ranks.
  • Lists other product names that appear in the answer's lists but are not on your competitor list, so you discover who the AI recommends instead of you.
  • Collects cited links (Perplexity citations, OpenRouter link annotations and links in the text) and tells you when one of your own domains is cited.
  • Optional: a second small model call rates how the answer describes your brand (positive, neutral or negative) with a one-line reason.
  • Saves a run summary with the visibility rate, average position, share of voice and competitor mention rates, overall, per model and per prompt.

Use cases

  • Marketing and SEO teams: track your AI visibility each week for 10 to 50 buyer questions and report the trend.
  • Agencies: one monitor name per client, a scheduled run each Monday, results sent to Google Sheets or Slack with Apify integrations.
  • Product marketing: see which competitors AI assistants name next to you, and which unknown names keep showing up in their lists.
  • Local businesses and regional brands: set the market (for example United Arab Emirates or Germany) to see local recommendations.

Input

FieldWhat it does
BrandYour brand or product name. Required.
Other names for the brandOther spellings or product names that count as a mention, e.g. Notion AI.
Brand websitesYour domains, e.g. notion.com. Used to flag answers that cite your site.
CompetitorsCompetitor names to track in the same answers.
Product categoryUsed to write prompts when Prompts is empty, e.g. project management tools.
PromptsYour buyers' questions, one per line.
AI modelsOpenRouter model ids. Default: ~openai/gpt-luna-latest, anthropic/claude-haiku-5.5 and perplexity/sonar (live web search with citations).
Ask each question this many times1 to 5. Default 1.
MarketAdds "I am based in ..." to every question.
Rate how the brand is describedAdds sentiment and a reason when the brand is named.
Monitor modeCompares each answer with the last run of the same monitor. On by default.
Monitor nameOne history per name. Use one per brand or client.
Include the full answer textOn by default.
Max answers per runSafety cap, default 600.
Model providerApify proxy (default, no key) or your own OpenRouter key.

Example input:

{
"brand": "Notion",
"brandAliases": ["Notion AI"],
"brandDomains": ["notion.com"],
"competitors": ["Confluence", "Coda", "ClickUp", "Obsidian"],
"prompts": [
"What are the best team wiki apps?",
"Which note-taking app should a 20-person startup use?",
"What is a good alternative to Confluence?"
],
"models": ["~openai/gpt-luna-latest", "anthropic/claude-haiku-5.5", "perplexity/sonar"],
"repeatsPerPrompt": 2,
"monitorMode": true,
"monitorName": "notion-weekly"
}

Output (one row per answer)

{
"brand": "Notion",
"prompt": "What are the best team wiki apps?",
"model": "~openai/gpt-luna-latest",
"repeat": 1,
"status": "ok",
"brand_mentioned": true,
"brand_mention_count": 2,
"brand_position": 1,
"brand_list_rank": 1,
"list_length": 5,
"brand_first_mention_at": 0.12,
"competitors_mentioned": ["Confluence", "Coda", "Obsidian"],
"competitor_positions": {"Confluence": 2, "Coda": 3, "Obsidian": 4},
"competitor_list_ranks": {"Confluence": 2, "Coda": 3, "Obsidian": 5},
"share_of_voice": 0.333,
"other_names_in_lists": ["Slab"],
"cited_urls": [],
"brand_domain_cited": false,
"change": "moved up",
"previous_mentioned": true,
"previous_position": 2,
"previous_list_rank": 2,
"sentiment": "positive",
"sentiment_reason": "Described as flexible and the easiest place to start.",
"answer_text": "Here are some of the best note-taking and team wiki apps: 1. **Notion** ...",
"answer_chars": 642,
"input_tokens": 61,
"output_tokens": 180,
"model_cost_usd": 0.0004,
"market": null,
"checked_at": "2026-10-12T07:00:00Z"
}
FieldMeaning
brand_positionThe order in which the brand was first named, among your brand and the competitors you listed. 1 means named first.
brand_list_rankThe brand's place in the answer's ranked list (numbered, bulleted or headings). Empty when the answer has no list or the brand is not in it.
brand_first_mention_atHow far into the answer the brand first appears, from 0 (start) to 1 (end).
share_of_voiceBrand mentions divided by all mentions of the brand and the listed competitors.
other_names_in_listsProduct names in the answer's lists that are not your brand or a listed competitor.
cited_urls, brand_domain_citedLinks the model cited, and whether one is on your domains.
changeMonitor mode only: first check, gained mention, lost mention, moved up, moved down, same or still not mentioned.
model_cost_usdThe model cost OpenRouter reported for this answer, when it reports one.

The run summary is saved as SUMMARY in the run's key-value store, with the visibility rate (share of answers that name the brand), average position, average list rank, share of voice, competitor mention rates and sentiment counts: overall, per model and per prompt. It also lists the other names seen most often and any model that failed.

Pricing

$0.03 per answer, plus the model cost.

You pay for each answer row in the results. Failed calls are not output and not charged. The model cost is billed by Apify's OpenRouter proxy at OpenRouter's prices. Rough estimates from prompt sizes: under $0.001 per answer with Claude Haiku 5.5 or GPT Luna, and about $0.006 with Perplexity Sonar, which includes a web search. Example: 10 prompts x 3 models once a week is 30 answers, about $0.90 plus about $0.10 of model cost.

How it works

  1. Builds the list of prompts (yours, or written from the category, brand and first two competitors).
  2. Sends each prompt to each model through the Apify OpenRouter proxy (https://openrouter.apify.actor), authorised with your own Apify token inside the run. The system prompt only asks for a direct, practical answer that names specific products. It never mentions your brand, so the answer is not steered.
  3. Reads each answer with fixed rules (whole-word matching, list detection, link extraction). The numbers do not depend on another AI call. The optional sentiment rating is the only second call.
  4. In monitor mode, each answer's result is saved under your monitor name in a named key-value store (ai-visibility-tracker-state) and compared on the next run.

A model id that OpenRouter rejects is skipped for the rest of the run and listed in the summary. Network errors and rate limits are retried with backoff.

Limits

  • Models answer differently each time and change over time. Use repeats and look at trends, not one answer.
  • Models without web search (Claude Haiku, GPT Luna) answer from their training data, which is what many people see in chat apps. Perplexity Sonar searches the web live. Results in consumer apps can differ because those apps add their own search, memory and location.
  • The proxy allows at most 2,048 output tokens per answer, which is enough for normal answers.
  • Names are matched as written. Add other spellings and product names under "Other names for the brand".

FAQ

Do I need an OpenAI, Anthropic or Perplexity account? No. The Apify OpenRouter proxy bills the model cost to your Apify account. You can use your own OpenRouter key instead.

Which models can I use? Any model id listed on openrouter.ai/models, for example perplexity/sonar-pro or ~deepseek/deepseek-flash-latest.

Why ask the same question more than once? The same question can get a different list each time. Three asks per prompt give a more reliable visibility rate.

Does the first monitor run show changes? No. The first run sets the baseline (first check). Later runs show what changed.

Can I track several brands? Run once per brand with its own monitor name, or put one brand in Brand and the others in Competitors to compare them in the same answers.