Reddit Comment Scraper
Pricing
$24.99/month + usage
Reddit Comment Scraper
Reddit Comments Scraper helps you scrape structured comment data from Reddit posts. Export replies, scores, and hierarchy for NLP models, research projects, and discussion analysis workflows.
Pricing
$24.99/month + usage
Rating
0.0
(0)
Developer
Scrapier
Maintained by CommunityActor stats
0
Bookmarked
28
Total users
2
Monthly active users
19 hours ago
Last modified
Categories
Share
Reddit Comment Scraper — Comments, Replies and Author Karma
Reddit Comment Scraper pulls every comment and nested reply from Reddit posts, subreddits, or keyword searches, without a Reddit account or API key. Give it post URLs, a subreddit, or a plain keyword, and it returns flattened comment records — author, upvotes, timestamps, content classification — plus an optional author karma and account-age lookup for each commenter. Every response is structured JSON, ready to pass to an LLM, load into a spreadsheet, or feed a monitoring pipeline. Built for teams who need real Reddit discourse data, not summaries.
What is Reddit Comment Scraper?
Reddit Comment Scraper is a comment-extraction Actor that reads Reddit's own public JSON endpoints to return every comment and reply on a post, subreddit, or keyword search as structured data. It requires no Reddit account, OAuth app registration, or login — only a post URL, a subreddit/search URL, or a search term. Its standout capability is optional author karma and account-age enrichment: turn on enrichAuthorProfile and every comment row gets a resolved authorProfile object carrying the commenter's real total/post/comment karma, account creation date, and Reddit Gold status, pulled from their live public Reddit profile.
- Direct post scraping via
startUrls, or discovery viasearchUrls(subreddit listing/search URLs) andsearchQuery(site-wide keyword) - Full comment + reply extraction, following Reddit's
/api/morechildrenpagination so large threads aren't truncated - Author karma & account-age enrichment (opt-in), resolved once per unique commenter
- Absolute or relative date filtering with
sinceDate/untilDate - Configurable sort order — hot, new, top, controversial, or old
- Automatic proxy fallback and public-archive fallback (Arctic Shift / PullPush) when Reddit's
.jsonAPI blocks a request
What data can you get with Reddit Comment Scraper?
Reddit Comment Scraper extracts two things: a comment/reply record for every comment it finds, and — when you enable it — an author profile object attached to each commenter.
| Result Type | Extracted Fields | Primary Use Case |
|---|---|---|
| Comments & replies | url, comment_id, post_id, author, permalink, upvotes, content_type, parent_id, author_avatar, userUrl, contentText, created_time, replies, discovered_via, discovered_post_title | Sentiment analysis, thread reconstruction, discussion monitoring |
| Author profile enrichment (opt-in) | totalKarma, postKarma, commentKarma, accountCreatedUtc, isGold | Trust scoring, bot/throwaway detection, influencer identification |
Author Karma & Account-Age Enrichment
Turn on enrichAuthorProfile and every comment row gains an authorProfile object, resolved once per unique commenter and cached for the run. It carries totalKarma, postKarma, commentKarma, the account's accountCreatedUtc creation date, and isGold Reddit Gold status — pulled live from Reddit's own /user/<name>/about.json endpoint, with a fallback that parses old.reddit.com's profile page if that endpoint is blocked. This matters because comment text alone doesn't tell you whether it came from a decade-old, high-karma account or a brand-new throwaway — exactly the signal researchers, moderators, and brand-safety teams need to separate organic discussion from low-effort or coordinated accounts. Because it resolves per author rather than per comment, a run stays efficient even when one commenter appears dozens of times across a thread.
{"author": "reddit_user_92","authorProfile": {"totalKarma": 48213,"postKarma": 1190,"commentKarma": 47023,"accountCreatedUtc": "2014-03-02T00:00:00Z","isGold": false}}
Discovered Post Metadata
When you use searchUrls or searchQuery instead of pasting post URLs directly, every comment row also carries discovered_via ("direct_url" or "search") and discovered_post_title — the real title of the post the comment came from, read from the post's own JSON payload. This lets you scrape an entire subreddit or keyword topic in one run and still know, per comment, exactly which post and discovery path produced it — useful for grouping comments by post without a second lookup.
How does Reddit Comment Scraper differ from the official Reddit API?
Reddit's own Data API returns raw, OAuth-authenticated JSON for whatever endpoint you call; Reddit Comment Scraper returns comments already flattened, deduplicated, and enriched with author karma data, without you writing a Reddit API client.
| Feature | Reddit Data API | Reddit Comment Scraper |
|---|---|---|
| Access requirement | Registered OAuth app + Reddit developer account | No login, API key, or app registration |
| Comment retrieval | You paginate listings and call /api/morechildren yourself | Automatic full-thread pagination, flattened output |
| Author karma / account age | Separate /user/about call you build and rate-limit yourself | Built-in optional authorProfile enrichment, cached per run |
| Pricing model | Free tier for personal/non-commercial use; Reddit introduced paid tiers for higher-volume commercial access in 2023 | Pay-per-result on Apify, no separate Reddit billing account |
| Blocked/rate-limited requests | Your client handles retries and backoff | Automatic proxy fallback plus public-archive fallback (Arctic Shift / PullPush) |
| Output format | Raw Reddit listing JSON (kind/data nesting) | Normalized flat JSON per comment, ready for CSV/JSON export |
Reach for the official Data API directly if you're building a Reddit-native app that posts, votes, or acts on a user's behalf under their own OAuth token. Reach for Reddit Comment Scraper when you just need clean, exportable comment data — with author trust signals attached — without registering an app or maintaining API client code.
How to scrape Reddit with Reddit Comment Scraper?
- Open the reddit-comment-scraper Actor on the Apify Store and click Try for free, or start it directly from Apify Console.
- Add a target: paste one or more Reddit post URLs into
startUrls, or leave it empty and usesearchUrls(a subreddit/search URL) orsearchQuery(a plain keyword) instead — none of these three is required, but at least one must be filled in. - Set your query controls:
sortOrder,maxComments,replyLimit,sinceDate/untilDate, andenrichAuthorProfileif you want karma data. - Click Start and follow progress in the run log.
- Open the Dataset tab and export results as JSON, CSV, Excel, or via the Apify API.
A real run needs nothing more than one field:
{"searchQuery": "GPT-5","sortOrder": "new","maxPostsToDiscover": 25,"maxComments": 200,"enrichAuthorProfile": true}
How to run multiple queries in one job
startUrls and searchUrls both accept an array — paste several post URLs, or several subreddit/search URLs, and every entry is scraped within the same run. searchQuery accepts a single keyword string per run, so combine it with searchUrls entries or run it separately for additional keywords. Each target is fetched and saved to the dataset one after another within the run, so a large batch of URLs takes proportionally longer rather than running in parallel.
⬇️ Input
Reddit Comment Scraper takes no required fields — supply post URLs directly, or let it discover posts by subreddit/search URL or keyword, then tune the query and enrichment controls below.
| Parameter | Required | Type | Description | Example Value |
|---|---|---|---|---|
startUrls | No | array | Reddit post URLs to scrape directly. Optional if searchUrls/searchQuery is used instead. | ["https://www.reddit.com/r/ChatGPT/comments/1epeshq/these_are_all_ai/"] |
sortOrder | No | string (select) | Sort order used both for fetching comments and for subreddit listing/search discovery. One of hot, new, top, controversial, old. Default "hot". | "new" |
searchUrls | No | array | Subreddit listing URLs or Reddit search URLs to discover posts from, instead of pasting post URLs. | ["https://www.reddit.com/r/ChatGPT/"] |
searchQuery | No | string | A plain keyword/phrase to search Reddit site-wide for matching posts. | "GPT-5" |
maxPostsToDiscover | No | integer | Max total posts to discover from searchUrls/searchQuery combined (1–500). Ignored when only direct startUrls are used. Default 10. | 25 |
safeSearch | No | boolean | Skip NSFW (over_18) posts found via discovery. Has no effect on directly-provided startUrls. Default false. | true |
sinceDate | No | string (date) | Only keep comments created on/after this date. Accepts an absolute date or a relative value like 3 days/1 week. | "7 days" |
untilDate | No | string (date) | Only keep comments created on/before this date. Accepts an absolute date or a relative value like 3 days/1 week. | "2026-07-01" |
maxComments | No | integer | Maximum comments to extract per post, direct or discovered (1–10,000). Default 100. | 500 |
replyLimit | No | integer | Max nested replies kept in each comment's replies field (0–100; 0 = unlimited). All replies are still emitted as their own flattened rows regardless. Default 2. | 5 |
enrichAuthorProfile | No | boolean | Adds an authorProfile object (karma totals, account creation date, Reddit Gold status) to every row, resolved once per unique author. Default false. | true |
proxyConfiguration | No | object | Apify Proxy configuration. If left disabled, the Actor automatically falls back through datacenter then residential proxies when Reddit blocks a request. Default {"useApifyProxy": false}. | {"useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"]} |
{"startUrls": ["https://www.reddit.com/r/ChatGPT/comments/1epeshq/these_are_all_ai/"],"sortOrder": "hot","searchUrls": [],"searchQuery": "","maxPostsToDiscover": 10,"safeSearch": false,"sinceDate": "","untilDate": "","maxComments": 100,"replyLimit": 2,"enrichAuthorProfile": false,"proxyConfiguration": { "useApifyProxy": false }}
Pitfall: sinceDate/untilDate accept an absolute date or a relative value like "3 days" — but an unparseable value (a stray number with no unit, an unrecognized format) is silently ignored rather than rejected, meaning the date filter simply won't apply to that run. Double-check the format if comments outside your expected window still show up.
⬆️ Output
Every row in the dataset is one comment or reply, in a consistent schema across runs — top-level comments, nested replies, and deleted/removed placeholders all share the same fields. Export results as JSON, CSV, Excel, or pull them via the Apify API. A grouped {url: [comments]} snapshot is also written to the run's key-value store under the OUTPUT key.
Scraped results
[{"url": "https://www.reddit.com/r/ChatGPT/comments/1epeshq/these_are_all_ai/","comment_id": "lhk1f7n","post_id": "t3_1epeshq","author": "AutoModerator","permalink": "https://www.reddit.com/r/ChatGPT/comments/1epeshq/these_are_all_ai/lhk1f7n/","upvotes": 1,"content_type": "comment","parent_id": "1epeshq","author_avatar": "https://www.redditstatic.com/avatars/example.png","userUrl": "https://www.reddit.com/user/AutoModerator/","contentText": "This is a bot account for automated actions on this subreddit.","created_time": "2024-08-06T14:32:10Z","replies": [{"comment_id": "lhk2z90","post_id": "t3_1epeshq","author": "reddit_user_92","permalink": "https://www.reddit.com/r/ChatGPT/comments/1epeshq/these_are_all_ai/lhk2z90/","upvotes": 14,"content_type": "reply","parent_id": "lhk1f7n","contentText": "Good to know, thanks for the heads up.","created_time": "2024-08-06T15:01:44Z"}],"discovered_via": "direct_url","discovered_post_title": "These are all AI","authorProfile": {"totalKarma": 2184921,"postKarma": 15032,"commentKarma": 2169889,"accountCreatedUtc": "2016-11-16T00:00:00Z","isGold": true}},{"url": "https://www.reddit.com/r/ChatGPT/comments/1epeshq/these_are_all_ai/","comment_id": "lhk2z90","post_id": "t3_1epeshq","author": "reddit_user_92","permalink": "https://www.reddit.com/r/ChatGPT/comments/1epeshq/these_are_all_ai/lhk2z90/","upvotes": 14,"content_type": "reply","parent_id": "lhk1f7n","author_avatar": "","userUrl": "https://www.reddit.com/user/reddit_user_92/","contentText": "Good to know, thanks for the heads up.","created_time": "2024-08-06T15:01:44Z","replies": [],"discovered_via": "direct_url","discovered_post_title": "These are all AI","authorProfile": {"totalKarma": 48213,"postKarma": 1190,"commentKarma": 47023,"accountCreatedUtc": "2014-03-02T00:00:00Z","isGold": false}},{"url": "https://www.reddit.com/r/ChatGPT/comments/1epeshq/these_are_all_ai/","comment_id": "lhk3a12","post_id": "t3_1epeshq","author": "[deleted]","permalink": "https://www.reddit.com/r/ChatGPT/comments/1epeshq/these_are_all_ai/lhk3a12/","upvotes": 0,"content_type": "deleted","parent_id": "1epeshq","author_avatar": "","userUrl": "","contentText": "[deleted]","created_time": "2024-08-06T16:12:03Z","replies": [],"discovered_via": "search","discovered_post_title": "These are all AI"}]
How can I use the data extracted with Reddit Comment Scraper?
- Brand and sentiment monitoring teams: pull every comment mentioning a product or brand across a subreddit or keyword search, using
contentText,upvotes, andcreated_timeto track sentiment and discussion volume over time. - Community and market researchers: reconstruct full comment trees with
parent_id/replies, and comparecontent_typemix (comment vs. reply vs. deleted/removed) across communities to gauge moderation activity and discussion health. - AI engineers and LLM developers: have an agent issue a subreddit or keyword query, receive structured comment JSON back, and pass it to the model as grounded context for summarization or Q&A.
- Trust and safety teams: use
authorProfilekarma totals andaccountCreatedUtcto flag comments from low-karma, newly created accounts before running further spam or manipulation analysis.
How do you monitor Reddit discussions over time?
Monitoring is the practice of re-running the same query on a schedule and comparing what changed, rather than treating each run as a one-off snapshot. Because Reddit Comment Scraper accepts the same startUrls/searchUrls/searchQuery on every run, you can schedule repeat runs and use sinceDate to pull only comments newer than your last run, keeping each pass small.
Diff the fields that actually move between runs: upvotes (a comment's score rising or falling), content_type (a comment flipping from comment/reply to deleted/removed), and — if enrichment is on — authorProfile.totalKarma/accountCreatedUtc (whether new commenters are established accounts or fresh ones). comment_id is stable across runs, so a simple join tells you what's new, gone, or changed.
A typical workflow: schedule a run across a keyword or subreddit set with sinceDate set to your last run's timestamp so each pass only pulls new comments, compare the dataset against your previous one on comment_id, and alert when a tracked thread's deleted/removed ratio spikes or a wave of new comments arrives from newly created, low-karma accounts.
Apify Console's built-in Schedule feature can trigger this Actor on a recurring interval without you running your own scheduler. Combine it with the Apify API or a webhook on run completion to pull each new batch into your own alerting pipeline automatically.
Integrate Reddit Comment Scraper and automate your workflow
Reddit Comment Scraper works with any language or tool that can send an HTTP request.
REST API with Python
import requestsTOKEN = "YOUR_APIFY_TOKEN"run_url = f"https://api.apify.com/v2/acts/scrapier~reddit-comment-scraper/run-sync-get-dataset-items?token={TOKEN}"payload = {"searchQuery": "GPT-5","maxComments": 200,"enrichAuthorProfile": True,}response = requests.post(run_url, json=payload)comments = response.json()for comment in comments[:5]:print(comment["author"], comment["contentText"][:80])
MCP for query-grounded AI agents
Reddit Comment Scraper is callable through Apify's Actors MCP Server, so an agent can issue a Reddit query, get back structured comment JSON, and ground its answer in it. Register it with npx @apify/actors-mcp-server --tools scrapier/reddit-comment-scraper (with your APIFY_TOKEN set), or connect to the hosted endpoint at https://mcp.apify.com. Compatible with MCP clients such as Claude Desktop, Claude.ai, and VS Code.
Scheduled monitoring and delivery
Use Apify Console's Schedule feature to run this Actor on a recurring interval without managing a cron job yourself. Pair it with a run-completion webhook or repeated calls to the Apify API's dataset endpoint to pull new comments into your own pipeline as each scheduled run finishes.
Is it legal to scrape Reddit comments?
Yes — Reddit Comment Scraper reads only publicly accessible Reddit pages and endpoints, the same content any visitor or search engine can see without logging in. Courts have found that scraping publicly available web data does not violate the U.S. Computer Fraud and Abuse Act (hiQ Labs, Inc. v. LinkedIn Corp., 9th Cir., 2019, reaffirmed 2022), though Reddit's own Terms of Service still govern permitted use of the platform. Reddit usernames are pseudonymous handles, not real names — the Actor does not collect email addresses or other directly identifying personal data, but karma and account-age data can still be linked to a persistent identity, so treat it under your applicable data protection framework if you store it in bulk. Consult your legal team for commercial use cases involving bulk data storage.
Frequently asked questions
Does Reddit Comment Scraper require a Reddit account or API key?
No. It reads Reddit's public JSON endpoints and public comment archives directly — no login, OAuth app, or API key is needed.
Can I scrape a specific subreddit instead of a site-wide search?
Yes. Paste a subreddit listing or search URL (e.g. https://www.reddit.com/r/ChatGPT/) into searchUrls, or a /r/<subreddit>/search/?q=... URL to search within that subreddit specifically.
Can I control comment sort order?
Yes, with sortOrder — hot, new, top, controversial, or old. It applies both to how comments are fetched and to subreddit/search discovery.
How does Reddit Comment Scraper handle Reddit's anti-bot measures?
It tries a direct request first, then automatically falls back through Apify's datacenter and residential proxy pools if Reddit blocks it. If Reddit's .json API is blocked network-wide for a post, it falls back to public comment archives (Arctic Shift, PullPush) so comments are still collected.
Does Reddit Comment Scraper extract author karma and account age?
Yes, when enrichAuthorProfile is enabled. Each row gets an authorProfile object with totalKarma, postKarma, commentKarma, accountCreatedUtc, and isGold. If Reddit's profile endpoint is blocked for a given author, some of those fields may come back null.
How many comments does Reddit Comment Scraper return per post?
Up to maxComments, which accepts 1–10,000 per post (direct or discovered). Discovery itself is capped separately by maxPostsToDiscover (1–500).
Can I filter comments by date?
Yes, with sinceDate/untilDate, using either an absolute date or a relative value like "3 days" or "1 week".
How do I monitor a subreddit or keyword for new comments over time?
Schedule repeat runs of the same searchUrls/searchQuery, set sinceDate to your last run time so each pass only pulls new comments, then compare comment_id, upvotes, and content_type against your previous dataset to catch new activity or removals.
Does Reddit Comment Scraper work with Claude, ChatGPT, and AI agent frameworks?
Yes. It's reachable as a plain HTTP endpoint from any agent framework, and it's also registered as a tool on Apify's Actors MCP Server, so MCP-compatible clients like Claude Desktop or Claude.ai can call it directly and ground answers in live Reddit comment data.
How does Reddit Comment Scraper compare to other Reddit scrapers?
Most Reddit comment scrapers return comment text, score, and author name. Reddit Comment Scraper adds automatic /api/morechildren pagination, subreddit/keyword discovery in the same run, and optional author karma/account-age enrichment. Exact pricing and throughput vary by listing — check each Actor's Apify Store page for current numbers before comparing.
Can I use Reddit Comment Scraper without managing proxies or Reddit credentials?
Yes. No Reddit credentials are ever required, and if you leave proxyConfiguration at its default, the Actor automatically handles proxy fallback for you — you only need to supply a proxy configuration yourself if you want a specific group or country.
Your feedback
Found a bug or a missing field? Let us know through the Issues tab on this Actor's Apify Console page, or send feedback directly to the developer. Reports like these are how the extraction logic keeps matching Reddit's real output.