429 Too Many Requests

All status codes
4xx · Client errorretryable

429Too Many Requests

The user has sent too many requests in a given amount of time. Intended for use with rate-limiting schemes.

What this code obliges you to do

Retry

Safe to retry

Repeating the same request can succeed, so a client may back off and try again. Honour Retry-After when the response sends one.

Caching

Not cacheable by default

Caches will not store this response unless you send explicit freshness headers saying they may.

Response body

Body allowed

You may return a payload explaining the outcome — for an error, a machine-readable problem document is worth the effort.

What usually causes it

3
1

API rate limiting (RateLimit-Limit headers)

2

DDoS mitigation active

3

Aggressive web scraping

Effect on search

Can be negative if Googlebot hits crawl limits. Use the Retry-After header so Googlebot knows exactly when to come back.

How to send it

1
Node.js (Express)
res.status(429).send('Rate limit exceeded');

Codes people confuse with this one

1
Class4xx
RetrySafe
CacheNo
BodyAllowed