The two tiers
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
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
Three modes:Explicit datacenter
Explicit residential
Auto (recommended)
Sticky sessions for residential
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 residential proxies, Reader generates a unique session ID and passes it to the proxy provider in the URL:session-hero_... 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 escalation.
Scraping Engine
How the Hero engine and proxy escalation work together.

