Reddit Scraper | Posts, Comments and Search | No API Key avatar

Reddit Scraper | Posts, Comments and Search | No API Key

Pricing

from $1.00 / 1,000 posts

Go to Apify Store
Reddit Scraper | Posts, Comments and Search | No API Key

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

The Mine Works

Maintained by Community

Actor stats

0

Bookmarked

60

Total users

34

Monthly active users

3 days ago

Last modified

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.

EventPriceYou pay when
Post delivered$0.001 on Gold, $0.002 on FreeA post record, with its full comment tree, lands in your dataset
Apify planPrice 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
}
InputRequiredWhat it does
modeYessubreddit, search, user, or post
subredditsFor subreddit modeOne or more subreddit names, without r/
searchQueryFor search modeReddit search syntax
usernameFor user modeReddit username whose post history you want
postUrlsFor post modeOne or more specific Reddit post URLs
sortByNohot, new, top, or rising
timeframeNoScoping window for top: hour, day, week, month, year, or all
maxPostsNoCaps how many posts are returned, which is how you cap cost
includeCommentsNoFetch each post's nested comment tree
maxCommentsPerPostNoComment count cap per post
maxDepthNoHow many reply levels deep to follow, 1 to 10
clientIdNoYour own Reddit OAuth client ID for higher rate limits
monitorModeNoDeliver 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:

FieldDescription
๐Ÿ†” id / nameReddit post ID (t3_...)
๐Ÿ“š subreddit / subreddit_idSubreddit name and t5 ID
๐Ÿท๏ธ titlePost title
๐Ÿ‘ค authorAuthor username
โฌ†๏ธ score / upvote_ratioScore and ratio
๐ŸŒ url / ๐Ÿ”— permalinkPost URL and permalink
๐Ÿ“ selftextBody text (self posts)
๐ŸŽซ flairPost flair
๐Ÿ’ฌ num_commentsTotal comment count
๐Ÿ•’ created_utcUnix timestamp
๐Ÿ“Œ is_pinned / ๐Ÿ”’ is_lockedStatus flags
๐Ÿ… awards_countNumber of awards on the post
๐ŸŒณ comments[]Optional nested comment array
๐Ÿ•“ scraped_atISO 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 clientId gives 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 maxCommentsPerPost and maxDepth on a large maxPosts run 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?

  1. Open the actor on Apify and click Try for free.
  2. Choose a mode: subreddit, search, user, or post.
  3. Fill the matching field: subreddits, search query, Reddit username, or post URLs.
  4. Set max posts, choose a sort (and timeframe for top), and optionally enable Include comments with max comment depth.
  5. 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.

  1. 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.
  2. In the Apify Console, go to Schedules (left sidebar) โ†’ Create new.
  3. 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).
  4. Under Actors or tasks to run, add the task you saved in step 1.
  5. 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.

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:

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.