Reddit Comment Scraper avatar

Reddit Comment Scraper

Pricing

from $2.70 / 1,000 comments

Go to Apify Store
Reddit Comment Scraper

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

Farhan Ali

Maintained by Community

Actor 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

PropertyValue
Sourcereddit.com public post comment threads
Record unitOne Reddit comment
Input methodsPost IDs or URLs (searchQueries), post IDs (postIds), or post URLs (startUrls)
Main identifiersid, comment URL (fullUrl), parent post (postId)
DeliveryApify Dataset and API
Export formatsJSON, CSV, Excel, XML, HTML (Apify dataset exports)
Update modelFresh 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: searchQueries accepts a bare post ID (1vcvjb9) or a full post URL. Preferred for agent-style input.
  • Post IDs: postIds accepts bare IDs; post URLs are built automatically.
  • Post URLs: startUrls accepts reddit.com post URLs or redd.it short links.

Record types and limits:

  • Comment records are always collected: identifiers, author, body, score, depth, subreddit, parent post fields, timestamps, and state flags.
  • Sort: sortBy selects Reddit's comment sort (confidence / Best, top, new, controversial, old, qa, live). Default is confidence.
  • Result cap: maxComments limits comments per post (0 means unlimited per post). maxItems is an alias used only when maxComments is omitted. Three posts with maxComments: 10 can 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.

FieldTypeNullableDescriptionExample
idstringNoComment identifier; recommended deduplication keyl8c2m3
namestringYesReddit fullname (t1_ + comment id)t1_l8c2m3
parentIdstringYesParent fullname (post t3_… or comment t1_…)t3_1vcvjb9
postIdstringYesParent post identifier1vcvjb9
postTitlestringYesParent post titleI think people seriously underestimate how easy...
postUrlstringYesParent post URLhttps://www.reddit.com/r/AI_Agents/comments/1vcvjb9/i_think_people_seriously_underestimate_how_easy/
sourceUrlstringYesSeed URL used for the runSame as postUrl
sourceQuerystringYesSeed ID or URL as suppliedSame as postUrl
subredditstringYesSubreddit name without r/AI_Agents
subredditNamePrefixedstringYesSubreddit with r/ prefixr/AI_Agents
authorstringYesComment author usernamereddit_user_123
bodystringYesComment textThis is a really underrated workflow...
scorenumberYesVote score214
upsnumberYesUps count as returned by Reddit214
depthnumberYesReply depth (0 = top-level)0
createdAtstringYesCreated timestamp (ISO 8601)2026-08-07T14:32:10+00:00
editedAtstringYesLast-edited timestamp, or null if never editednull
permalinkstringYesSite-relative permalink/r/AI_Agents/comments/1vcvjb9/.../l8c2m3/
fullUrlstringYesAbsolute comment URL; secondary keyhttps://www.reddit.com/r/AI_Agents/comments/1vcvjb9/.../l8c2m3/
urlstringYesAbsolute comment URL (same role as fullUrl)Same as fullUrl
isSubmitterbooleanYesWhether the author is the original posterfalse
distinguishedstringYesMod / admin distinction, or empty""
stickiedbooleanYesWhether the comment is stickiedfalse
gildednumberYesGilding count0
controversialitynumberYesReddit controversiality flag0
scoreHiddenbooleanYesWhether score is hiddenfalse
collapsedbooleanYesWhether the comment is collapsedfalse
lockedbooleanYesWhether the comment is lockedfalse
archivedbooleanYesWhether the comment is archivedfalse

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

InputTypeRequiredDefaultAccepted valuesDescription
searchQueriesarray (string)No*— (prefill 1vcvjb9)Post IDs or post URLsPreferred seed list; IDs and URLs are resolved automatically
postIdsarray (string)No*Bare post IDsAlternative seed list; URLs are built automatically
startUrlsarray (requestListSources)No*reddit.com or redd.it post URLsURL seed list
maxCommentsintegerNo00 or any positive integerMaximum comments per post; 0 = unlimited (console prefill 100)
maxItemsintegerNo00 or any positive integerAlias for maxComments when maxComments is omitted
sortBystringNoconfidenceconfidence, top, new, controversial, old, qa, liveReddit comment sort
proxyConfigurationobjectNoApify proxy, RESIDENTIALApify proxy groups or custom proxiesResidential 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.

  1. Start the Actor with a JSON input (console or API).
  2. Wait for the run to finish, or use a synchronous endpoint if you want the response inline.
  3. Retrieve items from the run's default dataset.
  4. Paginate or export the dataset.

Python example:

from apify_client import ApifyClient
client = 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: parentId and depth preserve 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. Use id as 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

DestinationRecommended methodTypical use
PostgreSQL / SupabaseDataset API poll or webhook consumerStore threads for sentiment and research
Google SheetsApify Google Sheets integrationShare short comment extracts
NLP / LLM pipelinesDataset API JSON exportTraining or RAG corpora
S3 / cloud storageScheduled export via Apify scheduler + integrationArchival 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.

EventTriggerRate
Actor startOnce 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):

RecordsConfigurationEstimated base cost
1,000Comments$3.00
10,000Comments$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).

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.