Reddit Scraper API: Posts & Comment Threads avatar

Reddit Scraper API: Posts & Comment Threads

Pricing

from $1.49 / 1,000 post scrapeds

Go to Apify Store
Reddit Scraper API: Posts & Comment Threads

Reddit Scraper API: Posts & Comment Threads

Search Reddit by keyword or subreddit — no login, no API key. Get post metadata plus full nested comment threads (up to 300/post). 5 sort orders, time filters, cursor paging. Pricing: posts $1.49/1K, comments $0.99/1K, $0.005/run. JSON/CSV export.

Pricing

from $1.49 / 1,000 post scrapeds

Rating

5.0

(1)

Developer

Socialhz

Socialhz

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

8 hours ago

Last modified

Share

Search Reddit by keyword, restrict results to the communities you care about, and optionally pull each post's comment thread with reply nesting preserved.

Built for market research, lead generation, competitor monitoring and content analysis.


What it does

  • Keyword search across Reddit — 25 posts per page, with cursor-based paging
  • Subreddit scoping — restrict to one or many communities
  • Five sort orders — relevance, hot, top score, most recent, most commented
  • Time filtering — hour through to all-time
  • Comment threads — up to 300 comments per post, nested replies preserved, with depth and, where reported, the parent for every comment
  • Honest empty results — a query that matches nothing returns nothing, rather than padding with irrelevant posts

What it does not do

Stated plainly so there are no surprises after you have paid for a run.

Not supportedNotes
Searching inside commentsComments are retrieved per post, after that post has been found by a post search
Scraping a specific post by URLPosts are reached through search only
User profiles or user historyNot available
Private, quarantined or deleted contentReturned as unavailable
Media file downloadsImage and video URLs are returned; files are not fetched
Live monitoring or streamingEach run is a point-in-time snapshot. Use Apify Schedules for recurring runs

Input

FieldTypeDefaultDescription
querystringKeywords to search for. Optional if subreddits is set, but one of the two is required
subredditsarray[]Community names without the r/ prefix, e.g. ["startups", "SaaS"]. Empty searches all of Reddit
sortenumrelevancerelevance, hot, top, new, comments
timeFilterenumallhour, day, week, month, year, all. Applies only to top and comments sort orders — see Limits
maxPostsinteger100Upper bound on posts returned. Max 1000
includeCommentsbooleanfalseRetrieve comment threads. Charged separately
maxPostsToCommentinteger25How many of the returned posts get their comments retrieved. Max 500
maxCommentsPerPostinteger100Comments per post, including nested replies. Max 300

Example input

{
"query": "project management software",
"subreddits": ["startups", "SaaS"],
"sort": "relevance",
"timeFilter": "all",
"maxPosts": 100,
"includeComments": true,
"maxPostsToComment": 25,
"maxCommentsPerPost": 100
}

Output

One record per post. Every record has the same shape — comment fields are always present, even when comments were not requested.

FieldTypeDescription
idstringReddit fullname, including the type prefix, e.g. t3_1ps7lis
titlestringPost title
subredditstring | nullCommunity name, without r/. null when the community is not returned with the post
subredditSubscribersnumber | nullCommunity size at time of retrieval
authorstring | nullUsername. null when the account is deleted
scorenumberNet upvotes
upvoteRationumber | nullProportion of votes that are upvotes, 01
numCommentsnumberReddit's own comment count. Includes deleted comments, so it is usually higher than commentsRetrieved
postedAtstringISO 8601 UTC
selfTextstring | nullPost body. null for link and media posts
postTypeenumtext, link, image, video
thumbnailUrlstring | nullPreview image
isNsfwbooleanMarked over-18
isSpoilerbooleanMarked spoiler
urlstringThe Reddit thread — use this to reach the discussion
contentUrlstring | nullThe outbound link for link and media posts. null for text posts
commentsarrayComment objects, flattened in thread order. Empty unless requested
commentsRetrievednumberHow many comments this record contains
commentsRemainingbooleantrue if further comments exist that were not retrieved
commentsStatusenumretrieved, skipped_no_comments, skipped_limit, not_requested, unavailable

Comment object

FieldTypeDescription
idstringComment fullname, e.g. t1_fl28mc9
authorstring | nullUsername, null when deleted
textstringComment body
scorenumberNet upvotes
postedAtstringISO 8601 UTC
depthnumber0 is top level, 1 is a reply, 2 a reply to a reply, and so on
parentIdstring | nullThe post or comment this replies to. null when the source data does not include a parent reference
replyCountnumberDirect replies, including any not retrieved

Example output

{
"id": "t3_1ps7lis",
"title": "best project management software 2026 for small teams",
"subreddit": "SaaS",
"subredditSubscribers": 412883,
"author": "Old_Mention_4851",
"score": 17,
"upvoteRatio": 0.89,
"numComments": 52,
"postedAt": "2025-12-21T14:20:48Z",
"selfText": "i'm 29 and managing a small remote team at a startup...",
"postType": "text",
"thumbnailUrl": null,
"isNsfw": false,
"isSpoiler": false,
"url": "https://www.reddit.com/r/SaaS/comments/1ps7lis/best_project_management_software/",
"contentUrl": null,
"comments": [
{
"id": "t1_n2k4xqa",
"author": "YamNo178",
"text": "Linear is solid but for small teams I'd go with Notion first.",
"score": 3,
"postedAt": "2025-12-21T16:02:11Z",
"depth": 0,
"parentId": "t3_1ps7lis",
"replyCount": 2
}
],
"commentsRetrieved": 22,
"commentsRemaining": true,
"commentsStatus": "retrieved"
}

Pricing

Charged per result, plus a small fixed fee when a run starts.

EventPrice
Run start$0.005 per run
Post$1.49 per 1,000 posts
Comment$0.99 per 1,000 comments

Worked examples

Spot check — 100 posts, no comments 100 × $0.00149 + $0.005 = $0.154

Research pull — 100 posts with comments, with maxPostsToComment raised to 100 (≈50 comments each, ≈5,000 comments) 100 × $0.00149 + 5,000 × $0.00099 + $0.005 = $5.10

Bulk — 1,000 posts, no comments 1,000 × $0.00149 + $0.005 = $1.50

Set Maximum cost per run in the run options to cap spend. The Actor stops cleanly at that ceiling and returns everything collected and charged for up to that point.


Limits

Worth reading before your first run.

The time window is ignored on three of the five sort orders. Reddit applies it only to top and comments. Choose relevance, hot or new and any time window other than all is dropped — the run log tells you when this happens.

Large threads are not returned in full. A post with 13,000 comments returns roughly 100 by default, or up to 300 with maxCommentsPerPost raised. commentsRemaining tells you when more exist.

numComments will exceed commentsRetrieved. Reddit's counter includes deleted and moderator-removed comments that no longer render. A post reporting 52 comments may legitimately return 22.

Posts are retrieved in pages of 25. Setting maxPosts to 30 makes two page requests.

One post per record. Comments are nested inside their post rather than being separate records.


Tips

  • Scope to subreddits for signal. An unscoped search for "project management" returns results from 17 unrelated communities. Naming two or three relevant subreddits removes almost all of that noise.
  • Leave comments off for discovery. Find the posts first, then re-run with includeComments on a narrower maxPosts for the ones worth reading.
  • Use top + a time window for research, new for recency. Do not combine new with a time window — it has no effect.
  • url is the thread; contentUrl is the outbound link. For an image post, url is the Reddit discussion and contentUrl is the image itself.

Support

Report a problem through the Issues tab on this Actor's page. Issues are acknowledged within two business days.

When reporting, please include the run ID, the input you used, and what you expected.