PerplexityBot User Agent: What It Is and How to Allow It
On this page, 10 sections
PerplexityBot is the crawler Perplexity uses to surface and link websites in its search results. Perplexity says it is not used to crawl content for AI foundation models. A second agent, Perplexity-User, fetches a page when a person asks Perplexity a question, and Perplexity says it generally ignores robots.txt because a user requested the fetch.
The full user agent string for the crawler is Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; PerplexityBot/1.0; +https://perplexity.ai/perplexitybot). Perplexity recommends allowing it in robots.txt and permitting requests from its published IP ranges if you want to appear in its results.
I read Perplexity’s crawler documentation and downloaded both IP lists on 11 October 2026.
The two user agents
Perplexity’s page lists two, and only two.
- PerplexityBot: designed to surface and link websites in search results on Perplexity. Perplexity says it is not used to crawl content for AI foundation models. Full user agent string:
Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; PerplexityBot/1.0; +https://perplexity.ai/perplexitybot). - Perplexity-User: supports user actions within Perplexity. When users ask a question, it might visit a page and include a link in the response. Perplexity says it is not used for web crawling or to collect content for training. Full user agent string:
Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; Perplexity-User/1.0; +https://perplexity.ai/perplexity-user).
The documentation adds one sentence that decides how you handle the second: because a user requested the fetch, Perplexity-User generally ignores robots.txt rules.
So the first agent is a search crawler Perplexity tells you to allow in robots.txt. The second is a user-triggered fetch you cannot reliably control with it. Compare that with OpenAI and Anthropic, which both split a training bot from search and user bots. Perplexity’s page lists no training bot at all.
I cover those in GPTBot vs OAI-SearchBot vs ChatGPT-User and ClaudeBot, Claude-User and Claude-SearchBot.
The published IP lists
Perplexity publishes each agent’s addresses as JSON. I fetched both on 11 October 2026 and counted the entries:
perplexitybot.json: 8 prefixes, file dated 7 February 2025.perplexity-user.json: 4 prefixes, file dated 17 October 2025.
The dates are the creationTime values inside each file. The first two entries in each list were single addresses written as /32, which is a single IP. I only looked at the first two entries of each list for that detail, so do not assume all twelve are single addresses.
The size is the interesting part. OpenAI’s ChatGPT-User list, fetched the same day, has 234 prefixes. Perplexity’s two lists together have 12. Small lists make IP verification cheap: you can read all of them on one screen. They also make the lists easy to get stale if you copy them once, which is why Perplexity tells you to fetch them on a schedule.
Here is a check you can run against your logs. It loads a downloaded list and tests an IP:
import ipaddress, json, sys
data = json.load(open(sys.argv[1])) # perplexitybot.json
ip = ipaddress.ip_address(sys.argv[2])
for p in data["prefixes"]:
cidr = p.get("ipv4Prefix") or p.get("ipv6Prefix")
if cidr and ip in ipaddress.ip_network(cidr):
print("match", cidr)
break
else:
print("no match")
Letting PerplexityBot through a firewall
This is the part that bites sites in practice. If a CDN or firewall treats unknown bots as threats, PerplexityBot never reaches robots.txt at all.
Perplexity’s documentation has a section for this. The guidance for Cloudflare is to create a custom rule in Security, then WAF, that combines two conditions: the user agent matches PerplexityBot or Perplexity-User, and the source IP is in the ranges from the official endpoints.
For AWS WAF, you create IP sets for both agents and string-match conditions for both user agent names, then add allow rules with higher priority than your blocking rules.
The point of combining both conditions is stated plainly: user agent matching plus IP verification for enhanced security lets legitimate bot traffic through. Perplexity also says WAF changes can take time to propagate, and to monitor your logs.
My own site responds with server: cloudflare, which I confirmed from the response headers on 11 October 2026. I did not change any Cloudflare rules for this post, and I cannot tell you from here whether PerplexityBot is reaching my pages or being challenged. That is the test I would run first on any Cloudflare site, and it is why the next section matters.
What to write in robots.txt
To appear in Perplexity results:
User-agent: PerplexityBot
Allow: /
To opt out of the crawler:
User-agent: PerplexityBot
Disallow: /
Do not expect that second block to stop Perplexity-User. Perplexity says it generally ignores robots.txt, so the file is not the control for it. If you need to stop it, you need a firewall or CDN rule, and the IP list from perplexity-user.json is what you would match on.
The group-matching trap
Once a group names PerplexityBot, that group is the only one it obeys. The * group stops applying. A shared group of AI agents ending in Allow: / can quietly undo every Disallow you wrote under *. I found exactly that on my own robots.txt, and wrote it up in robots.txt for AI crawlers: the user agents that matter.
Checking your logs
Count requests per Perplexity agent with a single command:
grep -E "PerplexityBot|Perplexity-User" access.log \
| grep -oE "(PerplexityBot|Perplexity-User)" \
| sort | uniq -c
Then take the source IPs of any matches and test them with the script above. A hit with the right name and the wrong IP is not Perplexity.
What I could not verify
I did not have raw access logs for adityaarsharma.com in this session, so I cannot tell you how often PerplexityBot visits it. I also did not test whether PerplexityBot honours a Disallow in practice. What you have here is what Perplexity documents, plus the IP lists as downloaded.
Questions people ask
What is the PerplexityBot user agent?
Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; PerplexityBot/1.0; +https://perplexity.ai/perplexitybot), as published on Perplexity’s crawler page.
Does PerplexityBot train AI models?
Perplexity says PerplexityBot is not used to crawl content for AI foundation models, and says the same for Perplexity-User.
Does Perplexity obey robots.txt?
The search crawler is covered by the robots.txt guidance Perplexity gives. Perplexity-User generally ignores robots.txt rules, by Perplexity’s own statement.
How do I verify a PerplexityBot request?
Check the source IP against the ranges in perplexitybot.json. Do not rely on the user agent alone.
How Perplexity compares with the other two
Counting the user agents each vendor documents on its own page, read the same day: OpenAI lists four, Anthropic three, Perplexity two.
Perplexity’s page is the only one of the three that describes no bot for model training. OpenAI’s GPTBot and Anthropic’s ClaudeBot are both described as training-related. That is a statement about what Perplexity documents, not a claim about what any company does with data elsewhere.
For a site owner, this makes the Perplexity decision simpler: there is one crawler to allow or block, and one user-triggered fetcher you cannot reliably block with robots.txt.
Do this today
If your site is behind a CDN or firewall, search the security logs for blocked or challenged requests from PerplexityBot. If you find any and you want to appear in Perplexity, add an allow rule that matches both the user agent and the IP list.
Resources
- Perplexity: Perplexity Crawlers, read 11 October 2026.
- PerplexityBot IP ranges and Perplexity-User IP ranges, fetched 11 October 2026.
- OpenAI: ChatGPT-User IP ranges, fetched 11 October 2026, for the comparison count.