Reddit Scraper [💰$1.3/1K] | Posts | Comments | Subreddit Data
Pricing
from $1.00 / 1,000 results
Reddit Scraper [💰$1.3/1K] | Posts | Comments | Subreddit Data
Scrape Reddit posts, comments, user profiles and subreddits by URL or keyword - full text, scores, authors and timestamps for sentiment, trend and market research. No Reddit API key needed.
Pricing
from $1.00 / 1,000 results
Rating
5.0
(2)
Developer
Ahmed Jasarevic
Maintained by CommunityActor stats
0
Bookmarked
30
Total users
1
Monthly active users
18 days ago
Last modified
Categories
Features
Share
Reddit Scraper Pro - Posts, Comments, Users and Subreddit Data
The Reddit Scraper Pro collects public Reddit posts, comments and user profiles by URL or keyword. It returns full post text, scores, authors, timestamps, subreddit, flair, media links, comment text and basic user karma without requiring a Reddit API key.
Use it for sentiment research, trend detection, community monitoring, product feedback and audience analysis. The Actor uses an RSS-first strategy, then falls back to embedded JSON and modern Reddit HTML parsing when available. One dataset row represents one post, comment or user record.
Main Use Cases for Reddit Community Research
- Sentiment analysis - collect post and comment text for brand, product or market sentiment research.
- Trend detection - monitor keywords and subreddits for emerging topics and recurring questions.
- Community monitoring - track new posts, scores and comment activity in a niche subreddit.
- Product feedback - gather candid user complaints, feature requests and comparisons.
- Competitor research - analyze how users discuss competing products and brands.
- Audience discovery - identify active users and subreddits for a topic.
- AI research pipelines - feed an LLM source-linked posts and comments with timestamps.
How It Works

Provide subreddit, post or user URLs in startUrls, or use searchKeywords to run Reddit searches. The Actor classifies each URL before fetching: subreddit pages are paginated, post URLs are parsed for a post plus comments, and user URLs are fetched only when scrapeUsers is enabled.
The parser tries multiple public surfaces. It first reads RSS where possible, then embedded JSON and modern shreddit HTML, with a legacy article fallback. This design keeps the Actor working when one Reddit surface is blocked or returns a JavaScript shell, but the exact fields can differ by source strategy.
Post rows carry title, body, author, score, upvote ratio, comment count, subreddit, flair, NSFW and spoiler flags, timestamps, media URLs and a source marker. Comment rows carry comment ID, post ID, author, comment text, score, permalink, subreddit and timestamp. User rows carry username, total karma and profile URL.
maxPosts is shared across all subreddit, post and search sources. maxComments is the effective comment budget, and the current build uses it as the reliable comment control; scrapeComments is present for compatibility. Set maxComments to zero to skip comment extraction. A deleted or renamed post can return a post row with zero comments even when a larger budget was requested.
Input
Use URLs, search keywords or both. The post and comment budgets are shared across the whole run, so a large URL list does not multiply the limits.
| Field | Type | Required | Default | What it does |
|---|---|---|---|---|
startUrls | string[] | Yes | r/programming | Subreddit, post or user profile URLs. User URLs are processed only when scrapeUsers is enabled. |
searchKeywords | string[] | No | [] | Keywords searched on Reddit. Each keyword can produce its own result set within the post budget. |
maxPosts | integer | No | 10 | Maximum posts saved across all sources. |
maxComments | integer | No | 0 | Maximum comments saved across all post URLs. Zero skips comments. |
sortBy | string | No | new | Sort order for subreddit or search results, such as new, hot, top or relevance. |
scrapePosts | boolean | No | true | Whether to save post records. |
scrapeComments | boolean | No | false | Present for compatibility. Use maxComments as the effective comment budget in the current build. |
scrapeUsers | boolean | No | false | Whether to process user profile URLs and save basic user records. |
proxyConfiguration | object | No | None | Apify proxy configuration. Use a proxy for larger or repeated runs. |
Start with one subreddit URL and a small post budget. Add post URLs and raise maxComments only after confirming which parser path Reddit serves. Reddit changes its HTML and rate limits frequently, so a run that returns RSS-level fields may omit comment-level detail. Empty comments are not necessarily a parser failure; the post may be deleted, locked or RSS-only.
Output
Rows have a type of post, comment or user. The field set varies by type and by the parsing surface that succeeded.
| Field group | Fields | What you get |
|---|---|---|
| Record type | type, _source | Whether the row is a post, comment or user, plus the parser strategy that produced it. |
| Post | postId, title, postText, url, text, author, subreddit, flair | Post identity, body, permalink, author, subreddit and flair. |
| Engagement | score, upvotes, downvotes, upvoteRatio, numberOfComments | Net score, vote counts, ratio and comment count when the surface exposes them. |
| Comment | commentId, commentText, permalink, score, username | Comment identity, body, permalink, score and author. |
| User | username, totalKarma, profileUrl | Basic public profile record when a user URL is processed. |
| Media and flags | externalUrl, mediaUrls, isNsfw, isSpoiler, isStickied | Outbound link, media URLs and post flags. |
| Time | timestamp, createdAt, createdUtc | ISO timestamp, RSS creation text and Unix creation time when available. |
| Search provenance | searchKeyword | The keyword that produced a search row. |
RSS post rows can have comments: 0 and no numberOfComments, while HTML rows may expose a richer field set. upvoteRatio is often null. A user record contains only basic karma and profile data, not a full posting history. Check _source before comparing rows, because field availability is parser-dependent.
Pricing
Pricing is pay-per-event. A start event is charged per run and each saved post, comment or user row is charged as a result.
| Event | FREE | BRONZE | SILVER | GOLD+ |
|---|---|---|---|---|
| Actor start, per run | $0.00005 | $0.00005 | $0.00005 | $0.00005 |
| Post, comment or user | $0.0013 | $0.0012 | $0.0012 | $0.0012 |
That is $1.30 per 1,000 rows on FREE and $1.20 per 1,000 on BRONZE and higher tiers. A run with 100 posts and 500 comments is billed on all 600 rows, so set maxComments deliberately. The default comment budget is zero.
Example Input
{"startUrls": [{"url": "https://www.reddit.com/r/programming/"}],"maxPosts": 25,"maxComments": 100,"sortBy": "new","scrapeComments": true,"scrapeUsers": false,"proxyConfiguration": {"useApifyProxy": true}}
This fetches up to 25 new posts from r/programming and up to 100 comments from any post URLs. A subreddit-only URL produces posts; to test comments, add a specific post URL.
Example Output
{"type": "post","postId": "1xci6t4","title": "System Design Masterclass: 8 Patterns Behind High-Scale Distributed Systems","url": "https://www.reddit.com/r/programming/comments/1xci6t4/system_design_masterclass_8_patterns_behind/","text": null,"author": "u/mostaptname","comments": 0,"createdAt": "2026-10-22T13:11:49+00:00","subreddit": "r/programming","score": 0,"_source": "rss"}
This is a real RSS-backed post row. The text and createdAt shapes differ from HTML rows, and comments is an RSS count field rather than the number of scraped comments. Check _source when normalizing.
Integrations and Automation
Call the Actor through the Apify API, Apify MCP, a schedule, Zapier, Make or n8n. Export JSON, CSV or Excel, or push rows to Google Sheets, Airtable, a database, a sentiment model or a webhook.
For sentiment, separate posts and comments with type, clean text, and keep score and createdAt so a model can weight recency and engagement. Do not treat an RSS row with zero comments as proof that a discussion had no replies.
For monitoring, deduplicate on postId or commentId and store _source and the scrape timestamp. Schedule runs at a cadence that respects Reddit rate limits, and keep a proxy enabled for larger jobs.
Related Actors
- Hacker News Scraper - technology news, comments and rankings from Hacker News.
- Google News Actor - news search results and article metadata across topics.
- Product Hunt Scraper - product launches, makers and early user feedback.
FAQ
Do I need a Reddit API key?
No. The Actor uses public RSS, HTML and embedded data surfaces and does not require a Reddit developer account or OAuth token.
Why did a post have no comments?
The post may be deleted, locked, RSS-only or served from a surface without comment HTML. Raise maxComments and use a direct post URL, but expect some posts to remain empty.
Is scrapeComments applied?
The field is present for compatibility. In the current build, use maxComments as the effective comment budget and set it to zero to skip comments.
How many users can I collect?
User records are produced only for user profile URLs when scrapeUsers is true. Each user row contains basic karma and profile data, not a full posting history.
Are post and comment fields consistent?
Not always. RSS, embedded JSON and HTML rows can expose different fields. Check _source before comparing comments, createdAt or vote fields.
Is maxPosts shared across URLs and keywords?
Yes. The post budget is global for the run, not per subreddit or keyword. The same applies to maxComments across post URLs.
For AI Agents and LLM Apps
The Actor provides source-linked Reddit posts, comments and basic user records with scores, timestamps and parser provenance. It is suitable for sentiment, trend and community-research agents through the Apify API or Apify MCP.
- Branch on
typebefore reading fields; post, comment and user rows are different shapes. - Read
_sourceto understand field availability, especially for comment counts and RSS timestamps. - Do not treat a zero comment count as proof of no discussion; the surface may not expose comments.
- Deduplicate on
postIdorcommentIdand keepcreatedAtortimestampfor recency weighting. - The post and comment budgets are global for the run, and every saved row is billable.
Legal and Compliance
This Actor is an independent tool and is not affiliated with, endorsed by or sponsored by Reddit. It reads publicly available posts, comments and profiles for research and monitoring. Reddit terms, subreddit rules and applicable privacy law still apply.
Reddit content can include personal data and copyrighted text. Use it for legitimate research, keep only what you need, honor deletion requests and do not republish content in violation of copyright or privacy rights. Avoid using the Actor for harassment, surveillance or manipulation.
SEO Keywords
Reddit scraper, Reddit posts scraper, Reddit comments scraper, Reddit API alternative, Reddit user data, subreddit scraper, Reddit sentiment analysis, Reddit market research, Reddit dataset, Reddit keyword search, Reddit monitoring, Reddit comments dataset, Reddit research tool, Reddit post data, community sentiment data, Reddit trend detection, Reddit profile scraper, social media research, Reddit lead generation, Reddit JSON alternative