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.
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.
- For 407, see fixing 407 Proxy Authentication Required; for timeouts, see proxy timeout errors.
| Code | Returned by | Usual meaning | What to do |
|---|---|---|---|
| 429 Too Many Requests | Target site or API | Too many requests in a time window | Wait, back off, slow down, spread across IPs |
| 403 Forbidden | Target site | Access refused, possibly due to IP, fingerprint or firewall rules | Review headers, behaviour and IP type |
| 503 Service Unavailable | Target site or CDN | Overloaded or under maintenance, sometimes used instead of 429 | Wait and retry, read Retry-After |
| 407 Proxy Authentication Required | Proxy server | Wrong username, password or format | Fix the credentials |
| Timeout | Nobody answered in time | Slow network, proxy or site not responding | Check 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: readwait = r.headers.get('Retry-After'); if it is a number,time.sleep(int(wait)), otherwisetime.sleep(min(60, 2 ** attempt) + random.uniform(0, 1)). - Scrapy: add
429toRETRY_HTTP_CODES, enableAUTOTHROTTLE_ENABLED = Trueand lowerCONCURRENT_REQUESTS_PER_DOMAIN. - Built-in helper:
urllib3.util.Retrywithstatus_forcelist=[429, 503], abackoff_factorandrespect_retry_after_header=True, mounted on the session'sHTTPAdapter. - 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