AI Brand Visibility Monitor: ChatGPT, Claude & Gemini Mentions avatar

AI Brand Visibility Monitor: ChatGPT, Claude & Gemini Mentions

Under maintenance

Pricing

from $100.00 / 1,000 claude checks

Go to Apify Store
AI Brand Visibility Monitor: ChatGPT, Claude & Gemini Mentions

AI Brand Visibility Monitor: ChatGPT, Claude & Gemini Mentions

Under maintenance

AI search visibility tracker for GEO and AEO: asks ChatGPT, Claude and Gemini your customers' questions through the official APIs with web search and records brand mentions, rank, tone, competitors and cited sources, with the change since the last run. $0.08 to $0.10 per answer.

Pricing

from $100.00 / 1,000 claude checks

Rating

0.0

(0)

Developer

Local Wire

Local Wire

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Features

Limited permissions

Share

AI Brand Visibility Monitor is an AI search visibility tracker: it asks ChatGPT's models, Claude and Gemini your customers' questions through the official OpenAI, Anthropic and Gemini APIs with web search on, and records whether your brand is mentioned, ranked and cited. $0.08 to $0.10 per answer, no start fee, no subscription.

Use it for generative engine optimisation (GEO) and answer engine optimisation (AEO) work: measure where you stand in AI answers today, see which competitors and which web pages the assistants rely on, and track the change week by week.

For every answer the Actor records:

  • whether your brand is mentioned, how many times, and where it comes in the order of brands named (rank 1 = named first);
  • how the passage about you reads (positive, neutral, negative or mixed);
  • which competitors are named and ranked, and whether their sites are cited;
  • which pages and domains are cited, whether your own site is among them, and what the engine searched for;
  • the change since the previous run (new, gained, lost, changed, unchanged) when you run it on a schedule.

What it covers, plainly: ChatGPT's models (OpenAI API), Claude (Anthropic API) and Gemini (Gemini API), each with its web search tool switched on. It does not cover Perplexity, Google AI Overviews, AI Mode, Copilot or any other assistant. Answers come from the providers' APIs, not from the consumer apps, so they can differ from what you see when you type the same question into chatgpt.com, claude.ai or the Gemini app (see Limitations).

What you get

One dataset record per check. A check is one prompt asked of one engine: 10 prompts on three engines is 30 checks and 30 records.

{
"id": "openai-5d0c1f6f1a2b9e47",
"type": "check",
"engine": "openai",
"engineLabel": "ChatGPT (OpenAI API)",
"model": "gpt-6.1-terra",
"prompt": "Best HR software for small UK companies?",
"country": "GB",
"brand": "Humaans",
"status": "ok",
"error": null,
"brandMentioned": true,
"mentionCount": 2,
"mentionRank": 2,
"firstMentionAt": 0.19,
"sentiment": "positive",
"sentimentScore": 0.6,
"snippets": [
"Humaans is a modern, fast platform built for small and mid-sized companies, and users praise its clean interface. It lacks built-in payroll, so you connect a payroll provider."
],
"brandCited": true,
"brandCitations": ["https://humaans.io/"],
"competitors": [
{ "name": "BambooHR", "mentioned": true, "mentionCount": 3, "mentionRank": 1, "firstMentionAt": 0.07, "cited": true, "citedUrls": ["https://www.bamboohr.com/pricing/"] },
{ "name": "Personio", "mentioned": true, "mentionCount": 1, "mentionRank": 3, "firstMentionAt": 0.41, "cited": false, "citedUrls": [] }
],
"competitorsMentioned": ["BambooHR", "Personio"],
"citations": [
{ "url": "https://www.techradar.com/best/best-hr-software", "domain": "techradar.com", "title": "Best HR software of 2026" },
{ "url": "https://humaans.io/", "domain": "humaans.io", "title": "Humaans: HRIS for modern companies" }
],
"citedDomains": ["techradar.com", "humaans.io"],
"sources": [
{ "url": "https://www.techradar.com/best/best-hr-software", "domain": "techradar.com", "title": null },
{ "url": "https://humaans.io/", "domain": "humaans.io", "title": null },
{ "url": "https://www.g2.com/categories/core-hr", "domain": "g2.com", "title": null }
],
"sourceDomains": ["techradar.com", "humaans.io", "g2.com"],
"searchQueries": ["best HR software for small UK companies 2026"],
"searchCount": 1,
"answer": "For a small UK company the usual shortlist is BambooHR, Humaans and Personio. ...",
"answerLength": 2140,
"previous": { "checkedAt": "2026-11-02T08:00:09.000Z", "brandMentioned": false, "mentionRank": null, "sentiment": null, "brandCited": false },
"change": "gained",
"checkedAt": "2026-11-09T08:00:12.000Z"
}

Output fields

FieldMeaning
engine, engineLabel, modelWhich assistant answered and the model id the API reported.
prompt, country, brandWhat was asked.
statusok, truncated (answer cut at the token limit), refused (the model declined), no_answer, or error (the provider failed; error holds the message and the record is free).
brandMentioned, mentionCount, mentionRank, firstMentionAtMention facts. mentionRank counts only the brands you track (yours plus competitors); firstMentionAt is the position of the first mention as a fraction of the answer (0 = the first words).
sentiment, sentimentScoreTone of the passages about your brand: positive, neutral, negative or mixed, with a score from -1 to 1. A word-list heuristic with negation handling, not a judgement; read the snippets.
snippetsUp to three passages mentioning the brand.
brandCited, brandCitationsWhether a page on one of your domains (or a subdomain) is cited, and which.
competitors[], competitorsMentionedPer competitor: mentioned, count, rank, position, cited, cited URLs.
citations[], citedDomainsPages cited in the answer (url, domain, title).
sources[], sourceDomainsEvery page the engine read while answering (a superset of the citations where the API exposes it).
searchQueries, searchCountWhat the engine searched for and how many searches it ran.
answer, answerLengthThe full answer text (email addresses and phone numbers removed). answer is null when includeAnswer is off.
previous, changeThe last result for the same engine, model, prompt and brand, and the change: new, gained, lost, changed (rank, tone or citation moved) or unchanged.
checkedAtWhen the answer was produced (UTC).

The dataset has two table views, Checks and Citations. The run's key-value store also holds an OUTPUT summary: checks planned and completed, errors, answers that mention the brand in total and per engine, the stop reason and the account's daily allowance.

Quick start

The form opens with a one-check example: one prompt, one engine (ChatGPT). Press Start and you get one record for $0.09. The same input as JSON:

{
"brand": "Apify",
"brandDomains": ["apify.com"],
"competitors": ["Bright Data | brightdata.com", "Zyte | zyte.com"],
"prompts": ["What are the best web scraping platforms for developers?"],
"engines": ["openai"],
"maxChecks": 10
}

Then make it yours:

  1. Put your brand in brand, your sites in brandDomains, and any other spellings in brandAliases.
  2. Replace the prompt with the questions your customers ask, one per line. Write them as a person would: "best payroll software for a 20-person company", not "payroll software".
  3. Add anthropic and gemini to engines when you want all three assistants.
  4. Raise maxChecks to at least prompts × engines.
  5. Schedule the run (weekly is a sensible start) and read the change field.

Note that engines asks all three when the field is left out of an API call, so list the engines you want.

Input reference

FieldTypeDefaultMeaning
brand (required)stringThe brand, product or company name to look for. Matching is case-insensitive on whole words.
brandAliasesstring[]Other spellings that also count as a mention ("Humaans HR", "humaans.io").
brandDomainsstring[]Your own domains. A cited page on one of them, or on a subdomain, sets brandCited.
competitorsstring[]Other brands to track in the same answers, one per line. "Name | domain.com" also tracks their citations; "Name; alias; domain.com" adds aliases.
prompts (required)string[]The questions, up to 200 per run and 600 characters each. Duplicates are asked once.
countrystringnoneTwo-letter country code (GB, US, DE) to localise web search. Applies to ChatGPT and Claude; Gemini has no location setting.
enginesstring[]all threeAny of openai, anthropic, gemini.
openaiModelstringgpt-6.1-terragpt-6.1-terra or gpt-6-luna (standard price), gpt-6.1-sol (premium price).
anthropicModelstringclaude-sonnet-5-5claude-sonnet-5-5 or claude-haiku-5-5 (standard), claude-opus-5-5 (premium).
geminiModelstringgemini-3.8-flashgemini-3.8-flash, gemini-3.6-flash or gemini-3.5-flash-lite (standard), gemini-3.1-pro-preview (premium).
maxSearchesinteger5Web searches Claude may run for one answer (1 to 10). ChatGPT and Gemini decide for themselves.
maxChecksinteger60Stop after this many checks (1 to 500). Checks beyond it are not run and not charged.
includeAnswerbooleantrueReturn the full answer text in each record.
compareWithPreviousbooleantrueRemember each check's last result and fill previous and change.

Use cases

  • GEO and AEO baselines. Before you change anything, record which of your category's questions mention you on each assistant, at what rank and with what tone.
  • AI share of voice. Ask 20 to 50 category questions and count the answers that name you against the answers that name each competitor. The OUTPUT summary gives mentions per engine; competitors[] gives the same facts for each rival.
  • Citation and source analysis. citedDomains and sourceDomains show which review sites, directories, forums and publishers the assistants read for your category. Those are the pages worth being on.
  • Competitor monitoring. Track when a competitor starts to be named first, or when their own site begins to be cited.
  • Launch and campaign tracking. Schedule a weekly run and filter on change = gained or lost to see what moved after a launch, a PR push or a content update.
  • Agency reporting. Run one task per client and export the Checks view to CSV, Excel or Google Sheets.
  • Brand safety. Read the snippets and sentiment for prompts such as "is X any good?" or "X problems" to see how the assistants describe you.

Pricing

Pay per check, by engine and model tier. There is no start fee and no monthly fee.

EngineStandard modelsPrice per checkPremium modelPrice per check
ChatGPT (OpenAI API)GPT-6.1 Terra (default), GPT-6 Luna$0.09GPT-6.1 Sol$0.15
Claude (Anthropic API)Claude Sonnet 5.5 (default), Claude Haiku 5.5$0.10Claude Opus 5.5$0.18
Gemini (Gemini API)Gemini 3.8 Flash (default), 3.6 Flash, 3.5 Flash-Lite$0.08Gemini 3.1 Pro Preview$0.15

The price includes the provider's API usage and its web search fees: you do not need your own OpenAI, Anthropic or Google keys.

Worked examples with the default models:

RunChecksCost
The quick-start example: 1 prompt on ChatGPT1$0.09
1 prompt on all three engines3$0.09 + $0.10 + $0.08 = $0.27
10 prompts on all three engines3010 × $0.27 = $2.70
20 prompts on all three engines, every week60 a week$5.40 a run, about $23.40 a month
10 prompts on Gemini only, every day10 a day$0.80 a day, about $24 a month

What is and is not charged:

  • A check is charged when the provider returns an answer, including the rare answer that is truncated, refused or empty (no_answer), because the provider bills for it.
  • A check that fails at the provider (rate limit, outage, authentication) is written as a status: "error" record and is free.
  • Checks that maxChecks, the daily allowance or the run's maximum cost prevent are never sent, so they cost nothing.

To cap a run, set maxChecks, or set the run's maximum cost in the Console (the maxTotalChargeUsd API parameter): the Actor checks before each provider call that another check still fits and stops when it does not.

Daily allowance. Because every check costs real API usage on our side, each Apify account has a daily allowance: 15 checks a day on free plans, 1,000 a day on paid plans. When it is used up, the run stops with a clear status message and the remaining checks can run the next day (UTC).

Use it from the API

Run the Actor and get the records back in one HTTP call:

curl -X POST "https://api.apify.com/v2/acts/localwire~ai-brand-visibility/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN>&maxTotalChargeUsd=1" \
-H "content-type: application/json" \
-d '{
"brand": "Humaans",
"brandDomains": ["humaans.io"],
"competitors": ["BambooHR | bamboohr.com", "Personio | personio.com"],
"prompts": ["Best HR software for small UK companies?"],
"engines": ["openai", "gemini"],
"country": "GB"
}'

Each answer involves live web searches and can take tens of seconds, so for more than a handful of checks start the run asynchronously (POST /v2/acts/localwire~ai-brand-visibility/runs) and read the dataset when it finishes.

With the official clients:

import { ApifyClient } from "apify-client";
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor("localwire/ai-brand-visibility").call({
brand: "Humaans",
prompts: ["Best HR software for small UK companies?"],
engines: ["openai"],
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("localwire/ai-brand-visibility").call(run_input={
"brand": "Humaans",
"prompts": ["Best HR software for small UK companies?"],
"engines": ["openai"],
})
items = client.dataset(run["defaultDatasetId"]).list_items().items

Use it from an AI agent (MCP)

Apify hosts an MCP server at https://mcp.apify.com. Add it to any MCP client (Claude, ChatGPT, Cursor, VS Code and others) and sign in with your Apify account, or send your API token as an Authorization: Bearer header. To expose just this Actor as a tool, use:

https://mcp.apify.com?tools=localwire/ai-brand-visibility

The agent can then run a check itself. A prompt such as "Use localwire/ai-brand-visibility to ask ChatGPT whether Humaans is recommended for small UK companies, and list the domains it cited" is enough.

Two things an agent should know, because it sees the input schema's defaults and not the Console's example values:

  • engines defaults to all three engines. Pass "engines": ["openai"] (or another single engine) for a one-check call.
  • maxChecks defaults to 60. Pass a small number when experimenting.

Integrations

Runs can be scheduled in the Apify Console, called from the API, or connected to other tools through Apify's integrations: Make, n8n, Zapier, LangChain, webhooks and others. Datasets export as JSON, CSV, Excel, XML or RSS, or straight to Google Sheets through an integration. A common setup is a weekly schedule plus a webhook or Make/Zapier scenario that posts the records whose change is gained or lost to Slack or e-mail.

How it works

  • ChatGPT: OpenAI Responses API with the web_search tool (sources included), low reasoning effort. Citations come from the answer's url_citation annotations, sources from the search calls.
  • Claude: Anthropic Messages API with the web_search server tool (up to maxSearches searches), low effort. Citations come from the text blocks' web_search_result_location entries, sources from the search result blocks.
  • Gemini: Gemini API generateContent with Grounding with Google Search. Cited pages come from groundingSupports, read pages from groundingChunks; Google's redirect links are resolved to the real page URLs. Gemini decides for itself whether to search and often answers from memory, so every request carries a short system instruction to ground the answer in current web sources and cite them.

Each prompt is sent on its own, with no conversation history, no memory and no persona. Mentions are whole-word, case-insensitive matches of the brand name and aliases. Ranks compare the first mention of each tracked brand. The tone score counts positive and negative cue words in the sentences that name the brand (and the pronoun sentences that follow), flipping a cue after "not", "no", "never" and the like.

No chat interface is scraped, and no accounts, browsers or proxies are involved.

FAQ

How do I check if ChatGPT mentions my brand?

Put your brand in brand, the question in prompts, set engines to ["openai"] and run. brandMentioned answers the question; mentionRank, snippets and citations show where and how. One check costs $0.09.

What is GEO (generative engine optimisation) and how does this help?

GEO, also called AEO (answer engine optimisation) or LLM SEO, is the work of getting your brand named and your pages cited in AI-generated answers. You cannot improve what you do not measure: this Actor gives you the measurement (mentions, rank, tone, citations, competitors) on a fixed prompt set so you can compare before and after.

How do I measure AI share of voice?

Ask a set of category questions (20 or more gives steadier numbers) and divide the answers that mention you by all answers. The OUTPUT summary has mentioned and ok in total and per engine. Do the same with each entry of competitors[] to get each rival's share. The Actor reports the counts; it does not output a single share-of-voice score.

Does it track Perplexity or Google AI Overviews?

No. It covers ChatGPT's models, Claude and Gemini through their official APIs. Perplexity, Google AI Overviews, AI Mode and Copilot are not covered.

Are the answers the same as in the ChatGPT, Claude and Gemini apps?

Not exactly. The consumer apps add their own system prompts, memory, personalisation, location and sometimes different models and search behaviour. API answers with web search are a close, reproducible view of what the same models say, not a screenshot of the app. Treat the results as a consistent benchmark over time.

Why do results change between runs?

AI answers are not deterministic and the web search results behind them change. One answer is an anecdote. Ask several prompts, run on a schedule, and read trends.

Do I need my own OpenAI, Anthropic or Google API keys?

No. The provider calls are made on the Actor's keys and their cost is included in the price per check.

Can I track competitors?

Yes. List them in competitors, optionally with a domain ("Zyte | zyte.com"). Each gets its own mention count, rank and cited flag in every record.

How do I export the results to CSV or Google Sheets?

Open the run's dataset and choose CSV or Excel, or call https://api.apify.com/v2/datasets/<DATASET_ID>/items?format=csv&view=overview. For Google Sheets use Apify's Google Sheets integration or a Make/Zapier scenario.

How often should I run it?

Weekly suits most brands. Daily is useful around a launch. Each scheduled run compares with the previous one for the same engine, model, prompt and brand.

Is there a free trial?

There is no separate trial, but a first test is cheap: the one-check quick start costs $0.09, and accounts on Apify's free plan can run up to 15 checks a day, paid from the plan's platform credit.

Limitations

  • API, not the apps. See the FAQ above: API answers can differ from the consumer apps.
  • Three engines only. No Perplexity, Google AI Overviews, AI Mode, Copilot, Grok or Meta AI.
  • Answers vary. The same prompt can be answered differently minutes apart.
  • Tone is a heuristic. Use sentiment to sort, then read the snippets.
  • Mentions are name matches. A brand whose name is a common word ("Notion", "Monday") can match unrelated uses; add specific aliases and check the snippets.
  • country applies to ChatGPT and Claude only. Gemini's grounded search has no location setting.
  • English cue words. Mention detection works in any language; the tone label is built on English words and is unreliable for answers in other languages.
  • Model list. Model ids are the providers' current ones. If a provider retires a model, pick another in the input; the record reports the model the API actually used.
  • Daily allowance of 15 (free plans) or 1,000 (paid plans) checks per account, and at most 500 checks per run.
  • Failures. A temporary provider error is retried once; after three failures in a row, or an authentication failure, that engine is skipped for the rest of the run and the status message says so.
  • Privacy. Answers are about brands and products. Email addresses and phone numbers that appear in answer text are removed before it is stored. No user or account data is collected.

More from this developer