Rate limits
There is no per-key request quota on the Reddit data endpoints. What a 429 actually means, what Retry-After tells you, and why a fixed client-side throttle does not help.
Short version: the Reddit data endpoints have no fixed per-key request quota.
If you are seeing 429, throttling to a specific requests-per-minute number is
not the fix, and picking one by guesswork will slow you down without stopping
the errors.
What has a quota and what does not
| Endpoints | Limit |
|---|---|
GET /api/reddit/* (posts, comments, users, search, listings) | No fixed per-key request quota |
GET /api/account/me, GET /api/account/payments | 30 requests per minute |
| Dashboard and usage endpoints | 30 requests per minute |
| Monitoring endpoints | See Live Monitoring limits |
The 30 per minute figure applies to the account endpoints only. It is not the limit on the data endpoints, and applying it there is a common and costly mistake.
So what is the 429?
It is Reddit's, relayed to you. We read Reddit through a pool of accounts. When
Reddit rate-limits one of them we park it, rotate to another, and retry. You only
ever see a 429 when that whole retry chain is exhausted, which makes it a
transient condition rather than a quota you have crossed.
{ "error": "HTTP_429", "retry_after": 10 }The response also carries a Retry-After header with the same value in seconds.
It is a floor to honour, not a promise: the next attempt is usually served by a
different, healthy account well before any per-account cooldown expires.
A 429 is not billed. You are not charged for a request that returned one.
What to do instead of a fixed throttle
- Treat
429as retryable. ReadRetry-After, back off exponentially from it, and add jitter so a fleet of workers does not retry in lockstep. - Cap concurrency rather than requests per minute. How many calls you have in flight at once matters more here than the rate you issue them at.
- Do not treat
429as fatal or as a reason to stop. The same request normally succeeds shortly afterwards.
The other retryable status
A 503 means we could not complete the call at all. It is also retryable, also
carries Retry-After, and is also not billed.
{ "error": "upstream_unavailable", "message": "This request could not be completed right now. It was not billed. Please retry shortly.", "retry_after": 5 }If 429s are constant rather than occasional
That is not normal and it is worth telling us about. Send your API key prefix and a rough timestamp to support and we will look at the traffic directly.
Independent third-party API for developers and researchers. Not affiliated with, endorsed by, or sponsored by Reddit, Inc.
Reddit API LoginNew
Authenticate to Reddit with username and password (plus optional 2FA TOTP) and get the session cookies for comment, vote, and DM calls.
CommentHot
Post a comment on any Reddit thread programmatically. Handles reCAPTCHA, CSRF tokens, and rich-text encoding for you, just send post URL and text.
