DEV Community

ErystelaThevale
ErystelaThevale

Posted on

How I Bypassed Reddit's Unauthenticated RSS Rate Limits (Without an API Key)

Like many developers building small personal tools in 2026, I ran into a wall when trying to pull RSS feeds from Reddit.

Reddit's official API access is now gated behind a manual approval process under its "Responsible Builder Policy." Self-service app creation is closed, and approval requests commonly take weeks — or go unanswered entirely — even for personal, low-volume use. So I went looking for a way to keep using RSS without a Reddit account at all.

What I found, and what I'm sharing here, is a workaround built on real measurements of how Reddit's unauthenticated .rss endpoint actually behaves. The solution is not elegant, but it works reliably.

The problem: an IP-based rate limit, not a subreddit-based one

Reddit's public, unauthenticated .rss endpoint still exists. You can hit URLs like https://www.reddit.com/r/python/new/.rss without any authentication. But it is heavily rate-limited — and the limit is per IP, not per subreddit.

I measured this directly. With a 15-second delay between requests, I hit 17 subscribed subreddits sequentially and recorded the HTTP status and response time of each:

  • Successful (200) requests arrived at roughly t = 0, 45, 105, 165, 225 seconds — a clear 45–60 second cycle.
  • 429 (rate-limited) responses came back in ~0.2 seconds — rejected at the edge before reaching the real server.
  • 200 responses took 0.6–1.0 seconds — they actually reached the backend.

The key observation: the cycle had nothing to do with which subreddit I was asking for. It was a global IP time-window. Hitting 17 subreddits in 15-second intervals meant about 12 out of 17 failed, and the failures appeared "randomly distributed" across subreddits only because of request order.

The workaround: one request, all subreddits

Reddit supports a URL syntax that combines multiple subreddits into a single feed:

https://www.reddit.com/r/{sub1}+{sub2}+...+{subN}/hot/.rss?limit=100
Enter fullscreen mode Exit fullscreen mode

This bundles all 17 subreddits into one HTTP request. In my measurements, this single request succeeded 100% of the time and returned 100 items in one shot.

But there was a second problem: how the items are distributed across subreddits.

I compared three sort modes on the combined feed:

Sort Subreddits appearing in top 25 Dominance
new 8 / 17 r/LocalLLaMA took 10 of 25 items (40%)
top (weekly) 4 / 17 r/Economics took 14 of 25 items (56%)
hot 15 / 17 Max 3 items per subreddit; most had 1–2

hot works because Reddit normalizes score and age within each community before ranking. So a combined hot feed naturally spreads results across communities instead of letting the highest-volume subreddit dominate the window.

Adding limit=100 pushed coverage to 17 / 17 subreddits in a single request — even low-traffic ones like r/compsci and r/systems appeared with 1–2 items each.

What I built on top of this

I wrapped the logic in a small, single-process Streamlit app that pulls the newest posts from Hacker News, Reddit, and Lemmy into one sortable table. A few implementation details worth mentioning:

  • HN's entry.link quirk. The raw hnrss.org feed sets entry.link to the linked article (the external URL), not the HN discussion page. For a reader where you want to actually reply, you need entry.comments instead. The tool corrects this so clicking a link lands you on the HN thread.
  • Comment counts from description fields. HN and Lemmy both embed comment counts in their feed description fields (# Comments: N for HN, | <a ...>N comments</a> for Lemmy). The tool parses these with regex. Reddit's unauthenticated feed exposes no comment count at all — so hot sort doubles as a practical stand-in for "is this thread active."
  • Translation is optional. Titles can be machine-translated via DeepL, but the checkbox defaults to off if no API key is configured. With translation off, the tool makes zero external API calls beyond the feeds themselves.
  • Per-subreddit cap. After fetching the combined 100-item hot feed, the tool caps each subreddit at N items (default 5) before translation, which bounds DeepL cost and prevents any one subreddit from crowding out the rest.

Trade-offs

This approach is not a replacement for the official API, and it has real limitations:

  • Reddit comment counts are unavailable.
  • The 100-item shared window means very low-traffic subreddits can occasionally be squeezed out of a given run (though hot sort measurably reduces this vs. new or top).
  • Lemmy and Reddit community activity levels vary by orders of magnitude — picking sources with comparable activity is on the user.

But for a personal tool that just needs to surface what's new across HN, Reddit, and Lemmy — without a Reddit API key, without a cloud service, without ads — it does the job.

Source code

The project is open source on GitHub:

👉 github.com/ErystelaThevale/rss

The repo includes a detailed DESIGN_HISTORY.md with the raw measurements behind the rate-limit investigation (M5), the Lemmy community selection process (M4), and the schema evolution. If you're hitting the same Reddit API walls, feel free to take a look or open an issue.

Happy to answer questions about the rate-limit measurements or the feed-parsing logic in the comments.

Top comments (0)