Reddit Post Comments Scraper avatar

Reddit Post Comments Scraper

Pricing

from $2.00 / 1,000 results

Go to Apify Store
Reddit Post Comments Scraper

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

Data Minds

Maintained by Community

Actor 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:

FieldDescription
๐Ÿ†” comment_id, comment_fullname, parent_id, parent_fullnameIdentifiers of the comment and of the comment or post it replies to.
๐Ÿ’ฌ body, body_plain, body_htmlComment 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_stickiedWho wrote it, their flair, whether they wrote the post, moderator or admin role and pinned status.
๐Ÿ… author_post_karma, author_comment_karmaAuthor karma. Added only when you turn on authorKarma.
โญ score, is_score_hiddenUpvote score, or a flag when Reddit hides it.
๐ŸŒณ depth, num_direct_replies, num_childrenPosition in the thread, direct reply count and total number of descendants.
๐Ÿชœ thread_pathAncestor 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_atPosting and edit times in UTC, and the time the row was collected.
๐Ÿšซ is_deleted, is_removedWhether the comment or its author was deleted or removed.
๐Ÿ”— permalink, subreddit, post_idLink 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_selftextDetails of the parent post repeated on each comment row. On by default, controlled by includePostInfo.
๐Ÿ“Œ record_type, _meta, post_selftext_plainPost rows only, with the coverage report in _meta. Added when you turn on includePostRecord or outputTree.
๐ŸŒฒ comments, repliesTree 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

  1. Add thread links to urls for voice of customer research and keep skipDeleted on.
  2. Set minScore to focus on upvoted comments for Reddit thread analysis.
  3. Export body_plain to CSV, Excel or your tool for reddit comments for sentiment analysis.

๐Ÿ“ˆ Reddit brand monitoring and competitor research

  1. Enter a brand or competitor in searchQuery and set searchSort to comments (Most discussed).
  2. Pick a subredditTimeFilter such as week.
  3. Schedule the run on Apify and use dateFrom to keep recent comments.

๐Ÿค– Reddit data for LLM and RAG pipelines

  1. Turn on includeThreadPath so each reply carries its parent chain for a reddit comments dataset for AI training.
  2. Or turn on outputTree for a Reddit comment tree JSON per post.
  3. Use body for a Reddit thread to Markdown, or body_plain for flat text.

๐Ÿ”ฌ Reddit pain points research and market research

  1. List communities in subreddits to scrape Reddit comments for market research, with a subredditSort such as top.
  2. Add keywords such as "alternative" or "problem".
  3. Review results by score and depth.

๐Ÿง‘ Reddit user comment history research

  1. Use the Actor as a Reddit user comment history scraper: put usernames in usernames to find the posts they commented in.
  2. Set authors to keep only their comments.

How do I use Reddit Post Comments Scraper?

  1. Open Reddit Post Comments Scraper on Apify and click Try for free.
  2. Paste one or more Reddit post links into Reddit post URLs (urls).
  3. Add subreddits, a search query or usernames if you also want to discover posts.
  4. Set optional filters such as minScore, keywords, dateFrom and dateTo.
  5. Choose how deep to go with commentSort, maxCommentsPerPost and maxDepth.
  6. Click Start and wait for the run to finish.
  7. 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.

PlanPrice per commentPer 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

FieldTypeRequiredDescriptionDefault / example
urlsarrayYesReddit 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/
subredditsarrayNoSubreddits to pull posts from, without r/.[], e.g. Python
searchQuerystringNoText to search for across Reddit.empty, e.g. best budget laptop
searchInSubredditstringNoLimits the search to one subreddit.empty
usernamesarrayNoUsers whose commented-in posts are scraped.[], e.g. spez
maxPostsPerSourceintegerNoPosts per subreddit, search or username (1 to 100000). Direct links are always scraped in full.10
subredditSortstringNohot, new, top, rising or controversial.hot
searchSortstringNorelevance, hot, top, new or comments.relevance
subredditTimeFilterstringNoTime window for top, controversial and search: hour, day, week, month, year, all.week

Comment collection

FieldTypeRequiredDescriptionDefault / example
commentSortstringNotop, best, new, controversial, old or qa.top
maxCommentsPerPostintegerNoCaps saved comments per post. Collection still runs in full first. 0 is unlimited.0
maxDepthintegerNoNesting levels to keep. 1 is top-level only. 0 is unlimited.0
includeRepliesbooleanNoKeep nested replies.true
expandAllbooleanNoReveal collapsed "load more" sections.true
completenessPassbooleanNoExtra check for any comments still missing.true
maxMoreRequestsPerPostintegerNoSafety limit on expansion requests per post. 0 is unlimited.0
maxBackfillRequestsintegerNoSafety limit for the extra check. 0 is unlimited.0
maxBackfillRoundsintegerNoRounds the extra check may run (1 to 50).6
backfillBatchintegerNoSpots rechecked per round (1 to 1000).60

Filters

Filters run after the full thread is collected, so the coverage report reflects the whole post.

FieldTypeRequiredDescriptionDefault / example
minScoreintegerNoKeep comments with at least this score.empty
dateFromstringNoKeep comments posted on or after this date.empty, e.g. 2026-01-01
dateTostringNoKeep comments posted on or before this date.empty
keywordsarrayNoKeep comments containing at least one of these words.[]
keywordsMatchAllbooleanNoRequire every keyword.false
authorsarrayNoKeep only comments by these usernames.[]
skipDeletedbooleanNoDrop deleted or removed comments.true

Output shape

FieldTypeRequiredDescriptionDefault / example
includePostInfobooleanNoRepeat parent post details on every comment row.true
includePostRecordbooleanNoAlso save each post as its own row, with the coverage report.false
includeThreadPathbooleanNoAdd each comment's ancestor chain.false
includeBodyHtmlbooleanNoKeep the original HTML of each comment body.false
outputTreebooleanNoOne row per post, with comments nested as replies.false
authorKarmabooleanNoLook up karma for each unique commenter. Adds one request per author, so runs take longer.false

Network and speed

FieldTypeRequiredDescriptionDefault / example
proxyConfigurationobjectNoOptional network settings. The default suits most runs.{"useApifyProxy": false}
browserFallbackbooleanNoExtra retry option for requests that keep failing.true
concurrencyintegerNoPosts or comment batches processed at once (1 to 32).4
requestDelaynumberNoPause between requests in seconds (0 to 10).0.7
maxRetriesintegerNoAttempts 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. maxPostsPerSource only 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.
  • maxCommentsPerPost limits saved rows, not collection, so coverage still reflects the whole post.
  • Author karma is not looked up in outputTree mode.
  • 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

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.

ActorUse it to
๐Ÿ‘ฝ Reddit Scraper - Posts, Comments, Search & SubredditsScrape posts, comments, communities and users in bulk from post, subreddit, user or search URLs.
๐Ÿ“š Reddit Post & Subreddit ExtractorScrape Reddit posts, communities and user profiles by keyword, URL or full subreddit with date, flair and NSFW filters.
๐Ÿ’ฌ YouTube Comments ScraperExtract 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