Reddit Scraper: Posts, Comments & Subreddit Monitor avatar

Reddit Scraper: Posts, Comments & Subreddit Monitor

Pricing

from $1.80 / 1,000 posts

Go to Apify Store
Reddit Scraper: Posts, Comments & Subreddit Monitor

Reddit Scraper: Posts, Comments & Subreddit Monitor

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.80 / 1,000 posts

Rating

0.0

(0)

Developer

The Mine Works

The Mine Works

Maintained by Community

Actor stats

0

Bookmarked

5

Total users

3

Monthly active users

a day 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.

โšก 25/25 runs succeeded in the last 30 days โ€” small numbers, honestly reported ยท pay only per post delivered ยท no login, no cookies, no ban risk. ๐Ÿ’ธ Empty searches, blocked fetches and failed runs are never billed.

Overview

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-login 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.

Every post record carries title, author, score, upvote ratio, flair, comment count, and every comment thread as deep as you want. No login, no cookies, no OAuth app required, though you can plug in your own Reddit client ID for higher limits.

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 login required | โœ… No API key | โœ… Pay only for results | โœ… MCP-ready for AI agents

Features

Four extraction modes. Subreddit, search, user history, or specific post URLs. Full comment trees. Fetch nested replies to any depth per post. Deep historical backfill. Cursor-based pagination lets you resume long runs. All Reddit sorts. Hot, new, top, and rising, with timeframe scoping for top. Optional client ID. Plug in your own Reddit OAuth client ID to raise the shared rate limit.

How it works

Reddit's public browsing is rate-limited and its data endpoints are increasingly gated. This scraper reads public posts and comments the way a logged-out visitor does. No account, no cookies.

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.

๐Ÿงพ Input configuration

{
"mode": "subreddit",
"subreddits": ["python"],
"sortBy": "top",
"timeframe": "week",
"maxPosts": 25,
"includeComments": true,
"maxCommentsPerPost": 100,
"maxDepth": 3
}

๐Ÿ“ค Output format

This is a real record delivered by a live run against r/Python (sort=top, timeframe=week):

{
"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": []
}
]
}
]
}

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
๐ŸŒณ 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 _type: "info" 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.

๐Ÿ’ผ Common use cases

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.

๐Ÿš€ Getting 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.

๐Ÿ” 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.

๐Ÿ’ต Pricing

EventPriceYou pay when
Post delivered$0.003A post record, with its full comment tree, lands in your dataset

$3.00 per 1,000 posts โ€” comment trees included at no extra event. For comparison, Reddit's own commercial Data API is reported at roughly $12,000/month minimum (not per year) 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โ€“4 weeks with no guarantee (figures from third-party 2026 API pricing coverage, not Reddit's own pricing page directly โ€” worth re-checking before quoting elsewhere). Zero-result and failed runs are never charged here, and there's no approval process or minimum commitment to start.

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 reads public posts and comments without an account or cookies. You can optionally add your own 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 it inside an AI agent? Yes. It is exposed as an MCP tool. See below.

Use in Claude, ChatGPT & any MCP agent

https://mcp.apify.com/?tools=themineworks/reddit-scraper

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.