The two tiers
Standard (datacenter)
- Fast (~50-100ms overhead per request)
- Cheap (pennies per GB)
- Easily detected by sophisticated anti-bot systems - the IP range is a known datacenter
- Great for: APIs, blogs, docs, news sites, anything without aggressive bot protection
Premium (residential)
- Slow (300-800ms overhead per request)
- Expensive (dollars per GB)
- Indistinguishable from a real user - the IP is a real home ISP
- Great for: Amazon, LinkedIn, ticketing sites, anything that aggressively blocks datacenters
Configuring both tiers
random via proxyRotation).
Tier selection per request
Two modes:Explicit standard
Explicit premium
Sticky sessions for premium
Premium (residential) proxies are typically billed per-request AND per-IP - cycling IPs on every request is wasteful and also tends to trigger anti-bot systems (real users don’t jump IPs mid-session). Reader handles this with sticky sessions: for premium proxies, Reader generates a unique session ID and passes it to the proxy provider in the URL:session-reader_... parameter tells the provider “keep this IP for this session.” All requests in the same crawl session use the same IP, mimicking a real user.
Flat proxy list (legacy)
If you only have one tier of proxies, use the flatproxies option instead of proxyPools:
Per-crawl stickiness
During acrawl() session, Reader picks one proxy at the start and uses it for every request in that crawl. Rotating mid-crawl would trigger anti-bot systems on sites that track session continuity.
If you want different crawls to use different proxies, just call crawl() multiple times - each invocation picks a fresh proxy from the pool.
Where to go next
Proxy Configuration guide
Practical setup for single proxies, pools, and tier selection.
Scraping Engine
How the Playwright engine and proxy tiers work together.

