PurpleScanBot Crawler — Technical FAQ
Everything a site owner, security engineer, or SRE needs to identify, allow-list, or troubleshoot traffic from our crawler.
1. What is PurpleScanBot?
PurpleScanBot is the crawler operated by PurpleScan. It audits e-commerce properties for technical SEO health, HTTP security headers, consent-banner compliance, performance, and uptime regressions.
If PurpleScanBot is hitting your site, someone in your organisation — or an agency or platform partner — has registered the domain with PurpleScan. Typical checks include:
- Critical SEO tags (canonical, hreflang, meta robots, structured data).
- HTTP security headers (CSP, HSTS, COOP/COEP, X-Frame-Options).
- Pre-consent cookies and outbound tracking pixels.
- Core Web Vitals and rendering screenshots for regression auditing.
2. User-Agent strings
PurpleScanBot uses three distinct User-Agent strings depending on the
request type. All three contain the token PurpleScanbot
(case-insensitive), so a single substring match is enough to identify
our traffic in logs or WAF rules.
Desktop (headless Chrome)
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36 (compatible; PurpleScanBot/1.0; +https://www.prplscan.com/ua)
Mobile (headless Chrome, Pixel 8 emulation)
Mozilla/5.0 (Linux; Android 13; Pixel 8) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Mobile Safari/537.36 (compatible; PurpleScanBot/1.0; +https://www.prplscan.com/ua)
Raw HTTP (robots.txt, sitemaps, static checks)
PurpleScanbot/1.0 (+https://www.prplscan.com/ua)
| Segment | Meaning |
|---|---|
| PurpleScanBot / PurpleScanbot | Crawler identifier (analogous to “Googlebot”). |
| /1.0 | Major version, incremented on behavioural changes that could affect origin servers. |
| Chrome/147.0.0.0 | Chromium engine version used by the full-render passes. |
| +https://www.prplscan.com/ua | Canonical reference URL — this page. |
3. Originating IP addresses
All PurpleScanBot traffic originates from two static addresses. There is no rotating pool — a single allow-list entry per address family is sufficient.
| Family | Address |
|---|---|
| IPv4 | 51.91.78.67 |
| IPv6 | 2001:41d0:404:200::92a7 |
Reverse DNS does not currently resolve to a PurpleScan-owned hostname, so please rely on the IP + User-Agent combination for attribution.
4. How we rate-limit requests
- Per-website cap: at most 1 request per 60 seconds per registered website, enforced with a sliding-window limiter.
- No parallel dispatch: only one crawl schedule can be in flight per website at a time.
- Automatic back-off: on HTTP
429responses, crawling for that website is paused until a cool-down window elapses. - robots.txt crawl-delay: if your robots.txt declares a
Crawl-delaydirective, we honour it in addition to the per-website cap.
In practice this means the aggregate load generated by PurpleScanBot on any single origin is well below 1 request per second, even across our desktop and mobile passes.
5. robots.txt & sitemaps
- We fetch
/robots.txtdaily and cache the result. - We obey
Disallowrules matching eitherUser-agent: PurpleScanbotorUser-agent: *. - We honour the
Crawl-delaydirective if present. - We auto-discover sitemaps referenced from robots.txt, and fall back to
/sitemap.xmlif none are declared.
To block us entirely, add the following to your robots.txt:
User-agent: PurpleScanbot Disallow: /
6. How often we crawl
Crawl frequency depends on the type of page, not the size of the website. Deep e-commerce catalogues are sampled rather than fully re-crawled on every run.
| Page type | Frequency |
|---|---|
| Homepage | Every 6 hours |
| Product listing pages (PLP) | Every 24 hours |
| Product detail pages (PDP) | Every 72 hours (sampled) |
| Other pages | Every 168 hours (weekly) |
7. Browser & device emulation
- Engine: Headless Chromium 147 driven over the Chrome DevTools Protocol via Selenium WebDriver.
- Desktop profile: viewport 1920 × 1080, Windows desktop UA.
- Mobile profile: Pixel 8 emulation (Android 13), mobile UA.
- JavaScript: enabled for rendering passes; disabled for raw static fetches such as robots.txt and sitemaps.
- Accept-Language:
en-US,en;q=0.9by default.
8. Safety guarantees
- PurpleScanBot does not submit forms, log in, or interact with carts.
- It does not issue
POST,PUT, orDELETErequests to unauthenticated endpoints. - It does not attempt to bypass authentication, paywalls, or geo-fencing.
- It does not download arbitrary binaries beyond what a real browser would fetch to render the page.
9. How to allow-list us
If your CDN, WAF, or bot-protection product is blocking PurpleScanBot, either of the following rules is enough on its own. You don’t need both.
Option A — by IP address
Allow-list both:
51.91.78.67 2001:41d0:404:200::92a7
Option B — by User-Agent
Match the substring PurpleScanbot
(case-insensitive) in the User-Agent header.
(http.user_agent contains "PurpleScanbot")
and action Skip → all remaining custom rules & Bot Fight Mode.
10. Reporting issues
Questions or abuse reports? Reach the PurpleScan crawler team at [email protected]. Please include your domain and an approximate timestamp (with timezone) of the traffic you’re asking about, so we can correlate with our crawl logs. We reply within one business day.