Quarra
Guide · Reddit

Reddit API alternatives as public API access closes

Reddit started charging for its API in 2023, ended self-service access in November 2025, and announced on September 30, 2026 that its public Data API closes in March 2027. Where that leaves you, option by option.

Dates and limits as published by Reddit, checked on October 9, 2026.

The short answer

Reddit is closing its public Data API: it stops accepting new access requests on October 31, 2026, starts removing access for apps and users that have not registered or answered Reddit's outreach on January 12, 2027, and ends the remaining public access in March 2027. Apps are asked to move to Devvit, Reddit's developer platform. To take data out of Reddit, what remains is the researcher program, your own data export, a licensed data deal, or reading the public pages with a scraper. This guide lists what each one gives and costs, as of October 9, 2026.

What changed, in order

DateChange
April 18, 2023Reddit announces premium access to its Data API, launched in 2008, for third parties that need higher usage limits or broader usage rights, and says it will enforce rate limits. New Data API terms take effect on June 19, 2023.
May 31, 2023The developer of the Apollo app makes public the price Reddit quoted him: $12,000 per 50 million calls, or $0.24 per 1,000.
November 11, 2025Reddit ends self-service access (announcement on r/redditdev, “Responsible Builder Policy”): developers, researchers and moderators must request approval before getting access. Current access is not affected for anyone acting within the policy. Developers are pointed to Devvit, and to a request form when Devvit does not cover their use.
May 28, 2026Reddit announces that it will shut down unauthenticated access to its structured data. Logged-in and authenticated access are not affected.
August 5, 2026Reddit announces that it will gradually restrict new requests to its public Data API and require third-party apps to move to its Developer Platform. Nothing changes immediately, and apps are asked to register by September 30, 2026.
September 30, 2026Reddit publishes the end of its public Data API: no new access requests after October 31, 2026; from January 12, 2027, access starts to close for apps and users that have not registered or responded to Reddit's outreach; remaining public access ends in March 2027. Apps are asked to move to Devvit, with a $1M migration program.

We found no published commercial rate card from Reddit: the $0.24 figure is the 2023 quote made public by a third-party developer, and commercial access is by contract.

Your options

OptionGood forCatch
Official Data API (PRAW, or plain OAuth)Apps that already have access, until it closesNo new requests after October 31, 2026; remaining public access ends in March 2027. A listing returns about 1,000 items at most
Devvit (Reddit's developer platform)Apps that live inside Reddit, for a subreddit; the route Reddit gives for apps built on the Data APIApps run on Reddit's platform: check that your use fits its rules and capabilities before you plan on it
Researcher accessAcademic work: you file a request with Reddit, which says whether you are eligible for the r/reddit4researchers programEligibility decided by Reddit, no stated delay
Your own data exportYour posts and comments, as a fileYour account only
Licensed dataLarge commercial use that must be covered by contractContract and price negotiated with Reddit
Old dumpsHistorical analysis up to the date the dump was cutNothing after that date; check the terms of the dump you use
Scraping the public pagesCurrent posts and comments of public communities, with no accountReddit's terms and privacy law apply to how you use the data; site changes break scrapers, and a scraper should tell you when it did not get everything

Where the official API makes whole threads hard

Comments are the expensive part. A post comes with the first comments and “more comments” stubs; PRAW's replace_more resolves them one network request at a time, and it is destructive: calling it again on the same submission has no effect. By default it replaces at most 32 stubs and removes the rest, so a big thread loses branches unless you set limit=None and accept many sequential calls. Both behaviors are documented in PRAW's comment tutorial. Listings stop at about 1,000 items, a Reddit limit that PRAW's documentation also notes.

Doing it with our Reddit Scraper

The Actor needs no Reddit account, cookies or API key. It takes subreddits, search queries, post URLs or usernames, and returns posts, whole comment trees, user history and community info. The shape of the output stays the same between runs.

The last 7 days of two subreddits, questions only, without giveaways:

{
  "subreddits": ["selfhosted", "homelab"],
  "sort": "new",
  "postedAfter": "7 days",
  "maxPostsPerSource": 500,
  "flairs": ["Need Help"],
  "excludeKeywords": ["giveaway", "\"discount code\""]
}

Posts that name your product, with their discussions:

{
  "searchQueries": ["\"home assistant\" energy dashboard"],
  "searchSort": "top",
  "timeFilter": "month",
  "strictSearch": true,
  "maxPostsPerSource": 50,
  "includeComments": true
}

Reddit's own search is loose: for “home assistant”, top of the month, 17 of the first 100 results contained the phrase. With strictSearch on, each post you get contains all the words of the query in its title or text, as whole words. On the same query we got 50 posts out of 50 with both words, and the 104 posts rejected along the way were not charged.

A comment, as returned

This is a real comment from a 1,650-comment thread in r/technology (the title is the article's headline as posted), with the author replaced, the title shortened and a few fields left out:

{
  "type": "comment",
  "id": "pd0smho",
  "postId": "1wu4lnz",
  "postTitle": "Palantir CEO Alex Karp quietly purchased 37,000 acres of forests in Sweden...",
  "parentId": "t1_pd02xdu",
  "rootCommentId": "pczzr78",
  "depth": 3,
  "subreddit": "technology",
  "author": "example_user",
  "body": "Not a Swede, but don’t want him there either. ",
  "createdAt": "2026-09-30T15:31:09Z",
  "score": 920,
  "scorePerHour": 8.72,
  "isSubmitter": false,
  "source": "https://www.reddit.com/r/technology/comments/1wu4lnz/"
}

Posts and comments come with their media decoded (image URLs in gallery order, MP4, HLS and DASH video URLs, polls with their options). parentId and depth let you rebuild the thread in a spreadsheet.

What we measured

  • On the 1,650-comment thread, we compared the comments written since October 1: 263, down to depth 12. Our Actor returned 263 of 263. Two of the most used Reddit scrapers on the Store returned 245 and 224, and both stop at depth 9. We looked up the 40 comments they missed directly on Reddit: all 40 exist, under the same parent, with the same text (October 5, 2026, on Apify).
  • The 2012 Barack Obama AMA announces 22,719 comments. We got 22,806, each with its parentId and depth, in about 15 minutes (October 4, 2026). Reddit's counter is not an exact count of the tree.
  • On Apify, fifty posts of r/technology (hot) took 4.7 to 6.0 seconds of run time (October 2026).

From Python

from apify_client import ApifyClient

client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("quarra/reddit-scraper").call(run_input={
    "subreddits": ["selfhosted"],
    "sort": "top",
    "timeFilter": "week",
    "maxPostsPerSource": 25,
})
for post in client.dataset(run.default_dataset_id).iterate_items():
    if post["type"] == "post":
        print(post["score"], post["title"], post["url"])

Tested with apify-client 3.2. With apify-client 2.x, write run["defaultDatasetId"] instead of run.default_dataset_id.

Limits

  • Reddit lists about 1,000 posts per subreddit sort and about 250 per search. A “go beyond the listing cap” option and date filters reach further, but the whole history of a subreddit since its creation is not reachable.
  • Deleted or removed comments with no replies are not served by Reddit; they are counted in the run summary and not returned. A deleted comment that still has replies comes back as [deleted], so the tree stays whole.
  • Quarantined communities are visible to logged-in accounts only. The Actor reports them and does not log in.
  • When a community is banned, private or does not exist, the run says which input failed and why, in a free error row.
  • Reddit's terms and privacy law apply to how you use the data, and posts contain personal data covered by laws such as the GDPR. Collect what you need for a legitimate purpose.

What it costs

Apify planPosts, per 1,000Comments, per 1,000
Free$1.50$1.00
Starter$1.39$0.93
Scale$1.29$0.87
Business and above$1.19$0.80

Plus $0.005 per run. Errors, duplicates and posts removed by a filter are not charged. The 1,650-comment thread above costs about $1.57 on the Free plan, and 1,000 posts with all their comments (about 50,000 comments) about $51.50. You can set a maximum charge per run: the Actor stops at that cap and keeps what it collected.

Run it on the Apify Store

Posts cost $1.50 per 1,000 and comments $1.00 per 1,000 on the Free plan, plus $0.005 per run. Errors and empty results are not charged, and you can set a maximum cost per run.