·10 min read

What Gets Cited in AI Answers? How to Measure Your Citation Rate per Engine

What Gets Cited in AI Answers? How to Measure Your Citation Rate per Engine

AI citations are the links an answer engine attaches to its response — and they are the closest thing GEO has to a ranking. A brand can be mentioned in an AI answer without being cited, and cited without being mentioned; the two move independently, and most teams track neither with any rigor. This article covers what we actually know about how each engine selects citations (with honest hedging — none of these systems are documented), then gives you a concrete, reproducible way to measure your citation rate per engine with a few API calls.

Mention vs citation vs grounding: get the definitions straight

Three distinct events, frequently blurred together:

  • Mention — your brand name appears in the answer text. ("HubSpot and Pipedrive are popular options...")
  • Citation — your URL appears in the answer's source list, with or without a mention.
  • Grounding — the engine ran a web search and used retrieved pages to compose the answer at all. No grounding, no citations; the answer came from model weights.

DataForSEO has written usefully about the gap between AI visibility and AI citation, and the gap is real: pages get cited as evidence for claims that never name them, and famous brands get mentioned from training data with zero citations. If you only track mentions, you'll miss that your content is doing the evidentiary work while competitors get the name-drop — and vice versa.

How each engine selects citations (what's observable, hedged)

Nobody outside these companies knows the ranking functions. What follows is based on public observation and vendor documentation, and should be read as behavioral tendencies, not mechanics.

ChatGPT (web, with search). ChatGPT decides per-prompt whether to invoke web search at all — many answers are ungrounded. When it does search, it issues its own reformulated queries (often several), retrieves via its search partnerships and index, and cites a relatively small set of pages inline. Observationally, citation counts per answer are lower than Perplexity's, and which pages get cited tracks which reformulated queries were run — which is why seeing the actual searchQueries an answer used is diagnostic gold.

Perplexity. Citation-dense by design: nearly every sentence is attributable, and source lists routinely run long. Perplexity operates its own crawling/index and appears to favor pages that answer the question directly and can be chunked cleanly. Because it cites so much, presence in Perplexity citations is easier to achieve than in ChatGPT, but position (being source 1–3 vs 15) matters more.

Google AI Overviews. Citations come from Google's index, and public studies have repeatedly found overlap between AI Overview sources and top-ranked organic results — but not identity; AIO regularly cites pages from outside the top 10. Treat classic rankings as correlated with, not determinative of, AIO citation. AI Overviews also don't appear for every query, so your denominator must exclude runs where no Overview triggered.

Gemini, Copilot, Grok. Gemini grounds selectively in Google Search, and its app behaves differently from the developer API. Copilot grounds in Bing's index — its citations are, roughly, a window into what Bing trusts. Grok is the outlier: it can cite X posts alongside web pages, so a chunk of its "citation space" isn't web content at all. Each deserves its own baseline; don't assume behaviors transfer.

The honest summary: engines differ enough that a single "AI citation strategy" is a fiction. You need per-engine measurement before per-engine tactics.

How to measure your AI citation rate per engine

Citation rate is a simple statistic: the share of answer runs, for a defined prompt set, where your domain appears in the cited sources. The discipline is in the sampling.

1. Define the prompt set and the denominator

Pick 20–50 prompts that matter commercially, phrased the way users ask ("best invoicing software for freelancers", not "invoicing software"). Decide the denominator rule up front: for AI Overviews, exclude runs where no Overview appeared; for ChatGPT, decide whether ungrounded answers (no sources at all) count against you or get excluded. Either choice is defensible — changing it mid-stream is not.

2. Run each prompt multiple times

AI answers are non-deterministic. A single run per prompt gives you a coin-flip, not a measurement. Use at least 3–5 runs per prompt per engine, spread across the day.

3. Pull structured sources and count

This is where a structured API earns its keep — you want sources as ordered JSON, not HTML to parse. With llmdata's ChatGPT, Perplexity and AI Overview endpoints, the whole measurement is ~40 lines:

import httpx, os, tldextract
from collections import defaultdict

API = "https://api.llmdata.dev/v1/monitor"
HEADERS = {"Authorization": f"Bearer {os.environ['LLMDATA_API_KEY']}"}
MY_DOMAIN = "yourdomain.com"
RUNS = 5

def sources_for(engine, prompt):
    key = "query" if engine == "google-ai-overview" else "prompt"
    r = httpx.post(f"{API}/{engine}", headers=HEADERS, timeout=120,
                   json={key: prompt, "country": "US",
                         "include": {"sources": True}})
    result = r.json()["result"]
    if engine == "google-ai-overview":
        aio = result.get("aiOverview", {})
        return aio.get("sources", []) if aio.get("present") else None  # None = no AIO
    return result.get("sources", [])

def citation_stats(engine, prompts):
    cited_runs, valid_runs, positions = 0, 0, []
    for p in prompts:
        for _ in range(RUNS):
            srcs = sources_for(engine, p)
            if srcs is None:
                continue                      # AIO absent: out of denominator
            valid_runs += 1
            for s in srcs:
                if tldextract.extract(s["url"]).registered_domain == MY_DOMAIN:
                    cited_runs += 1
                    positions.append(s.get("position"))
                    break
    return {
        "engine": engine,
        "citation_rate": cited_runs / valid_runs if valid_runs else 0.0,
        "avg_position_when_cited": (sum(positions) / len(positions)) if positions else None,
        "n": valid_runs,
    }

for engine in ["chatgpt", "perplexity", "google-ai-overview"]:
    print(citation_stats(engine, my_prompts))

4. Report per engine, never blended

A blended "AI citation rate" across engines is misleading, because base rates differ so much — Perplexity's citation density inflates it, ChatGPT's grounding selectivity deflates it. Report a small table instead:

MetricChatGPTPerplexityAI Overview
Valid runs (denominator)grounded runsall runsruns where AIO appeared
Citation rate% of runs citing you% of runs citing you% of runs citing you
Avg. position when citedlower signal (few sources)high signal (long lists)medium
Citation share vs competitorsyes — track ityes — most meaningful hereyes
Typical variancehighermoderatelower run-to-run

The "typical variance" row reflects our practical experience and general community observation, not a controlled benchmark — measure your own variance in week one and quote confidence intervals, not single percentages, to stakeholders.

5. Track citation share, not just rate

Rate answers "do I appear?"; share answers "how much of the conversation do I own?" — your citations divided by all citations across the prompt set. Share is the metric that moves in zero-sum fashion when a competitor publishes something the engines love, and it's the one worth alerting on. The AI rank tracker architecture covers the storage schema and SQL for computing it continuously.

What correlates with getting cited — honestly

Claims here get hedged hard, because controlled experiments are scarce and engines change. Patterns that recur across public studies and practitioner reports:

  • Answer-shaped content gets cited. Pages that state the answer plainly near the top, with extractable structure (headings, lists, tables), recur in citations across engines. This is consistent, not proven causal.
  • Freshness matters more than in classic SEO, especially for ChatGPT and Perplexity on anything time-sensitive.
  • Third-party and community sources punch above their weight. Review sites, comparison posts, forums and news regularly out-cite vendors' own pages for commercial queries — meaning your citation strategy partly runs through coverage you don't own. See which publishers dominate your niche via Google News monitoring.
  • Classic rankings help with AI Overviews specifically, per the overlap studies — and help least with Grok.
  • What doesn't reliably work: keyword-stuffing prompts into pages, and any "one weird trick" schema claim. If someone sells you a guaranteed citation lever, ask for their measurement methodology.

The meta-lesson: because nobody can promise citations, the durable advantage is a measurement loop — publish, wait, re-run the prompt set, see which engines picked it up, iterate.

Common measurement mistakes

Three errors we see repeatedly, all fixable for free:

  1. Single-run snapshots. Screenshotting one ChatGPT answer proves nothing either way; a brand can show 40% citation rates and still miss any individual run.
  2. Subdomain and URL sloppiness. Match on registered domain (as the code above does with tldextract), or your blog subdomain's citations silently vanish from your numbers.
  3. Changing the prompt set without versioning. Reworded prompts produce different citation baselines. Stamp a version and only compare like with like.

Set up your own measurement loop

Everything in this article runs on any data source that returns structured per-engine sources; the code above uses llmdata's endpoints because that's what we build. Straight disclosure: llmdata is in early access — the API shape shown here is live for early-access users, and you can join the waitlist to run your own citation baseline. For the engine-by-engine mechanics, see how to scrape ChatGPT responses and getting Perplexity sources and citations via API.

Try the best SEO and AI SEO scraper

Monitor your brand and your competitors, at global scale and with the best performance.

No credit card required.