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
| Date | Change |
|---|---|
| April 18, 2023 | Reddit 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, 2023 | The 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, 2025 | Reddit 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, 2026 | Reddit announces that it will shut down unauthenticated access to its structured data. Logged-in and authenticated access are not affected. |
| August 5, 2026 | Reddit 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, 2026 | Reddit 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
| Option | Good for | Catch |
|---|---|---|
| Official Data API (PRAW, or plain OAuth) | Apps that already have access, until it closes | No 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 API | Apps run on Reddit's platform: check that your use fits its rules and capabilities before you plan on it |
| Researcher access | Academic work: you file a request with Reddit, which says whether you are eligible for the r/reddit4researchers program | Eligibility decided by Reddit, no stated delay |
| Your own data export | Your posts and comments, as a file | Your account only |
| Licensed data | Large commercial use that must be covered by contract | Contract and price negotiated with Reddit |
| Old dumps | Historical analysis up to the date the dump was cut | Nothing after that date; check the terms of the dump you use |
| Scraping the public pages | Current posts and comments of public communities, with no account | Reddit'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
parentIdanddepth, 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
errorrow. - 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 plan | Posts, per 1,000 | Comments, 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.