No KYC — no ID, no selfie, no documents. Pay in crypto: BTC, USDT, USDC, ETH, SOL, LTC
Language: English
Get started

Docs · 15 errors · causes and fixes

Proxy error reference for scrapers

Every page answers the same four questions: who sent the error, what it looks like in your tool, why it happened, and whether a retry can help.

Last updated: · 4 min read

Quick answer

How do I find out why a proxied request failed?

First find out who answered: the proxy gateway (407, CONNECT failures, some 502 and 504), the website (401, 403, 429, most 503), or your own client (TLS and timeout errors). Then match the exact message to a page below. This reference covers 15 errors that scrapers meet with CrawlRelay residential proxies or any HTTP or SOCKS5 proxy, with code to fix each one.

Which error am I looking at?

Find your symptom, then open the page for the full diagnosis.

SymptomSent byRetry?Page
407, 'Tunnel connection failed: 407'ProxyNo407 Proxy Authentication Required
401 with WWW-AuthenticateWebsiteNo401 vs 407
403 page or firewall messageWebsiteOnce, then stop403 Forbidden
429, often with Retry-AfterWebsiteYes, later429 Too Many Requests
502, 'CONNECT tunnel failed, response 502'Proxy or CDNYes, new exit502 Bad Gateway
503, maintenance or challenge pageWebsite or CDNYes, with backoff503 Service Unavailable
504Proxy or CDNOnce or twice504 Gateway Timeout
net::ERR_TUNNEL_CONNECTION_FAILEDBrowser (proxy refused CONNECT)After fixing the causeERR_TUNNEL_CONNECTION_FAILED
net::ERR_PROXY_CONNECTION_FAILEDBrowser (proxy unreachable)NoERR_PROXY_CONNECTION_FAILED
ProxyError: Unable to connect to proxyPython clientDepends on the causeCannot connect to proxy
[SSL: WRONG_VERSION_NUMBER]Your TLS libraryNoSSL: WRONG_VERSION_NUMBER
CERTIFICATE_VERIFY_FAILEDYour TLS libraryNoCertificate verify failed
ReadTimeout, 'Read timed out'Your clientYes, new exitRead timed out
ECONNRESET, 'socket hang up', 'Connection reset by peer'NetworkYes, safe requestsConnection reset
'Missing dependencies for SOCKS support', curl error 97Client or SOCKS serverDependsSOCKS5 errors

All errors by type

HTTP status codes

Browser and client errors

Connection and TLS errors

Which errors should a scraper retry automatically?

Retry what can change on its own, and stop on what cannot:

  • Retry with a new connection: 502, 504, connection resets and read timeouts. A new connection usually gets a different residential exit.
  • Retry later, slower: 429 and 503. Wait for Retry-After or back off exponentially with jitter, and lower concurrency on that host.
  • Retry once, then stop: 403. One retry on a new IP separates a flagged address from a site rule.
  • Never retry blindly: 407, 401, TLS errors and unreachable proxies. They are configuration problems.

The Python guide shows a retry policy that follows these rules with urllib3's Retry.

How do I log errors so they are easy to debug?

Log five fields for every failed request: the URL's host, the status code or exception class, the session ID if any, the time to first byte, and the first 200 characters of the response body. The body tells you whether a CDN, a firewall or the proxy wrote the error page. Count errors per host and per status every minute: a jump on one host means that site changed something; a jump on every host means your setup or your network did.

Error reference: questions

How can I tell if an error comes from the proxy or from the website?

Look at where it happened. Errors during the CONNECT step, shown by curl -v before any TLS handshake, come from the proxy: 407, or a 502 or 504 on CONNECT. Statuses that arrive after the TLS handshake, with the site's headers and HTML, come from the website. Client errors such as timeouts and TLS failures come from your own code or network.

Are failed requests billed?

Traffic is counted in bytes moved through the gateway, so an error response that never reached a website, such as a 407, moves almost nothing. A block page from a website is a normal response and has a size like any other page. Cut both by fixing configuration errors early and slowing down on 403 and 429.

What is a normal error rate for a scraper using residential proxies?

It depends on the targets. Proxyway's 2026 research measured a median success rate of 99.28% on residential proxy networks but 74.43% on protected real targets such as Amazon, Google and Instagram. Measure your own targets and track the rate over time: a sudden change matters more than the absolute number.

From $0.50/GB · no KYC

Get started