Reddit Scraper
Under maintenancePricing
from $0.50 / 1,000 results
Reddit Scraper
Under maintenanceScrape Reddit posts and comments from any subreddit or search query. Score, upvote ratio, author, flair, awards and full comment threads, with filters for score, date and keywords.
Pricing
from $0.50 / 1,000 results
Rating
0.0
(0)
Developer
Juan ignacio Veltri
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
6 days ago
Last modified
Categories
Share
Reddit Scraper — posts and comment threads from any subreddit or search
Scrape posts from any subreddit or search query, with score, upvote ratio, flair, awards, author and — optionally — the full comment thread, nested replies included.
Reddit answers JSON on any of its URLs, so this Actor reads its data feed rather than its HTML. Nothing here depends on markup, which means a Reddit redesign does not break your integration.
Quick start
Everything hot in a subreddit:
{ "subreddits": ["programming"], "sort": "hot" }
The best of the week across several communities, only substantial posts:
{"subreddits": ["argentina", "devops", "r/webdev"],"sort": "top","time": "week","minScore": 50,"minComments": 10}
Search all of Reddit, or inside one community:
{"searchQueries": ["web scraping", "r/programming: rust vs go"],"sort": "top","time": "month"}
Write r/subreddit: your keywords to restrict a query to one community.
Posts and their discussions
{"subreddits": ["askprogramming"],"maxCommentsPerPost": 50,"minComments": 5}
Comments arrive nested inside each post, with depth (0 is a reply to the post, 1 a reply to a
comment) and isOriginalPoster so you can follow a thread.
Each post with comments costs one extra request, so maxCommentsPerPost: 0 — the default —
keeps a run cheap. Filters are applied before those requests: a strict minScore makes the run
cheaper, not more expensive.
Monitoring a subreddit
Turn includeSeen off and schedule it. Each run then returns only posts it has not returned before:
{ "subreddits": ["startups"], "sort": "new", "includeSeen": false }
Use a Schedule so the runs share storage — that is what lets the Actor remember what it already sent you.
Input
| Field | Type | Default | Description |
|---|---|---|---|
subreddits | array | ["programming"] | Name, r/name, or full URL |
searchQueries | array | — | Keywords. r/sub: terms restricts to one community |
sort | select | hot | hot, new, top, rising, controversial |
time | select | week | Window for Top, Controversial and searches |
maxPostsPerSource | integer | 0 | Cap per subreddit or query. 0 = no cap |
maxCommentsPerPost | integer | 0 | Comments per post. 0 = do not fetch them |
minScore / minComments | integer | — | Drop posts below these |
keywords | array | — | Only posts mentioning any of these |
postedWithinDays | integer | — | Only posts newer than N days |
onlyTextPosts | boolean | false | Drop link posts |
excludeNsfw | boolean | false | Drop posts marked over 18 |
excludePinned | boolean | true | Drop moderator-pinned posts, usually subreddit rules |
maxItems | integer | 500 | Total cap. 0 = no cap |
includeSeen | boolean | true | Off = only posts not seen in previous runs |
Output
{"id": "reddit:1tlh5aj","url": "https://www.reddit.com/r/programming/comments/1tlh5aj/...","platform": "reddit","community": "programming","title": "Announcement: We've Updated The Rules","text": "After temporarily banning LLM-related content over April...","author": "ChemicalRascal","authorUrl": "https://www.reddit.com/user/ChemicalRascal","score": 950,"upvoteRatio": 0.94,"commentsCount": 181,"publishedAt": "2026-05-23T09:54:37.000Z","flair": null,"isNsfw": false,"isPinned": true,"linkUrl": null,"linkDomain": null,"awardsCount": 0,"comments": []}
A few deliberate choices:
linkUrlisnullon text posts. Reddit fills itsurlfield with the post's own permalink when there is nothing linked, and copying that would fill the column with noise.linkUrlis only set when the post actually points somewhere else.thumbnailisnullunless there is a real image. Reddit puts the stringsself,defaultornsfwthere otherwise.authorisnullfor deleted accounts, not the literal[deleted].
Notes and limits
- Reddit caps every listing at roughly 1000 posts. To go further back, change
sortortimerather than paginating — the Actor stops when Reddit stops returning a cursor. - Private and banned subreddits are reported, not retried. Reddit answers with a reason instead of a listing, and the run logs which subreddit and why, then continues with the rest.
- Posts with no date are dropped by
postedWithinDays, because claiming they are recent would misreport the filter you asked for.
Pricing
Pay per result. You are charged for posts that actually land in your dataset — filtered out and duplicate rows cost nothing.