Track AI-search visibility
Run the same prompt set across AI engines on a schedule and watch how a brand's citations move. The AI-search analogue of rank tracking. Depends on the AI Search endpoint, in development.
This guide depends on the AI Search endpoint, which is in development. The recipe below is the pattern; the calls won't accept traffic until the endpoint ships.
When to use this
- You want to know whether a brand is being mentioned in AI-engine answers (ChatGPT, Perplexity, Claude, Gemini, AI Overviews, Copilot).
- You're investing in content explicitly to shape AI answers and want to measure whether it's working.
- You want a share-of-voice metric across competitors in AI-engine responses.
- You want to know which third-party domains AI engines cite when answering on your topic — those are the outreach targets.
If you only care about Google's AI Overviews (the answer block above the SERP), extract them from a regular SERP call by filtering results[].type === "ai_overview" — no AI Search call needed.
The recipe
1. Pick your prompt set
Spend real time here — the prompts are the foundation of every metric you'll compute later. A good set:
- Mirrors how your audience actually asks — "best CRM for solo founders" rather than "Example Inc CRM platform".
- Spans the funnel — top-of-funnel ("what is X"), middle ("X vs Y", "best X"), bottom ("how do I do Z with X").
- Covers your category, not just your brand — most brand mentions in AI engines come from category prompts.
- Is reasonably stable — you'll re-run it every cycle, so churn ruins time-series comparability.
A starter set is usually 30–100 prompts. Lock it before you start tracking.
2. Run the prompt set on a schedule
For each (prompt, engines[]) pair, call AI Search and persist the response.
curl https://api.ray9.ai/v1/ai-search \
-H "Authorization: Bearer rk_…" \
-H "Content-Type: application/json" \
-d '{
"prompt": "best crm for solo founders",
"engines": ["chatgpt", "perplexity", "claude", "gemini", "ai_overviews", "copilot"]
}'You can pass multiple engines in one call — the response includes a separate result per engine on one billing line.
3. What to store per call
| Column | Source | Notes |
|---|---|---|
checked_at | now() at call time | UTC. |
prompt | echo from request | Exact string you sent. |
engine | each engine in engines[] | One row per (prompt, engine) per check. |
answer_text | engines[].answer | Useful for diffing wording over time. |
mentions_brand | computed | True if the engine mentioned your brand by name. |
brand_position | computed | Rank-like position of your brand mention. |
cited_sources | engines[].sources[] | (domain, url) pairs the engine cited. |
request_id | requestId | Carry it for support / audit. |
For brand mention detection, prefer simple substring + alias matching (your brand name + common abbreviations).
4. Cadence
Weekly is the sane default — most AI-search content investments don't move week-to-week. Daily only if you're watching the immediate aftermath of a content launch or a model release that resets engine behaviour. Run the entire prompt set in one batch on the same cycle so the time series is comparable.
5. Metrics that matter
- Brand share-of-voice (SoV) —
count(mentions_brand) / count(*)per engine, per period. The headline metric. - Position when mentioned — average / median
brand_positionwhen mentioned. SoV without position misleads. - Engine spread — does the brand appear consistently across engines, or only in one?
- Citation share — for prompts where the engine cites third-party sources, what fraction are your domain vs each competitor's? The closest AI-engine analogue to backlink-driven authority.
- Top cited domains by topic — which domains do engines cite most? Those are your outreach targets.
6. Movement detection
Same patterns as SERP rank tracking:
- SoV change vs last period — flag prompts that swung > X% in mention rate.
- New mentions — prompts where you started getting mentioned this period but weren't last.
- Lost mentions — the inverse. The most actionable alert.
- Competitor movement — same metrics applied to a competitor's brand list.