Reddit Scraper avatar

Reddit Scraper

Pricing

from $2.50 / 1,000 posts

Go to Apify Store
Reddit Scraper

Reddit Scraper

Scrape Reddit posts, comments, communities, and user profiles without a login or API key. Search any subreddit or keyword to see what people say about a brand or topic, with full comment threads and the scores that show what landed.

Pricing

from $2.50 / 1,000 posts

Rating

5.0

(6)

Developer

Apify

Apify

Maintained by Apify

Actor stats

4

Bookmarked

86

Total users

57

Monthly active users

2 days ago

Last modified

Categories

Share

Scrape Reddit posts, comments, communities, and user profiles at scale without a login or API keys, for market research, social listening, and LLM training data.

What does Reddit Scraper do?

Reddit Scraper extracts structured data in four modes: posts, comments, communities, and users. Point it at subreddit URLs, permalinks, user pages, or search URLs and pick a mode. No login, no API keys, no rate limits to juggle.

  • 📋 Posts mode for titles, text, scores, upvote ratio, flairs, media
  • 💬 Comments mode for full threads with replies, depth, parent chain
  • 🏠 Communities mode for subscriber counts, rules, icons, banners
  • 👤 Users mode for karma, account age, verification flags
  • 🔍 Search-driven discovery of what to scrape
  • 🔁 Residential proxy rotation and retries built in

What data can you extract from Reddit?

Post dataCommunity infoUser details
Title, body, flairName and URLUsername, URL
Score, upvote ratioSubscriber countKarma breakdown
Comment count, datesDescription, rulesAccount age
Media, thumbnailsNSFW and access flagsVerified, mod flags

Can I use it for market research, sentiment analysis, and lead generation?

Yes. Pull a subreddit's posts to map a category, a comment tree for sentiment work, community sizes for market sizing, or active users for audience discovery.

Accepted inputs: subreddit URLs like /r/python, post and comment permalinks, user pages like /user/spez, search URLs, or plain names.

Why use Reddit Scraper?

What you needDoing it yourselfReddit Scraper
AccessRegister an app, manage OAuth credentialsNone, no login or keys
ReliabilityHandle throttling and retries yourselfRotation and retries built in
Four entity typesStitch several endpoints togetherOne Actor, one mode switch
Whole comment threadsPaginate nested children by handFull threads with depth and parent chain
Ready-to-use dataNormalize raw payloads firstFlat records, ready to export
DeliveryBuild scheduling and webhooks yourselfSchedules, webhooks, integrations

What can you do with the data after scraping?

Market and product research. Track what customers say about a product or competitor across niche communities. Weekly runs suit category mapping.

Trend monitoring. Watch a subreddit's new or rising feeds and pipe results to Slack, Sheets, or a database. Hourly for fast communities, daily otherwise.

Sentiment and social listening. Pull full comment trees into NLP models, weighted by score.

Audience research and RAG. Snapshot subscriber counts month over month, profile active users, or drop structured text into embeddings pipelines.

Run search mode with a low result cap first, then scrape only the communities it surfaces.

How to use Reddit Scraper

  1. Sign in to Apify Console and open the Actor.
  2. Pick a Scrape mode: posts, comments, communities, or users.
  3. Paste Start URLs, or fill in names, usernames, or queries.
  4. Set volume limits such as max posts per community.
  5. Click Save & Start, then download from Storage.

How much will it cost?

Reddit Scraper is pay per result. You pay for each item in the dataset: a post, a comment, a community, or a user, plus a small Actor start fee per run. Compute and proxy traffic are included. Current prices are on the Pricing tab.

Each source is scraped on its own, so a post or comment reached through two inputs, say its post URL and its own permalink, lands in the dataset twice and is charged twice.

Some of what you ask for returns nothing: a deleted community, a search with no hits, a post with no comments. Each of those gets one item explaining why, priced below a real result.

You get one of those per thing you asked for: per community, username, post URL or query. Never one per page of a listing, and never for a post found inside a community you asked about. Input rejected before any request, such as a link that is not a Reddit URL, costs nothing.

Three levers move the total:

  • maxPostsPerCommunity and maxCommentsPerPost left empty mean scrape everything.
  • maxCommentDepth stops the crawl at the depth you analyze.
  • A low maxSearchResultsPerQuery keeps discovery cheap.

⬇️ Input

Scrape mode is required. Each mode needs at least one source: URLs, names, or queries.

FieldTypeDescription
scrapeModestringposts, comments, communities, users. Default: posts. Required.
startUrlsarrayReddit URLs. Meaning depends on the mode.
includeNsfwbooleanInclude adult content. Default: false.
searchQueriesarrayQueries to find what to scrape.
communityNamesarrayNames like python or r/webdev.
communityQueriesarrayQueries scoped to those communities.
usernamesarrayLike spez or u/AutoModerator.
includeCommunityRulesbooleanGet rules with the details. Default: false.
includeCommentRepliesbooleanComment permalinks only. Pulls the thread. Default: false.
maxCommentDepthintegerDepth from top-level comments. Empty means all.
maxPostsPerCommunityintegerPosts per community. Empty means all.
maxCommentsPerPostintegerComments per post. Empty means all.
maxPostsPerUserintegerPosts per user. Empty means all.
maxCommentsPerUserintegerComments per user. Empty means all.
maxSearchResultsPerQueryintegerResults per query. Empty means all.

Sort and time window are set per mode via communitySort, commentSort, userSort, and searchSort, each with a time filter from hour to all.

{
"scrapeMode": "posts",
"startUrls": [{ "url": "https://www.reddit.com/r/python" }],
"includeNsfw": false,
"maxPostsPerCommunity": 25,
"communitySort": "hot"
}

⬆️ Output

Results land in the dataset and export as JSON, CSV, Excel, HTML, or XML. Each mode writes its own record shape.

Posts:

{
"id": "1v8nkjz",
"title": "Nothing quite like a good Nolan twist.",
"authorName": "Arch_Lancer17",
"communityName": "TheOdysseyMovie",
"score": 4127,
"commentCount": 98,
"createdAt": "2026-07-28T04:21:17.000Z",
"flairText": "HUMOUR | Χιούμορ",
"isNsfw": false
}

Comments:

{
"id": "p07c4tq",
"body": "He definitely telegraphed it with Troy soldiers being all in white and ...",
"authorName": "TheJuiceBoxS",
"postId": "1v8nkjz",
"parentCommentId": null,
"depth": 0,
"score": 190,
"createdAt": "2026-07-28T04:39:55.000Z"
}

Communities:

{
"id": "d6xzz7",
"name": "TheOdysseyMovie",
"title": "Christopher Nolan's The Odyssey",
"subscriberCount": 22558,
"rules": []
}

Users:

{
"username": "i_was_a_person_once",
"totalKarma": 351487,
"linkKarma": 554,
"commentKarma": 350933,
"createdAt": "2018-02-16T17:13:52.000Z",
"isVerified": true,
"isSuspended": false
}

When there is nothing to return

If something you asked for produced no result, the dataset gets one item explaining why.

{
"url": "https://www.reddit.com/r/thisdoesnotexist123",
"reasonCode": "not-found",
"reasonDescription": "Community r/thisdoesnotexist123 does not exist or was deleted"
}
reasonCodeWhat it means
not-foundIt doesn't exist, or it was deleted.
emptyReddit served it, but nothing came out of it: a community with no posts or only NSFW posts, a search with no hits, a post with no comments.
nsfw-skippedThe community (communities mode) or post you asked for is adult content and Include NSFW is off.
unavailableReddit won't serve it: private, banned, quarantined, or gated.

The url is the exact page that came up empty, so two queries on the same community stay apart. To keep only real results, drop every item that has a reasonCode.

These are the items the pricing section covers: one per thing you asked for, priced below a real result.

How to run it via the Apify API

curl -X POST "https://api.apify.com/v2/acts/tri_angle~reddit-scraper/run-sync-get-dataset-items?token=YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"scrapeMode":"posts","startUrls":[{"url":"https://www.reddit.com/r/python"}],"maxPostsPerCommunity":25}'

Use the token from your Apify Integrations page. The apify-client packages wrap the same endpoints.

Troubleshooting

IssueSolution
Blocked-request errorRotation and retries are built in, not configurable. Retry, then use the Issues tab
Permalink returned one commentThe default. Enable Include replies for the thread
Deep comment came back emptyLeave maxCommentDepth empty from a permalink, since depth counts from top-level
Time window had no effectSort and time filter only interact for top and controversial
NSFW content missingSet includeNsfw to true
Some sources produced no resultsLook for items with a reasonCode field, they say what happened to each one

Limitations

  • Deleted users and users that never existed are indistinguishable, because Reddit answers the same for both.
  • Posts inside private, banned, or gated communities are not served. In communities mode you still get the community record; in posts or comments mode you get an unavailable item.
  • Restricted communities and suspended users return partial records. A community limited to Reddit Premium members comes back with type set to gold_only and none of the restriction flags set.
  • Proxy groups, concurrency, and retries are fixed, not inputs.
  • A comment more than 8 levels deep, scraped from its own permalink, comes back with depth empty, as do its replies. Scrape the post URL to get every depth.

What else can you scrape from social media?

FAQ

Can I scrape Reddit data behind a login?

No. Only public content is read. Private and gated communities return the community record, not the posts inside.

Can I get historical Reddit data?

Yes, within what Reddit still serves. Use top or controversial sort with a year or all time filter.

What happens to deleted, private, or banned content?

If Reddit still serves the data, you get a result. If not, you get an item with reasonCode and reasonDescription explaining why, and the run finishes anyway. Deleted posts and comments return body as [deleted] or [removed], suspended users are flagged isSuspended, and restricted communities carry isPrivate, isBanned, isQuarantined, or isGated.

Can I use it with integrations like Zapier, Make, or n8n?

Yes. Every Apify Actor supports Schedules, webhooks, and the Apify integrations catalog: Zapier, Make, n8n, Slack, Google Sheets, LangChain.

Can I use Reddit Scraper with the Apify API?

Yes. See the API section above, or the API tab for snippets.

Can I use Reddit Scraper through an MCP server?

Yes. Every Apify Actor is reachable through the Apify MCP server, so an MCP-capable agent can run it as a tool.

Scraping public Reddit content is generally legal. Personal data is protected by GDPR, so don't scrape or store it without a legitimate reason. See our post on the legality of web scraping, and consult a lawyer if unsure.

Your feedback

Missing a field or hitting a bug? Open the Issues tab. Custom work is available through Apify's custom solutions team.

Disclaimer

This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Reddit, Inc. or any of its subsidiaries.