AI Brand Visibility & Citation Audit — Repeat-Tested AEO/GEO avatar

AI Brand Visibility & Citation Audit — Repeat-Tested AEO/GEO

Pricing

from $24.00 / 1,000 ai answer analyzeds

Go to Apify Store
AI Brand Visibility & Citation Audit — Repeat-Tested AEO/GEO

AI Brand Visibility & Citation Audit — Repeat-Tested AEO/GEO

ChatGPT, Perplexity, Gemini & Google AI Overview: does your brand get named? Every question is asked 3-5 times, so you see which findings are stable and which are noise.

Pricing

from $24.00 / 1,000 ai answer analyzeds

Rating

0.0

(0)

Developer

Anton Y.

Anton Y.

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a month ago

Last modified

Categories

Security

Limited permissions

Share

AI Brand Visibility Audit — Repeat-Tested

Ask an AI engine the same question twice and you can get two different answers. Every other visibility checker runs each question once and reports the result as if it were a measurement. This one runs each question 3–5 times and shows you the spread.

Does ChatGPT recommend your brand? Perplexity? Gemini? Google's AI Overview? This Actor asks the questions your buyers actually type — never naming you, so the engines aren't just reading your name back — then reports how often you are named, in what position, who gets named instead, which sources the engines cite, and which of those findings are stable enough to act on.


Why repeats matter more than the score

Answer engines are non-deterministic. In published testing, mention rates for the same brand and the same question swing by tens of percentage points between runs, and the set of sources cited on two runs of the same day can overlap by less than 10%.

That means a single-run report is one draw from a random variable, presented as a fact. If you take a 40% visibility score from a one-shot tool and brief your team on it, you may be acting on noise.

This Actor gives you the number and the honesty check next to it:

  • mention_rate_pct — how often you were named across all answers
  • unstable_pairs_pct — the share of question × engine pairs where repeated runs disagreed with each other
  • unstable_pairs — exactly which ones, with the hit count (2 of 3 runs)

A 60% mention rate with 10% unstable pairs is a finding. The same 60% with 70% unstable pairs is a coin flip, and you should know which one you bought.

What you get

Two record types in the dataset.

Per answer — one row for every question × engine × repeat:

FieldMeaning
engine, runwhich engine, which repeat
questionthe buyer question asked
brand_mentionedwere you named in this answer
brand_rank_in_answeryour position in the order options appear
named_insteadcompetitors named in this answer, de-duplicated
cited_sourcesURLs the engine cited
sources_readablewhether this engine's citations resolved to real URLs at all
answer_textthe full raw answer, so you can check our work

Summary — one row per run:

FieldMeaning
mention_rate_pctoverall share of answers naming you
top5_rate_pctshare where you appeared in the first five options
mention_rate_by_engine_pctper-engine breakdown
unstable_pairs_pct / unstable_pairsthe repeat-test result
own_site_cited_in_answershow often engines cited your domain
answers_with_readable_sourceshow many answers the domain figures were computed over
engines_without_readable_sourcesengines whose citations could not be resolved (see Notes)
top_competitors_namedwho is being recommended instead of you
top_cited_domainswhere the engines are getting their opinion

own_site_cited_in_answers = 0 is the single most actionable line in the report: it means the engines' opinion of your category is assembled entirely from third-party pages, and no amount of editing your own site changes it until you appear on those pages.

Input

Give it a brand name. Everything else has a sensible default.

{
"brandName": "Plausible Analytics",
"website": "plausible.io",
"description": "Privacy-friendly website analytics, a lightweight alternative to Google Analytics.",
"engines": ["chatgpt", "perplexity"],
"questionCount": 5,
"repeats": 3
}

Leave prompts empty and buyer questions are generated from your description — under a hard rule that no generated question may name your brand, because a question that names you measures nothing. Supply prompts (one per line) to use your own.

category is worth setting if you know it ("website analytics tools"). Left empty it is inferred. It controls which names count as competitors: without a category, extraction tends to pull in frameworks, hosting providers and databases mentioned in passing, which shifts your reported position.

What you pay

Two separate charges, and it's fair that you see both before you run:

  1. This Actor: $0.03 per answer received and parsed. One question, on one engine, once. So the default 5 questions × 2 engines × 3 repeats = 30 events = $0.90. Failed engine runs and answers we cannot parse are not charged.
  2. The engine scrapers this Actor calls, billed to your own account by Apify's own first-party scrapers. This is where the plan you are on matters a lot:
Your Apify planScraper cost per answer30-answer audit (5 q × 2 engines × 3 repeats)
Paid (Starter and up)~$0.005–0.014~$0.30 in scraper fees
FREE$0.20$6.00 in scraper fees

The free tier costs 40× more per answer, because that is how Apify's scrapers price free-plan usage — it is not our fee. On a free account, run 2 questions × 1 engine × 3 repeats (6 answers) to see the output shape, and move to a paid plan before tracking a brand for real. The economics of this Actor only work on a paid plan, and we would rather say so up front than have you discover it in your usage bill.

Set Max total charge on the run to cap the first component. The Actor stops cleanly when the limit is reached and reports stopped_on_spend_limit: true rather than silently truncating.

Choosing repeats

RepeatsUse it for
1A quick look at output shape. Not a measurement — no stability data is produced
3Default. The usual acceptance-test minimum, and enough to separate stable findings from noise
5Before a board deck or a budget decision, when you need the spread to be tight

Notes and limits

  • Unofficial. This Actor is not affiliated with, endorsed by, or sponsored by OpenAI, Perplexity, Google or Microsoft. Engine names are used only to identify which service each answer came from.
  • Answers reflect the engines at the moment of the run, from the geography and session conditions of the underlying scrapers. Re-running next week will give different numbers — that is the nature of the thing being measured, and the reason the stability columns exist.
  • Competitor and position extraction is done by a language model over the answer text. answer_text is included in every row so you can verify any number yourself.
  • Cited-source metrics are engine-dependent, and we tell you when. Google's AI Overview returns its citations as opaque Google redirect links with no resolvable destination, so for that engine we cannot report which domains were cited. Rather than counting those answers as "no sources", they are excluded from the source metrics, and answers_with_readable_sources plus engines_without_readable_sources tell you exactly what the domain figures were computed over. Per-answer, sources_readable says the same thing.
  • Brand-name matching accepts product suffixes (Notion matches Notion AI) but rejects matches resting on a single short word, to avoid crediting you with someone else's mention.

Track it over time

Schedule the Actor weekly with the same input, and the dataset becomes a time series of both your visibility and its stability. Use the same prompts each time — regenerated questions measure a different thing.