Reddit Scraper | Posts | Comments | Subreddit Data

Merci · @mercidev

Scrape Reddit posts, comments, user profiles and subreddits by URL or keyword - full text, scores, authors and timestamps for sentiment, trend and research.

About

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

Reddit posts and comments becoming structured rows with scores, authors, subreddits and timestamps

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.

FieldTypeRequiredDefaultWhat it does
startUrlsstring[]Yesr/programmingSubreddit, post or user profile URLs. User URLs are processed only when scrapeUsers is enabled.
searchKeywordsstring[]No[]Keywords searched on Reddit. Each keyword can produce its own result set within the post budget.
maxPostsintegerNo10Maximum posts saved across all sources.
maxCommentsintegerNo0Maximum comments saved across all post URLs. Zero skips comments.
sortBystringNonewSort order for subreddit or search results, such as new, hot, top or relevance.
scrapePostsbooleanNotrueWhether to save post records.
scrapeCommentsbooleanNofalsePresent for compatibility. Use maxComments as the effective comment budget in the current build.
scrapeUsersbooleanNofalseWhether to process user profile URLs and save basic user records.
proxyConfigurationobjectNoNoneproxy 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 groupFieldsWhat you get
Record typetype, _sourceWhether the row is a post, comment or user, plus the parser strategy that produced it.
PostpostId, title, postText, url, text, author, subreddit, flairPost identity, body, permalink, author, subreddit and flair.
Engagementscore, upvotes, downvotes, upvoteRatio, numberOfCommentsNet score, vote counts, ratio and comment count when the surface exposes them.
CommentcommentId, commentText, permalink, score, usernameComment identity, body, permalink, score and author.
Userusername, totalKarma, profileUrlBasic public profile record when a user URL is processed.
Media and flagsexternalUrl, mediaUrls, isNsfw, isSpoiler, isStickiedOutbound link, media URLs and post flags.
Timetimestamp, createdAt, createdUtcISO timestamp, RSS creation text and Unix creation time when available.
Search provenancesearchKeywordThe 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.

Example Input


{
  "startUrls": [
    {
      "url": "https://www.reddit.com/r/programming/"
    }
  ],
  "maxPosts": 25,
  "maxComments": 100,
  "sortBy": "new",
  "scrapeComments": true,
  "scrapeUsers": false,
  "proxyConfiguration": {
    "useProxy": 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 API, 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.

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 API or MCP.

  • Branch on type before reading fields; post, comment and user rows are different shapes.
  • Read _source to 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 postId or commentId and keep createdAt or timestamp for 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

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.

More Actors from the same publisher.

View all from @mercidev