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.
| Field | What it records | What it cannot establish alone |
|---|---|---|
| Answer text with numbered markers | The generated answer and where numbered attributions appear in that response | Why each page was selected, stable visibility, or whether a consumer saw it |
| citations | The top-level source URL set attributed by the answer | How many users saw the source, whether they clicked, or whether every citation is unique |
| search_results | Returned search context with URL, title, snippet, and available date metadata | That every result received a visible answer citation |
| Brand mention without its URL | The answer named the tracked entity | That 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
| User agent | Documented role | What a verified request proves |
|---|---|---|
| PerplexityBot | Automatic crawling to surface and link websites in Perplexity search results | That the search crawler reached one URL at one time; not that an answer retrieved or cited it |
| Perplexity-User | A fetch supporting a question or other action initiated by a Perplexity user | That 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.
# 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.
| Evidence | Useful interpretation | Do not call it |
|---|---|---|
| Verified PerplexityBot request | Automatic search-crawler access to one URL at one time | An impression, citation, recommendation, or human visit |
| Verified Perplexity-User request | A user-triggered fetch reached the URL | The user's question, a citation, or proof of PerplexityBot indexing |
| Sonar citations URL | Observed attribution in that API response | A consumer Perplexity session or stable share of answers |
| Sonar search result without a citation | The page appeared in returned search context for that API run | A visible source citation |
| Captured consumer answer citation | Observed citation for that question, app state, locale, and time | Universal ranking or causal impact |
| Referral session and conversion | A human visit and its recorded downstream outcome | Total 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.
| Field | Recorded value |
|---|---|
| Observed at | 12 August 2026, 20:43:40 UTC |
| Query | what is answer engine optimization |
| Surface | Perplexity Sonar API |
| Model | sonar |
| Location | London, England, United Kingdom |
| Language and search context | English; medium |
| Citation URLs | 10, all unique, across 10 domains |
| Search results | 10; same URL set and order as citations in this response |
| Target-domain result | Robot Visible was not mentioned, cited, or returned |
| Response ID | 37c59a40-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.
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.
Sources and further reading
- Perplexity Crawlers — Perplexity. Documents the independent PerplexityBot and Perplexity-User roles, robots behaviour, propagation time, full user-agent strings, current IP endpoints, and WAF recommendations.
- Sonar API Prompt Guide — Perplexity. Documents that Sonar searches before answering, that the user message drives search, and that Sonar returns sources in top-level citations and search_results fields.
- Sonar API Search Filters — Perplexity. Documents language, location, search-context, domain, date, recency, and search-control parameters used to make API observations more comparable.
- Create Chat Completion — Perplexity. Documents the Sonar request and response contract, including response ID, model, answer choices, citations, search_results, usage, and cost metadata.
- What is answer engine optimization (AEO)? — Profound. One of the ten URLs cited in the dated Robot Visible Perplexity Sonar observation.
- What is Answer Engine Optimization and How Can It Influence Content Strategy? — MarketMuse. One of the ten URLs cited in the dated Robot Visible Perplexity Sonar observation.
- What is Answer Engine Optimization? — AIOSEO. One of the ten URLs cited in the dated Robot Visible Perplexity Sonar observation.
- Answer Engine Optimization (AEO): The comprehensive guide — CXL. One of the ten URLs cited in the dated Robot Visible Perplexity Sonar observation.
- Answer Engine Optimization: How to Win in AI-Powered Search — Ahrefs. One of the ten URLs cited in the dated Robot Visible Perplexity Sonar observation.
- Answer Engine Optimization (AEO) — Seobility. One of the ten URLs cited in the dated Robot Visible Perplexity Sonar observation.
- What Is Answer Engine Optimization? And How to Do It — Semrush. One of the ten URLs cited in the dated Robot Visible Perplexity Sonar observation.
- What Is Answer Engine Optimization? — Coursera. One of the ten URLs cited in the dated Robot Visible Perplexity Sonar observation.
- What is Answer Engine Optimization (AEO)? — Content Science Review. One of the ten URLs cited in the dated Robot Visible Perplexity Sonar observation.
- What Is Answer Engine Optimization? And How To Do It — Yotpo. One of the ten URLs cited in the dated Robot Visible Perplexity Sonar observation.
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.