Reddit Post Comments Scraper
Pricing
from $2.00 / 1,000 results
Reddit Post Comments Scraper
Scrape every comment and nested reply from any Reddit post or subreddit, no API key or login needed. Get a transparent coverage report showing exactly how complete each thread scrape is, plus filters by score, date, and keyword.
Pricing
from $2.00 / 1,000 results
Rating
0.0
(0)
Developer
Data Minds
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
20 hours ago
Last modified
Categories
Share
Reddit Post Comments Scraper is an Apify Actor and Reddit comments scraper that extracts every comment and nested reply from Reddit posts, with author, score, text and thread position, without a Reddit account, cookies or API key. Paste post links, or let it find posts from subreddits, a search query or usernames, then export the data as JSON, CSV or Excel. Pricing is from $0.002 per comment on the Gold plan. ๐ Try it free
What can Reddit Post Comments Scraper do?
- ๐ฒ Full threads, not just the first page - this Reddit comments scraper opens hidden "load more comments" sections and collects nested replies.
- โ Coverage report per post - see how many comments were collected compared with the count Reddit shows.
- ๐ Four ways to pick posts - post links, subreddits, a search query or usernames, so it works as a Reddit discussion scraper for whole communities.
- ๐งน Built-in filters - keep comments by keyword, minimum score, date range or author, and skip deleted ones.
- ๐ง Ready for AI and analysis - plain text and Markdown bodies suit reddit comments for RAG and a reddit comment dataset for machine learning.
- ๐ค Flat rows or a nested tree - one row per comment for CSV and Excel, or one row per post with replies nested inside.
- ๐ Platform features included - API access, schedules, webhooks and integrations come with every Apify Actor.
What data can I extract from Reddit?
Use it as a Reddit comment extractor and Reddit replies extractor. Each saved row is one comment with these fields:
| Field | Description |
|---|---|
๐ comment_id, comment_fullname, parent_id, parent_fullname | Identifiers of the comment and of the comment or post it replies to. |
๐ฌ body, body_plain, body_html | Comment text as Markdown and as plain text. body_html appears only when you turn on includeBodyHtml. |
๐ค author, author_fullname, author_flair, is_op, distinguished, is_stickied | Who wrote it, their flair, whether they wrote the post, moderator or admin role and pinned status. |
๐
author_post_karma, author_comment_karma | Author karma. Added only when you turn on authorKarma. |
โญ score, is_score_hidden | Upvote score, or a flag when Reddit hides it. |
๐ณ depth, num_direct_replies, num_children | Position in the thread, direct reply count and total number of descendants. |
๐ช thread_path | Ancestor chain with comment_id, author and body_plain of each parent. Added only when you turn on includeThreadPath. |
๐ created_at, created_utc, edited_at, is_edited, scraped_at | Posting and edit times in UTC, and the time the row was collected. |
๐ซ is_deleted, is_removed | Whether the comment or its author was deleted or removed. |
๐ permalink, subreddit, post_id | Link to the comment, subreddit name and the parent post ID. |
๐ฐ post_fullname, post_title, post_url, post_link, post_author, post_author_fullname, post_flair, post_score, post_num_comments, post_created_utc, post_created_at, post_domain, post_is_nsfw, post_is_spoiler, post_is_oc, post_num_crossposts, post_selftext | Details of the parent post repeated on each comment row. On by default, controlled by includePostInfo. |
๐ record_type, _meta, post_selftext_plain | Post rows only, with the coverage report in _meta. Added when you turn on includePostRecord or outputTree. |
๐ฒ comments, replies | Tree mode only: the comments of a post and the replies nested under each comment. |
Reddit's own comment count can differ from what is publicly visible, so the coverage figure is a guide and not a promise of 100%.
What can you do with the data from Reddit?
As a Reddit post comments extractor and Reddit comments data extractor, it fits these workflows.
๐ฏ Reddit sentiment analysis and customer feedback mining
- Add thread links to
urlsfor voice of customer research and keepskipDeletedon. - Set
minScoreto focus on upvoted comments for Reddit thread analysis. - Export
body_plainto CSV, Excel or your tool for reddit comments for sentiment analysis.
๐ Reddit brand monitoring and competitor research
- Enter a brand or competitor in
searchQueryand setsearchSorttocomments(Most discussed). - Pick a
subredditTimeFiltersuch asweek. - Schedule the run on Apify and use
dateFromto keep recent comments.
๐ค Reddit data for LLM and RAG pipelines
- Turn on
includeThreadPathso each reply carries its parent chain for a reddit comments dataset for AI training. - Or turn on
outputTreefor a Reddit comment tree JSON per post. - Use
bodyfor a Reddit thread to Markdown, orbody_plainfor flat text.
๐ฌ Reddit pain points research and market research
- List communities in
subredditsto scrape Reddit comments for market research, with asubredditSortsuch astop. - Add
keywordssuch as "alternative" or "problem". - Review results by
scoreanddepth.
๐ง Reddit user comment history research
- Use the Actor as a Reddit user comment history scraper: put usernames in
usernamesto find the posts they commented in. - Set
authorsto keep only their comments.
How do I use Reddit Post Comments Scraper?
- Open Reddit Post Comments Scraper on Apify and click Try for free.
- Paste one or more Reddit post links into Reddit post URLs (
urls). - Add subreddits, a search query or usernames if you also want to discover posts.
- Set optional filters such as
minScore,keywords,dateFromanddateTo. - Choose how deep to go with
commentSort,maxCommentsPerPostandmaxDepth. - Click Start and wait for the run to finish.
- Open the Dataset tab, pick a view and export as JSON, CSV or Excel.
How much does it cost to scrape Reddit comments?
Reddit Post Comments Scraper uses pay-per-event pricing. You pay for each row saved to the dataset, and the price depends on your Apify plan. Platform usage is billed in addition.
| Plan | Price per comment | Per 1,000 comments |
|---|---|---|
| ๐ Free | $0.003 | $3.00 |
| ๐ฅ Bronze | $0.0027 | $2.70 |
| ๐ฅ Silver | $0.0024 | $2.40 |
| ๐ฅ Gold, Platinum and Diamond | $0.002 | $2.00 |
Each run also pays one start event of $0.00005 per GB of memory, with a minimum of one. This Actor runs with 4 GB (4096 MB) of memory by default, so a start costs 4 events, or $0.0002.
Example: collecting 2,500 comments on the Silver plan costs 2,500 x $0.0024 = $6.00, plus the $0.0002 start charge. Platform usage is billed in addition.
If you turn on includePostRecord, each post row is saved and charged like a comment row. With outputTree, each post is a single row, so you pay per post instead of per comment.
Is scraping Reddit comments free?
Reddit comments are public, but running this Actor is not free. You pay per saved row at your plan price, from $0.003 per comment on the Free plan down to $0.002 on Gold. Use maxPostsPerSource, maxCommentsPerPost or a maximum spend per run on Apify to control cost.
How much does Reddit Post Comments Scraper cost per 1,000 results?
On the Free plan, 1,000 comments cost $3.00. On Bronze they cost $2.70, on Silver $2.40, and on Gold, Platinum and Diamond $2.00. Each run adds a $0.0002 start charge, and platform usage is billed in addition.
Input
Treat the Actor as a Reddit comment crawler: provide at least one post link in urls. You can combine links with subreddits, a search query and usernames in one run. Every other field is optional.
Post sources
| Field | Type | Required | Description | Default / example |
|---|---|---|---|---|
urls | array | Yes | Reddit post links. Common link forms, short links and share links are accepted and de-duplicated. A link to one comment scrapes the whole post. | https://www.reddit.com/r/Python/comments/1v7tfx9/python_automations_are_so_much_better_than_ai/ |
subreddits | array | No | Subreddits to pull posts from, without r/. | [], e.g. Python |
searchQuery | string | No | Text to search for across Reddit. | empty, e.g. best budget laptop |
searchInSubreddit | string | No | Limits the search to one subreddit. | empty |
usernames | array | No | Users whose commented-in posts are scraped. | [], e.g. spez |
maxPostsPerSource | integer | No | Posts per subreddit, search or username (1 to 100000). Direct links are always scraped in full. | 10 |
subredditSort | string | No | hot, new, top, rising or controversial. | hot |
searchSort | string | No | relevance, hot, top, new or comments. | relevance |
subredditTimeFilter | string | No | Time window for top, controversial and search: hour, day, week, month, year, all. | week |
Comment collection
| Field | Type | Required | Description | Default / example |
|---|---|---|---|---|
commentSort | string | No | top, best, new, controversial, old or qa. | top |
maxCommentsPerPost | integer | No | Caps saved comments per post. Collection still runs in full first. 0 is unlimited. | 0 |
maxDepth | integer | No | Nesting levels to keep. 1 is top-level only. 0 is unlimited. | 0 |
includeReplies | boolean | No | Keep nested replies. | true |
expandAll | boolean | No | Reveal collapsed "load more" sections. | true |
completenessPass | boolean | No | Extra check for any comments still missing. | true |
maxMoreRequestsPerPost | integer | No | Safety limit on expansion requests per post. 0 is unlimited. | 0 |
maxBackfillRequests | integer | No | Safety limit for the extra check. 0 is unlimited. | 0 |
maxBackfillRounds | integer | No | Rounds the extra check may run (1 to 50). | 6 |
backfillBatch | integer | No | Spots rechecked per round (1 to 1000). | 60 |
Filters
Filters run after the full thread is collected, so the coverage report reflects the whole post.
| Field | Type | Required | Description | Default / example |
|---|---|---|---|---|
minScore | integer | No | Keep comments with at least this score. | empty |
dateFrom | string | No | Keep comments posted on or after this date. | empty, e.g. 2026-01-01 |
dateTo | string | No | Keep comments posted on or before this date. | empty |
keywords | array | No | Keep comments containing at least one of these words. | [] |
keywordsMatchAll | boolean | No | Require every keyword. | false |
authors | array | No | Keep only comments by these usernames. | [] |
skipDeleted | boolean | No | Drop deleted or removed comments. | true |
Output shape
| Field | Type | Required | Description | Default / example |
|---|---|---|---|---|
includePostInfo | boolean | No | Repeat parent post details on every comment row. | true |
includePostRecord | boolean | No | Also save each post as its own row, with the coverage report. | false |
includeThreadPath | boolean | No | Add each comment's ancestor chain. | false |
includeBodyHtml | boolean | No | Keep the original HTML of each comment body. | false |
outputTree | boolean | No | One row per post, with comments nested as replies. | false |
authorKarma | boolean | No | Look up karma for each unique commenter. Adds one request per author, so runs take longer. | false |
Network and speed
| Field | Type | Required | Description | Default / example |
|---|---|---|---|---|
proxyConfiguration | object | No | Optional network settings. The default suits most runs. | {"useApifyProxy": false} |
browserFallback | boolean | No | Extra retry option for requests that keep failing. | true |
concurrency | integer | No | Posts or comment batches processed at once (1 to 32). | 4 |
requestDelay | number | No | Pause between requests in seconds (0 to 10). | 0.7 |
maxRetries | integer | No | Attempts before a request gives up (1 to 15). | 6 |
Example input:
{"urls": ["https://www.reddit.com/r/Python/comments/1v7tfx9/python_automations_are_so_much_better_than_ai/"],"commentSort": "top","maxCommentsPerPost": 500,"includeReplies": true,"expandAll": true,"minScore": 2,"keywords": ["automation"],"skipDeleted": true,"includePostInfo": true}
Output
The Reddit comments scraper writes results to the Apify dataset as each post finishes. Open the Dataset tab to browse seven views: Comment Overview, Content, Author Info, Thread & Position, Timestamps & Status, Post Info and Coverage Report. Export as JSON, CSV, Excel, XML or HTML from the console or through the API.
A comment row looks like this, with example values:
{"comment_id": "def456","comment_fullname": "t1_def456","parent_fullname": "t3_abc123","parent_id": "abc123","depth": 0,"author": "example_user","author_fullname": "t2_example","author_flair": null,"is_op": false,"distinguished": null,"is_stickied": false,"body": "Example comment text.","body_plain": "Example comment text.","score": 42,"is_score_hidden": false,"num_direct_replies": 2,"num_children": 5,"created_utc": 1767225600,"created_at": "2026-01-01T00:00:00Z","is_edited": false,"edited_at": null,"is_deleted": false,"is_removed": false,"permalink": "https://example.com/r/example/comments/abc123/example_post/def456/","subreddit": "example","post_id": "abc123","post_fullname": "t3_abc123","post_title": "Example post title","post_url": "https://example.com/r/example/comments/abc123/example_post/","post_link": "https://example.com/article","post_author": "example_author","post_author_fullname": "t2_exampleauthor","post_flair": null,"post_score": 1200,"post_num_comments": 310,"post_created_utc": 1767222000,"post_created_at": "2025-12-31T23:00:00Z","post_domain": "example.com","post_is_nsfw": false,"post_is_spoiler": false,"post_is_oc": false,"post_num_crossposts": 0,"post_selftext": "Example post text.","scraped_at": "2026-10-17T10:00:00Z"}
With includePostRecord or outputTree, the dataset also holds a post row (trimmed here). The _meta object carries the coverage report and further counters:
{"post_id": "abc123","post_fullname": "t3_abc123","post_title": "Example post title","post_url": "https://example.com/r/example/comments/abc123/example_post/","subreddit": "example","post_selftext": "Example post text.","post_selftext_plain": "Example post text.","record_type": "post","_meta": {"comments_reported_by_reddit": 310,"comments_scraped": 298,"coverage_pct": 96.1,"comments_after_filters": 120,"expansion_complete": true}}
In outputTree mode the post row also holds a comments list, and each comment carries its own replies list (trimmed here):
{"post_id": "abc123","record_type": "post","comments": [{"comment_id": "def456","author": "example_user","body_plain": "Example comment text.","depth": 0,"replies": [{"comment_id": "ghi789","author": "example_reply_user","body_plain": "Example reply text.","depth": 1,"replies": []}]}]}
Every run also saves a run-summary record to the key-value store (trimmed here):
{"source": "reddit-comments","scrapedAt": "2026-10-17T10:05:00+00:00","postsAttempted": 1,"postsFullyCollected": 1,"postsFailed": 0,"commentsSaved": 120,"averageCoveragePct": 96.1,"durationSeconds": 42.5,"perPost": [{"post_id": "abc123","title": "Example post title","comments_scraped": 298,"coverage_pct": 96.1,"comments_after_filters": 120,"expansion_complete": true}]}
Notes and limitations
- Direct post links are scraped in full.
maxPostsPerSourceonly limits posts found through subreddits, search or usernames. - Links that are not Reddit post links are skipped with a warning in the log.
- Private, removed or unavailable posts are skipped and counted in
postsFailed. maxCommentsPerPostlimits saved rows, not collection, so coverage still reflects the whole post.- Author karma is not looked up in
outputTreemode. - If a row grows beyond about 8 MB, its long text fields are shortened to 5,000 characters.
- Scores can be empty when Reddit hides them. Check
is_score_hidden.
FAQ
Is it legal to scrape Reddit comments?
Reddit Post Comments Scraper reads publicly available data that any visitor can see, and it does not log in. Laws such as GDPR and CCPA, and Reddit's terms, may still apply to how you use personal data. Read Is web scraping legal? first. This is not legal advice.
Do I need an account or API key to use the Reddit comments scraper?
No. You only need an Apify account. It is a Reddit scraper with no login, cookies or API key. Add post links or a subreddit, press Start and scrape comments without the official API as a Reddit comments API alternative. Reddit credentials are never requested.
How do I scrape all replies in a Reddit thread?
Leave expandAll, includeReplies and completenessPass on, which is the default. The Actor reveals collapsed "load more" sections and then checks for gaps, so you can download all comments from a Reddit thread. Review coverage_pct in the post row or run summary to see how complete each thread is.
How do I export Reddit comments to CSV or Excel?
When the run finishes, open the Dataset tab, choose a view, pick CSV, Excel, JSON, XML or HTML and download the file. Keep includePostInfo on for flat spreadsheets, because every row then repeats the post title and author. It works as a Reddit comment downloader, with one row per comment.
Can I filter Reddit comments by keyword, score or date range?
Yes. Use keywords with keywordsMatchAll, dateFrom, dateTo and authors, or set minScore as a Reddit comments minimum score filter. Filters run after the full thread is collected, so the coverage report still reflects the whole post. skipDeleted drops deleted and removed comments by default.
How many comments can I get per run, and how fast is it?
The Actor sets no fixed comment cap: maxCommentsPerPost defaults to 0, meaning unlimited. Speed depends on thread size and on concurrency, which defaults to 4, and requestDelay, which defaults to 0.7 seconds. Large threads take longer. Set a maximum spend per run on Apify to control cost.
Can I use the Reddit comments scraper with the Apify API, schedules or integrations?
Yes. Call it as a Python Reddit comments scraper, or from JavaScript or any HTTP client, through the Apify API. Apify also exposes Actors to AI assistants through its MCP server. You can schedule runs, add webhooks and connect integrations from the Apify console without changing the Actor.
Why does the Reddit comments scraper return fewer comments than expected?
Common causes are skipDeleted dropping removed comments, filters such as minScore or keywords, a maxCommentsPerPost or maxDepth limit, or Reddit's own count including comments that are not visible. Compare comments_scraped with comments_after_filters in the post row or run summary to see where comments were dropped.
Reddit Post Comments Scraper not working?
Check the run log first. It explains the likely cause, such as a private or removed post or a link that is not a post link. Then try again with fewer parallel requests. If the problem persists, open the Issues tab of the Actor with your run link and we will look into it.
Related Actors
| Actor | Use it to |
|---|---|
| ๐ฝ Reddit Scraper - Posts, Comments, Search & Subreddits | Scrape posts, comments, communities and users in bulk from post, subreddit, user or search URLs. |
| ๐ Reddit Post & Subreddit Extractor | Scrape Reddit posts, communities and user profiles by keyword, URL or full subreddit with date, flair and NSFW filters. |
| ๐ฌ YouTube Comments Scraper | Extract YouTube video comments and replies with author, text, likes and publish date. |
Support and disclaimer
Found a bug or need a feature? Open an issue in the Issues tab. For custom solutions, integrations or questions, email hello.dataminds@gmail.com. Reddit Post Comments Scraper is independent and not affiliated with Reddit. Trademarks belong to their owners. It collects publicly available data only, and you are responsible for complying with applicable laws and the site's terms.
Last updated: 2026-10-17