Reddit Comment Scraper | Replies & Monitoring
Pricing
from $6.00 / 1,000 comments
Reddit Comment Scraper | Replies & Monitoring
Scrape Reddit comments and nested replies with authors, scores, timestamps, permalinks and thread context. Monitor new comments without duplicate result charges. Export JSON, CSV or Excel; connect through the API, n8n or Apify MCP. Start with a 10-comment test.
Pricing
from $6.00 / 1,000 comments
Rating
0.0
(0)
Developer
Newbs
Maintained by CommunityActor stats
2
Bookmarked
98
Total users
0
Monthly active users
5 days ago
Last modified
Categories
Share
What does Reddit Comment Scraper do?
Extract Reddit comments and nested replies from public Reddit post URLs into JSON, CSV or Excel. Get comment text, author, score, timestamp, permalink, parent ID, reply depth and post context. No Reddit API key or login is required.
Use it for product feedback, sentiment analysis, customer research and Reddit comment monitoring. Run it from the input form, through the Apify API, or in n8n and AI-agent workflows.
Try 10 comments first: paste a post URL, click Start, then open the dataset. Ten saved comments cost $0.06 in result charges, plus the start event and platform usage. Increase the limit after checking your results.
What you can do
- Analyze product feedback, complaints, feature requests, and customer language.
- Alert on new Reddit comments from Apify Schedules, webhooks, n8n, Make, Zapier, or Pipedream.
- Export available reply chains for sentiment analysis and topic classification.
- Build Reddit datasets for AI agents, RAG pipelines, and research.
- Collect AMA questions and identify replies written by the original post author.
- Export results as JSON, CSV, Excel, XML, or RSS through Apify.
Quick start
- Add one or more direct Reddit post URLs.
- Keep Maximum Comments at 10 for your first run.
- Choose whether to include replies and how deep to follow them.
- Run the Actor and open the Comment rows output.
Example input:
{"postUrls": ["https://www.reddit.com/r/AskReddit/comments/ovihp9/what_city_would_you_never_ever_ever_live_in/"],"maxComments": 10,"includeReplies": true,"maxCommentDepth": 20,"sortBy": "top","maxConcurrency": 2}
The Actor accepts standard reddit.com, old.reddit.com, and short redd.it post links. Subreddit listing pages and Reddit search pages are not supported.
Input
| Field | Default | Description |
|---|---|---|
postUrls | Required | Direct public Reddit post URLs |
onlyNewComments | false | Persist state and save only comments not seen by earlier runs |
monitoringKey | default | Stable name that isolates one recurring monitor |
sinceTimestamp | Empty | Skip comments older than this ISO 8601 timestamp |
monitoringScanLimit | 100 | Recent comments inspected per post when filtering or monitoring |
maxComments | 10 | Maximum saved comments per post, including replies |
includeReplies | true | Include nested replies |
maxCommentDepth | 20 | Deepest reply level to save; 0 means top-level only |
sortBy | top | top, best, new, controversial, old, or qa |
maxConcurrency | 2 | Posts processed in parallel, from 1 to 4 |
proxy | Residential | Proxy used by both HTTP and browser collection |
mcpOutputConnectors | Empty | Optional Apify MCP destinations for a run summary |
maxComments applies to each post. For example, two URLs with maxComments: 10 can save up to 20 paid comment rows.
Monitor only new comments
Use this input in an Apify Schedule or automation:
{"postUrls": ["https://www.reddit.com/r/AskReddit/comments/ovihp9/what_city_would_you_never_ever_ever_live_in/"],"onlyNewComments": true,"monitoringKey": "customer-feedback","monitoringScanLimit": 100,"maxComments": 10,"includeReplies": true,"sortBy": "new"}
The first run saves up to 10 unseen comments. Later runs with the same monitoringKey and post URL save comments whose IDs are not in the monitor's saved history. Unseen rows beyond the output or spending limit remain eligible for later runs. Already-seen rows are skipped before billing. Change the key to start a separate history.
Use sortBy: "new" to prioritize recent discussion and sinceTimestamp to exclude older history. Reddit's tree order does not guarantee a global timestamp order across nested replies. The Actor scans up to monitoringScanLimit comments and remembers the latest 20,000 saved IDs per post and key. Increase the scan limit for busy threads and avoid overlapping runs of the same monitor. Older IDs outside that history can be returned again.
Monitoring state is stored in newbs-reddit-comment-monitor-state in your Apify account. Use the same post URL across scheduled runs. A run with no unseen comments reports no-new-comments; it still incurs start and platform usage charges.
Output
Each dataset item is one comment or reply. The flat format works directly with spreadsheets, databases, BI tools, and AI workflows.
{"postUrl": "https://www.reddit.com/r/example/comments/abc123/example_post/","postId": "t3_abc123","postTitle": "Example post","postAuthor": "original_poster","postScore": 123,"postText": "Post body when available","postCreatedAt": "2026-07-20T08:00:00.000Z","subreddit": "example","commentId": "t1_def456","parentCommentId": "t3_abc123","commentAuthor": "commenter","commentText": "Example comment","commentScore": 42,"commentPermalink": "https://www.reddit.com/r/example/comments/abc123/example_post/def456/","commentTimestamp": "2026-07-20T09:00:00.000Z","commentDepth": 0,"commentPath": "0","parentPath": null,"isTopLevel": true,"isPostAuthor": false,"replyCount": 3,"scrapeSource": "reddit-json","scrapedAt": "2026-07-28T10:00:00.000Z"}
Reddit does not expose every field on every page. Fields such as score, permalink, or post body can be null when they are unavailable.
The Actor also writes an OUTPUT run summary with per-post status, scanned/new/skipped counts, monitoring state, collection source, duration, and an explanation when a post returns no rows. A successful monitor with no updates reports no-new-comments instead of looking like a scraping failure.
Pricing
The Actor uses pay-per-event pricing:
- $0.006 per saved comment
- $0.00005 when the Actor starts
- Apify platform usage can also apply as shown in the Console pricing estimate
Estimated result charges:
| Saved comments | Result charge |
|---|---|
| 10 | $0.06 |
| 100 | $0.60 |
| 500 | $3.00 |
You are charged only for rows successfully saved under the comment event. The Actor respects the maximum run cost configured by the user and stops gracefully when that limit is reached.
Ready-to-run examples
- Monitor new Reddit comments and replies
- Analyze Reddit product feedback
- Find SaaS pain points on Reddit
- Export comments for sentiment analysis
- Analyze game launch feedback
- Collect Reddit AMA questions
- Research competitor discussions
- Extract customer complaints
- Build a Reddit dataset for AI
API
JavaScript:
import { ApifyClient } from "apify-client";const apifyClient = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await apifyClient.actor("newbs/reddit-comment-scraper").call({postUrls: ["https://www.reddit.com/r/AskReddit/comments/ovihp9/what_city_would_you_never_ever_ever_live_in/"],maxComments: 10,includeReplies: true,maxCommentDepth: 20,sortBy: "top"}, { maxTotalChargeUsd: 1 });const { items } = await apifyClient.dataset(run.defaultDatasetId).listItems();
Synchronous HTTP API:
POST https://api.apify.com/v2/acts/newbs~reddit-comment-scraper/run-sync-get-dataset-items
Send the JSON input as the request body with Authorization: Bearer YOUR_APIFY_TOKEN. For larger runs, use the asynchronous run endpoint and retrieve the dataset after completion.
Python:
import osfrom apify_client import ApifyClientclient = ApifyClient(os.environ["APIFY_TOKEN"])run = client.actor("newbs/reddit-comment-scraper").call(run_input={"postUrls": ["https://www.reddit.com/r/AskReddit/comments/ovihp9/what_city_would_you_never_ever_ever_live_in/"],"maxComments": 10,"includeReplies": True,})for comment in client.dataset(run["defaultDatasetId"]).iterate_items():print(comment["commentText"])
Automation and AI
Apify MCP
Select this Actor in Apify's hosted MCP server or use:
https://mcp.apify.com?tools=newbs/reddit-comment-scraper
The input, output, and dataset schemas let AI agents discover the tool and understand its result fields. Optional MCP output connectors can send a compact run summary and dataset link to an authenticated destination without exposing destination credentials to the Actor.
Use with n8n
Use the official Apify node and choose Run an Actor and Get Dataset:
- Set Actor ID to
newbs/reddit-comment-scraper. - Pass the same JSON input shown above.
- Send returned rows to Google Sheets, Slack, Notion, Airtable, a database, or an AI node.
Start from the monitoring example for recurring runs, or the sentiment analysis example for a one-time export. The same input fields work in the official Apify n8n node.
Download a starter workflow and import its JSON into n8n. Select your Apify credentials and replace the sample URL before running:
Reliability and limitations
- Public Reddit posts only; private, quarantined, age-gated, or removed content may be unavailable.
- Deleted and removed comment bodies are skipped. Accessible replies beneath those comments are retained; their parent ID may refer to a row absent from the export.
- Collection tries JSON with bounded comment expansion, then static HTML, JSON within an established browser session, and browser page expansion. If expansion fails, recovered comments are preserved. Reddit can still withhold comments; a result limit is a cap, not a guarantee of that many available rows.
maxCommentDepthandmaxCommentsintentionally limit the saved result set.- Residential proxy traffic costs more than datacenter traffic but currently gives the best Reddit success rate.
Frequently asked questions
Can I export more than 500 comments?
Set maxComments up to 5,000 per post. The Actor follows available JSON continuation IDs in batches of up to 100 and uses browser expansion when needed. Actual coverage depends on what Reddit exposes, reply depth, runtime and your spending limit.
Why did I get fewer comments than requested?
Check the Run summary. Comments may be deleted, filtered by depth or time, already saved by your monitor, or inaccessible. A partial result preserves available comments when further collection fails. Run-level failure is reported when all requested posts fail.
Can I search Reddit or scrape an entire subreddit?
This Actor accepts direct post URLs. Use another discovery step to find posts, then send their URLs here for comment extraction.
How do I prevent duplicate charges?
Duplicate comment IDs and alternate URLs for the same post are removed within a run. For repeated runs, enable onlyNewComments, keep the same monitoringKey and post URL, and follow the monitoring history limits above.
Support
For a failed or empty source, first open the run's Run summary output. It identifies the affected URL and explains whether the post was empty, unavailable, blocked, or stopped by a spending limit.
If the problem persists, open an issue on the Actor page and include the run ID and a public example URL. Do not include API tokens or proxy credentials.
Changelog
September 15, 2026
- Added HTTP continuation requests, static HTML collection, and structured JSON collection within browser sessions.
- Preserved accessible replies below deleted parents and recovered comments after failed expansion.
- Applied reply-depth filtering before result limits and deduplicated alternate post URLs.
- Batched dataset writes while retaining spending-limit checks and matching comment charges.
- Fixed monitoring that could discard unseen comments after a timestamp cutoff.
- Added clearer partial/failure reporting and runnable Python and JavaScript examples.
- Added a verified Chrome installation to the container build and updated Browserslist to 4.28.9.
September 1, 2026
- Added persistent
onlyNewCommentsmonitoring with per-thread deduplication. - Added
sinceTimestamp, isolated monitoring keys, and a separate scan limit for busy threads. - Added
no-new-commentsrun summaries with scanned, new, and skipped row counts. - Switched the fast collector to Reddit's working structured endpoint to avoid browser startup on common runs.
- Upgraded the runtime to Node 22, Crawlee 3.18, and Puppeteer 25.
- Reduced the first-run default from 25 to 10 comments for tighter cost control.
- Added a ready-to-run Reddit comment monitoring task and updated the n8n Slack monitor workflow.
July 2026
- Added HTTP-first collection that skips browser startup when possible.
- Kept automatic browser fallback for blocked or incomplete JSON responses.
- Added canonical support for reddit.com variants and redd.it links.
- Added comment score, permalink, parent ID, original-poster flag, post text, and collection source.
- Added maximum reply depth.
- Added a visible per-post run summary for empty and failed sources.
- Reduced the first-run default from 500 to 25 comments for clearer cost control.