Perplexity's crawler docs list two bots. PerplexityBot indexes pages so they can surface and be cited in Perplexity's answers, and Perplexity says it is not used to train foundation models. Perplexity-User fetches a page live when a user's question needs it, from the web, the apps or the API. Perplexity has not published a launch date for either.
Site owners ask about Perplexity more than most because of its history. In June 2024 Wired traced an unlisted Perplexity IP on AWS fetching Condé Nast pages that had blocked PerplexityBot, and a year later Cloudflare made a larger version of the same claim.
Cloudflare's stealth crawling report and Perplexity's response
On Aug 4, 2025 Cloudflare reported that when its customers blocked PerplexityBot and Perplexity-User, Perplexity kept fetching their pages with an undeclared agent that posed as Chrome on macOS and rotated through IPs and networks outside Perplexity's published lists. Cloudflare set up brand-new test domains that disallowed all bots and still saw their content in Perplexity's answers. It measured 20 to 25 million daily requests from Perplexity's declared agents and 3 to 6 million from the undeclared one, removed Perplexity from its verified bots program and added the stealth crawler to its managed AI crawler rule, including on free plans.
Perplexity disputed the report. It said on X that Cloudflare had misattributed traffic from BrowserBase, a hosted browser service it says it uses for fewer than 45,000 requests a day, and argued that agents fetching pages for a user's question are not bots and need not follow robots.txt, a position Search Engine Journal and TechRadar covered at the time. We found no public sign that Cloudflare has restored Perplexity's verified bot status.
How Perplexity's bots show up on your site
Both bots are HTTP fetchers that send a Chrome-like WebKit user agent with a declared token and a perplexity.ai link, such as PerplexityBot/1.0 or Perplexity-User/1.0. They come from IP ranges Perplexity publishes in two files, perplexitybot.json and perplexity-user.json, which Perplexity calls the source of truth. Neither signs its requests, and Perplexity was not among the first Cloudflare signed agents. Comet, Perplexity's AI browser, is a separate product that looks like a normal browser.
| Check | What Perplexity's bots do |
|---|---|
| User agent | Declared tokens PerplexityBot/1.0 and Perplexity-User/1.0 |
| Web Bot Auth signature | None documented |
| IP ranges | Published as two JSON files on perplexity.com |
| robots.txt | PerplexityBot follows it, Perplexity-User generally doesn't |
Why Perplexity's bots are medium difficulty to detect
The declared bots are easy, because a token match plus the IP file settles it, and PerplexityBot picks up robots.txt changes within about 24 hours. Perplexity-User is harder to control, since it generally ignores robots.txt on the grounds that a person asked for the page, so blocking it takes a firewall rule on the token and IP list.
The real difficulty is anything that doesn't declare itself. A fetch that arrives as ordinary Chrome on macOS from an IP outside Perplexity's files, like the agent in Cloudflare's report, won't match either check, so it can only be caught from how the browser and session behave.
How Verisoul detects Perplexity's bots
The declared bots are self-declared, so Verisoul reads the token and confirms the source IP belongs to Perplexity's network before naming it. Traffic that hides as Chrome isn't named as Perplexity, while Verisoul still flags it as automated through bot score.
"agent": {
"id": "perplexitybot",
"name": "PerplexityBot",
"provider": "Perplexity",
"type": "ai_crawler",
"detection_method": "self_declared",
"detection_signals": [
"network",
"behavioral"
]
}idisperplexitybothere, and live fetches come back asperplexity_usertypeisai_crawler, which separates read-only crawlers from agents that act on a pagedetection_methodisself_declared, because the bot named itselfdetection_signalsisnetwork, meaning the source IP was confirmed as Perplexity's own
See the PerplexityBot entry in Agent Atlas and the AI agent detection docs for both ids.
- 01Perplexity user asks a question
- 02Perplexity-User fetches your page
- 03Request carries the Perplexity-User token
- 04Your server matches token and IP
How to detect Perplexity's bots step by step
- Turn on Verisoul and read the
agentobject in the API response - Use robots.txt for PerplexityBot and a rule on
perplexity_userif you want live fetches stopped - Treat any Perplexity token from an IP outside the JSON files as spoofed
- Rate limit or block unnamed sessions with a high bot score on the content you protect
Should you block Perplexity's bots?
The declared bots only read pages, so allowing them is a content decision rather than a fraud one, and many teams allow both for visibility in Perplexity answers. Undeclared traffic that hides as Chrome is a scraping question, so block or challenge it by bot score on the pages you care about.