Today we shipped /citations: a set of endpoints that ask AI answer engines the questions your buyers actually type, then report whether your brand gets mentioned, whether your URLs get cited, and which competitors show up instead.

The first thing we did was point it at ourselves. Here is the result, unedited.

Prompt: "What is the best SEO audit API for developers?"

Engine Mentions us Names instead
GPT-6 No DataForSEO, Google PageSpeed, Lighthouse
Claude Sonnet 5 No Ahrefs, Semrush, Moz, Screaming Frog, DataForSEO, Sitebulb, Google PageSpeed, Serpstat
Perplexity No DataForSEO, Lighthouse, SE Ranking
Nova Pro No Ahrefs, Semrush, Moz, Screaming Frog, SE Ranking

Mention rate: 0%. Citation rate: 0%. Share of voice: 0%. Ten different competitors got named across four engines, on the query that describes exactly what we sell. DataForSEO appeared in three of the four answers. We appeared in none.

That is an uncomfortable thing to publish on the day you launch the tool that measures it. It is also the entire argument for the tool. We have good rankings, a fast product and a free tier, and none of that put us in the answer. We could not have told you that yesterday, because we had no way to measure it.

Why this is a different question from ranking

Search traffic is increasingly mediated by a model that reads the web and writes an answer. When that happens, one of three things is true about your brand:

  1. The model knows you and recommends you. You are in the answer.
  2. The model knows you and does not recommend you. You are losing on the merits, in a race you cannot see.
  3. The model has never heard of you. Your rankings are irrelevant to this surface.

Rank trackers cannot distinguish these. Neither can your analytics, because an answer that does not cite you produces no referral to attribute. The only way to know is to ask the engines and read what comes back, repeatedly, over time.

What a tracker is

A tracker is a brand, the domains that count as yours, the competitors you want watched, and the prompts real buyers would type.

curl -X POST https://seoscoreapi.com/citations/trackers \
  -H "X-API-Key: ssa_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "brand": "Acme Analytics",
    "domains": ["acme.com"],
    "competitors": ["Mixpanel", "Amplitude", "Heap"],
    "prompts": [
      "best product analytics tool for startups",
      "Mixpanel alternatives",
      "which analytics tool has the best API"
    ],
    "engines": ["gpt", "claude", "perplexity"],
    "samples": 3,
    "cadence": "weekly"
  }'

That runs on a schedule and builds a history. If you would rather not write the prompts yourself, GET /citations/prompts/suggest?domain=acme.com reads your site and proposes a starting set you can edit.

Answers are not deterministic, so we do not pretend they are

Ask the same engine the same question twice and you can get different answers. A tool that reports "you were mentioned: yes" from a single call is reporting a coin flip.

Every prompt is therefore sampled multiple times per engine (three by default), and every number we return is a rate, not a verdict. "Mentioned in 2 of 3 samples on Perplexity" is a real measurement. "Mentioned: true" is not.

What you get back per run:

  • Mention rate, how often the brand appears at all
  • Citation rate, how often one of your URLs is actually linked
  • Share of voice, your mentions as a fraction of every brand mention in the answers
  • Average position, where you sit among the brands named
  • Competitors mentioned, ranked by how often each appears
  • Sentiment on the sentences that mention you

Mention rate and citation rate are different numbers and the gap matters. Being named from a model's training data is worth something. Being linked, so a reader can click through, is worth considerably more.

Which engines, and an honest note about naming

Four engines are live today:

Engine What it is Web access
perplexity Perplexity Agent API Yes, searches live
gpt GPT-6 on Amazon Bedrock No
claude Claude Sonnet 5 on Amazon Bedrock No
nova Amazon Nova Pro No

We called the third-party model engine gpt rather than chatgpt on purpose. It answers from model weights with no browsing, which means it measures what the model knows about your brand, not what the ChatGPT product tells a user with web search switched on. Those are genuinely different questions and we did not want a label that quietly conflates them. chatgpt and gemini are reserved for the browsing-enabled paths and will light up when we finish wiring them.

This matters for reading your own numbers. Expect most citations to come from Perplexity, because it is the engine that actually fetches pages. A zero citation rate on the Bedrock engines is usually the engine's design, not your content.

One-off checks

You do not need a tracker to ask a single question:

curl -X POST https://seoscoreapi.com/citations/check \
  -H "X-API-Key: ssa_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "brand": "Acme Analytics",
    "domains": ["acme.com"],
    "prompt": "best product analytics tool for startups",
    "engines": ["perplexity"],
    "samples": 1
  }'

Useful for spot checks, and for seeing what an engine says before you commit a prompt to a schedule.

Alerts

Trackers fire a citations.alert webhook when something moves:

  • Mention rate drops 20 points or more against the previous run
  • A competitor appears in your answers for the first time
  • An own-domain citation that was there disappears

The alert carries the run, the numbers and a plain sentence describing what changed.

Pricing, and why there is no free tier on this one

Citation checks are on paid plans only. That is a deliberate exception to how we normally do things, and it is worth explaining rather than burying.

Every other feature we sell runs on compute we already pay for, which is why the free tier is genuinely useful. A citation check is different: it is a billed call to an outside AI provider, real money per request, every time. A free allowance would be cash out the door with no revenue behind it, and the honest version of that trade is to charge for it rather than quietly make it worse for everyone else.

Plan Price Checks / month Tracked prompts
Free $0 Not included Not included
Starter $5/mo 25 5
Basic $15/mo 100 15
Pro $39/mo 400 50
Ultra $99/mo 1,500 200

One check is one prompt, on one engine, sampled once. A tracker with 10 prompts across 3 engines at 3 samples is 90 checks per run, so pick the cadence that matches how fast your market actually moves. Weekly is right for most people.

If a provider call fails, it is stored with the error and not counted against your allowance. Our problem, not your quota.

What we are doing with our own zero

We are not going to pretend there is a quick fix. The honest read on our result is that AI engines recommend the brands the web talks about most, and the web does not talk about us much yet. That is an off-page problem, and it is the same ceiling our search data has been pointing at for months. Now we have a second instrument confirming it, and a weekly number to check the work against.

If you want to watch that number move, it is the same tracker you would set up for yourself.

curl "https://seoscoreapi.com/citations/trackers" -H "X-API-Key: ssa_your_key_here"

Full reference is in the API docs. If you are on the free tier and want to try it, the Starter plan is $5.