What proxies do, briefly
A proxy sits between your scraper and the target. Every request is forwarded through it; the target sees the proxy’s IP, not yours. That gives you three things: anonymity (your real IP isn’t on the target’s logs), distribution (no per-IP rate limits when you rotate), and geo-targeting (request from the country the site expects).
Sites monitor request patterns per IP. Too many requests from one IP → rate limit, soft block, CAPTCHA, or hard ban. Different proxy types exist because different sites do different kinds of monitoring. The 80/20 isn’t about which proxy is “best” — it’s about matching tier to target.
The decision tree (the 80/20)
Skip the rest of this page if you only read one section. Match your target to the row that fits — the recommended stack is in the middle column. Real-world success rates measured across our customers in Q1 2026.
auto_proxy=true is the “you decide for me” option: starts on datacenter, falls back to residential on 4xx, mobile if needed. You only pay residential rates when residential is what got the 2xx. Most teams’ effective per-request cost lands around 1.4 credits.Cost, latency, and trust by tier
The trade-offs are linear in obvious ways and non-linear in subtle ones. Datacenter is 5× cheaper than residential but only ~5% lower in success rate on most sites — making it almost always the right first attempt. Mobile costs 10× datacenter and only matters on a small set of targets where the marginal trust unlocks the page.
Proxy types, when each one matters
The same six categories show up across every provider — naming varies, behaviour doesn’t.
Cloud-provider IPs (AWS, GCP, OVH, Hetzner). Identifiable by ASN. Use for sites that don’t do IP-reputation scoring.
Real ISP-assigned IPs. Carry the trust score of an actual home connection. Default for protected sites.
Carrier-NAT IPs. Shared by thousands of real users — banning one bans many. Reserved for the hardest targets.
Fresh IP for every request. Removes per-IP rate limits, no session bookkeeping.
Same IP for N minutes via a session ID. Required for logins, paginated state, anything cookie-bound.
Plug your own pool into the engine. We handle rendering, you handle IPs.
How auto-proxy actually works
auto_proxy=true implements the decision tree at request time. The loop is: try cheap, escalate on failure, return on success. You’re only billed for the request that actually returned a 2xx — failed escalation steps are free.
First request goes through datacenter. Returns immediately on 2xx/3xx (other than 404 misroutes).
try datacenter
On 4xx/5xx (except 404), retries with residential. New IP, new TLS handshake, fresh challenge cookies.
on fail → residential
For the hardest targets, falls back once more to mobile/4G after a residential failure.
on fail → mobile
If every proxy tier fails, attempts a direct connection. Almost never useful but ensures we never silently drop the request.
on fail → direct
- Network timeout / DNS error
- HTTP 400, 403, 429, 500, 503
- Empty 200 with CAPTCHA body
- Proxy connection failure
- HTTP 200 with valid body
- HTTP 301 / 302 redirects
- HTTP 404 (genuinely not found)
Rotation: per-call vs sticky sessions
Two questions decide which one fits: (1) does the target track sessions, and (2) does the scrape need cookie/state continuity across requests?
Per-call rotation (default)
Fresh IP per request. Best for high-volume stateless scraping — product catalogs, SERP tracking, news monitoring. No per-IP rate limits, no extra cost.
Sticky sessions
Pin an IP for up to 30 min via proxy_session="sess_42". Required for logins, multi-step forms, and paginated results that bind to IP. Same key reuses the same exit IP.
Geo-targeting that actually works
“US proxy” is rarely specific enough. Amazon shows different prices in California vs Texas. Google SERPs vary city to city. A US proxy on a US site triggers fewer challenges than a foreign IP — match the geo, and the rest of the stack relaxes.
curl -X GET 'https://api.example.com/scrape' \
-H 'ApiKey: YOUR_API_KEY' \
-G \
--data-urlencode 'url=https://www.amazon.com/dp/B08N5WRWNW' \
--data-urlencode 'premium_proxy=true' \
--data-urlencode 'proxy_country=US'Pool granularity by tier: datacenter ≈ country, residential ≈ city, mobile ≈ carrier-region (often 1–2 metro areas). For city-level Google SERPs, residential is the floor.
Proxy API parameters
All proxy configuration is request parameters — no separate proxy SDK to wire up.
Code examples
Auto-proxy with failover (the cheap default)
curl -X GET 'https://api.example.com/scrape' \
-H 'ApiKey: YOUR_API_KEY' \
-G \
--data-urlencode 'url=https://example.com' \
--data-urlencode 'auto_proxy=true'Residential + country targeting
import requests
response = requests.get(
'https://api.example.com/scrape',
params={
'url': 'https://protected-site.com',
'premium_proxy': 'true',
'proxy_country': 'US',
},
headers={'ApiKey': 'YOUR_API_KEY'},
)
print(response.text)Sticky session for paginated scraping
// Same session key = same exit IP across the loop
for (let page = 1; page <= 5; page++) {
await fetch('https://api.example.com/scrape?' + new URLSearchParams({
url: `https://example.com/page/${page}`,
premium_proxy: 'true',
proxy_session: 'my-session-123',
}), { headers: { ApiKey: 'YOUR_API_KEY' } });
}FAQ
About 60% of the public web in our measurements: most blogs, docs sites, news outlets without paywalls, government data, B2B SaaS marketing pages. The reliable signal is whether the site has Cloudflare’s “Bot Fight Mode” on, or runs Akamai Bot Manager — if not, datacenter clears just fine.
You only pay for the tier that actually returned the 2xx. If 70% of your URLs clear on datacenter, that’s 70% at 1 credit instead of 5 — a 3.2× cost reduction at the same success rate.
No. Only the request that returned a usable 2xx (or a real 404) is billed. Failed escalation steps are free.
Yes. custom_proxy + auth credentials. We handle browser rendering, you handle IPs. Often used by teams with existing residential contracts who still want our anti-bot stack.
195+. Country-level on every tier; city-level for residential and mobile in the major markets (US, UK, DE, FR, JP, AU, BR, IN).
Yes. Proxies and stealth address different layers — IP reputation vs browser fingerprint. They multiply rather than add. See the fingerprinting guide.
~350ms over datacenter on average. The IP is a real home connection, so its uplink isn’t a colo backbone. For batch scraping this barely matters; for interactive use it’s the main reason to keep datacenter as the first attempt.
For BYO proxies, yes — pass socks5://... as custom_proxy. Our managed pools are HTTPS-only.