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.
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.
Reddit supports a URL syntax that combines multiple subreddits into a single feed:
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.
| 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.
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, | N comments 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.
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.
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.
