Docs
How we measure
- Each tracked prompt is asked to each engine as a fresh user in your chosen country, through the engine's official API with web search on where the vendor offers it.
- Visibility = share of answers that name your brand (any alias, whole word, any language).
- Position = order of your first mention among all tracked brands in the answer (1 = first).
- Share of voice = your mentions ÷ all tracked brand mentions.
- Sentiment = how the sentence naming you reads, -1 to +1. Rules first; our own Qwen model refines live answers.
- Cited sources = URLs the engine attached to the answer (Gemini returns source domains).
- Prompt volume is an estimate - no engine publishes prompt volumes.
- Identical prompt + engine + country + language + day is asked once and shared across customers, which keeps prices low and results consistent.
Engines
| Engine | Method | Default cadence |
|---|---|---|
| ChatGPT | Responses API + web_search | Daily |
| Perplexity | Sonar API | Daily |
| Google AI Overviews | DataForSEO SERP (ai_overview) | Daily |
| Gemini | Gemini API + Google Search grounding | Weekly |
| Google AI Mode | DataForSEO SERP (ai_mode) | Weekly |
| Claude | Messages API + web_search | Weekly |
| Grok | xAI API + search | Weekly |
| Microsoft Copilot | connector (no public API) - demo until configured | Weekly |
| DeepSeek | DeepSeek API (model memory, no web) | Weekly |
| Meta AI | connector (no public API) - demo until configured | Weekly |
REST API
Create a key in Settings → API keys. Send Authorization: Bearer sav_… (or ?key= for spreadsheet imports).
GET | /api/v1/projects | List projects in the key's workspace |
GET | /api/v1/projects/{id}/metrics?days=30 | Visibility, SOV, position, sentiment, by engine, trend, leaderboard, sources, prompts |
GET | /api/v1/projects/{id}/results?days=7&limit=500 | Raw answers with brands and cited URLs |
GET | /api/v1/projects/{id}/runs | Recent runs and their cost |
POST | /api/v1/projects/{id}/runs | Start a run now (202) |
GET | /api/v1/export/{results|daily|prompts|sources|outreach}.{csv|json}?project= | Exports; daily.csv is the Looker Studio feed |
POST | /api/ingest/crawlers?key={tracking key} | Log drain: access-log lines, JSON lines or a JSON array |
POST | /api/track | Referral beacon used by /t.js |
MCP server
Remote MCP (Streamable HTTP) at /api/mcp, same API key as the REST API. Tools: list_projects, get_visibility (by engine and market, with 95% ranges), get_fix_plan, get_sources, get_outreach, write_fix (saves a draft; never publishes).
Multiple markets
Scale tracks 2 extra countries per project, Agency 4 (Settings → Extra markets). Each prompt is asked as a user in each country; the dashboard and ?country=US on the metrics API filter by market. Each market adds the same number of answers again.
Why visibility shows a range
AI answers change from run to run. We show the 95% Wilson interval next to each visibility number, so 4 of 10 answers reads as 17-69%, not a precise 40%. More answers (more engines, days or markets) narrow the range.
Looker Studio
In Google Sheets: =IMPORTDATA("https://your-host/api/v1/export/daily.csv?key=sav_…"), then add the Sheet as a Looker Studio data source.
AI referral tracker
Paste <script async src="https://your-host/t.js" data-key="tk_…"></script> before </body>. It only fires when the visitor came from an AI engine, sets no cookies and sends the referrer host and landing path only.