429 Too Many Requests

The client has sent too many requests in a given period and is being rate limited.

Status

HTTP/1.1 429 Too Many Requests

Details

429 is the polite form of a block. The server is telling you the rate is too high and, through Retry-After, roughly when to come back. Limits are usually applied per API key, per IP address, or per session, and often several limits apply at once.

Ignoring it escalates. Clients that keep hammering through 429s frequently graduate to a sticky 403 or an outright IP ban, which is far harder to recover from than waiting out a window.

Note: Honour Retry-After. Retrying earlier extends the penalty on most implementations, and sustained pressure often escalates a 429 into a sticky 403 or an IP ban.

Headers

Common causes

How to fix it

As the client

As the server

Examples

Hitting a rate limit

A request that crosses the rate limit for its API key:

HTTP request

GET /api/v2/order HTTP/1.1
Host: api.example.com
Authorization: Bearer sk_live_example

Retry-After says how long to wait. Retrying earlier usually extends the penalty:

HTTP response

HTTP/1.1 429 Too Many Requests
Retry-After: 30
RateLimit-Limit: 600
RateLimit-Remaining: 0

Notes for proxy users

When a rate limit is applied per IP, concurrency is bounded by how many distinct addresses you have. Splitting a crawl across a pool of static residential ISP addresses keeps each address under the threshold, while a single address running the same total volume collects 429s and then blocks. Pacing per address matters more than raw pool size.

Specifications

See also