ReaderClient or per-request via scrape() options. This guide covers the three common setups.
Single proxy per request
The simplest pattern: no client-level config, pass a proxy per call.url is set, all other fields are ignored.
Flat proxy pool with rotation
If you have multiple proxies of the same tier, configure them on the client and let Reader rotate:proxyRotation: "random" when you want stochastic selection (e.g., to avoid fingerprinting patterns).
Multi-tier pools (standard + premium)
For production, configure both tiers and pick per-request:Inspecting which proxy was used
Every successful scrape result includes proxy metadata:Proxy providers
Reader works with any HTTP/HTTPS proxy that supports basic auth. The exact URL format varies by provider - check their docs for thehost:port and whether they expect user-session-xxx style parameters in the username field. Reader handles the sticky session parameter automatically for premium (residential) proxies.
Troubleshooting
PROXY_CONNECTION_ERROR on every request
Check your proxy credentials and that the proxy is reachable from your machine. Try a manual curl -x http://user:pass@host:port https://example.com to verify.
PROXY_EXHAUSTED
All proxies in all configured tiers failed. Check provider status and whether you’ve hit a usage limit.
Premium is slow
Premium (residential) proxies route through real ISPs, adding 300-800ms. This is expected - use them only when standard is blocked.Where to go next
Proxy Tiers concept
The mental model for standard vs premium.
Error Handling
How to catch and retry proxy errors.

