HTTP Errors

What Is the 429 Status Code? (429 Too Many Requests)

What Is a 429 Error (Too Many Requests)? — conceptual illustration
On this page

HTTP 429 Too Many Requests is the status code a server returns when a client has sent more requests in a given window than the server's rate limit allows. The response often includes a `Retry-After` header telling the client how long to wait. For web scrapers, 429 is the most common form of soft block — the server hasn't decided you're a bot, but you're hitting it too fast and need to slow down.

Quick facts

Status code429
Category4xx Client Error
Standard headerRetry-After (seconds or HTTP date)
Common causesBurst traffic, per-IP rate limits, API quota exhaustion
Right responseBack off, honor Retry-After, slow request rate

What triggers a 429

Servers enforce rate limits to protect themselves from abuse and accidental denial-of-service. The trigger is usually one of: too many requests per second from a single IP, too many requests per minute or hour against a specific endpoint, or an exhausted per-account quota on an authenticated API. The threshold varies wildly — public APIs might allow 60 requests per minute, while protected pages might cut off at 10 per minute or fewer. Cloudflare, AWS WAF, and most CDNs ship rate-limiting rules out of the box, so even sites that don't write custom logic can serve 429s. Scrapers most often hit them when they spin up many parallel workers without coordinating across them.

How to read a 429 response

Always check the `Retry-After` header first. It's either a number of seconds (`Retry-After: 30`) or an HTTP-date (`Retry-After: Wed, 26 May 2026 14:30:00 GMT`). Honor it. If it's missing, fall back to exponential backoff: wait 1s, then 2s, then 4s, capping at a few minutes. Look at the response body too — some APIs include a JSON object with the current limit, remaining quota, and reset time, which is more useful than guessing. Logs of when you saw 429s, against which endpoint, from which IP, are the data you'll need to tune your concurrency.

How scrapers handle 429 correctly

The wrong answer is to retry immediately or switch IPs and keep hammering — that escalates a soft rate limit into a hard ban. The right answer has three parts. First, slow the request rate per IP — if you're seeing 429s at 5 req/s, drop to 2 and back off further if they persist. Second, distribute load across more IPs via proxy rotation, but make each IP's request rate look human (one request per few seconds, not one per millisecond). Third, queue and retry with backoff: failed requests go to the back of the queue with a delay derived from `Retry-After` plus jitter. Production scrapers treat 429 as routine and budget for it, not as an error to alert on.

Related terms

Concept map

How 429 Status Code (429 Error) connects

The terms most directly tied to this one. Hover a node to see its neighbours, click to preview, drag to rearrange.

0 terms · 0 connections
You are here · HTTP Errors
Building map…

Frequently asked questions

What's the difference between 429 and 503?

429 is specifically about request rate from the client. 503 means the server itself is unavailable — overloaded, deploying, or down. Both can come from rate-limit middleware, but 429 is the semantically correct one.

Does using a proxy fix 429s?

It can — if the limit is per-IP, rotating IPs spreads the requests below the threshold. If the limit is per-account or per-fingerprint, proxies alone won't help. Diagnose the limit before throwing infrastructure at it.

How long should I wait after a 429?

Honor `Retry-After` if present. Otherwise, exponential backoff starting at 1 second and doubling, with random jitter, is the standard. Cap at 5–10 minutes; if you're still seeing 429s after that, you're not rate-limited — you're banned.

Can a 429 turn into a permanent ban?

Yes. Repeatedly triggering 429s from the same IP is a strong bot signal and many sites escalate to long-term IP blocks. Treat 429 as a signal to slow down, not as a free retry budget.

Last updated: 2026-05-26