AI Visibility Tracking ToolFree checker

Perplexity Citations Explained: Index, Search Results and Citation IDs

99Visibility Research · Updated October 21, 2026 · 6 min read

Perplexity cites whole sources, not sentences. PerplexityBot crawls pages into Perplexity's own search index, and Vespa's write-up describes that search running on Vespa.ai. When an answer is grounded, the Agent API returns a search_results list of sources, and the answer cites them by integer index. Perplexity documents the crawler and the response fields. It does not publish how it ranks or selects the sources it cites.

The documented pipeline, stage by stage

Perplexity's citation pipeline has three documented parts. Each sits at a different stage, and you control only the first.

  1. Access (index time). PerplexityBot crawls the web and stores pages in Perplexity's search index. Whether it can fetch your page is up to you and your CDN.
  2. Retrieval (answer time). For a given question, Perplexity searches that index and pulls candidate sources. Vespa's write-up describes Perplexity building its AI search at scale on Vespa.ai.
  3. Generation and citation. The model writes the answer and cites sources from the retrieved set by number.

A fourth stage sits underneath: what the model knows with no web access at all. Nothing you publish this quarter changes that. For the broader picture of how engines move from retrieval to citation, see how AI search picks sources. If you want the short answer on whether the index is Perplexity's own, read does Perplexity have its own search index.

PerplexityBot and Perplexity-User: two different crawlers

Perplexity runs two user agents, and they follow different rules.

  • PerplexityBot indexes pages for Perplexity search. Perplexity's crawler docs say it is "not used to crawl content for AI foundation models." Blocking it in robots.txt removes you from the index it builds.
  • Perplexity-User fetches a page when a user's request triggers it. Perplexity's docs say "this fetcher generally ignores robots.txt rules." Blocking it through robots.txt is not reliable.

This is the gap between index-time crawlers and answer-time fetchers. The index crawler respects your directive. The user-triggered fetcher mostly does not.

If you want to be eligible for Perplexity's index, the robots.txt rule is simple:

User-agent: PerplexityBot
Allow: /

Allowing the bot buys eligibility, not citation. It also only covers half the gate. A firewall or CDN can still return a 403 to PerplexityBot while robots.txt says allow, and nothing in a dashboard tells you.

What the API returns: search_results and integer citation IDs

Perplexity's Agent API exposes the retrieved sources directly. As of October 2026, a grounded response carries a search_results list. Each entry has these fields:

  • id
  • url
  • title
  • snippet
  • date
  • last_updated
  • source

Citations in the answer text point to those entries by integer index. A marker like [2] refers to a whole source, not to a specific sentence inside it. Anthropic's API works differently: it cites text spans, with up to 150 characters of quoted text. That difference is why Claude and Perplexity cite sources differently, and why their citation counts cannot be added together as one number.

Two practical consequences follow. First, the retrieved list is separate from what the answer actually cites, so you can log both and compare them. Second, a citation tells you which source was credited, not how much of it shaped the answer. Mechanistic research (arXiv 2606.28358) found citation output can be changed without changing the sources, so treat citations as a noisy proxy for influence.

Web search is opt-in, and Sonar has changed

On the Agent API, web_search is opt-in. A call that does not turn it on returns an answer from the model alone, with no search_results and no citations. That answer reflects training data with a cutoff, not Perplexity's live index.

The older Sonar Chat Completions endpoint was announced for retirement on 2026-09-27, through a forum announcement rather than Perplexity's own migration docs. Code that was not moved to the Agent API can silently return ungrounded answers. If you track Perplexity through the API, confirm search is enabled and that responses actually contain sources. Our notes on the Sonar to Agent API migration cover what changed.

The consumer app is a separate question. Secondary reports say the free tier uses an auto-router called "Best", while paid tiers offer a menu of models. No single API model is the app, which is worth knowing before you treat API results as what users see.

What Perplexity does not publish

Perplexity documents its crawlers and its response fields. It does not publish:

  • how it ranks candidates in the index for a query
  • what decides which retrieved sources get cited and which get dropped
  • what queries it actually runs against the index for a given prompt
  • the default model behind any given consumer answer

That leaves a lot outside anyone's control. One external measure: a study of AI Search Arena data from March to May 2025 (arXiv 2507.05301) found citation concentration with a Gini coefficient of 0.77 for Perplexity, against 0.83 for OpenAI models and 0.69 for Google. That data is old and the population self-selected, but it says citations cluster on a small set of sources.

Otterly's 2026 experiment with two AI-generated sites also found Perplexity cited them while Google had removed them from its index. That is one test on a low-stakes topic, not a rule. It does show Perplexity draws on its own index rather than Google's.

What to check and fix

Since ranking is undisclosed, spend effort on the gates that are documented.

  1. Check robots.txt for PerplexityBot. A blanket AI block often removes search crawlers along with training crawlers. Resolve the rule per agent.
  2. Test reachability, not just permission. Request a page with the PerplexityBot user agent and look for a 403, a 429 or a challenge page. The AI Crawler Checker requests a page as each AI crawler and shows which ones your firewall turns away.
  3. Put key facts in the initial HTML. Vercel's crawler study and later testing found PerplexityBot does not execute JavaScript. Prices, product names and definitions that appear only after hydration may be invisible to it.
  4. Check for accidental suppression. noindex and nosnippet directives inherited from a template can hide content from search features.
  5. Log retrieved versus cited sources. If you use the API, store search_results and the citation indexes separately. The playbook on logging retrieved vs cited sources shows how.

None of this guarantees a citation. It removes the reasons Perplexity cannot see you.

More on this

Does blocking PerplexityBot stop Perplexity from reading my pages? It stops PerplexityBot from indexing them, which removes them from the index Perplexity search draws on. It does not reliably stop Perplexity-User, which fetches pages when a user asks and, per Perplexity's docs, generally ignores robots.txt rules. If you need a hard block, that has to happen at the network layer, and it will also cut you out of Perplexity's index.

Is PerplexityBot used to train AI models? Perplexity's crawler documentation says PerplexityBot is not used to crawl content for AI foundation models. It is described as a search indexing crawler. That makes it different from training crawlers such as GPTBot or ClaudeBot, which other vendors run for model training. Treat each crawler by its documented purpose rather than blocking every AI user agent as one group.

Why does a Perplexity citation point to a whole page? Perplexity's API cites sources by an integer index into the search_results list, so each marker refers to an entire source. It does not quote a specific span of text. Anthropic's web search tool, by contrast, cites text spans. If you need to know which sentence was used, Perplexity's citation format will not tell you directly. See [whether AI engines cite whole pages or sentences](/questions/ai-cite-whole-pages-or-sentences).

Which model writes Perplexity's answers? It depends on the surface. Secondary reports say the free app uses an auto-router called "Best" and paid plans offer a menu of models from several vendors. The API is separate again. Perplexity does not publish a single default model for consumer answers. Our page on [which model Perplexity uses](/questions/perplexity-which-model) covers the details as reported.

Can I improve my ranking inside Perplexity's index? Perplexity does not publish its ranking criteria, so no one outside the company can tell you which factors move a page up. What you can control is access: allow PerplexityBot, make sure your firewall lets it through, and serve important content in the initial HTML. Those steps make your page eligible. They do not promise selection or citation.

Sources

  1. Perplexity Crawlers - Perplexity
  2. Perplexity builds AI Search at scale on Vespa.ai
  3. Migrate from Sonar to the Agent API - Perplexity
  4. [2507.05301] News Source Citing Patterns in AI Search Systems
  5. The rise of the AI crawler - Vercel
  6. 2000 AI Blogs Experiment: Does Google Penalize AI Content?

This page is AI-assisted. It was written from a verified evidence base and checked against our editorial policy. Engine behaviour changes often; facts are as of October 21, 2026.

Keep reading