Reddit Scraper - Posts, Comments, Subreddits & Users avatar

Reddit Scraper - Posts, Comments, Subreddits & Users

Pricing

$7.00 / 1,000 results

Go to Apify Store
Reddit Scraper - Posts, Comments, Subreddits & Users

Reddit Scraper - Posts, Comments, Subreddits & Users

Scrape Reddit posts, comments, subreddits and user profiles by keyword or URL. Full comment threads, 45+ fields per post, search, NSFW and monitoring mode. No login, no account, no API key. Independent tool, not affiliated with Reddit.

Pricing

$7.00 / 1,000 results

Rating

0.0

(0)

Developer

Scrape Sage

Scrape Sage

Maintained by Community

Actor stats

0

Bookmarked

29

Total users

7

Monthly active users

10 days ago

Last modified

Share

Reddit Scraper — Posts, Comments, Subreddits & User Profiles (No Login)

Disclaimer: This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Reddit, Inc. or any of its subsidiaries. All trademarks mentioned are the property of their respective owners. "Reddit" is referenced only to describe the publicly available website this Actor collects data from.

Scrape Reddit at scale without an API key and without logging in. Pull posts, full comment threads, subreddit feeds, keyword search results, communities and user profiles into clean, structured JSON — by URL or by keyword — with monitoring mode so scheduled runs only return what's new.

Built for market research, AI / LLM training data, brand & reputation monitoring, sentiment analysis, social selling and trend discovery.

Why this Reddit scraper?

  • No login, no API key, no Reddit account. It reads what Reddit shows any logged-out visitor, keeps to Reddit's request limits and rotates residential IPs automatically.
  • Built for Reddit as it is today. Reddit now sends logged-out visitors of old.reddit to a login page and walls its public .json and RSS feeds — the shortcuts most Reddit scrapers depend on. This Actor reads the same public data Reddit's own website loads for logged-out visitors, so it keeps returning data when those shortcuts fail.
  • Richest record in class — 45+ fields per post and 30+ per comment: score, upvote ratio, comment and crosspost counts, exact timestamps, edit time, link and author flair, NSFW / spoiler / stickied / locked / archived flags, image, gallery and video links, the subreddit's subscriber count, full comment depth and parent/child relationships.
  • Clean data, no junk — [deleted] / [removed] / empty comments are filtered out by default, and you are never charged for them. Every record also carries a unified text column (post title, comment body, community description or user summary) so the default Overview view is fully populated at a glance — no half-empty rows.
  • Everything in one actor — posts, comments, subreddits, search, communities and users. No need to chain five different scrapers.
  • Monitoring mode — remember what you've already pulled and return only new posts/comments on the next run. Perfect with Schedules.
  • Pay per result. You pay for the records you receive; [deleted] and filtered-out records are never billed. From 19 October 2026 each run also carries Apify's standard run-start fee (amounts on the Pricing tab).

Use cases

  • AI & LLM training data — harvest high-signal discussions and Q&A threads from any subreddit.
  • Brand & product monitoring — track every new mention of your brand, product or competitor across Reddit.
  • Market & customer research — mine real opinions, pain points and buying questions in niche communities.
  • Sentiment & trend analysis — feed posts and comments into your NLP pipeline.
  • Social selling / lead discovery — find people actively asking for recommendations in your space.
  • Community & influencer analysis — profile subreddits by subscribers and prolific users by karma and activity.

How to use

  1. Tell the actor what to scrape — paste Reddit Start URLs (subreddit, post, user or search pages), and/or list subreddits, search keywords or usernames.
  2. Set Sort, Time range and Max items.
  3. (Optional) Turn on Include comments to pull comment threads for every post, and Monitoring mode for new-only runs.
  4. Run it. Download the dataset as JSON, CSV, Excel, or push it anywhere via API and integrations.

Input

FieldDescription
startUrlsAny Reddit URLs — subreddit, post/comments, comment permalink, user, search, /subreddits/search, share links and redd.it short links. Auto-detected and routed.
urlsFromFilePaste many URLs (one per line), or one link to a .txt/.csv file, Google Sheet or Drive file holding them.
subredditsSubreddit names (e.g. RealEstate, r/AskReddit) to pull posts from.
searchesKeyword queries — returns posts (default) or communities.
searchInSubredditOptional — limit searches to one subreddit.
usernamesReddit users — returns their profile (karma, cake day, followers) plus recent posts and comments.
searchScopeWhat searches returns: posts or communities.
sort / timeOrder (hot/new/top/rising/controversial/relevance/comments) and the time window for top, controversial and search.
maxItemsGlobal cap across all record types. With several sources it is shared evenly, and a source that finds less passes its share on to the next.
maxItemsPerSourceOptional cap on posts (or communities / user items) per source.
includeComments / maxCommentsPerPost / commentSortPull comment threads for posts; how many and in what order.
expandMoreCommentsFollow "load more comments" and "continue this thread" for deeper threads.
includeDeletedCommentsOff by default — skip (and never charge for) [deleted]/[removed]/empty comments. Turn on to keep them with an isDeleted flag.
onlyPostsNewerThanKeep only fresh items — ISO date or "7 days", "24 hours", etc.
includeNSFWInclude 18+ posts and communities (on by default).
userSection / includeUserProfile / includeUserContentWhich part of a user's history to read, and whether to output the profile record.
monitorMode / monitorStoreNameReturn only records not seen in previous runs.
proxyConfigurationDefaults to Apify Residential, which Reddit accepts. Reddit refuses Apify's datacenter IPs, so another Apify proxy group is switched to Residential automatically.

Example input

{
"subreddits": ["RealEstate", "FirstTimeHomeBuyer"],
"sort": "top",
"time": "week",
"maxItems": 500,
"includeComments": true,
"maxCommentsPerPost": 30,
"commentSort": "top"
}

Output

Every row carries a type (post, comment, community or user) and a unified text column holding its main content (post title, comment body, community description, or a user's karma summary). The dataset opens on a single Overview table where every row reads as full regardless of type — then switch to the focused Posts / Comments / Communities / Users views for type-specific columns.

{
"type": "post",
"id": "1wx4uey",
"fullId": "t3_1wx4uey",
"subreddit": "RealEstate",
"author": "example_poster",
"score": 124,
"createdAt": "2026-10-04T02:48:55.000Z",
"text": "Seller wants to backtrack after tabling our first offer. We counter offer lower. Are we being fair?",
"title": "Seller wants to backtrack after tabling our first offer. We counter offer lower. Are we being fair?",
"subredditPrefixed": "r/RealEstate",
"permalink": "https://www.reddit.com/r/RealEstate/comments/1wx4uey/seller_wants_to_backtrack_after_tabling_our_first/",
"url": "https://www.reddit.com/r/RealEstate/comments/1wx4uey/seller_wants_to_backtrack_after_tabling_our_first/",
"domain": "self.RealEstate",
"isSelf": true,
"upvoteRatio": 0.68,
"numComments": 394,
"numCrossposts": 0,
"createdUtc": 1791082135,
"isNSFW": false,
"isStickied": false,
"isLocked": false,
"selfText": "10/2 Friday a house for 330k that was comming soon came up for sale and we immediately booked a showing with our agent for right after work...",
"postHint": "self",
"images": [],
"subredditSubscribers": 2520037,
"scrapedAt": "2026-10-04T16:30:04.358Z"
}
{
"type": "comment",
"id": "pdqhvxk",
"fullId": "t1_pdqhvxk",
"subreddit": "RealEstate",
"author": "example_user",
"score": 480,
"createdAt": "2026-10-04T02:58:26.000Z",
"text": "I like your approach, my take is simple: If you’re ok with maybe losing the house, this could work to save you some money. If you love the house and will be heartbroken if you don’t get it, don’t play games.",
"body": "I like your approach, my take is simple:\n\nIf you’re ok with maybe losing the house, this could work to save you some money.\n\nIf you love the house and will be heartbroken if you don’t get it, don’t play games.",
"postId": "1wx4uey",
"postTitle": "Seller wants to backtrack after tabling our first offer. We counter offer lower. Are we being fair?",
"parentFullId": "t3_1wx4uey",
"depth": 0,
"isSubmitter": false,
"isDeleted": false,
"controversiality": 0,
"permalink": "https://www.reddit.com/r/RealEstate/comments/1wx4uey/seller_wants_to_backtrack_after_tabling_our_first/pdqhvxk/"
}

Both examples come from a real run (usernames replaced); the full records carry every field listed in the dataset schema.

User records carry postKarma, commentKarma, totalKarma, cakeDay, followers, profileDescription and iconUrl; community records carry name, title, subscribers, publicDescription, sidebar, createdAt, subredditType, submissionType, language, iconUrl and url.

Fields that are only filled when they apply

Some values exist only on some records, so they are empty on the others — the scraper is not skipping them:

  • linkFlair / authorFlair — only in subreddits that use flair.
  • selfText — text posts only; images / imageUrl — image, gallery and link posts that have a preview; videoUrl — videos hosted on Reddit.
  • editedAt — edited posts and comments only; distinguished — moderator and admin posts; crosspostParentId — crossposts only.
  • postType (self, link, image, gallery, video or crosspost) is always filled; postHint is Reddit's own raw hint, which Reddit leaves out on most text posts and on many image and gallery posts.
  • A comment's score is empty while Reddit hides it on new comments (scoreHidden: true says so).
  • depth on comments read from a user's profile is 0 for a direct reply to the post and empty for deeper replies, because profile pages do not say how deep a reply sits. Comments read from a thread always carry their depth.
  • Communities: bannerUrl, iconUrl and advertiserCategory only where the community set them. Users: profileTitle / profileDescription only where the user wrote them.

How much does it cost to scrape Reddit?

This Actor uses Apify's pay-per-event pricing: you are charged for the results it delivers, with no monthly rental. The events it can charge are:

  • Result - Each record (post, comment, community or user) written to the dataset.

From 19 October 2026 each run also charges once, at start:

  • Actor Start - Charged when the Actor starts running. Number of events charged depends on Actor memory (one event per GB, minimum one event; the default 1 GB run is charged once).

The current price of each event is shown on the Pricing tab of this page. Set a maximum total charge on the run if you want a hard cap on spend, and use the input limits to control how much the Actor fetches.

Automate & schedule

Run this actor on autopilot and pull results into your own stack:

  • Apify API — start runs, fetch datasets, and manage schedules over REST.
  • apify-client for JavaScript and apify-client for Python — official SDKs.
  • Schedules — run it hourly/daily with monitoring mode to capture only new posts and comments in a subreddit or for a keyword; perfect for brand monitoring and fresh AI data.
  • Webhooks — trigger downstream actions (Slack alert, database insert, AI summary) the moment a run finishes.
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'MY_APIFY_TOKEN' });
const run = await client.actor('scrapesage/reddit-scraper').call({
searches: ['best CRM for small business'],
searchScope: 'posts',
sort: 'new',
maxItems: 300,
includeComments: true,
maxCommentsPerPost: 25,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Got ${items.length} Reddit records`);

Integrate with any app

Connect the dataset to 5,000+ apps — no code required:

  • Make — multi-step automation scenarios.
  • Zapier — push new mentions straight into Slack, Sheets or your CRM.
  • Slack — get pinged when a monitored subreddit or keyword gets new posts.
  • Google Drive / Sheets — auto-export every run to a spreadsheet.
  • Airbyte — pipe results into your data warehouse.
  • GitHub — trigger runs from commits or releases.

Use with AI assistants (MCP)

The output is clean, LLM-ready JSON. Call this actor from Claude, ChatGPT, or any agent framework through the Apify MCP server — ask your assistant to "find the top posts about mortgage rates in r/RealEstate this week with their comments" and let it run this scraper for you.

Agent-ready: autonomous payments (x402 & Skyfire)

This actor is agent-ready — AI agents can discover it, run it, and pay for it autonomously, with no Apify account and no human in the loop. It uses pay-per-event pricing and limited permissions, so it qualifies for Apify's agentic-payment standards:

  • x402 — an open, HTTP-native payment protocol. Agents pay per run in USDC on the Base network directly through the Apify MCP server — no account, no API key.
  • Skyfire — agent-to-service payments for fully autonomous AI-agent workflows.

Building an AI agent, MCP tool, or autonomous data pipeline? This scraper is ready to plug in and pay as it goes.

More scrapers from scrapesage

Build a complete social, content & sentiment-data stack:

Tips

  • Keep the Residential proxy. Reddit refuses Apify's datacenter IPs; residential sessions are what keep this actor reliable.
  • Fresh-only feeds. Combine monitorMode + a Schedule + onlyPostsNewerThan to capture only new posts/comments each run, without re-paying for old data.
  • Comments cost extra requests. Leave includeComments off for a fast posts-only pass; turn it on (with a sensible maxCommentsPerPost) when you need the discussion.
  • Big runs take minutes, not seconds. Reddit allows about 100 data requests per 10 minutes per IP. The actor paces itself and moves to a fresh residential IP when one is used up, so a run with thousands of comment threads simply takes longer.
  • No junk by default. [deleted]/[removed]/empty comments are skipped (and not billed), so maxCommentsPerPost fills up with real content. Flip includeDeletedComments on only if you need the thread's deleted placeholders for structure/analysis.
  • Cover a topic fully. Add several subreddits and searches in one run — the global maxItems cap is shared evenly across them.

FAQ

Do I need a Reddit account or API key? No. It reads what Reddit shows any logged-out visitor — no login, no app registration, no API key.

Why residential proxy? Reddit refuses Apify's datacenter IPs outright and walls its public .json and RSS feeds. Over residential IPs Reddit treats each session like an ordinary logged-out visitor: it answers a short verification check and then serves its public data. The actor does this automatically and starts a fresh session whenever one is refused or reaches Reddit's request limit. It never attempts a CAPTCHA.

Can I get full comment threads? Yes. Use a post URL (or includeComments on a subreddit/search) with maxCommentsPerPost, and turn on expandMoreComments to follow "load more comments" and "continue this thread" for deep threads. Each comment includes its depth and parentFullId so you can rebuild the tree.

How do I only get new posts over time? Turn on monitorMode and run on a Schedule — each run returns only records not seen before.

Can I export to Google Sheets, CSV, or Excel? Yes — one click in the dataset view, or automatically on every run via the Google Drive integration.

Can it read private or quarantined subreddits? No. Reddit shows those only to logged-in members, so they are skipped and the run's status message names them. The same goes for suspended users and deleted posts.

A field is null — why? Some values only exist on some records — flair only where a subreddit uses it, self-text only on text posts, images only on posts that have one. See Fields that are only filled when they apply above.

Is scraping Reddit legal? This actor collects publicly available data only. You are responsible for using the data in compliance with applicable laws (GDPR/CCPA for personal data) and Reddit's terms.

Data & lawful use

This Actor reads only what Reddit publishes to logged-out visitors: it does not log in, create accounts, use anyone's credentials, or reach anything behind a sign-in. Like any logged-out browser, it accepts the anonymous visitor cookies and the anonymous visitor token Reddit issues to every visitor, because Reddit's public pages and data feeds answer only requests that carry them; they identify no person and are discarded when the run ends. Names, handles, bios and engagement figures are public, but they relate to identifiable people, so treat the output as personal data. If you are in the EU or UK you are the data controller for what you do with it: have a lawful basis (usually legitimate interest for research, marketing analytics or B2B prospecting), honour access and deletion requests, and do not use the output for spam or unsolicited messaging.

Under Apify's Standard Actor Contract, which governs your use of this Actor, you are the controller of any personal data in your input and output and scrapesage acts only as your processor: that data is processed solely to run your job, written only to your own Apify storage, never used for any other purpose and never shared onward. If you need help with a data-subject request that involves this Actor's output, open an issue on the Issues tab.

Disclaimer

This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Reddit, Inc. or any of its subsidiaries. All trademarks mentioned are the property of their respective owners.

"Reddit" and any related marks are the property of their respective owners and are used here only in a descriptive, nominative sense - to identify the publicly accessible website from which this Actor collects data. This Actor is not an official Reddit product, is not authorised or certified by Reddit, Inc., and does not distribute Reddit software. It collects only publicly available information; you are responsible for ensuring your use of that data complies with applicable laws, regulations and the terms of the source website.

Need help?

Open an issue on the actor's Issues tab, or visit the Apify help center. Feature requests are welcome — this actor is actively maintained.