PerplexityBot and Perplexity-User Explained
Perplexity runs two agents, and states that one of them generally ignores robots.txt. Here is what each does and how to configure for it.
Perplexity documents two web agents, and neither of them is a training crawler. That already makes its roster different from OpenAI's or Anthropic's, and it changes what a robots.txt rule is actually deciding. One further statement on Perplexity's page deserves to be read before any rule is written: its user-triggered fetcher generally ignores robots.txt. Everything below comes from Perplexity's own crawler documentation, read on 9 September 2026.
The two agents
| Agent | Perplexity's stated purpose | robots.txt | Published IPs |
|---|---|---|---|
PerplexityBot |
"Designed to surface and link websites in search results on Perplexity. It is not used to crawl content for AI foundation models." | Respected; Perplexity recommends allowing it | https://www.perplexity.com/perplexitybot.json |
Perplexity-User |
"Supports user actions within Perplexity. When users ask Perplexity a question, it might visit a web page to help provide an accurate answer and include a link to the page in its response." | "Since a user requested the fetch, this fetcher generally ignores robots.txt rules." | https://www.perplexity.com/perplexity-user.json |
Evidence tier for this table: OFFICIAL PROVIDER GUIDANCE.
Perplexity states that each setting works independently and that changes may take up to 24 hours to be reflected in its systems. Both agents carry an explicit disclaimer that they are not used to collect content for training AI foundation models — Perplexity-User is documented as "not used for web crawling or to collect content for training AI foundation models" as well.
Full user-agent strings, as published:
Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; PerplexityBot/1.0; +https://perplexity.ai/perplexitybot)
Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; Perplexity-User/1.0; +https://perplexity.ai/perplexity-user)
PerplexityBot: a search crawler, and only that
PerplexityBot is the search crawler that builds the index Perplexity's answers draw on. Perplexity's recommendation for sites that want to appear in its results is twofold: allow PerplexityBot in robots.txt, and permit requests from the published IP ranges. The second half is not decoration. A permissive robots.txt is inert if a WAF, CDN rule or security plugin is returning 403 to the request before it reaches WordPress, and that mismatch is the single most common cause of "we allow it but it never crawls us".
The absence of a training crawler in Perplexity's roster is the practical difference from OpenAI and Anthropic. There is no Perplexity equivalent of GPTBot or ClaudeBot to make a licensing decision about. Disallowing PerplexityBot is therefore purely a visibility decision: you are choosing not to be surfaced and linked in Perplexity's results. That may still be the right call — bandwidth, paywalled content, or a licensing position on answer engines generally — but it should be made knowing that is all it buys.
Perplexity-User: read this before writing a rule
Perplexity-User fetches a page because a person asked a question that needed it, and Perplexity says it may include a link to the page in the response. Its documented robots.txt behaviour is the sentence to internalise: since a user requested the fetch, this fetcher generally ignores robots.txt rules.
That is a clear statement, and it is different from Anthropic's position on its own user-triggered agent, which Anthropic documents as controllable through robots.txt, and from OpenAI's more conditional "robots.txt rules may not apply" for ChatGPT-User. Three companies, one functional category, three different documented behaviours. Any advice that treats "user-triggered AI fetchers" as a single configurable group is wrong somewhere.
Two consequences:
- A
DisallowforPerplexity-Useris not a control. Writing one is not harmful, and it does record your preference legibly for anyone auditing the file, but do not report it to a client as a block. If a page must not be fetched on a user's instruction, the enforcement layers are authentication, a paywall, or an edge rule — not robots.txt. RFC 9309 has always described an advisory protocol. - Blocking it does not remove you from Perplexity. Presence in Perplexity's results is governed by
PerplexityBot. The two are independent.
Worked robots.txt
Available to be surfaced and linked in Perplexity results:
User-agent: PerplexityBot
Allow: /
Sitemap: https://example.com/sitemap_index.xml
Not available in Perplexity results, with a stated preference against user-directed fetching that Perplexity documents it generally will not honour:
User-agent: PerplexityBot
Disallow: /
User-agent: Perplexity-User
Disallow: /
Section-level restriction, which is usually a better instrument than a site-wide rule:
User-agent: PerplexityBot
Disallow: /members/
Disallow: /pricing-internal/
Allow: /
As with every operator, rules are per host. example.com/robots.txt does not govern docs.example.com.
Firewall and CDN configuration
Perplexity is unusual in documenting WAF setup directly, which tells you how often the edge is the real blocker. Its guidance, paraphrased:
- Cloudflare: create a custom WAF rule under Security → WAF that matches User-Agent containing
PerplexityBotorPerplexity-Userand a source IP in the published ranges, with the action set to Allow so the request bypasses other security rules. - AWS WAF: create IP sets from the published endpoints, create string-match conditions on the User-Agent header for both tokens, combine them into allow rules, and associate those with your Web ACL at a higher priority than blocking rules.
- Both: fetch the IP ranges from the official JSON endpoints rather than hard-coding them, and automate periodic refresh — Perplexity warns the addresses are updated regularly and that the JSON endpoints are the source of truth.
Perplexity's stated best practice is to combine user-agent matching with IP verification rather than relying on either alone. That is the correct posture generally: a user-agent header is trivially forged, and matching on the string alone is an open invitation to any scraper that copies it. Verifying by IP is the only check that means anything.
What not to assume
- Do not assume
Perplexity-Userrespects aDisallow. Perplexity says it generally does not. - Do not assume blocking Perplexity protects content from training. Perplexity documents neither agent as collecting content for foundation model training, so there is nothing there to block. If training use is your concern, the relevant tokens belong to other operators.
- Do not assume allowing
PerplexityBotproduces citations. It makes you eligible to be surfaced and linked. Perplexity documents no mechanism for how a source is selected for a given answer, and neither does any other provider. Crawled is not retrieved; retrieved is not cited. - Do not judge a robots.txt change immediately. Perplexity documents up to 24 hours for changes to be reflected.
- Do not trust a log entry on its user-agent string. Check it against the JSON list for that agent.
Evidence classification
| Statement | Tier |
|---|---|
| Each agent's purpose, user-agent string and IP list | OFFICIAL PROVIDER GUIDANCE |
PerplexityBot respects robots.txt; Perplexity recommends allowing it plus its IP ranges |
OFFICIAL PROVIDER GUIDANCE |
Perplexity-User generally ignores robots.txt |
OFFICIAL PROVIDER GUIDANCE |
| Neither agent collects content for foundation model training | OFFICIAL PROVIDER GUIDANCE |
| Combine user-agent matching with IP verification in a WAF | OFFICIAL PROVIDER GUIDANCE |
Allowing PerplexityBot increases citations in Perplexity answers |
Not supported at any tier |
Key takeaways
- Perplexity publishes two agents and no training crawler, so a robots.txt decision here is about visibility, not licensing.
PerplexityBotgoverns whether you can be surfaced and linked in Perplexity results; allowing it in robots.txt is only half the job if your edge blocks it.Perplexity-Usergenerally ignores robots.txt by documented policy. ADisallowrecords a preference; it does not enforce one.- Verify by the published JSON IP lists, combined with user-agent matching, and automate the refresh.
- Changes can take up to 24 hours to take effect.
Official sources & further reading
- Perplexity crawlers — Perplexity (all agent facts, user-agent strings, robots.txt statements and WAF guidance above; fetched 9 September 2026, HTTP 200)
- Published IP ranges — Perplexity:
https://www.perplexity.com/perplexitybot.jsonandhttps://www.perplexity.com/perplexity-user.json - RFC 9309: Robots Exclusion Protocol — IETF
- Does Anthropic crawl data from the web, and how can site owners block the crawler? — Anthropic, for the contrasting treatment of a user-triggered fetcher