Reddit Scraper API: Posts, Comments, Keywords, Subreddits ++
Pricing
from $1.49 / 1,000 posts
Reddit Scraper API: Posts, Comments, Keywords, Subreddits ++
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 posts
Rating
5.0
(4)
Developer
Socialhz
Maintained by CommunityActor stats
0
Bookmarked
25
Total users
22
Monthly active users
9 days ago
Last modified
Categories
Share
Reddit Scraper API: Posts & Comment Threads
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
Input
| Field | Type | Default | Description |
|---|---|---|---|
query | string | — | Keywords to search for. Optional if subreddits is set, but one of the two is required |
subreddits | array | [] | Community names without the r/ prefix, e.g. ["startups", "SaaS"]. Empty searches all of Reddit |
sort | enum | relevance | relevance, hot, top, new, comments |
timeFilter | enum | all | hour, day, week, month, year, all. Applies only to top and comments sort orders — see Limits |
maxPosts | integer | 100 | Upper bound on posts returned. Max 1000 |
includeComments | boolean | false | Retrieve comment threads. Charged separately |
maxPostsToComment | integer | 25 | How many of the returned posts get their comments retrieved. Max 500 |
maxCommentsPerPost | integer | 100 | Comments 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.
| Field | Type | Description |
|---|---|---|
id | string | Reddit fullname, including the type prefix, e.g. t3_1ps7lis |
title | string | Post title |
subreddit | string | null | Community name, without r/. null when the community is not returned with the post |
subredditSubscribers | number | null | Community size at time of retrieval |
author | string | null | Username. null when the account is deleted |
score | number | Net upvotes |
upvoteRatio | number | null | Proportion of votes that are upvotes, 0–1 |
numComments | number | Reddit's own comment count. Includes deleted comments, so it is usually higher than commentsRetrieved |
postedAt | string | ISO 8601 UTC |
selfText | string | null | Post body. null for link and media posts |
postType | enum | text, link, image, video |
thumbnailUrl | string | null | Preview image |
isNsfw | boolean | Marked over-18 |
isSpoiler | boolean | Marked spoiler |
url | string | The Reddit thread — use this to reach the discussion |
contentUrl | string | null | The outbound link for link and media posts. null for text posts |
comments | array | Comment objects, flattened in thread order. Empty unless requested |
commentsRetrieved | number | How many comments this record contains |
commentsRemaining | boolean | true if further comments exist that were not retrieved |
commentsStatus | enum | retrieved, skipped_no_comments, skipped_limit, not_requested, unavailable |
Comment object
| Field | Type | Description |
|---|---|---|
id | string | Comment fullname, e.g. t1_fl28mc9 |
author | string | null | Username, null when deleted |
text | string | Comment body |
score | number | Net upvotes |
postedAt | string | ISO 8601 UTC |
depth | number | 0 is top level, 1 is a reply, 2 a reply to a reply, and so on |
parentId | string | null | The post or comment this replies to. null when the source data does not include a parent reference |
replyCount | number | Direct 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.
| Event | Price |
|---|---|
| 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.
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
includeCommentson a narrowermaxPostsfor the ones worth reading. - Use
top+ a time window for research,newfor recency. Do not combinenewwith a time window — it has no effect. urlis the thread;contentUrlis the outbound link. For an image post,urlis the Reddit discussion andcontentUrlis the image itself.
Support
Report a problem through the Issues tab on this Actor's page. Issues are reviewed regularly.
When reporting, please include the run ID, the input you used, and what you expected.
For volume enquiries, custom requirements, or anything not specific to a single run, email socialhtz@gmail.com.