Reddit Scraper API - Posts, Comments & Monitoring
Pricing
from $0.40 / 1,000 results
Reddit Scraper API - Posts, Comments & Monitoring
Scrape public Reddit posts, search, subreddits, media, and nested comments or monitor only newly observed posts. Anonymous read-only OAuth; no browser, proxy, login, cookies, or API key.
Pricing
from $0.40 / 1,000 results
Rating
5.0
(1)
Developer
Thirdwatch
Maintained by CommunityActor stats
3
Bookmarked
231
Total users
40
Monthly active users
5 hours ago
Last modified
Categories
Share
Reddit Scraper API - Posts, Comments, Search & Monitoring
Thirdwatch portfolio: 5K users across 88 public Actors, 2M+ records delivered, and >99% run success. Explore all Thirdwatch Actors.
Extract public Reddit posts, subreddit listings, global search results, self-post text, engagement, media, and nested comments through Reddit's anonymous read-only OAuth API. No browser, Reddit login, cookies, user-supplied API key, or proxy.
Why this Actor
- Low-cost anonymous OAuth — structured JSON at 256 MB, with no stealth-browser startup fee or residential transfer.
- 100 posts per page — paginate automatically to 1,000 posts per query.
- Three query modes in one field — global search, subreddit listings, and search within a subreddit.
- Full public post bodies — self-post text, media, flair, awards, crossposts, and moderation flags arrive in the structured response.
- Comments included in the post price — embed up to 100 top or nested comments without paying per comment row.
- Persistent new-post monitoring — the first run creates a baseline; later complete runs return only unseen post IDs.
- Zero unchanged result charges — a scheduled monitor with no new posts writes no dataset rows.
- No duplicate billing — overlapping queries, URLs, and subreddit pages are deduplicated by Reddit post ID across the run.
Query patterns
| Input | Behavior |
|---|---|
AI agents | Search all public Reddit posts |
r/programming | Browse a public subreddit using the selected sort |
r/programming: Python 3.14 | Search within one subreddit |
startUrls | Paginate an existing Reddit listing/search page or fetch a post URL |
postUrls | Fetch exact public posts and optionally their comments |
Basic subreddit run
{"queries": ["r/programming", "r/python"],"sort": "new","maxResults": 100}
Global and subreddit-specific research
{"queries": ["AI coding agents","r/SaaS: customer support automation"],"sort": "relevance","timeFilter": "month","maxResults": 250,"minScore": 5}
Scheduled new-post monitoring
{"queries": ["r/devops: alternative to", "r/sysadmin: recommend"],"sort": "new","skipPinnedPosts": true,"maxResults": 50,"includeComments": true,"maxCommentsPerPost": 20,"monitorMode": "new-posts","monitorStoreName": "infrastructure-buyer-signals"}
Save that input as an Apify Task and attach a Schedule. The first successful run emits the current baseline with changeType: "baseline". Later successful runs using the same monitor name emit only unseen IDs with changeType: "new_post". The Actor commits state after publishing rows, providing at-least-once delivery. It refuses to advance state if any configured target is incomplete.
Use one monitorStoreName per independent watch and do not overlap runs that share it. Changing a query, sort, filter, or result depth changes the cohort; use a new monitor name. newerThan remains available for one-off timestamp-filtered exports but is not needed for persistent monitoring.
Post and comment extraction
{"postUrls": ["https://www.reddit.com/r/programming/comments/POST_ID/example/"],"includeComments": true,"maxCommentsPerPost": 50,"maxCommentDepth": 3}
Output fields
Every post row includes:
- identity:
id,title,url,permalink,sourceQuery - author/community:
author,subreddit,flair - content:
selftext,post_hint,domain,mediaUrl,thumbnail,gallery_images - engagement:
score,upvoteRatio,numComments,gildingCount - flags:
isNSFW,is_spoiler,is_stickied,is_self,is_video,is_crosspost,is_locked,is_archived - timestamps:
created,scrapedAt - monitoring:
changeType,firstSeenAtwhenmonitorModeisnew-posts - optional comments:
topComments[]withid,parentId,author,body,score,depth,created, andpermalink
Example result
{"id": "1uxtv30","title": "New Python type checker","author": "TheSeriousTrader","subreddit": "Python","url": "https://www.reddit.com/r/Python/comments/1uxtv30/new_python_type_checker/","permalink": "https://www.reddit.com/r/Python/comments/1uxtv30/new_python_type_checker/","selftext": "Was checking out some Python type checkers...","score": 42,"upvoteRatio": 0.88,"numComments": 16,"created": "2026-07-16T05:39:00+00:00","flair": "Discussion","is_self": true,"topComments": []}
Live pricing
You pay only for unique post rows written to the dataset. Empty searches, duplicates, failed requests, and comments embedded inside a post row do not create additional result charges.
| Apify tier | Price per 1,000 posts |
|---|---|
| FREE | $1.00 |
| BRONZE | $0.80 |
| SILVER | $0.60 |
| GOLD | $0.40 |
There is no browser-start or proxy fee. The Pricing tab is the authoritative live price.
Reliability and responsible use
- The Actor collects public Reddit content only. Private, banned, quarantined, removed, or login-only content is unavailable.
- Requests are globally rate-limited with bounded retries for
429, authorization refreshes, timeouts, and transient network failures. - Persistent monitors keep at most 50,000 post identities. The oldest identities can eventually age out of extremely high-volume watches.
- Monitoring visits every configured target but buffers at most 2,000 current post observations before diffing. With large watchlists, the Actor lowers
maxResultsevenly per listing; split broader cohorts into separate Tasks. - Monitoring state updates only after every configured target completes. A failed page or deadline guard fails closed instead of corrupting the baseline.
- Reddit scores and comment counts can change between requests and may be hidden for very new posts.
- Comment-enabled listing runs are capped at 100 posts total across all queries; exact
postUrlsreuse their detail response and remain separate. - Comments come from Reddit's initial public comment tree; hidden “load more comments” branches are not expanded.
- Search relevance and geographic availability are controlled by Reddit.
Workflows and guides
- Scrape Reddit for community research
- Monitor subreddits for B2B buyer signals
- Track Reddit discourse on product launches
Pairs well with Twitter/X Scraper, Google News Scraper, and YouTube Scraper for cross-channel listening.
Last verified: 2026-07