Sitemap
Alex P.

Alex P.

building fetchlayer.dev

Reddit’s API Closes in March 2027. Here’s How I’m Keeping My PRAW Scripts Alive

6 min read2 days ago

--

Reddit is shutting down its public API. If you have Python scripts using PRAW, here’s what changes, what still works, and how to keep your code running without rewriting it.

Press enter or click to view image in full size

Someone recently posted on r/learnpython:

“Unable to create PRAW ‘script’ app — ‘Create App’ button does not…”

Zero replies.

And unfortunately, there’s not much anyone can tell them. Reddit stopped accepting new API access requests on October 31, and now it’s announced that public Data API access will close for all remaining apps and users in March 2027.

If you have Python scripts using PRAW, that’s a problem.

I know because I’ve been there. I’ve spent over two years building monitoring tools, research scripts and content pipelines around Reddit. When the unauthenticated .json endpoints stopped working in May, three of my scripts broke overnight.

So when Reddit announced the March deadline, I started working on a way to keep existing PRAW scripts alive.

The result? You can keep using PRAW for reading Reddit data, without rewriting your existing scripts.

I’ll show you exactly how, including real output, limitations and costs. But first, here’s what’s changing.

What’s actually happening to Reddit’s API?

Reddit published its shutdown timeline in r/redditdev.

Press enter or click to view image in full size

These are the dates that matter:

  • October 31, 2026: New public API access requests closed.
  • November 13, 2026: RSS feeds are scheduled to shut down.
  • January 12, 2027: API access starts closing for apps that haven’t registered or responded.
  • March 2027: Public API access closes for remaining apps and users.

Reddit’s replacement is its Developer Platform, Devvit.

There’s just one problem for Python developers: Devvit uses TypeScript and runs inside Reddit.

It’s designed for things like moderation bots and applications that interact with Reddit itself. It isn’t a drop-in replacement for a Python script running on your server that collects posts, comments or search results.

And Reddit has explicitly said Python support isn’t on its roadmap.

One developer in the announcement thread, u/emily_in_boots, summed up the frustration:

“I have 300,000 lines of python code. I cannot rewrite that in 6 months even if I were to work on it full time…” (comment)

Not everyone has 300,000 lines of Python. But even rewriting a 200-line script that already works feels unnecessary.

Which brings me to what I built.

What if you could keep using PRAW?

When my own Reddit scripts broke, I ended up building FetchLayer, a service that provides structured data from Reddit and other platforms.

Press enter or click to view image in full size

But I didn’t want to rewrite all my existing PRAW code to use a different SDK.

So I built a PRAW-compatible API endpoint.

Instead of communicating with Reddit’s public API, PRAW communicates with FetchLayer. Your existing read-only PRAW calls continue working through the same Python library.

Here’s the change:

reddit = praw.Reddit(
- client_id="your-reddit-client-id",
- client_secret="your-reddit-client-secret",
+ client_id="your-fetchlayer-key",
+ client_secret="unused",
user_agent="my-script/1.0",
+ oauth_url="https://praw.fetchlayer.dev",
+ reddit_url="https://praw.fetchlayer.dev",
)

That’s the API configuration change.

No new SDK. No Reddit developer account. No approval process.

You also need to set PRAWCORE_TIMEOUT=120 before importing PRAW for requests that may exceed its default 16-second timeout. More on that below.

Does it actually work?

Here’s part of a test I ran on November 3, 2026, using stock PRAW 8.0.3:

import os
os.environ.setdefault("PRAWCORE_TIMEOUT", "120")

import praw

reddit = praw.Reddit(
client_id=os.environ["FETCHLAYER_KEY"],
client_secret="unused",
user_agent="my-script/1.0",
oauth_url="https://praw.fetchlayer.dev",
reddit_url="https://praw.fetchlayer.dev",
)

for post in reddit.subreddit("learnpython").search(
"praw", sort="new", limit=3
):
print(post.num_comments, "|", post.title[:60])

thread = next(
reddit.subreddit("AskReddit").top(
time_filter="day", limit=1
)
)

thread.comments.replace_more(limit=2)
print(len(thread.comments.list()), "comments loaded")

The output:

11 | Hosting Python bots that don't need a lot of bandwidth
13 | How do I scrape Reddit??
0 | Unable to create PRAW "script" app – "Create App" button
1116 comments loaded

Yes, that third result is the same post I opened this article with.

It’s still PRAW. The same Submission and Comment objects, the same replace_more() method, and the same interface your scripts already use.

Get Alex P.’s stories in your inbox

Join Medium for free to get updates from this writer.

I tested it with PRAW 7.8.1 as well. Async PRAW accepts the same connection settings.

What works, and what doesn’t?

Supported read operations include:

  • Subreddit listings: hot, new, top, rising and more.
  • Submissions by ID or URL, including comment trees.
  • Subreddit and Reddit-wide search.
  • User posts, comments and karma.
  • reddit.info() and submission streams.

What doesn’t work: Posting, voting, replying, moderation or anything requiring an authenticated Reddit account. Those operations raise Forbidden. Comment streams aren't supported either.

This is a read-only solution. If your bot needs to write to Reddit, Devvit is the better direction.

One technical gotcha: in the PRAW versions I tested, setting timeout=120 in the constructor didn't change prawcore's underlying 16-second timeout. Setting the PRAWCORE_TIMEOUT environment variable before importing PRAW did.

We’re working to bring every response comfortably under that limit, but for large threads, I’d set the environment variable.

What are the other options?

FetchLayer isn’t the only possible way forward, and depending on what your scripts do, another approach might make more sense.

Press enter or click to view image in full size

Option: Devvit
Best for: Bots that post or moderate
The catch: TypeScript rewrite, runs inside Reddit

Option: Reddit commercial API
Best for: Companies needing official access
The catch: Requires an agreement; pricing isn’t public

Option: Reddit for Researchers
Best for: Academic research
The catch: Application and approval

Option: Arctic Shift
Best for: Historical Reddit data
The catch: Not a guaranteed live data source

Option: Third-party APIs
Best for: Reading live Reddit into external systems
The catch: Usually paid, and may require code changes

Arctic Shift is particularly worth mentioning. It’s a useful free resource for historical Reddit data.

And if you’re running a moderation bot, Reddit is offering a $1,000 bounty for qualifying Devvit migrations. The stated registration deadline is November 30.

But if your script simply reads Reddit into a database, dashboard, spreadsheet or AI pipeline, a compatible read-only API can save you a lot of work.

How much would keeping PRAW running cost?

FetchLayer gives you 30 free requests, without requiring a credit card.

After that, pricing starts at $1.99 per 1,000 credits, or $25/month for 15,000 credits.

Importantly, you’re charged per page, not per individual post or comment.

For example:

Top 100 posts from 20 subreddits, daily — $4.78

Newest 25 posts from 5 subreddits, every 15 minutes — $25 plan

50 large threads with up to 10 comment expansions, once — $1.29 one-time

These estimates assume the request counts described above and may vary with pagination.

You can also control costs by polling .new() on a schedule instead of using continuous submission streams.

For a small monitoring script, it doesn’t have to be expensive.

So, what should you do before March?

First, figure out whether your scripts read Reddit or act on Reddit.

If they post, reply or moderate, investigate Devvit and Reddit’s migration program.

If they’re academic research projects, check Reddit for Researchers.

If they only need historical data, look at Arctic Shift.

But if they use PRAW to read posts, comments, profiles or search results, you don’t necessarily need to rewrite them.

That’s exactly why I built the PRAW compatibility layer.

I built FetchLayer, I charge for it, and I’d obviously like you to try it. But if one of the other options fits your use case better, use that instead.

If you’d rather keep your existing Python scripts running, you can test the change in about two minutes.

👉 Try FetchLayer with your existing PRAW code -30 free requests, no card required.

The full documentation is at https://fetchlayer.dev/documentation/reddit/praw.

And if you have a PRAW script you’re worried about, tell me which methods it uses in the comments. I’ll tell you whether they’re supported and what I’d recommend.

I answer every reply.

Sources: Reddit’s August 5 and September 30 announcements, TechRepublic on RSS, and r/redditdev developer discussions. Code tested against the live FetchLayer service on November 3, 2026.

--

--