AI Visibility Monitor
Pricing
from $10.00 / 1,000 engine checks
AI Visibility Monitor
Track ChatGPT brand mentions, Gemini answers, and Google AI Overviews. Compare share of voice and citation changes for generative engine optimization.
See whether AI answer engines name your brand, where they place it against competitors, and what changed since the last check.
You bring the brand, the competitors, and the questions customers actually ask. On a schedule, this Actor asks those questions to Google AI Overviews, Gemini, and ChatGPT (Perplexity and Google AI Mode are optional). Each delivered answer is one engine-check. The Actors that fetch the answers bill your Apify account separately, at their own prices.
Who it's for
| Team | What they watch |
|---|---|
| SEO and marketing | Buyer questions in AI Overviews, Gemini, and ChatGPT: mentions, position, cited domains |
| Agencies | Several brands, each with its own monitor name, change feed, and Slack or webhook alerts |
| Founders | A short prompt list and a weekly check against two or three competitors |
What you get
One dataset row per prompt, engine, and repeat:
- the answer text and the cited URLs and domains
- whether the brand was named, how many times, which alias matched, and its position among the brands named in the answer
- whether the brand's domain was cited, and which competitors were named or cited
- the engine, the source Actor, the source run id, the route, the country, the time, and the source cost for that row
- an optional sentiment label from a small word list, on sentences that name the brand
A named monitor keeps that history. Later runs add free change rows when the brand appears or disappears, its position moves, a competitor is newly named ahead of it, a cited domain is new, or the brand stops being cited. Repeats (1–3) produce a stable mention rate, because the same question does not always get the same answer. A free report row and SUMMARY give share of voice: the brand's mention rate and average position against each competitor, per engine and overall.
Empty checks, failed engines, change rows, and reports are free. A failed source is not billed as an engine-check. If the primary source refuses, returns nothing, or returns rows this Actor cannot read, the next source in that engine's list is tried. A free status row records which source failed. Premium sources ($0.20 on the free plan, measured 6 Nov 2026) run only when you turn on Allow premium sources.
Engines
Prices below are free-plan source prices measured on 6 Nov 2026. A paid Apify plan often pays those Actors less. Our fee is separate.
| Engine | Default | Primary source | Typical source fee | Fallback |
|---|---|---|---|---|
| Google AI Overviews | on | apify/google-ai-overviews-scraper | $0.003 per overview | johnvc/Google-AI-Overview-API ($0.0027), then subimpact/google-serp-ai-overviews ($0.003) |
| Gemini | on | s-r/gemini-search | $0.005 per answer | apify/gemini-search-scraper ($0.20, premium) |
| ChatGPT | on | hyperbach/ai-search-answers (queued web read) | about $0.01 per answer ($0.0167 if that Actor serves it live) | apify/chatgpt-search-scraper ($0.20, premium) |
| Perplexity | off | hyperbach/ai-search-answers (API route) | about $0.026 per answer | apify/perplexity-search-scraper ($0.20, premium). That Actor returned HTTP 402 on our plan on 6 Nov 2026. |
| Google AI Mode | off | hyperbach/ai-search-answers | about $0.01 per answer | none |
hyperbach/ai-search-answers is developed by another Store publisher. Adapters are isolated, and each source's recent success and failure count is kept in the route-health store so a broken source can be skipped with Skip these source Actors.
The official Google AI Overviews Actor accepts queries only. The country you set is stored on the row and is sent to sources that have a country field (Gemini, the fallbacks, ChatGPT, Perplexity). It is not a parameter of apify/google-ai-overviews-scraper.
What a run costs
Our monitoring fee is $0.01 per delivered answer (engine-check), the same on every Apify plan. The platform also charges its usual Actor start event. Source fees are whatever those Actors charge your plan.
Example, free-plan source prices on 6 Nov 2026, one prompt, Google AI Overviews and Gemini, one repeat (the saved input):
| USD | |
|---|---|
| Our fee, 2 checks | 0.02 |
| Google AI Overviews | 0.00305 |
| Gemini | 0.005 |
| About one run | 0.028 |
| Daily for a month | 0.84 |
| Weekly for a month (4 runs) | 0.11 |
Those two source figures are what the free plan actually charged on 6 Nov 2026 (runs iE1TM4AfubaRY7dy2 and kCfXgeYeTPTnw1Qql). Platform compute for this Actor is included in our fee.
Adding ChatGPT on the queued route is about $0.01 more per prompt. COST_ESTIMATE in the run is the same arithmetic for the input you actually saved, in plain language. maxSourceCostUsd (default $0.50, $0.05 on the saved input) stops this Actor from starting a source call that would pass the cap.
Presets
Leave Prompts empty and pick a preset. The questions are written into EFFECTIVE_CONFIG before any source is called.
| Preset | Questions it fills |
|---|---|
| Brand vs competitors | What the brand is, the brand against the first competitor, and a "best alternative" question |
| Category leaders | Best, small-team, and comparison questions for the category you type |
| Product comparison | The brand against each competitor |
| Buying questions | Worth it, price, and reviews |
Alerts and the change feed
With a monitor name, change rows and failed-engine rows can go to Slack, Discord, or a webhook. Delivery is retried, each POST has X-SusLabs-Delivery-Id, and a webhook secret adds X-SusLabs-Signature (sha256= over deliveryId.timestamp.body).
Public change feed writes RSS, Atom, and JSON files. SUMMARY.feedUrls lists them. Anyone with the link can read the feed.
How to read the result
These are answers those source Actors returned from each engine's public web experience, or from hyperbach's Perplexity API route, at one time. The same prompt can name a different brand, or cite a different page, on the next run or for another Apify user. A single check is one observation. The monitor is there so you can see the pattern, not so one row can stand in for the engine.
Brand matching is done here, the same way for every engine: whole words, aliases, case-insensitive. This Actor does not trust a source's own brand fields. Sentiment is the share of positive and negative words in sentences that name the brand. It is a word list, not a judgment of the answer.
FAQ
Do I need an OpenAI, Google, or Perplexity key? No. Answers come from the source Actors above, called inside your run. You pay those Actors on your Apify account.
Is a ChatGPT row the signed-in ChatGPT product? No. It is the answer the ChatGPT source Actor returned from the public web experience on that run. Wording and citations vary.
Why was a check free?
The source failed, returned nothing usable, or the row is a change, a report, or a status. Those do not charge engine-check.
A source charged me and the row is empty. That source is recorded on the status row and in route health, including a zero-row charge. The next source in the list is tried when the whole call comes back empty. Set Skip these source Actors to stop using one that keeps failing.
Can I compare countries? Set Country and keep it stable for a monitor. Gemini and the fallbacks use it. The primary Google AI Overviews Actor does not accept a country.