Reddit Scraper | Posts, Comments and Search | No API Key
Pricing
from $1.00 / 1,000 posts
Reddit Scraper | Posts, Comments and Search | No API Key
Scrape Reddit posts, comments, subreddits, search & user history. No login, pay per result, full nested comment trees, deep historical backfill. Use in Claude, ChatGPT & any MCP agent for market research, sentiment & AI training data.
Pricing
from $1.00 / 1,000 posts
Rating
5.0
(1)
Developer
The Mine Works
Maintained by CommunityActor stats
0
Bookmarked
60
Total users
34
Monthly active users
3 days ago
Last modified
Categories
Share
๐ฝ Reddit Scraper: Posts, Comments & Search (No Login)
Part of the Social & Market Research MCP. This actor's data is also available to AI agents through our Social & Market Research MCP server, eight social, news and search-interest tools behind one endpoint. No result, no charge.
โก Pay only per post delivered. No login, no cookies, no ban risk. ๐ธ Empty searches, blocked fetches and failed runs are never billed.
What does Reddit Scraper do?
Reddit's Data API now runs a paid commercial tier, and the old logged-out .json endpoints have gotten harder to rely on for anything beyond casual use. Reddit Scraper is the no-account alternative: it extracts public Reddit data four ways, by subreddit, search query, user history, or specific post URLs, and returns it as clean, structured records with full nested comment trees. Pick a mode, add a target, and get back structured JSON or CSV, with title, author, score, upvote ratio, flair, comment count, and every comment thread as deep as you want.
Reliability posture: only a successfully delivered post record is billed under the post-scraped event. Blocked fetches, empty listings, and failed posts are never charged, you only pay for what actually lands in your dataset.
โ No Reddit account required | โ No API key of your own required | โ Pay only for results | โ MCP-ready for AI agents
Guide and FAQs: Reddit Scraper on themineworks.com. Tutorial: Reddit API vs Reddit Scraper: Costs, Limits and Data.
Who is it for?
Market researchers mining what real users say about a product, brand, or category in their own words. Community managers tracking a subreddit for mentions and sentiment. Data teams building sentiment scoring or RAG datasets from long-form discussion. Anyone whose AI agent needs Reddit context without a paid commercial API contract.
How much does it cost to scrape Reddit posts?
You pay per post actually delivered, comment trees included at no extra event.
| Event | Price | You pay when |
|---|---|---|
| Post delivered | $0.001 on Gold, $0.002 on Free | A post record, with its full comment tree, lands in your dataset |
| Apify plan | Price per 1,000 posts |
|---|---|
| Free | $2.00 |
| Bronze | $1.50 |
| Silver | $1.25 |
| Gold and above | $1.00 |
The Pricing tab on this page is the single source of truth and always shows the rate for your own plan. If this table and the Pricing tab ever disagree, the Pricing tab is right.
What a real job costs. Apify's Free plan includes $5 of usage credit every month, about 2,500 posts a month at no cost to you. A 500-post subreddit pull with comments costs about $0.50 on Gold. A 10,000-post historical backfill across a subreddit costs about $10.00 on Gold, comment trees included.
What is never charged. Empty searches, blocked fetches, and failed runs cost nothing. For comparison, Reddit's own commercial Data API is reported at roughly $12,000 a month minimum for an allocation of about 50 million calls, with overage around $0.24 per 1,000 calls beyond that, and commercial approval is a manual review that can take 2 to 4 weeks with no guarantee. Those figures come from third-party 2026 API pricing coverage rather than Reddit's own pricing page, so re-check them before quoting them elsewhere. There is no approval process or minimum commitment to start here.
How does it work?
Reddit's public browsing is rate-limited and its data endpoints are increasingly gated behind the paid commercial tier. This scraper authenticates using Reddit's own "installed client" OAuth flow, the anonymous, app-only token grant that read-only Reddit client apps use, rather than a full user login. No Reddit account of yours is required, and by default the actor uses a shared public client ID; if you have your own free client ID you can supply it in the input for dedicated rate-limit headroom.
Choose a mode: subreddit (pull hot, new, top, or rising posts from any public sub), search (Reddit's full search syntax), user (a user's public post history), or post (specific URLs). The actor handles pagination for you and exposes an after cursor so you can resume long runs and do deep historical backfill across thousands of posts. When comments are requested, each post's comment tree is fetched as a second request and nested to whatever maxDepth you set, so replies come back with their thread structure intact rather than a flat list.
๐งพ What input does it take?
{"mode": "subreddit","subreddits": ["python"],"sortBy": "top","timeframe": "week","maxPosts": 25,"includeComments": true,"maxCommentsPerPost": 100,"maxDepth": 3}
| Input | Required | What it does |
|---|---|---|
mode | Yes | subreddit, search, user, or post |
subreddits | For subreddit mode | One or more subreddit names, without r/ |
searchQuery | For search mode | Reddit search syntax |
username | For user mode | Reddit username whose post history you want |
postUrls | For post mode | One or more specific Reddit post URLs |
sortBy | No | hot, new, top, or rising |
timeframe | No | Scoping window for top: hour, day, week, month, year, or all |
maxPosts | No | Caps how many posts are returned, which is how you cap cost |
includeComments | No | Fetch each post's nested comment tree |
maxCommentsPerPost | No | Comment count cap per post |
maxDepth | No | How many reply levels deep to follow, 1 to 10 |
clientId | No | Your own Reddit OAuth client ID for higher rate limits |
monitorMode | No | Deliver and charge only posts not seen in a prior run |
๐ค What data do you get back?
A real run returns an array, one record per post. The first record below was delivered by a live run against r/Python (sort=top, timeframe=week) with Include comments on; the next two show the same field set from a separate run with Include comments off, a link post and a stickied moderator thread, so every documented field has a real example:
[{"id": "1uts313","name": "t3_1uts313","subreddit": "Python","subreddit_id": "t5_2qh0y","title": "What Every Python Developer Should Know About the CPython ABI","author": "mttd","author_fullname": "t2_6gkbb","score": 73,"upvote_ratio": 0.86,"url": "https://www.reddit.com/r/Python/comments/1uts313/what_every_python_developer_should_know_about_the/","permalink": "https://www.reddit.com/r/Python/comments/1uts313/what_every_python_developer_should_know_about_the/","selftext": "It's true that you can happily write Python for years without needing to understand any of the content of this post... https://labs.quansight.org/blog/python-abi-abi3t","is_self": true,"domain": "self.Python","flair": "Resource","num_comments": 20,"created_utc": 1783795286,"is_pinned": false,"is_locked": false,"awards_count": 0,"scraped_at": "2026-07-15T04:13:41.202Z","comments": [{"id": "owy9ttz","name": "t1_owy9ttz","author": "No_Art_1022","body": "I hit this wall hard when packaging a numpy-heavy ML pipeline for deployment. Built it locally on my M1 Mac, wheels installed fine, but the same package segfaulted instantly on our Linux CI runners...","score": 24,"created_utc": 1783799557,"is_submitter": false,"depth": 0,"replies": [{"id": "owyxwxx","name": "t1_owyxwxx","author": "TronnaLegacy","body": "Don't most popular libraries with extensions provide the binaries, via wheels if I recall? Why would you be compiling yourself?","score": 12,"created_utc": 1783806942,"is_submitter": false,"depth": 1,"replies": []}]}]},{"id": "1uwr7f2","name": "t3_1uwr7f2","subreddit": "Python","subreddit_id": "t5_2qh0y","title": "Show and Tell: I built a static type checker for slow Python code","author": "devkaur","author_fullname": "t2_9j2la","score": 214,"upvote_ratio": 0.94,"url": "https://github.com/devkaur/slowtype","permalink": "https://www.reddit.com/r/Python/comments/1uwr7f2/show_and_tell_i_built_a_static_type_checker_for/","selftext": "","is_self": false,"domain": "github.com","flair": "Show and Tell","num_comments": 34,"created_utc": 1783878120,"is_pinned": false,"is_locked": false,"awards_count": 1,"scraped_at": "2026-07-15T04:13:42.960Z"},{"id": "1uwk002","name": "t3_1uwk002","subreddit": "Python","subreddit_id": "t5_2qh0y","title": "Weekly Thread: Resource Request and Sharing! Daily Thread","author": "AutoModerator","author_fullname": "t2_6l4z3","score": 8,"upvote_ratio": 0.71,"url": "https://www.reddit.com/r/Python/comments/1uwk002/weekly_thread_resource_request_and_sharing_daily/","permalink": "https://www.reddit.com/r/Python/comments/1uwk002/weekly_thread_resource_request_and_sharing_daily/","selftext": "This is a fresh thread to share your links or your PyPI creations. Do you have something you made? Do you want to promote your work? Do you need feedback?","is_self": true,"domain": "self.Python","flair": "Weekly Thread","num_comments": 5,"created_utc": 1783843800,"is_pinned": true,"is_locked": false,"awards_count": 0,"scraped_at": "2026-07-15T04:13:44.318Z"}]
The last two records omit comments entirely rather than sending an empty array, because Include comments applies to the whole run: comments[] only appears on a record at all when that run had Include comments on.
Post records carry these fields:
| Field | Description |
|---|---|
๐ id / name | Reddit post ID (t3_...) |
๐ subreddit / subreddit_id | Subreddit name and t5 ID |
๐ท๏ธ title | Post title |
๐ค author | Author username |
โฌ๏ธ score / upvote_ratio | Score and ratio |
๐ url / ๐ permalink | Post URL and permalink |
๐ selftext | Body text (self posts) |
๐ซ flair | Post flair |
๐ฌ num_comments | Total comment count |
๐ created_utc | Unix timestamp |
๐ is_pinned / ๐ is_locked | Status flags |
๐
awards_count | Number of awards on the post |
๐ณ comments[] | Optional nested comment array |
๐ scraped_at | ISO 8601 extraction timestamp |
One more row at the end of every run: every run also ends with a final summary record, informational only, never billed, with a two-line nudge: how to put this actor on an automatic schedule (see "Run on a schedule" below), and a link to leave a Store review if it saved you time.
What are the limitations?
Worth knowing before you buy, so there are no surprises:
- Runs on a shared default OAuth client ID unless you supply your own. That shared ID is rate-limited across every user of this actor, so under heavy concurrent use you may see slower responses while the backoff schedule runs. Supplying your own free
clientIdgives you dedicated quota; it is optional, not required. - Deleted or removed content comes back as
[deleted]or[removed], exactly as Reddit itself shows it. There is no way to recover the original text once Reddit has stripped it. - Deep comment trees add real time to a run. Each post's comments are a separate request, so a high
maxCommentsPerPostandmaxDepthon a largemaxPostsrun takes longer than a posts-only pull. Fetch comments only where you need them. - Search relevance follows Reddit's own ranking, which can differ from what a logged-in browser session shows for the same query.
- Quarantined or access-restricted subreddits may not be reachable through the anonymous OAuth flow, consistent with how Reddit gates that content for any non-logged-in access.
๐ผ What can you use it for?
Market and product research Mine subreddits and search for what users actually say about a topic or product. Track how sentiment shifts around a launch or a competitor.
Sentiment analysis at scale Collect posts and full comment trees to score opinion across a category. Feed clean text into your LLM or classifier without cleanup work.
Community monitoring Track a subreddit's hot, new, or top feed on a schedule. Flag surges in mentions or new threads about your brand.
AI training and RAG data Build structured post-and-comment datasets for agents and models. Backfill deep history with the cursor and re-run to keep it fresh.
๐ How do I get started?
- Open the actor on Apify and click Try for free.
- Choose a mode: subreddit, search, user, or post.
- Fill the matching field: subreddits, search query, Reddit username, or post URLs.
- Set max posts, choose a sort (and timeframe for top), and optionally enable Include comments with max comment depth.
- Click Save and Start, then download your data as JSON, CSV, or Excel, or pull it via API or MCP.
What makes this one different
Four things this actor does that a basic Reddit scraper does not:
Real nested comment trees, not a flat list. Set maxDepth and replies come back with their thread structure intact, so you can see who replied to whom rather than a pile of disconnected comments. Depth 1 gives top level only, depth 3 follows three levels of replies.
Four input modes in one actor. Scrape a subreddit, run a keyword search, pull a user's history, or pass specific post URLs. You do not need a different actor for each job.
Monitor mode for schedules. Set monitorMode and a scheduled run delivers only posts it has not seen before, and charges only for those. Polling a busy subreddit daily does not mean paying for the same posts every day.
No commercial API contract required. Reddit's official commercial API is paid and rate limited with a manual approval process. This actor authenticates through Reddit's own anonymous installed-client flow instead. If you happen to have your own OAuth client ID you can supply it for higher limits, but it is entirely optional.
๐ Run on a schedule
Turn this from a one-off pull into a standing feed with Apify's built-in Schedules, no code, no cron server of your own.
- Run the actor once with the input you want repeated, then click Save as a task (top of the run form), this keeps your exact input attached for every future run.
- In the Apify Console, go to Schedules (left sidebar) โ Create new.
- Name it, set your timezone, and pick a frequency, a preset (hourly / daily / weekly) or a custom cron expression (e.g.
0 6 * * *for daily at 6am). - Under Actors or tasks to run, add the task you saved in step 1.
- Save. From then on it runs unattended on your schedule, billed the same pay-per-post way as a manual run, nothing is charged just for the schedule existing.
Prefer to automate the setup itself? Same thing via the API:
curl -X POST "https://api.apify.com/v2/schedules?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{"name": "reddit-scraper-daily","cronExpression": "0 6 * * *","isEnabled": true,"actions": [{ "type": "RUN_ACTOR", "actorId": "themineworks/reddit-scraper" }]}'
Full options, time zones, run notifications, pausing a schedule, are in Apify's Schedules documentation.
Monitor mode, pay only for NEW posts
Set monitorMode: true and this actor remembers what it delivered last time (keyed on
id), on the next scheduled run, only genuinely new posts are pushed and charged.
Re-running the same input daily costs you for the new posts each day, not the whole feed
every time.
{ "monitorMode": true }
Pairs directly with Run on a schedule above: save a task with monitorMode: true,
attach it to a daily schedule, and you have a standing "what's new" feed with no
duplicate charges. The summary row reports new_this_run and skipped_duplicates so
you can see the dedup working. First run establishes the baseline (everything is "new");
every run after that is incremental.
Is scraping Reddit legal?
This actor reads only public Reddit posts and comments, the content anyone can already see without logging in, through Reddit's own anonymous app authentication flow. It does not access private or quarantined subreddits and does not require a user's Reddit login or password. That said, this is general information and not legal advice. Public posts and comments can include personal data, so you remain responsible for your own compliance with GDPR, CCPA, Reddit's own API terms, and any other law that applies to how you use the data.
FAQ
Is the Reddit API free in 2026? A free tier survives for small non-commercial use. Commercial access runs through a paid enterprise agreement with a monthly minimum commitment and a manual approval process, out of reach for most research teams, which is what this actor is for.
Do I need a Reddit login or API key? No. The scraper authenticates through Reddit's own anonymous installed-client OAuth flow using a shared default client ID, so no Reddit account or password of yours is involved. You can optionally add your own free Reddit OAuth client ID to raise the shared rate limit, but it is not required.
How deep can I go into comment threads?
As deep as you set. Enable Include comments, then use max comment depth (1 for top-level only, up to 10) and max comments per post to control how much of each tree you pull. Replies nest inside each comment's replies[] array.
Can I resume a long run or backfill history?
Yes. Each run's summary includes an after cursor. Paste it into the pagination cursor field on the next run to continue where you left off for deep historical backfill.
Which sort options are supported? Hot, new, top, and rising. When you choose top, pick a timeframe (hour, day, week, month, year, or all) to scope the window.
Is it legal to scrape Reddit? The actor collects only publicly available posts and comments and never accesses private content. Public data can include personal data under laws like the GDPR, so scrape only what you have a legitimate reason to use.
Can I use Reddit Scraper through an MCP server? Yes. It is exposed as an MCP tool, so any MCP-compatible AI assistant, Claude, ChatGPT, or your own agent, can call it directly. See "Use in Claude, ChatGPT & any MCP agent" above for the paste-ready prompt and setup.
๐ค Use in Claude, ChatGPT & any MCP agent
Hosted MCP endpoint:
https://mcp.apify.com/?tools=themineworks/reddit-scraper
Things an agent can ask for once connected:
- "Search r/marketing for posts about email deliverability this month and summarize the common complaints."
- "Pull the last 50 posts and comments from r/programming sorted by top this week."
- "Find what people are saying about [competitor] across Reddit and rank the posts by score."
Copy this into your AI assistant
Paste the line below into ChatGPT, Claude, or any assistant connected to Apify's MCP, and it will run the job for you:
Use the Apify actor themineworks/reddit-scraper to pull the top 25 posts from r/Python this week, comments included. Return the results as a table.
Or call it programmatically with the Apify client:
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });const run = await client.actor('themineworks/reddit-scraper').call({mode: 'subreddit',subreddits: ['python'],sortBy: 'top',timeframe: 'week',maxPosts: 25,includeComments: true,maxDepth: 3,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
๐ ๏ธ Complete your social intelligence pipeline
Pair Reddit with the rest of the social suite:
- Instagram Profile Scraper: followers, bio, and stats for any public account.
- Twitter / X Scraper: tweets by keyword or handle, no paid API key.
- Threads Scraper: posts, profiles, hashtags and search on Meta Threads.
Typical flow: Reddit surfaces the deep, high-quality discussions, Twitter/X and Threads catch real-time bursts, Instagram covers creator activity.
Found a bug or have a feature request? Open an issue on the actor's Apify Console page or reach out through the Apify profile.