RedditapisRedditapis
Redditapis Answers

The PRAW rate limit workaround

PRAW does not have a rate limit of its own. It sleeps against Reddit's cap of about 100 queries per minute per OAuth client, and that one cap is shared across every thread and PRAW instance using the same credentials, so adding more workers does not add throughput. The real workaround is to move the read load off that shared client. Redditapis is a pay-per-call REST API at $0.0015 per read with no shared per-client cap: each key gets a burst of about 20 calls, then a steady pace of about 10 reads a second, well past Reddit's free-tier ceiling.

PRAW sleeps against Reddit's shared cap of about 100 QPM per OAuth client; Redditapis is pay-per-call at $0.0015 per read with a steady per-key pace.
PRAW throttles against one shared OAuth-client cap; Redditapis gives each key its own burst and steady pace instead.

Why PRAW gets rate limited

PRAW is a Python wrapper around Reddit's own API, so the limit you hit is Reddit's, not PRAW's. Reddit caps a free OAuth client at roughly 100 queries per minute. PRAW reads the rate-limit headers Reddit sends back and pauses until the window resets, which is why a busy script visibly stalls rather than erroring. The catch is that the cap is tied to your OAuth client, so every thread and every PRAW instance sharing that client id draws from the same 100 QPM budget. Spinning up more workers on one app splits the ceiling, it does not raise it.

The workaround that actually scales

The durable fix is to take the read load off the shared OAuth client. Redditapis is a pay-per-call REST API with no shared per-client cap: each key gets a burst of about 20 calls, then a steady pace of about10 reads a second, so a job PRAW would throttle to 100 QPM runs well past that ceiling. A read is $0.0015, so 10,000 reads is $15, and you start with $0.50 in free credits, about 333 reads, to test before you scale. Auth is a single bearer token, so you keep the rest of your code and only swap the calls that were getting throttled. See the numbers behind the cap on Reddit API rate limits and the per-call rates on the pricing page.

PRAW vs a per-call REST API

DimensionPRAW on Reddit's APIRedditapis
Rate limitReddit's ~100 QPM per OAuth clientA burst of about 20 calls, then a steady 10 a second per key
Scaling more workersNo gain, all threads share one client's capThroughput scales with spend
When the cap is hitPRAW pauses and sleeps until the window resetsRequest returns, you pay per call
AuthOAuth client plus app registrationOne bearer token, live at signup
Read costFree tier, then approval-gated commercial pricing$0.0015 per read, $0.50 in free credits

Frequently asked

Does PRAW have its own rate limit?

No. PRAW enforces Reddit's rate limit, it does not add one. Reddit caps a free OAuth client at about 100 queries per minute, and PRAW reads the rate-limit headers Reddit returns and sleeps until the window resets rather than letting you exceed the cap.

Why does running more PRAW instances not help?

Because the cap is per OAuth client, not per process. Every thread, worker, and PRAW instance that shares the same client id and secret draws from one pooled ~100 QPM budget, so parallelizing PRAW on a single app does not raise the ceiling, it just splits it.

What is the actual workaround?

Move the read workload off the shared OAuth client. Redditapis is a pay-per-call REST API with no shared per-client cap: each key gets a burst of about 20 calls, then a steady pace of about 10 reads a second, so a job that PRAW would throttle to 100 QPM runs well past that ceiling at $0.0015 per read.

Do I have to rewrite my whole PRAW project?

No. Redditapis is plain REST over HTTPS with a bearer token, so you swap the calls that were getting throttled for a request to api.redditapis.com and keep the rest of your code. There is no OAuth flow and no app-review step to clear first.

Stop waiting on the QPM window

Move throttled reads to pay-per-call access from $0.0015, with $0.50 in free credits and no approval.

Get your Reddit API key