All resources

Measure

August 12, 2026 · 12 min read

By Marcus Bransbury · Founder, Robot Visible

Perplexity citations and search visibility

How Perplexity discovers and cites pages, which crawler controls apply, what publishers can measure, and what one reproducible Sonar search showed.

Quick answers

How can a page become eligible for Perplexity citations?

Allow verified PerplexityBot requests to reach the public canonical page, then make the page a strong source for a specific question with clear claims, primary or well-attributed evidence, current facts, identifiable responsibility, and useful discovery links. Eligibility removes an access barrier; only a captured answer with the question, surface, cited URL, context, and timestamp proves a citation.

What is the difference between PerplexityBot and Perplexity-User?

PerplexityBot automatically crawls pages so websites can surface and be linked in Perplexity search results. Perplexity-User fetches pages in response to user actions and is not an automatic web crawler. Perplexity says the user-triggered fetcher generally ignores robots.txt, so it should not be treated as the search-inclusion control or as an authentication boundary.

Does a PerplexityBot visit prove that Perplexity cited the page?

No. A verified request proves only that the crawler reached that URL at that time. It does not expose a user's question, generated answer, source selection, citation, recommendation, impression, click, or conversion. Keep it as Eligible access evidence and capture answer evidence separately.

Are Sonar citations and search results the same thing?

Not by definition. The citations field contains source URLs attributed by the answer, while search_results contains returned web context and metadata. They happened to contain the same ten URLs in the dated observation on this page, but publishers should retain and count the fields separately because another response can differ.

Can the Sonar API measure visibility in the Perplexity app?

It provides a reproducible Perplexity API measurement surface with answer text, citations, search results, model, response ID, and request controls. It is not a consumer perplexity.ai session. Label API and consumer observations separately and do not generalize one run to every account, mode, location, or user.

How should publishers measure Perplexity visibility?

Keep verified crawler access, captured answer citations, search-result presence, attributable referral sessions, and conversions in separate records. Use stable questions and preserve the surface, model, settings, location, answer, cited URLs, search results, target outcome, timestamp, and provider errors. Repeat comparable observations before describing persistence or movement.

The short answer

Perplexity recommends allowing PerplexityBot in robots.txt and permitting requests from its published IP ranges when you want a site to appear in Perplexity search results. That removes an access barrier. It does not guarantee that a page will be retrieved for a question, included in answer context, cited, recommended, clicked, or converted.1

PerplexityBot is the automatic search crawler. Perplexity-User is a separate fetcher that may visit a page in response to a person's question; Perplexity says it is not a web crawler and generally ignores robots.txt because the request is user initiated. Neither documented agent is described as collecting content for foundation-model training. The maintained crawler reference records their current user-agent strings and IP endpoints.1

Keep the evidence states separate. A verified successful fetch can support Eligible evidence. A page whose claims, evidence, freshness, and corroboration compare well with the sources already selected may be more Competitive. Only a captured answer with the exact question, Perplexity surface, cited URL, answer context, and timestamp is Observed citation evidence. One state never licenses a claim about another.

How Perplexity sourcing can be observed

Perplexity's Sonar documentation provides a useful, inspectable source model. Sonar performs web search before generating its answer, and the user message—not the system message—drives that search. A non-streaming response can return answer text, a top-level `citations` array of source URLs, and a `search_results` array with result titles, URLs, dates, update dates, and snippets. Those fields let a publisher preserve more than a screenshot while revealing no complete selection formula.2,3

Treat the two source arrays as related but different evidence. The citations array is the answer's attributed URL set. Search results are pages returned as context with metadata. Do not silently merge every search result into the citation count: a retrieved result can be available during answer construction without receiving an answer citation, and one URL can support several numbered passages without becoming several unique cited pages.

Source selection remains question- and run-specific. A definition question can retrieve definitions, comparisons, tactics, examples, and implementation guides from different publishers. Build one canonical page for a coherent need, answer it clearly, and connect genuinely distinct supporting pages with descriptive internal links. Repeating near-identical pages for imagined query variants creates duplication, not first-party evidence.

Source evidence exposed by the Sonar API
FieldWhat it recordsWhat it cannot establish alone
Answer text with numbered markersThe generated answer and where numbered attributions appear in that responseWhy each page was selected, stable visibility, or whether a consumer saw it
citationsThe top-level source URL set attributed by the answerHow many users saw the source, whether they clicked, or whether every citation is unique
search_resultsReturned search context with URL, title, snippet, and available date metadataThat every result received a visible answer citation
Brand mention without its URLThe answer named the tracked entityThat the tracked website supplied the claim or received attribution

PerplexityBot and Perplexity-User do different jobs

Perplexity describes PerplexityBot as an automatic crawler designed to surface and link websites in Perplexity search results. It describes Perplexity-User as an agent supporting user actions: when someone asks a question, it might visit a page to help produce an accurate answer and include a link. The settings work independently, and Perplexity says policy changes may take up to 24 hours to reach its systems.1

Perplexity web agents and the limited meaning of a successful request
User agentDocumented roleWhat a verified request proves
PerplexityBotAutomatic crawling to surface and link websites in Perplexity search resultsThat the search crawler reached one URL at one time; not that an answer retrieved or cited it
Perplexity-UserA fetch supporting a question or other action initiated by a Perplexity userThat a user-triggered request reached the URL; not the question, answer, citation, or click

Publisher controls: robots.txt, IP ranges, and the delivery path

A publisher that wants automatic search discovery can explicitly allow PerplexityBot. Perplexity also publishes separate JSON IP lists for PerplexityBot and Perplexity-User and recommends combining a user-agent match with current source-IP verification in WAF rules. User-agent text alone is spoofable, while a static copy of an IP list can age; fetch the provider endpoints on a controlled schedule and review changes before updating production policy.1

A Perplexity-User rule is not an equivalent search-inclusion control. Perplexity says this fetcher generally ignores robots.txt because a user requested the page. Decide separately whether the URL should be publicly reachable for on-demand retrieval, then enforce authentication and genuinely private boundaries at the application layer rather than assuming a robots directive is access control.1

Robots permission also cannot override a CDN block, WAF challenge, rate limit, authentication wall, redirect loop, unsupported rendering path, or origin error. Test the exact canonical production URL from the edge through the origin. Preserve the claimed agent, verified source range, requested path, time, HTTP status, redirect chain, and security action so the result is auditable.

Allow automatic Perplexity search discovery
# Permit Perplexity's automatic search crawler
User-agent: PerplexityBot
Allow: /

# Perplexity-User is a separate, user-triggered fetcher.
# Perplexity says it generally ignores robots.txt, so robots.txt is not
# an authentication or privacy boundary for a publicly reachable URL.

This permits automatic search crawling; it does not guarantee selection or override a firewall. Preserve any path-specific rules your site needs, verify requests against Perplexity's current IP endpoints, and allow up to 24 hours for crawler-policy changes to propagate.

What to publish when the page is already accessible

Once access works, source competitiveness becomes the more useful question. Put the direct answer near the start, but do not stop at a short definition. Add the evidence an answer needs to reuse the claim safely: criteria, dates, limitations, comparisons, examples, first-party data, or a reproducible method. Concision helps extraction; substantiation helps selection and trust.

Make the accountable person or organization, meaningful publication dates, product facts, and evidence visible on the page. Keep canonical URLs and important entity facts consistent. Accurate structured data can clarify those visible facts, but Perplexity's reviewed publisher and Sonar documentation does not identify a special citation schema. Treat markup as machine-readable consistency, not a Perplexity submission mechanism or citation guarantee.

Compare cited sources claim by claim instead of copying their length or headings. Identify whether they win with a clearer definition, original research, recognized expertise, current examples, direct product evidence, or external corroboration. Close a real evidence gap. If the page already supplies the best evidence, strengthen discovery and corroboration rather than padding it with generic prose.

  • Give each substantive information need one stable canonical public URL.
  • Render the answer and supporting evidence in accessible text without requiring a login or interaction.
  • Use question-shaped headings where they accurately describe a section, followed by a direct and qualified answer.
  • Identify the author or accountable organization and date facts that can become stale.
  • Support consequential claims with primary documentation, first-party data, or a reproducible observation.
  • Keep names, prices, availability, and other entity facts consistent across the site and credible external profiles.
  • Link from relevant hubs and supporting pages with anchors that describe the destination's purpose.

Measurement: do not turn access into an invented impression

A crawler request is not a citation, a citation is not a click, and a click is not a conversion. The reviewed Perplexity crawler and API documentation does not expose a publisher console containing every consumer query or impression. Measure the evidence you can preserve, use the correct denominator, and leave unavailable quantities unknown. One source-free answer is not zero impressions, and no request in a sampled log window is not proof of permanent exclusion.

For answer monitoring, use a stable representative question set and retain the exact question, surface, model, request settings, location, timestamp, answer text, citations, search results, target-domain outcome, and provider errors. A first citation is one observation. Comparable repeated runs describe persistence. A movement after a page change is still correlation unless the design isolates the change.

Keep referrals in a parallel record. An attributable Perplexity visit proves that a person reached the site with referral information intact. It does not reveal how many answers displayed the link, whether the visit came from an inline citation or another product link, or what answer text the visitor saw. Preserve landing URL, referrer, campaign parameters, time, session, and downstream outcome without back-calculating imaginary citation impressions.

A publisher measurement map for Perplexity visibility
EvidenceUseful interpretationDo not call it
Verified PerplexityBot requestAutomatic search-crawler access to one URL at one timeAn impression, citation, recommendation, or human visit
Verified Perplexity-User requestA user-triggered fetch reached the URLThe user's question, a citation, or proof of PerplexityBot indexing
Sonar citations URLObserved attribution in that API responseA consumer Perplexity session or stable share of answers
Sonar search result without a citationThe page appeared in returned search context for that API runA visible source citation
Captured consumer answer citationObserved citation for that question, app state, locale, and timeUniversal ranking or causal impact
Referral session and conversionA human visit and its recorded downstream outcomeTotal answer exposure or proof that a content change caused it

First-party observation: one Perplexity Sonar answer

On 12 August 2026 Robot Visible sent “what is answer engine optimization” to Perplexity's Sonar API using the `sonar` model. We fixed the search context at medium, requested English results, and supplied London, England, United Kingdom as the user location. Perplexity returned answer text with numbered source markers, ten citation URLs, and ten search-result records.2,3,4

All ten citation URLs were unique and came from ten domains: Profound, MarketMuse, AIOSEO, CXL, Ahrefs, Seobility, Semrush, Coursera, Content Science Review, and Yotpo. In this response, the citation list and search-result list contained the same ten URLs in the same order. Robot Visible was not mentioned and no robotvisible.com URL was cited or returned as a search result.5,6,7,8,9,10,11,12,13,14

The answer used numbered markers `[1]` through `[10]`, sometimes assigning several sources to one sentence. That makes two counting rules visibly different: ten unique cited URLs does not mean ten cited claims, and repeated markers do not create additional unique sources. Preserve both the answer-level attribution and the normalized URL/domain set.

This is one API observation, not a consumer Perplexity session, population-wide ranking study, or causal test. A later run can change with the model, index, time, search context, location, language, and ordinary answer variation. The API reported a total request cost of $0.00828 for this run; future prices and costs may differ. Reproduction means preserving a new comparable observation, not expecting identical wording.

Reproduction record for the Robot Visible Perplexity observation
FieldRecorded value
Observed at12 August 2026, 20:43:40 UTC
Querywhat is answer engine optimization
SurfacePerplexity Sonar API
Modelsonar
LocationLondon, England, United Kingdom
Language and search contextEnglish; medium
Citation URLs10, all unique, across 10 domains
Search results10; same URL set and order as citations in this response
Target-domain resultRobot Visible was not mentioned, cited, or returned
Response ID37c59a40-4012-4021-bac2-86d10e16f41a
API-reported total cost$0.00828

How to reproduce and extend the observation

The request below uses Perplexity's documented Sonar endpoint, source fields, language filter, location structure, and medium search context. Save the complete response securely, including answer text, response ID, model, creation time, citations, search results, usage, and your own observation timestamp. Never publish the API key or private prompt context with the record.2,3,4

Use the same request for a scheduled baseline or after a meaningful release, then store each result as a separate observation. Preserve HTTP failures, timeouts, and malformed or answerless responses as provider errors rather than converting them into absence. If you also test perplexity.ai, capture it separately with its consumer surface, account state, mode, location, conversation context, visible sources, and timestamp.

Reproduce the dated Perplexity Sonar observation
const observedAt = new Date().toISOString();
const response = await fetch("https://api.perplexity.ai/v1/sonar", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.PERPLEXITY_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    model: "sonar",
    messages: [
      { role: "user", content: "what is answer engine optimization" },
    ],
    search_language_filter: ["en"],
    web_search_options: {
      search_context_size: "medium",
      user_location: {
        country: "GB",
        region: "England",
        city: "London",
      },
    },
  }),
});

if (!response.ok) throw new Error(`Perplexity returned ${response.status}`);
const result = await response.json();
console.log(JSON.stringify({
  observedAt,
  responseId: result.id,
  model: result.model,
  created: result.created,
  answer: result.choices?.[0]?.message?.content,
  citations: result.citations,
  searchResults: result.search_results,
  usage: result.usage,
}, null, 2));

Requires PERPLEXITY_API_KEY and creates a billable request. A later response is a new dated observation. Keep the API and consumer Perplexity surfaces separate even when they return similar sources.

The practical Perplexity citation workflow

  • Choose and document the intended policy for PerplexityBot; do not treat Perplexity-User as the automatic search-crawler control.
  • Deploy the robots rule, allow up to 24 hours for policy propagation, and test exact production URLs through CDN, WAF, redirect, and origin layers.
  • Verify claimed bot traffic against Perplexity's current separate IP endpoints and retain the path, time, status, and edge action.
  • Confirm important claims are accessible in visible text and agree with canonicals, authorship, dates, structured data, and credible external facts.
  • Compare currently cited pages for specific evidence gaps rather than imitating their formatting or word count.
  • Monitor a stable question set and preserve provider errors, source-free answers, mentions, citations, and recommendations as distinct outcomes.
  • Record Sonar API runs and consumer Perplexity sessions as separate surfaces; never relabel one as the other.
  • Count source markers, unique cited URLs, search results, domains, referrals, and conversions separately, with the denominator stated.
  • After a release, wait for access evidence and compare multiple like-for-like observations before making a causal claim.

Run a free Perplexity crawler and page-readiness check

Sources and further reading

Continue learning

See where your website stands

Run a free scan and get your AI readiness score across all six categories, with the gaps to fix first.