👽 Reddit Scraper - Posts, Comments, Search & Subreddits
Pricing
from $3.50 / 1,000 results
👽 Reddit Scraper - Posts, Comments, Search & Subreddits
Bulk Reddit scraping without an API key or login: paste hundreds of post, subreddit, user or search URLs, mine whole subreddits, expand nested comment threads, and stream clean posts, comments, communities and users to your dataset.
Pricing
from $3.50 / 1,000 results
Rating
0.0
(0)
Developer
Data Minds
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
1
Monthly active users
16 hours ago
Last modified
Categories
Security
Limited permissionsShare
What is Reddit Scraper - Posts, Comments, Search & Subreddits?
Reddit Scraper - Posts, Comments, Search & Subreddits is a Reddit scraper that extracts posts, comments, communities and user profiles from public Reddit pages, with no Reddit login and no API key. Add keywords, Reddit links or subreddit names, then export the rows as JSON, CSV or Excel for Reddit brand monitoring and Reddit lead generation. It also fits Reddit sentiment analysis data. Pricing starts at $0.005 per result on the Free plan and falls to $0.0035 on Gold.
It is a Reddit data scraper for people who need clean rows without writing code. Typical jobs:
- 🎯 Reddit brand monitoring - search your brand names and catch new mentions in posts and comments.
- 🧲 Reddit lead generation - find people asking for tools like yours by searching problem keywords.
- 🧪 Reddit sentiment analysis data - collect post and comment text with scores for analysis or model training.
- 📈 Reddit market research - compare how communities talk about a product, a competitor or a trend.
- 🧑 Audience research - pull user profiles with karma and recent activity from profile links.
As an Apify Actor it also gives you the Apify API, scheduling, webhooks, integrations and export to JSON, CSV, Excel, XML or HTML.
What can Reddit Scraper - Posts, Comments, Search & Subreddits do?
- 🔎 Three ways to start - search by keyword (
searchTerms), paste Reddit links (startUrls) or list whole subreddits (subredditUrls). - 🧵 Full comment threads - turn on
crawlCommentsPerPostto add comments with score and depth, up to 500 per post. - 📚 Four row types - posts, comments, communities and user profiles land in one dataset, each labelled by
dataType. - 🧭 Filters - sort order, time range, posted-after and posted-before dates, flair-only and NSFW switches.
- 📊 Engagement metrics - every post carries
ageHours,scorePerHour,commentsPerHourandisHighEngagement. - 🔄 Live results - each row is saved to the dataset as soon as it is ready, so you can watch the run fill up.
- 🛑 Spend control - set a maximum spend per run and the Actor stops cleanly, keeping everything saved.
What data can Reddit Scraper - Posts, Comments, Search & Subreddits extract?
Every row has a dataType of post, comment, community or user. All field names below are saved exactly as written.
| Field | Description |
|---|---|
🏷 dataType, id, parsedId | Row type, full Reddit ID and short ID. |
📝 title, body, bodyHtml, flair, postType | Post text, flair and type (text, link, video or gallery). |
👤 authorId, parsedAuthorId, authorName, authorFlairText, authorPremium | Post author details. |
📍 communityName, communityId, parsedCommunityId, parsedCommunityName, subredditName, subredditId, parsedSubredditId, subredditSubscribers | The subreddit a post belongs to. |
👍 score, upVotes, upvoteRatio, commentsCount, numCrossposts, numDuplicates, totalAwardsReceived, gilded, scoreHidden | Post votes, comments and awards. |
🔗 postUrl, url, contentUrl, urlOverriddenByDest, domain, outboundUrlHost, thumbnail | Post link, outbound link and domain. |
🖼 images, galleryImages, galleryCount, mediaAssets, videoUrl, media, secureMedia, mediaMetadata, galleryData, mediaType, hasMedia, isVideo, isGallery, isSelf | Images, galleries and video details. Each mediaAssets item holds mediaId, url, mimeType, width and height. |
🔞 nsfw, over18, spoiler, locked, stickied, distinguished, isOriginalContent, isRobotIndexable | Post flags. |
✏ edited, editedAt, removedByCategory, removedBy, bannedBy, removalReason, modReasonTitle | Edit and moderation details. |
📈 ageHours, scorePerHour, commentsPerHour, engagementTotal, commentToScoreRatio, isHighEngagement, titleLength, bodyLength, wordCount | Calculated engagement and length metrics. |
💬 postId, parentId, linkId, depth, controversiality, ups, downs, isSubmitter, collapsed, collapsedReason, permalink | Comment thread details. Comment rows also reuse body, bodyHtml, authorId, authorName, communityName, subredditId, score, scoreHidden, gilded, totalAwardsReceived, edited, stickied, distinguished, locked and removalReason. |
📚 name, namePrefixed, description, descriptionHtml, publicDescription, subscribers, activeUserCount, lang, subredditType, quarantine | Community profile and size. |
🎨 communityIcon, bannerImg, headerImg, keyColor, primaryColor, submitText, submissionType | Community branding and submit text. |
🛠 linkFlairEnabled, allowImages, allowVideos, allowGalleries, allowPolls, wikiEnabled, restrictPosting, restrictCommenting, advertiserCategory, communityReviewed | Community settings. |
🧑 username, commentKarma, linkKarma, awardeeKarma, awarderKarma, totalKarma, iconImg, snoovatarImg | User profile and karma. |
🛡 isGold, isMod, isEmployee, isBlocked, verified, hasVerifiedEmail, hasSubscribed, acceptFollowers, acceptChats, acceptPms | User flags. |
🪪 subredditDisplayName, subredditTitle, subredditPublicDescription | The user's own profile page. |
📅 createdAt, crawledAt, searchTerm, dataSource | Creation time, collection time, the keyword that found the row, and a label for where the row came from. |
Note: Fields Reddit does not show for an item are empty or
null, and some rows have no score, comment count or flair.dataSourceis set on every row, and rows labelled other thanlivecan show older score and comment counts.
What data can't Reddit Scraper - Posts, Comments, Search & Subreddits extract?
Only public data that a logged-out visitor can see is collected. Private communities, deleted content, direct messages and login-only pages are not returned.
How to scrape Reddit posts and comments
- Create a free Apify account or log in.
- Open Reddit Scraper - Posts, Comments, Search & Subreddits in Apify Console.
- Add Reddit links to
startUrls, keywords tosearchTerms, or subreddits tosubredditUrls. - Choose what keyword search returns with
searchPosts,searchCommentsandsearchCommunities. - Set limits with
maxPostsCountand, to get comments, switch oncrawlCommentsPerPostand setmaxCommentsPerPost. - Click Start and watch the run log and the live status message.
- Open the Dataset tab and export the rows as JSON, CSV or Excel, or read them through the API.
How much does it cost to scrape Reddit?
The Actor uses pay-per-event pricing: you pay for each result saved to the dataset, whether it is a post, a comment, a community or a user profile. The price per result depends on your Apify plan, and Apify platform usage is billed in addition.
| Plan | Price per result | Price per 1,000 results |
|---|---|---|
| 🆓 Free | $0.005 | $5.00 |
| 🥉 Bronze | $0.0045 | $4.50 |
| 🥈 Silver | $0.004 | $4.00 |
| 🥇 Gold | $0.0035 | $3.50 |
Each run also has a start event of $0.00005 per GB of memory, minimum one. The Actor's default memory is 256 MB, which is below 1 GB, so the start event is the minimum of 1 event = $0.00005.
Worked example: 2,000 results on the Silver plan cost 2,000 x $0.004 = $8.00, plus the $0.00005 start event and platform usage.
See the live pricing page for current tiers.
Is scraping Reddit free?
You can try it without paying first. The $5 monthly credit on the Apify Free plan covers about 1,000 results at $0.005 each, before platform usage. Set a maximum spend per run to keep costs under control while you test.
Input
You need at least one of startUrls, searchTerms or subredditUrls. A run with none of them stops with a message and saves nothing. Every link, keyword and subreddit gets its own independent limit. The full list of fields is on the input schema page.
The prefilled example below starts with a subreddit link and one keyword. The prefill also sets the optional network setting, and every other field uses its default:
{"startUrls": [{ "url": "https://www.reddit.com/r/technology/" }],"searchTerms": ["artificial intelligence"]}
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
startUrls | array | No | none | Post, subreddit, user or search links. |
searchTerms | array of strings | No | none | One keyword or phrase per line, each searched on its own. |
searchPosts | boolean | No | true | Include posts in keyword search. |
searchComments | boolean | No | false | Include comments in keyword search. |
searchCommunities | boolean | No | false | Include subreddits in keyword search. |
withinCommunity | string | No | empty | Limit keyword search to one subreddit (name, r/name or link). |
searchSort | string | No | new | relevance, hot, top, new or comments. |
searchTime | string | No | all | all, hour, day, week, month or year. |
subredditUrls | array of strings | No | none | Subreddits to mine in full. |
onlyWithFlair | boolean | No | false | Keep only flaired posts. |
includeNSFW | boolean | No | false | Include posts marked 18+. |
postedAfter | string (date) | No | none | Only posts from this UTC day onward. |
postedBefore | string (date) | No | none | Only posts up to the end of this UTC day. |
commentedAfter | string (date) | No | none | Only comments on or after this UTC date. |
commentedBefore | string (date) | No | none | Only comments on or before this UTC date. |
crawlCommentsPerPost | boolean | No | false | Add the comment thread for every post found. |
maxCommentsPerPost | integer | No | 10 | Comment cap per post, 0 to 500. |
maxPostsCount | integer | No | 10 | Post cap per link, keyword or subreddit, 0 to 50,000. |
maxCommentsCount | integer | No | 10 | Cap for comments found by keyword search and for comments on a user link. |
maxCommunitiesCount | integer | No | 2 | Cap for communities found by keyword search. |
proxyConfiguration | object | No | default | Network settings. The default works for most runs. |
maxRetries | integer | No | 3 | Retries per request, 1 to 10. |
requestDelayMin | number | No | 1.0 | Shortest pause between requests in seconds, 0 to 10. |
requestDelayMax | number | No | 2.5 | Longest pause between requests in seconds, 0 to 15. |
postConcurrency | integer | No | 3 | Posts whose comments load at once, 1 to 10. |
Scrape by Reddit link
Paste post, subreddit, user profile or search-result links into startUrls.
- ✅ Good:
https://www.reddit.com/r/technology/returns posts from that subreddit, up tomaxPostsCount. - ✅ Good: a post link returns that post, and its comments when
crawlCommentsPerPostis on. - ✅ Good: a user link returns the profile, posts up to
maxPostsCountand comments up tomaxCommentsCount. - ❌ Bad: a link to a page that is not on Reddit. It is skipped with a message in the log.
Warning: With
maxPostsCountset to 0, a subreddit link returns only the community row and no posts.
Search by keyword
Add keywords to searchTerms. Use searchPosts, searchComments and searchCommunities to choose what comes back, withinCommunity to stay inside one subreddit, and searchSort and searchTime to rank and limit results.
- ✅ Good:
searchSortset tonewwithsearchTimeset toweekfor recent mentions. - ✅ Good:
withinCommunityset to one subreddit when you also switch onsearchComments. - ❌ Bad: switching on
searchCommentsand settingmaxCommentsCountto 0. No comments are returned.
Warning: Searching comments across all of Reddit is not always available. If it returns nothing, set
withinCommunityto search the comments of one subreddit.
Mine a full subreddit
Add names, r/name or links to subredditUrls to collect more posts from one community. Each post is saved once.
- ✅ Good:
AskReddit,r/AskRedditorhttps://www.reddit.com/r/AskReddit/. - ❌ Bad: a link to a single post or user. It is skipped with a message; put it in
startUrlsinstead.
Warning: Raise
maxPostsCountto match the size you want, because the default is 10 posts per subreddit.
Dates and limits
postedAfter and postedBefore use a UTC day such as 2026-01-01. Setting either one switches results to newest first.
- ✅ Good:
postedAfterandpostedBeforetogether to keep a time window. - ❌ Bad: expecting
maxPostsCountto be a shared total. Each link, keyword and subreddit has its own limit.
Output
Results go to the default Apify dataset. Export them as JSON, CSV, Excel, XML or HTML from the Dataset tab or the API. The Output tab shows five views: Overview, Posts, Comments, Communities and Users. Each row has a dataType, so one export can hold all four types. The values below are fake examples on example.com.
JSON example
A post row for the input above:
{"dataType": "post","id": "t3_abc123","parsedId": "abc123","title": "Example post title","body": "Example post text.","bodyHtml": null,"authorId": "t2_user01","parsedAuthorId": "user01","authorName": "example_user","communityName": "r/example","communityId": "t5_comm01","parsedCommunityId": "comm01","parsedCommunityName": "example","subredditName": "example","subredditId": "t5_comm01","parsedSubredditId": "comm01","postType": "text","flair": "Discussion","upVotes": 120,"commentsCount": 14,"postUrl": "https://www.example.com/r/example/comments/abc123/example_post/","url": "https://www.example.com/r/example/comments/abc123/example_post/","contentUrl": null,"images": [],"nsfw": false,"score": 120,"upvoteRatio": 0.96,"subredditSubscribers": 250000,"over18": false,"isSelf": true,"spoiler": false,"locked": false,"stickied": false,"edited": false,"editedAt": null,"distinguished": null,"scoreHidden": false,"isOriginalContent": false,"numCrossposts": 0,"totalAwardsReceived": 0,"gilded": 0,"domain": "self.example","thumbnail": null,"urlOverriddenByDest": null,"authorFlairText": null,"authorPremium": false,"numDuplicates": 0,"removedByCategory": null,"removedBy": null,"bannedBy": null,"removalReason": null,"modReasonTitle": null,"isRobotIndexable": true,"mediaType": "text","hasMedia": false,"isVideo": false,"isGallery": false,"galleryCount": 0,"galleryImages": [],"mediaAssets": [],"videoUrl": null,"media": null,"secureMedia": null,"mediaMetadata": null,"galleryData": null,"ageHours": 5.5,"scorePerHour": 21.82,"commentsPerHour": 2.55,"engagementTotal": 134,"commentToScoreRatio": 0.12,"isHighEngagement": true,"titleLength": 18,"bodyLength": 18,"wordCount": 3,"outboundUrlHost": null,"createdAt": "2026-10-01T10:00:00+00:00","crawledAt": "2026-10-01T15:30:00+00:00","searchTerm": "artificial intelligence","dataSource": "live"}
A comment row:
{"dataType": "comment","id": "t1_def456","parsedId": "def456","postId": "abc123","parentId": "t3_abc123","linkId": "t3_abc123","depth": 0,"body": "Example comment text.","bodyHtml": null,"authorId": "t2_user02","authorName": "example_commenter","communityName": "r/example","subredditId": "t5_comm01","score": 15,"scoreHidden": false,"controversiality": 0,"ups": 15,"downs": 0,"gilded": 0,"totalAwardsReceived": 0,"edited": false,"isSubmitter": false,"stickied": false,"distinguished": null,"locked": false,"collapsed": false,"collapsedReason": null,"permalink": "https://www.example.com/r/example/comments/abc123/example_post/def456/","removalReason": null,"createdAt": "2026-10-01T11:00:00+00:00","crawledAt": "2026-10-01T15:30:00+00:00","searchTerm": null,"dataSource": "live"}
A community row:
{"dataType": "community","id": "t5_comm01","parsedId": "comm01","name": "example","namePrefixed": "r/example","title": "Example community","description": "Example description.","descriptionHtml": null,"publicDescription": "Example public description.","subscribers": 250000,"activeUserCount": 1200,"over18": false,"lang": "en","communityIcon": "https://www.example.com/icon.png","bannerImg": null,"headerImg": null,"keyColor": "","primaryColor": "","submitText": "","submissionType": "any","linkFlairEnabled": true,"allowImages": true,"allowVideos": true,"allowGalleries": true,"allowPolls": true,"wikiEnabled": true,"quarantine": false,"restrictPosting": false,"restrictCommenting": false,"advertiserCategory": "","communityReviewed": false,"subredditType": "public","createdAt": "2015-05-01T00:00:00+00:00","crawledAt": "2026-10-01T15:30:00+00:00","searchTerm": "artificial intelligence","dataSource": "live"}
A user row:
{"dataType": "user","id": "t2_user01","parsedId": "user01","username": "example_user","commentKarma": 4200,"linkKarma": 900,"awardeeKarma": 10,"awarderKarma": 0,"totalKarma": 5110,"isGold": false,"isMod": false,"isEmployee": false,"isBlocked": false,"verified": true,"hasVerifiedEmail": true,"hasSubscribed": true,"acceptFollowers": true,"acceptChats": true,"acceptPms": true,"iconImg": "https://www.example.com/avatar.png","snoovatarImg": null,"subredditDisplayName": "u_example_user","subredditTitle": "example_user","subredditSubscribers": 12,"subredditPublicDescription": "","createdAt": "2020-01-01T00:00:00+00:00","crawledAt": "2026-10-01T15:30:00+00:00","dataSource": "live"}
Run summary
When a run ends, the Actor also saves a run-summary record in the key-value store. It includes source, scrapedAt, searchTerms, directUrls, fullSubreddits, itemsSaved, posts, comments, communities, users, unreachableSources and durationSeconds, plus a few technical fields. The summary is not a billed result.
Notes and limitations
- Each link, keyword and subreddit has its own
maxPostsCount; limits are not shared between them. - A single Reddit listing returns about 6,000 posts at most, so very large pulls from one listing can return fewer than requested.
- Fields Reddit hides or does not provide stay empty or
null. - Some rows can have no score, comment count or flair, or show older counts. The
dataSourcefield labels each row. - If nothing could be retrieved because Reddit was limiting requests, the run ends as failed with a plain message instead of succeeding with an empty dataset.
- The run stops early if you abort it or reach your maximum spend. Saved rows are kept.
Tips and advanced usage
- For many posts from one community, use
subredditUrlsand raisemaxPostsCount; a date window withpostedAfterkeeps the run short. - Comment threads add run time. Keep
maxCommentsPerPostlow while you test and raise it when the output looks right. - Sort the dataset by
scorePerHouror filter onisHighEngagementto see which posts are rising fast. - Use
onlyWithFlairto keep only posts that carry a flair. - To scrape all comments from a Reddit post, paste its link into
startUrlsand switch oncrawlCommentsPerPost. - Get Reddit comments by keyword with
searchComments, and filter Reddit posts by flair withonlyWithFlair. - Scrape a Reddit user profile from a profile link, and get subreddit subscriber count from community rows.
- Monitor a subreddit for new posts by scheduling runs with
postedAfter. - Export subreddit posts to CSV, or send Reddit data to Excel for quick reviews.
- Download Reddit posts to JSON as Reddit data for RAG, or use them for Reddit trend research.
- If a run ends as failed because Reddit was limiting requests, start it again a little later.
Integrations and API
Can I use Reddit Scraper - Posts, Comments, Search & Subreddits as an API?
Yes. Start runs and read results with the Apify API, or use the apify-client libraries for Node.js and Python. The API tab shows ready-made calls for this Actor.
How to scrape Reddit with Python
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("data_minds/reddit-scraper-posts-comments-search-subreddits").call(run_input={"startUrls": [{"url": "https://www.reddit.com/r/technology/"}],"searchTerms": ["artificial intelligence"],})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["dataType"], item.get("title") or item.get("body"))
Can I integrate Reddit Scraper - Posts, Comments, Search & Subreddits with other apps?
Yes. Apify connects Actors to Make, Zapier, Google Sheets and Slack, and can send a webhook when a run finishes. You can also schedule runs hourly, daily or weekly. Combine a schedule with searchTime or postedAfter to collect only recent posts.
Can I use Reddit Scraper - Posts, Comments, Search & Subreddits with AI agents (MCP)?
Yes. Apify exposes Actors to MCP-compatible AI assistants. Open the MCP tab of this Actor for the connection details.
Other Reddit scrapers
| Actor | Use it to |
|---|---|
| 💬 Reddit Post Comments Scraper | Scrape every comment from a Reddit post or thread, with nested replies, scores, authors and timestamps. |
| 👽 Reddit Post & Subreddit Extractor | Scrape Reddit posts, comments, communities and user profiles by keyword, URL or full subreddit. |
| 🔗 X (Twitter) Scraper Unlimited – No Limits | Scrape X (Twitter) posts, profiles, articles, threads and analytics from links, handles or search terms. |
| 🔗 Google Trends : Trending Search Scraper | Scrape real-time Google Trends trending searches — search volume, growth %, categories, related queries and related news — one clean row per... |
| 🔗 X (Twitter) Profile Posts Scraper | Scrapes posts from public X (Twitter) profiles without login. |
FAQ
Is it legal to scrape Reddit?
Scraping publicly available Reddit pages is generally treated differently from accessing private data, but the rules depend on your country, your purpose and how you handle personal data such as usernames. Review Reddit's terms and laws such as GDPR, and read Is web scraping legal?. This is not legal advice.
How does Reddit Scraper work?
You give it Reddit links, keywords or subreddit names plus limits and filters. The run collects public posts, comments, communities and user profiles that match, saves each row to the dataset as soon as it is ready, and writes a short run summary. Then you export the rows as JSON, CSV or Excel, or read them through the API.
Do I need a Reddit account, cookies or an API key?
No. The Actor needs no Reddit login, no cookies and no API key. You only need an Apify account. Paste links, keywords or subreddits, click Start and read the results from the dataset. Only public content that a logged-out visitor can see is collected, so private communities are not included.
Why scrape Reddit data?
Reddit holds honest discussion about products, tools and problems. Teams scrape it for brand monitoring, lead research, market research, customer feedback and sentiment analysis, or to build text datasets for AI projects. Scheduling the Actor turns one-off research into a steady feed of new posts and comments.
How many posts and comments can I get per run?
You decide with the limit fields. maxPostsCount accepts up to 50,000 per link, keyword or subreddit, and maxCommentsPerPost accepts up to 500 comments per post. Real totals depend on what Reddit shows for each source, and one listing returns about 6,000 posts at most. Speed is not guaranteed.
Can I export Reddit data to CSV or Excel?
Yes. Open the Dataset tab after a run and download the rows as JSON, CSV, Excel, XML or HTML. You can also pull them through the Apify API. Every row has a dataType, so you can filter a combined export into posts, comments, communities and users in a spreadsheet or a script.
Why am I getting fewer results than expected?
Common reasons are low limits (maxPostsCount defaults to 10), strict filters such as onlyWithFlair, date ranges, or includeNSFW being off. Reddit also hides some content and ends long listings early. Raise the limits, loosen the filters and try a full subreddit run through subredditUrls for more posts.
Reddit Scraper not working?
First check the run log, which explains skipped links and empty results in plain English. Confirm that your links are Reddit post, subreddit, user or search URLs and that at least one input is filled. If the problem continues, open the Issues tab on the Actor page with your run link and we will look into it.
Support and feedback
Found a bug or need a feature? Open an issue in the Issues tab. For custom solutions, integrations or questions, email hello.dataminds@gmail.com. Built and maintained by the data_minds team on Apify.
Reddit Scraper - Posts, Comments, Search & Subreddits is independent and not affiliated with Reddit; trademarks belong to their owners. It collects publicly available data only, and you are responsible for complying with applicable laws and the site's terms.