Reddit Scraper: Posts, Comments, Search & Users
Pricing
from $1.50 / 1,000 dataset items
Reddit Scraper: Posts, Comments, Search & Users
Scrape Reddit posts, comments, subreddits and user profiles by keyword, subreddit, URL or username. No proxy needed, no API key. Buyer-intent tags on every row, monitor mode returns only new items on scheduled runs. Pay only for results.
Pricing
from $1.50 / 1,000 dataset items
Rating
0.0
(0)
Developer
axly
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Turn any Reddit keyword, subreddit, post URL or username into clean JSON rows: posts with full text and media links, flattened comment threads, subreddit stats and user profiles. It reads Reddit the way the official mobile app does, so it needs no proxy and no API key, and it adds two things most Reddit scrapers charge extra for or do not have:
- Buyer-intent tags. Every post and comment carries
intent_matches, the list of phrases it contains from an editable keyword list ("looking for", "recommend", "alternative to", "too expensive", "hiring"…). Filter the dataset to the rows that are asking for something. - Monitor mode. Turn on Only new since last run and a scheduled run returns only posts and comments it has not delivered before. Brand monitoring and lead alerts without duplicates.
Post comment threads are temporarily unavailable. Since 24 October 2026 Reddit blocks the endpoint that returns a post's comment tree, so with Include comments on, posts are returned without their comments (the run still succeeds). Posts, search, subreddit feeds, post URLs, user profiles and a user's own comment history (
userContent) work as before. This note will be removed when comment threads are back.
Built for marketers tracking brand and competitor mentions, lead-gen agencies mining "any recommendations?" threads, researchers building sentiment datasets, and AI builders feeding Reddit discussions into LLM pipelines.
What you get
One row per item, with a type column so posts, comments, users and subreddits can share a dataset or be split in the Overview tabs.
Posts (type: post)
| Field | Description |
|---|---|
id, url | Reddit post id and permalink |
title, text | Title and self-text (markdown as written) |
subreddit, subreddit_subscribers | Where it was posted and the community size |
author, author_id, author_flair | Who posted it |
score, upvote_ratio, num_comments, awards | Engagement |
created_at, edited_at | ISO-8601 UTC timestamps |
flair, is_self, is_video, is_nsfw, is_spoiler, is_stickied, is_locked | Post attributes |
domain, external_url, media_urls, thumbnail | Linked site and media (images, galleries, Reddit video) |
crosspost_parent | Original post id for crossposts |
intent_matches | Intent phrases found in title + text |
query, source | The search that found it; search, subreddit, url or user |
scraped_at | When the row was collected |
Comments (type: comment)
Comment rows currently come only from a user's comment history (usernames with userContent set to comments or overview); post comment threads are temporarily unavailable (see the note at the top).
| Field | Description |
|---|---|
id, url | Comment id and permalink |
post_id, post_title, post_url | The thread it belongs to |
parent_id, depth | Position in the tree (t3_… = top-level reply to the post, t1_… = reply to a comment) |
text | Comment body (markdown) |
author, author_id, author_flair, is_submitter | Who wrote it and whether they are the original poster |
score, controversiality, awards, distinguished, is_stickied | Engagement and moderator flags |
created_at, edited_at | ISO-8601 UTC |
intent_matches | Intent phrases found in the body |
Users (type: user) and subreddits (type: subreddit)
Users: username, display_name, bio, created_at, link_karma, comment_karma, total_karma, is_verified, is_mod, is_gold, is_employee, has_verified_email, icon_url.
Subreddits: name, title, description, sidebar, subscribers, created_at, is_nsfw, subreddit_type, language, icon_url.
With Enrich authors on, posts and comments also carry author_karma, author_created_at and author_is_verified, so leads can be ranked by account age and activity.
Use cases
- Lead generation. Search "looking for a CRM" across r/smallbusiness and r/sales, keep rows whose
intent_matchesis not empty, enrich authors, and hand the list to outreach. - Brand and competitor monitoring. Schedule a daily run on your brand names with monitor mode on and a webhook to Slack; each run delivers only the new threads.
- Market and product research. Pull the top threads of the year from a subreddit with all comments and read what people complain about before building.
- Sentiment and AI datasets. Export thousands of posts and threaded comments with timestamps and scores as training or evaluation data.
- Community analytics. Track subscriber and active-user counts of competing subreddits, or profile the most active contributors of a niche.
Input
| Parameter | Type | Default | Description |
|---|---|---|---|
searchQueries | array | – | Keywords or phrases. Reddit operators work (title:, selftext:, author:, flair:, site:, AND, OR, NOT, quotes). |
subreddits | array | – | With queries: search inside these subreddits. Without: scrape their feeds. |
startUrls | array | – | Post, subreddit or user URLs. |
usernames | array | – | Users to profile; userContent picks profile only, posts, comments or both. |
searchSort | enum | relevance | relevance, hot, top, new, comments |
listingSort | enum | new | new, hot, top, rising, controversial |
timeFilter | enum | month | hour, day, week, month, year, all |
postedAfter, postedBefore | date | – | UTC date filter on posts, e.g. 2026-09-01. |
includeComments | boolean | false | Add the comment tree of every post as comment rows. Temporarily unavailable: posts are returned without comments. |
maxCommentsPerPost | integer | 50 | Cap per post; collapsed threads are expanded as needed. |
commentSort | enum | confidence | confidence (best), top, new, controversial, old, qa |
intentKeywords | array | 29 phrases | Edit or clear the intent list. |
enrichAuthors | boolean | false | Author karma, account age and verification on every row. |
onlyNewSinceLastRun | boolean | false | Monitor mode: skip ids delivered by earlier runs with the same input. |
includeNsfw | boolean | false | Keep over-18 posts. |
maxPostsPerSource | integer | 100 | Posts per search, feed or user (Reddit serves at most about 1,000 per listing). |
maxItems | integer | 500 | Total rows for the run. |
proxyConfiguration | object | off | Optional Apify Proxy. Without it the actor runs at Reddit's limit of 100 calls per 10 minutes per IP and waits when the limit is reached; with it, it rotates IPs instead. |
Example input
{"searchQueries": ["web scraping tool recommendation"],"subreddits": ["webscraping", "dataengineering"],"timeFilter": "month","maxPostsPerSource": 10,"maxItems": 100}
Example output
{"type": "post","id": "1nq7o2x","url": "https://www.reddit.com/r/webscraping/comments/1nq7o2x/looking_for_a_tool_that_handles_cloudflare/","title": "Looking for a tool that handles Cloudflare","text": "We scrape about 50 retail sites and half of them moved behind Cloudflare this year...","subreddit": "webscraping","subreddit_subscribers": 103806,"author": "data_pipeline_dan","score": 41,"upvote_ratio": 0.93,"num_comments": 27,"created_at": "2026-09-26T14:03:11Z","flair": "Getting started","is_self": true,"is_nsfw": false,"media_urls": [],"intent_matches": ["looking for"],"query": "web scraping tool recommendation","source": "search","scraped_at": "2026-10-04T09:12:44Z"}
How many rows and how fast
Reddit answers 100 API calls per 10 minutes per IP. One call returns up to 100 posts; a post's comments cost one call plus one per 100 collapsed replies. Without a proxy a run of 1,000 posts takes under a minute; 100 posts with 50 comments each takes about 15 to 30 minutes because the actor waits for the window to reset. Enable Apify Proxy for runs that need thousands of comment threads: the actor switches to a fresh IP instead of waiting. Reddit itself serves at most about 1,000 items per listing or search; use narrower queries, subreddits or time filters to reach further back.
Scheduling and integrations
Schedule the actor in Apify (hourly, daily, weekly), turn on monitor mode, and attach a webhook or an integration (Slack, Google Sheets, Make, Zapier, n8n) to the run's dataset. Each run delivers only new items. The dataset can be downloaded as JSON, CSV, Excel or XML, or read through the Apify API.
Use with AI assistants
The actor can be called from any agent framework through the Apify API or the Apify MCP server. Ask the assistant to "search Reddit for people asking for alternatives to
FAQ
Do I need Reddit API credentials or a proxy? No. The actor uses the same anonymous access path as Reddit's mobile app. A proxy is optional and only speeds up very large runs.
Why fewer rows than I asked for? Reddit caps every listing and search at about 1,000 items, filters drop more, and private, quarantined or deleted content is skipped. You pay only for rows actually stored.
Are comments complete? Post comment threads are temporarily unavailable because Reddit blocks that endpoint (see the note at the top). When they are available, the actor flattens the full tree and expands collapsed "load more" stubs up to maxCommentsPerPost. Very long threads are cut at that cap in the order of commentSort.
How do date filters behave? postedAfter / postedBefore are applied to every post the run sees. Reddit's search returns at most a few hundred items per query, so for a date window use searchSort: top or relevance with a matching timeFilter, or scrape the subreddit feed with listingSort: new, which stops paging once it passes postedAfter. A loose query sorted by new returns only the newest few hundred posts.
Can I get only new posts each day? Yes. Keep the input identical, enable onlyNewSinceLastRun, and schedule the run. The memory is tied to the input; change the input and it starts fresh.
Is the data public? Everything returned is public Reddit content and public profile data. No login-only, private or deleted content is accessed. Respect Reddit's terms and local law when you use the data.
What happens when something fails? Unavailable subreddits, deleted posts or suspended users are logged and skipped; the run continues with the rest and reports what it did in the status message.