HTTP 429 Too Many Requests: Why It Happens and How to Fix It

Updated:

HTTP 429 Too Many Requests means the server has received too many requests from you in a given window and is temporarily refusing to serve more. It is not a broken proxy or a wrong password; it is a signal that you are moving faster than the site allows. The fix has three parts: pause for as long as the Retry-After header suggests, retry with growing delays (backoff), and reduce the load on each IP by slowing down or spreading requests across more IPs. This guide helps you confirm where the 429 comes from, read it correctly and fix the cause.

Dedicated IPs where every request is yours

How 429 differs from other proxy errors

When tools or scripts run through a proxy, several errors can look alike. Telling them apart stops you from fixing the wrong thing, such as changing proxy credentials when the problem is request pace.

CodeReturned byUsual meaningWhat to do
429 Too Many RequestsTarget site or APIToo many requests in a time windowWait, back off, slow down, spread across IPs
403 ForbiddenTarget siteAccess refused, possibly due to IP, fingerprint or firewall rulesReview headers, behaviour and IP type
503 Service UnavailableTarget site or CDNOverloaded or under maintenance, sometimes used instead of 429Wait and retry, read Retry-After
407 Proxy Authentication RequiredProxy serverWrong username, password or formatFix the credentials
TimeoutNobody answered in timeSlow network, proxy or site not respondingCheck connectivity, set a sensible timeout

Why you get 429

  • Too many requests from one IP: many threads share a proxy, or a loop has no delay.
  • Instant retries: every failure is retried immediately, multiplying traffic exactly when the site is throttling.
  • Several tools on one IP: two or three scripts, or a whole team, use the same proxy and nobody sees the total.
  • Per-account or per-key quotas: an API limits calls per minute per key, and changing IP does not change the quota.
  • Whole-range throttling: some anti-bot systems score by range or hosting provider, not only by single IP.
  • Shared IPs: on a shared proxy, other people's traffic counts towards the limit. A dedicated proxy removes that cause.

Step 1: confirm where the 429 comes from

Before fixing anything, make sure the target site returned the 429. Print all response headers and look at Server, Retry-After and any rate-limit headers. Fetch the same URL through the same proxy with curl -x http://user:pass@ip:port -I https://example.com/path. If a request to another page such as what is my IP succeeds through that proxy, the proxy is fine and the limit sits on the target site.

Then look at the pattern. If only one IP gets 429 while others are fine, the limit is per IP. If every IP gets it at once, the limit is probably per account, API key, session or range, and more IPs will not help.

Step 2: honour Retry-After and add backoff

Retry-After holds either a number of seconds or a date. If present, wait that long before retrying. If absent, use exponential backoff: wait a few seconds the first time, double it each time, add some randomness, and stop after a fixed number of attempts.

  • Python with requests: read wait = r.headers.get('Retry-After'); if it is a number, time.sleep(int(wait)), otherwise time.sleep(min(60, 2 ** attempt) + random.uniform(0, 1)).
  • Scrapy: add 429 to RETRY_HTTP_CODES, enable AUTOTHROTTLE_ENABLED = True and lower CONCURRENT_REQUESTS_PER_DOMAIN.
  • Built-in helper: urllib3.util.Retry with status_forcelist=[429, 503], a backoff_factor and respect_retry_after_header=True, mounted on the session's HTTPAdapter.
  • Cap retries, for example at five, then push the URL to a later queue rather than retrying forever.

Step 3: slow down and redistribute IPs

Backoff treats the symptom. To stop 429s for good, total requests per IP must stay under the site's threshold. First cut concurrency and add random delays. Then, if the workload genuinely needs more throughput, spread it across more dedicated IPs, each kept at its safe pace. How to rotate your own list is covered in rotating a proxy list in Python.

When an IP gets a 429, rest it for a few minutes instead of instantly moving the request to the next IP at the same pace. Swapping IPs without slowing down just walks the pool into the limit one by one. Measuring the threshold and sizing the pool is explained in web scraping rate limits.

429 in browsers and account tools

Scripts are not the only source. An antidetect browser running many profiles on one IP, a bulk posting tool, or an app that refreshes constantly can all hit the limit. Check how many profiles share each proxy, turn off auto-refresh and space out actions. On social platforms a 429 is often an early warning that activity is too fast; pushing on can lead to temporary locks, and a proxy does not make an account immune to that.

On cheap shared proxies, someone else may use up the threshold before you do. A private IPv4 proxy assigned to one customer means every request on that IP is yours.

429 checklist

  • Confirm the 429 comes from the target site, not the proxy.
  • Read and honour Retry-After.
  • Use exponential backoff with jitter and a retry cap.
  • Lower concurrency per IP and per domain.
  • Rest an IP after a 429 instead of piling onto the next one.
  • If every IP is affected, review account quotas, API keys or behaviour before buying IPs.
  • Log URL, IP, status and timestamp to see the trend.

Frequently asked questions

Does a 429 mean my proxy is broken?

No. A 429 is the target site's response to too many requests. A broken proxy usually produces connection errors, timeouts, or 407 if authentication is wrong.

How long should I wait after a 429?

If Retry-After is present, wait exactly that long. If not, start with a few seconds and double the wait on each retry, with a maximum.

Will switching IP stop the 429?

Only when the limit is per IP, and only briefly if you do not slow down. If it is per account, API key or session, changing IP does nothing.

Do dedicated proxies reduce 429 errors?

To a point: a dedicated IP removes other people's traffic, so the threshold counts only your requests. If you yourself send too fast, you will still get 429.

Dedicated IPs where every request is yours

Private IPv4 proxies in 7 countries and static ISP proxies in Vietnam and the US. One customer per IP, unlimited bandwidth, 24/7 ticket support.

See pricing

Related articles

Knowledge base
Web Scraping Rate Limits: How Fast Is Too Fast
Web scraping rate limits explained: what sites count, reading robots.txt, pacing and backoff in code, and how to work out how many IPs your job needs.
Proxy errors
Proxy timeout errors: the connection hangs, then gives up
A proxy timeout means no answer arrived before the wait limit. Tell curl (28) and ERR_TIMED_OUT apart, tune Python timeouts and find where traffic is blocked.
Proxy errors
How to fix 407 Proxy Authentication Required
A 407 Proxy Authentication Required error means the proxy answered but rejected your login. See real curl output, the likely causes and fixes per app.
Proxies by platform
Proxies for Web Scraping: unmetered dedicated IPv4 & ISP pools for 24/7 crawlers
Fast HTTP(S) dedicated IPv4 and static ISP proxies for Python, Playwright, Selenium and Scrapy, with unlimited monthly bandwidth. Compare plans and start.
Products
Static residential ISP proxies
Static residential ISP proxies in the United States and Vietnam. IPs registered to consumer internet providers, dedicated to one customer, unlimited bandwidth.
Products
Private IPv4 datacenter proxies
Buy private IPv4 datacenter proxies in the US, Vietnam, Japan, South Korea, Singapore, the UK and Hong Kong. HTTP(S), unlimited bandwidth, auto activation.
ISP · vietnam
Vietnam Static ISP Proxies: Home-Network Vietnamese IPs for Your Most Valuable Accounts
Vietnam static ISP proxies on consumer internet provider IPs. A fixed Vietnamese IP for main Shopee shops, TikTok Shop, Facebook ad accounts and Zalo OA.
IPV4 · united states
US Private IPv4 Proxies: Fast, Dedicated American Datacenter IPs
Dedicated US private IPv4 proxies for scraping, rank tracking, ad checks and Amazon research. Static IP, one user per IP, unlimited bandwidth, fast activation.