AI Brand Visibility Monitor: ChatGPT and Gemini Share of Voice avatar

AI Brand Visibility Monitor: ChatGPT and Gemini Share of Voice

Pricing

from $150.00 / 1,000 query-analyzeds

Go to Apify Store
AI Brand Visibility Monitor: ChatGPT and Gemini Share of Voice

AI Brand Visibility Monitor: ChatGPT and Gemini Share of Voice

Track how often ChatGPT, Perplexity and Gemini recommend your brand vs competitors. Get share of voice, mention rank and cited domains per buyer-intent query — GEO analytics for the AI-search era.

Pricing

from $150.00 / 1,000 query-analyzeds

Rating

0.0

(0)

Developer

Billy DC

Billy DC

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

2 days ago

Last modified

Share

AI Brand Visibility Monitor (GEO)

Measure how often AI assistants recommend your brand — and how often they recommend your competitors instead.

When people ask ChatGPT, Perplexity, or Gemini "what's the best CRM for a small business?", the answer decides who gets the customer. AI answers are the new search results page, and they increasingly drive purchase decisions — but unlike Google rankings, you can't see them without asking. This Actor asks for you, at scale, and turns the answers into hard numbers: share of voice, mention rate, mention rank, and cited sources for your brand vs. your competitors. This practice is known as GEO (Generative Engine Optimization) monitoring.

What it does

  1. Takes a list of buyer-intent queries (or auto-generates ~10 from a topic you provide).
  2. Asks each query to the AI providers you select:
    • OpenAIgpt-4o-mini via the Responses API with web search when available (closest proxy for ChatGPT answers).
    • Perplexitysonar model, with native web citations.
    • Google Geminigemini-2.0-flash with Google Search grounding when available.
  3. Analyzes every answer:
    • Was your brand mentioned? (case-insensitive, tolerant of plurals and possessives)
    • In what order relative to competitors (mention rank — being named first matters)?
    • How many times was each brand mentioned?
    • Which domains did the AI cite or link? (These are the sources that shape AI answers — your GEO content targets.)
  4. Outputs one dataset row per (query, provider) pair, plus an aggregate SUMMARY with share of voice per brand, per provider and overall.

Run it on a schedule (Apify Schedules) to track your AI visibility over time and catch when a competitor starts winning the answers.

Input example

{
"brandName": "Acme CRM",
"competitors": ["HubSpot", "Salesforce"],
"queries": [
"What is the best CRM for small businesses?",
"Which CRM should a startup use in 2026?",
"Affordable HubSpot alternatives?"
],
"providers": ["openai", "perplexity"],
"maxQueries": 20
}

Don't have queries yet? Set "autoGenerateQueries": true and "topic": "CRM software for small businesses" and the Actor will generate ~10 realistic buyer-intent questions for you.

API keys

Provider API keys are resolved in this order:

  1. The apiKeys input object (stored encrypted): {"openaiApiKey": "...", "perplexityApiKey": "...", "geminiApiKey": "..."}
  2. Environment variables set on the Actor: OPENAI_API_KEY, PERPLEXITY_API_KEY, GEMINI_API_KEY

You only need keys for the providers you select.

Output example

One row per (query, provider):

{
"type": "result",
"query": "What is the best CRM for small businesses?",
"provider": "perplexity",
"brandName": "Acme CRM",
"brandMentioned": true,
"brandRank": 2,
"mentionCounts": { "brand": 1, "competitors": { "HubSpot": 3, "Salesforce": 1 } },
"citedDomains": ["g2.com", "capterra.com", "hubspot.com"],
"answerExcerpt": "For small businesses, HubSpot is the most commonly recommended CRM...",
"timestamp": "2026-07-24T12:00:00.000Z",
"error": null
}

Aggregate summary (also saved to the key-value store as SUMMARY):

{
"type": "summary",
"overall": {
"responsesAnalyzed": 6,
"brands": {
"Acme CRM": { "mentions": 3, "shareOfVoicePct": 23.1, "mentionRatePct": 50.0, "avgRank": 2.3 },
"HubSpot": { "mentions": 6, "shareOfVoicePct": 46.2, "mentionRatePct": 100.0, "avgRank": 1.2 },
"Salesforce": { "mentions": 4, "shareOfVoicePct": 30.8, "mentionRatePct": 66.7, "avgRank": 2.0 }
}
},
"perProvider": { "openai": { "...": "..." }, "perplexity": { "...": "..." } }
}
  • shareOfVoicePct — this brand's mentions as a % of all tracked-brand mentions.
  • mentionRatePct — % of AI answers in which the brand appeared at all.
  • avgRank — average position among mentioned brands (1 = named first).

Pricing

This Actor uses pay-per-event pricing: you are charged one query-analyzed event for each successfully analyzed (query, provider) pair. Failed provider calls are not charged. Example: 20 queries × 2 providers = up to 40 events per run.

Note for the Actor owner (publish-time): define the query-analyzed event in the Actor's pay-per-event pricing configuration in Apify Console. If you provide default API keys via environment variables, consider gating free-plan users (e.g., check Actor.getEnv().userIsPaying or limit maxQueries for free accounts) so LLM costs on free runs stay bounded.

Honest limitations

  • AI answers are non-deterministic. The same query can yield different brands on different runs. Treat single runs as samples; schedule recurring runs and watch the trend, not one data point.
  • This queries provider APIs, not the consumer apps. API answers (especially with web search/grounding enabled) correlate with, but are not identical to, what a user sees in the ChatGPT/Gemini apps.
  • Mention detection is lexical. It matches brand names (including plurals/possessives) but does not do entity disambiguation — a brand named after a common word (e.g., "Monday") will over-count. Prefer distinctive forms like "Monday.com" in your input.
  • No sentiment analysis. The Actor measures presence, rank, and counts — not whether the mention was positive.
  • Citations coverage varies. Perplexity always cites; OpenAI/Gemini only cite when their search tools are available on your API key.

Local development

npm install
# Put your input into storage/key_value_stores/default/INPUT.json, then:
npm start
# Or with apify-cli:
apify run

Set "mockMode": true in the input to smoke-test the full pipeline with deterministic fake answers and no API keys.