Reddit Comment Scraper
Pricing
from $2.70 / 1,000 comments
Reddit Comment Scraper
Collect Reddit comments from post IDs or post URLs, including author, text, score, timestamps, reply depth, and parent-post metadata.
Pricing
from $2.70 / 1,000 comments
Rating
0.0
(0)
Developer
Farhan Ali
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Reddit Comment Scraper creates a structured dataset of comments collected from Reddit post pages. Each dataset item represents one comment and can include author, body text, score, reply depth, parent and post identifiers, timestamps, and permalinks. Query the source with post IDs or post URLs (searchQueries, postIds, or startUrls). Control the per-post limit with maxComments, and retrieve records through the Apify Dataset API or export them as JSON, CSV, Excel, XML, or another supported format.
Dataset at a glance
| Property | Value |
|---|---|
| Source | reddit.com public post comment threads |
| Record unit | One Reddit comment |
| Input methods | Post IDs or URLs (searchQueries), post IDs (postIds), or post URLs (startUrls) |
| Main identifiers | id, comment URL (fullUrl), parent post (postId) |
| Delivery | Apify Dataset and API |
| Export formats | JSON, CSV, Excel, XML, HTML (Apify dataset exports) |
| Update model | Fresh records per Actor run |
| Pricing | $3 / 1,000 comments; Actor start $0.00005 |
Coverage and available records
The Actor collects public comments from one or more Reddit posts. Provide at least one of searchQueries, postIds, or startUrls.
- Post IDs or URLs:
searchQueriesaccepts a bare post ID (1vcvjb9) or a full post URL. Preferred for agent-style input. - Post IDs:
postIdsaccepts bare IDs; post URLs are built automatically. - Post URLs:
startUrlsacceptsreddit.compost URLs orredd.itshort links.
Record types and limits:
- Comment records are always collected: identifiers, author, body, score, depth, subreddit, parent post fields, timestamps, and state flags.
- Sort:
sortByselects Reddit's comment sort (confidence/ Best,top,new,controversial,old,qa,live). Default isconfidence. - Result cap:
maxCommentslimits comments per post (0means unlimited per post).maxItemsis an alias used only whenmaxCommentsis omitted. Three posts withmaxComments: 10can return up to 30 comments.
Known exclusions: content Reddit only shows after login is not collected; deleted or removed comments may have empty body or [deleted] authors; each run captures thread state at run time (no historical snapshots). A Reddit account is not an input.
Data dictionary
Field names below match dataset record JSON properties exactly. Values come from Reddit. sourceUrl and sourceQuery record the seed that produced the comment.
| Field | Type | Nullable | Description | Example |
|---|---|---|---|---|
id | string | No | Comment identifier; recommended deduplication key | l8c2m3 |
name | string | Yes | Reddit fullname (t1_ + comment id) | t1_l8c2m3 |
parentId | string | Yes | Parent fullname (post t3_… or comment t1_…) | t3_1vcvjb9 |
postId | string | Yes | Parent post identifier | 1vcvjb9 |
postTitle | string | Yes | Parent post title | I think people seriously underestimate how easy... |
postUrl | string | Yes | Parent post URL | https://www.reddit.com/r/AI_Agents/comments/1vcvjb9/i_think_people_seriously_underestimate_how_easy/ |
sourceUrl | string | Yes | Seed URL used for the run | Same as postUrl |
sourceQuery | string | Yes | Seed ID or URL as supplied | Same as postUrl |
subreddit | string | Yes | Subreddit name without r/ | AI_Agents |
subredditNamePrefixed | string | Yes | Subreddit with r/ prefix | r/AI_Agents |
author | string | Yes | Comment author username | reddit_user_123 |
body | string | Yes | Comment text | This is a really underrated workflow... |
score | number | Yes | Vote score | 214 |
ups | number | Yes | Ups count as returned by Reddit | 214 |
depth | number | Yes | Reply depth (0 = top-level) | 0 |
createdAt | string | Yes | Created timestamp (ISO 8601) | 2026-08-07T14:32:10+00:00 |
editedAt | string | Yes | Last-edited timestamp, or null if never edited | null |
permalink | string | Yes | Site-relative permalink | /r/AI_Agents/comments/1vcvjb9/.../l8c2m3/ |
fullUrl | string | Yes | Absolute comment URL; secondary key | https://www.reddit.com/r/AI_Agents/comments/1vcvjb9/.../l8c2m3/ |
url | string | Yes | Absolute comment URL (same role as fullUrl) | Same as fullUrl |
isSubmitter | boolean | Yes | Whether the author is the original poster | false |
distinguished | string | Yes | Mod / admin distinction, or empty | "" |
stickied | boolean | Yes | Whether the comment is stickied | false |
gilded | number | Yes | Gilding count | 0 |
controversiality | number | Yes | Reddit controversiality flag | 0 |
scoreHidden | boolean | Yes | Whether score is hidden | false |
collapsed | boolean | Yes | Whether the comment is collapsed | false |
locked | boolean | Yes | Whether the comment is locked | false |
archived | boolean | Yes | Whether the comment is archived | false |
Example dataset record
Top-level comment from post 1vcvjb9 with sortBy confidence.
{"id": "l8c2m3","name": "t1_l8c2m3","parentId": "t3_1vcvjb9","postId": "1vcvjb9","postTitle": "I think people seriously underestimate how easy...","postUrl": "https://www.reddit.com/r/AI_Agents/comments/1vcvjb9/i_think_people_seriously_underestimate_how_easy/","sourceUrl": "https://www.reddit.com/r/AI_Agents/comments/1vcvjb9/i_think_people_seriously_underestimate_how_easy/","sourceQuery": "https://www.reddit.com/r/AI_Agents/comments/1vcvjb9/i_think_people_seriously_underestimate_how_easy/","subreddit": "AI_Agents","subredditNamePrefixed": "r/AI_Agents","author": "reddit_user_123","body": "This is a really underrated workflow. I've been using agents like this for weeks and the difference is night and day.","score": 214,"ups": 214,"depth": 0,"createdAt": "2026-08-07T14:32:10+00:00","editedAt": null,"permalink": "/r/AI_Agents/comments/1vcvjb9/i_think_people_seriously_underestimate_how_easy/l8c2m3/","fullUrl": "https://www.reddit.com/r/AI_Agents/comments/1vcvjb9/i_think_people_seriously_underestimate_how_easy/l8c2m3/","url": "https://www.reddit.com/r/AI_Agents/comments/1vcvjb9/i_think_people_seriously_underestimate_how_easy/l8c2m3/","isSubmitter": false,"distinguished": "","stickied": false,"gilded": 0,"controversiality": 0,"scoreHidden": false,"collapsed": false,"locked": false,"archived": false}
The record above was produced with this input:
{"searchQueries": ["1vcvjb9"],"maxComments": 100,"sortBy": "confidence"}
Query and input reference
| Input | Type | Required | Default | Accepted values | Description |
|---|---|---|---|---|---|
searchQueries | array (string) | No* | — (prefill 1vcvjb9) | Post IDs or post URLs | Preferred seed list; IDs and URLs are resolved automatically |
postIds | array (string) | No* | — | Bare post IDs | Alternative seed list; URLs are built automatically |
startUrls | array (requestListSources) | No* | — | reddit.com or redd.it post URLs | URL seed list |
maxComments | integer | No | 0 | 0 or any positive integer | Maximum comments per post; 0 = unlimited (console prefill 100) |
maxItems | integer | No | 0 | 0 or any positive integer | Alias for maxComments when maxComments is omitted |
sortBy | string | No | confidence | confidence, top, new, controversial, old, qa, live | Reddit comment sort |
proxyConfiguration | object | No | Apify proxy, RESIDENTIAL | Apify proxy groups or custom proxies | Residential proxies are recommended; datacenter IPs are often blocked |
* Provide searchQueries, postIds, and/or startUrls — at least one source is required.
Minimal request:
{ "searchQueries": ["1vcvjb9"] }
Advanced request (URL seeds, capped, sorted by new):
{"startUrls": [{ "url": "https://www.reddit.com/r/AI_Agents/comments/1vcvjb9/i_think_people_seriously_underestimate_how_easy/" }],"maxComments": 10,"sortBy": "new","proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }}
Retrieve the data through the API
Records are delivered through the Apify Actor and Dataset APIs — not an official Reddit API.
- Start the Actor with a JSON input (console or API).
- Wait for the run to finish, or use a synchronous endpoint if you want the response inline.
- Retrieve items from the run's default dataset.
- Paginate or export the dataset.
Python example:
from apify_client import ApifyClientclient = ApifyClient("YOUR-APIFY-TOKEN")run_input = {"searchQueries": ["1vcvjb9"],"maxComments": 100,"sortBy": "confidence",}run = client.actor("datascrapers/reddit-comment-scraper").call(run_input=run_input)for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["id"], item["author"], item["score"])
Apify generates ready-to-run Python, JavaScript, and cURL examples on the Actor's API tab. Do not put a real API token in shared code or URLs.
Data quality and record handling
- Thread structure:
parentIdanddepthpreserve reply relationships. A reply is a separate dataset item, not a nested array. - Source changes: Reddit page structure and values can change; unreadable fields are omitted or returned empty rather than fabricated.
- Deduplication: within a run, comments are identified by
id. Across runs, records are appended. Useidas the stable key. - Failures: one failed post does not stop the run. Residential proxies are recommended; datacenter IPs are often blocked.
- Normalization: timestamps are ISO 8601. Scores and flags come from Reddit.
Export and pipeline examples
| Destination | Recommended method | Typical use |
|---|---|---|
| PostgreSQL / Supabase | Dataset API poll or webhook consumer | Store threads for sentiment and research |
| Google Sheets | Apify Google Sheets integration | Share short comment extracts |
| NLP / LLM pipelines | Dataset API JSON export | Training or RAG corpora |
| S3 / cloud storage | Scheduled export via Apify scheduler + integration | Archival of discussion snapshots |
Pricing and cost examples
The Actor uses pay-per-event pricing. Each run also charges a one-time Actor start. Residential proxies are recommended. Proxy and compute are billed by your Apify plan. Comment charges may be tiered on Apify paid plans.
| Event | Trigger | Rate |
|---|---|---|
| Actor start | Once per run | $0.00005 |
dataset-item (Comment) | Each comment written to the dataset | $0.003 / comment ($3 / 1,000) |
Example costs (Actor start negligible; plan-tier discounts not applied):
| Records | Configuration | Estimated base cost |
|---|---|---|
| 1,000 | Comments | $3.00 |
| 10,000 | Comments | $30.00 |
Estimates depend on the verified pricing model and the number of comments collected.
Limitations and responsible data use
- The Actor collects publicly accessible Reddit comments only.
- Field availability depends on what Reddit renders at run time; deleted comments and hidden scores can produce empty or placeholder values.
- The Actor does not provide historical snapshots unless you store them yourself.
- Large runs should use residential proxies; without them, coverage may degrade.
- You are responsible for compliance with Reddit's terms of service, applicable privacy law, and any contractual obligations before using the data.
Dataset questions
What does one dataset item represent?
One Reddit comment. Replies are separate items linked by parentId and depth.
Which field should I use as a unique identifier?
id is the recommended deduplication key. fullUrl is a reasonable secondary key. Use postId to group comments from the same thread.
Are fields nullable or conditional?
Yes. editedAt is null when the comment was never edited. body and author can be empty or placeholder values for deleted comments. Other flags follow what Reddit returns.
Can I retrieve the records as CSV or JSON?
Yes. The dataset can be exported as JSON, CSV, Excel, XML, or HTML from the Apify Console, and queried through the Dataset API.
Does the Actor return historical data?
No. Each run captures the thread at run time. To track new comments, schedule repeated runs and store the outputs yourself.
What counts as a billable result?
Two pay-per-event charges apply: Actor start once per run ($0.00005) and a dataset-item charge for every comment ($0.003, or $3 per 1,000).
Related datasets from Data Scrapers
- Reddit Scraper — Broader Reddit records that can be joined to these comments through post identifiers.
- Instagram Comment Scraper — Instagram comments for the same social-listening pipelines.
- TikTok Comment Scraper — TikTok comments for cross-platform discussion analysis.
- YouTube Comment Scraper — YouTube comments that pair with Reddit threads on the same topics.
- Twitter/X Profile Scraper — Profile-level social records for accounts discussed in Reddit threads.
Data Scrapers support
Need an additional field, record type, or export workflow? Contact Data Scrapers at stardustspotlight@gmail.com. Include a sample source URL, required fields, expected record volume, and preferred delivery format.