๐ฝ Reddit Post & Subreddit Extractora
Pricing
from $3.50 / 1,000 results
๐ฝ Reddit Post & Subreddit Extractora
Scrape Reddit posts, comments, communities and user profiles by keyword, URL or full subreddit โ no API key, no login. Date, flair and NSFW filters, built-in engagement metrics, five ready-made views, every item streamed live to your dataset.
Pricing
from $3.50 / 1,000 results
Rating
0.0
(0)
Developer
Data Minds
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
11 days ago
Last modified
Categories
Security
Limited permissionsShare
What is Reddit Post & Subreddit Extractor?
Reddit Post & Subreddit Extractor is a reddit subreddit scraper that collects posts, comments, communities and user profiles from Reddit by keyword, link or whole subreddit, for market research, social listening and sentiment analysis. Enter a search term, a Reddit URL or a subreddit name and get a dataset you can export to JSON, CSV or Excel. No Reddit login or API key is needed. Pay per result: $3.50 per 1,000 results on the Gold plan, $5.00 on the Free plan.
This reddit scraper runs online on Apify: add a keyword or a subreddit and click Start. No coding needed.
- ๐ฃ Reddit social listening and brand monitoring: track what people say about your product, competitors or topic, and run the search again on a schedule.
- ๐ง Reddit sentiment analysis data: collect posts and comment threads to score opinions in your own tools.
- ๐ Reddit market research and voice of customer research: read what a community asks for, complains about and recommends.
- ๐ Reddit academic research dataset: pull posts for a fixed date range and describe each community with subscriber counts.
- ๐ค Reddit data for LLM training and RAG: export clean post and comment text with parent and depth fields.
Results are saved to your Apify dataset while the run is still going, and you can use the platform features around it: API access, scheduling, webhooks and integrations.
What can Reddit Post & Subreddit Extractor do?
- ๐ Search Reddit by keyword: each search term runs as its own search, optionally limited to one subreddit.
- ๐ Scrape Reddit URLs in bulk: post, subreddit, user profile and search-result links in one run.
- ๐ Collect a whole subreddit: list subreddit names or links in the full subreddit field and raise Max posts.
- ๐ฏ Filter before saving: date range for posts and comments, only posts with a flair, NSFW on or off.
- ๐ฌ Scrape Reddit comments: collect comments for every post found, up to a limit you choose per post.
- ๐ Reddit engagement metrics on every post: age in hours, score per hour and a high-engagement flag for reddit trend analysis.
- ๐ฆ Export Reddit data: download JSON, CSV, Excel, XML or HTML from five ready-made dataset views.
Why use a reddit subreddit scraper instead of copying posts by hand?
Copying posts and comments from Reddit into a spreadsheet is slow and misses fields such as scores, flairs and timestamps. As a reddit post downloader and reddit scraping tool, this Actor returns the same fields for every row, in one structured dataset, so you can filter, chart and compare runs.
What data can Reddit Post & Subreddit Extractor extract?
Every row has a dataType of post, comment, community or user, so mixed exports are easy to split.
| Type | Fields |
|---|---|
| ๐ Post: content | id, parsedId, title, body, bodyHtml, postType, mediaType, flair, postUrl, url, contentUrl, urlOverriddenByDest, domain, outboundUrlHost, thumbnail, images |
| ๐ค Post: author and community | authorId, parsedAuthorId, authorName, authorFlairText, authorPremium, communityName, communityId, parsedCommunityId, parsedCommunityName, subredditName, subredditId, parsedSubredditId, subredditSubscribers |
| ๐ผ Post: votes and flags | score, upVotes, upvoteRatio, commentsCount, nsfw, over18, isSelf, spoiler, locked, stickied, edited, editedAt, distinguished, scoreHidden, isOriginalContent, isRobotIndexable, numCrossposts, numDuplicates, totalAwardsReceived, gilded |
| ๐ท Post: media | hasMedia, isVideo, isGallery, galleryCount, galleryImages, mediaAssets, videoUrl, media, secureMedia, mediaMetadata, galleryData |
| ๐ฉ Post: moderation | removedByCategory, removedBy, bannedBy, removalReason, modReasonTitle |
| ๐ Post: engagement metrics | ageHours, scorePerHour, commentsPerHour, engagementTotal, commentToScoreRatio, isHighEngagement, titleLength, bodyLength, wordCount |
| ๐ฌ Comment | id, parsedId, postId, parentId, linkId, depth, body, bodyHtml, authorId, authorName, communityName, subredditId, score, scoreHidden, controversiality, ups, downs, gilded, totalAwardsReceived, edited, isSubmitter, stickied, distinguished, locked, collapsed, collapsedReason, permalink, removalReason |
| ๐ Community | id, parsedId, name, namePrefixed, title, description, descriptionHtml, publicDescription, subscribers, activeUserCount, over18, lang, subredditType, communityIcon, bannerImg, headerImg, keyColor, primaryColor, submitText, submissionType, linkFlairEnabled, allowImages, allowVideos, allowGalleries, allowPolls, wikiEnabled, quarantine, restrictPosting, restrictCommenting, advertiserCategory, communityReviewed |
| ๐ง User | id, parsedId, username, commentKarma, linkKarma, awardeeKarma, awarderKarma, totalKarma, isGold, isMod, isEmployee, isBlocked, verified, hasVerifiedEmail, hasSubscribed, acceptFollowers, acceptChats, acceptPms, iconImg, snoovatarImg, subredditDisplayName, subredditTitle, subredditSubscribers, subredditPublicDescription |
| ๐ All types | createdAt, crawledAt, dataSource; searchTerm on posts, comments and communities (empty unless the row came from a keyword search) |
Note: Some values can be empty because Reddit does not publish every value for every item. The
dataSourcefield is a short label on each row; rows with a label other thanlivecan show older or missingscore,commentsCountandflairvalues.
What data can't Reddit Post & Subreddit Extractor extract?
- Content that needs a Reddit login, such as private communities or personal feeds.
- Direct messages, vote history or account e-mail addresses.
- Every post of a very large community: Reddit decides how many items it returns, so a run can return fewer rows than you ask for.
For every comment under one post, try Reddit Post Comments Scraper.
How to scrape Reddit posts and subreddits
Reddit Post & Subreddit Extractor is built for an easy start, even if you have never extracted data from the web before.
- Create a free Apify account with your email.
- Open Reddit Post & Subreddit Extractor.
- Add keywords to Search terms, links to Reddit URLs, or names to Subreddits to scrape in full.
- Set Max posts to the number of posts you want per search term, URL or subreddit.
- Add a date range, flair or NSFW setting, and turn on Scrape comments for each post if you want comment rows.
- Click Start and wait for the run to finish.
- Open the Output tab, pick a view and download your data in JSON, CSV, Excel, XML or HTML.
How much does it cost to scrape Reddit?
Reddit Post & Subreddit Extractor 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 row. Apify platform usage is billed in addition. The price per result depends on your Apify plan.
| 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 an Actor start event of $0.00005 per GB of memory, with a minimum of one event. The default memory of this Actor is 1024 MB (1 GB), so one start event applies: $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 Apify platform usage.
See the pricing tab for all events.
Is scraping Reddit free?
You can start for free. The Apify Free plan includes $5 in monthly credit, which covers about 1,000 results at the Free price of $0.005 per result ($5 divided by $0.005), before platform usage. The default input saves up to 20 results, which costs about $0.10 on the Free plan.
Input
Choose at least one of Search terms, Reddit URLs or Subreddits to scrape in full. No field is required by the schema, but a run with none of the three stops with a message and saves nothing. Set the input in the Apify form or send JSON through the API. This example searches one keyword and reads one subreddit:
{"searchTerms": ["artificial intelligence"],"startUrls": [{ "url": "https://www.reddit.com/r/technology/" }]}
All other fields use the defaults below. See the input schema tab for the full form.
Keyword search
Use these fields to scrape Reddit by keyword: each term runs as its own search with its own limits.
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
searchTerms | array of strings | No | ["artificial intelligence"] in the form | Keywords to search. Each term is a separate search. |
searchPosts | boolean | No | true | Include posts in the results. |
searchComments | boolean | No | false | Include comments that match the term. |
searchCommunities | boolean | No | false | Include matching communities (subreddits). |
withinCommunity | string | No | empty (all of Reddit) | Limit the search to one subreddit. Accepts developers, r/developers or a full subreddit URL. |
searchSort | string | No | new | One of relevance, hot, top, new, comments. |
searchTime | string | No | all | One of all, hour, day, week, month, year. |
maxCommentsCount | integer | No | 10 | Maximum comments returned by comment search. Minimum 0. |
maxCommunitiesCount | integer | No | 2 | Maximum communities returned by community search. Minimum 0. |
Reddit URLs and full subreddit
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
startUrls | array of URLs | No | [{"url": "https://www.reddit.com/r/technology/"}] in the form | Post, subreddit, user profile and search-result URLs. Bulk input is supported. |
subredditUrls | array of strings | No | empty | Subreddit names or links to collect in full, such as AskReddit, r/AskReddit or a subreddit URL. Uses more requests, so raise Max posts. |
Filters, comments and limits
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
postedAfter | string (date) | No | empty | Keep posts created on or after this date (00:00 UTC). When set, results are fetched newest first and searchTime is ignored. |
postedBefore | string (date) | No | empty | Keep posts created on or before this date (23:59:59 UTC). |
commentedAfter | string (date) | No | empty | Keep comments created on or after this date (UTC). |
commentedBefore | string (date) | No | empty | Keep comments created on or before this date (UTC). |
onlyWithFlair | boolean | No | false | Drop posts that have no flair. |
includeNSFW | boolean | No | false | Include posts marked NSFW (18+). |
crawlCommentsPerPost | boolean | No | false | Collect comments for every post found. This increases run time and data. |
maxCommentsPerPost | integer | No | 10 | Maximum comments per post when comment collection is on. Range 0 to 500. |
maxPostsCount | integer | No | 10 | Maximum posts saved per search term, URL or subreddit. Range 0 to 50,000. |
Network and pacing
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
proxyConfiguration | object | No | preselected in the form | Network settings for the run. Leave the default unless you need your own. |
postConcurrency | integer | No | 3 | How many posts' comment threads are fetched at the same time. Range 1 to 10. |
maxRetries | integer | No | 3 | Retries for a failed request. Range 1 to 10. |
requestDelayMin | number | No | 1.0 | Minimum delay between requests in seconds. Range 0 to 10. |
requestDelayMax | number | No | 2.5 | Maximum delay between requests in seconds. Range 0 to 15. |
Full subreddit scrape
Add AskReddit, r/AskReddit or a full subreddit link to subredditUrls, then raise maxPostsCount.
- โ
Good:
"subredditUrls": ["AskReddit"]with"maxPostsCount": 500 - โ Bad:
"subredditUrls": ["https://www.reddit.com/r/AskReddit/comments/abc123/"](a post link is not a subreddit link and is skipped)
Warning:
maxPostsCountapplies to each search term, URL or subreddit separately, so three subreddits with a value of 500 can save up to 1,500 posts, and every saved row is charged.
Comments
Turn on crawlCommentsPerPost and set maxCommentsPerPost to collect comment rows for each post. Use commentedAfter and commentedBefore to keep only comments from a period.
- โ
Good:
"crawlCommentsPerPost": truewith"maxCommentsPerPost": 20 - โ Bad:
"maxCommentsCount": 20to get comments under posts (that field only limits keyword comment search)
Warning: Comment collection increases run time, data and cost, because each comment is a separate paid result.
Dates and search sorting
Use YYYY-MM-DD for postedAfter and postedBefore.
- โ
Good:
"postedAfter": "2026-09-01"and"postedBefore": "2026-09-30" - โ Bad:
"postedAfter": "last month"(not a date)
Warning: When
postedAfterorpostedBeforeis set, results are fetched newest first andsearchTimeis ignored.
Output
Results go to the default Apify dataset, with five views in the Output tab: Overview, Posts, Comments, Communities and Users. Download the dataset as JSON, CSV, Excel, XML or HTML from the Output or Storage tab or through the API, and pick only the fields you need. Each run also saves a run-summary record in the key-value store.
JSON example
Results for the input example above. Posts found by the search carry the search term in searchTerm.
{"dataType": "post","id": "t3_abc123","parsedId": "abc123","title": "Sample post title","body": "Sample post text.","bodyHtml": null,"authorId": "t2_xyz789","parsedAuthorId": "xyz789","authorName": "example_user","communityName": "r/example","communityId": "t5_2abcd","parsedCommunityId": "2abcd","parsedCommunityName": "example","subredditName": "example","subredditId": "t5_2abcd","parsedSubredditId": "2abcd","postType": "text","flair": "Discussion","upVotes": 120,"commentsCount": 14,"postUrl": "https://example.com/r/example/comments/abc123/sample_post/","url": "https://example.com/r/example/comments/abc123/sample_post/","contentUrl": null,"images": [],"nsfw": false,"score": 120,"upvoteRatio": 0.96,"subredditSubscribers": 50000,"over18": false,"isSelf": true,"spoiler": false,"locked": false,"stickied": false,"edited": false,"editedAt": null,"distinguished": null,"scoreHidden": false,"isOriginalContent": false,"numCrossposts": null,"totalAwardsReceived": null,"gilded": null,"domain": "self.example","thumbnail": null,"urlOverriddenByDest": null,"authorFlairText": null,"authorPremium": false,"numDuplicates": null,"removedByCategory": null,"removedBy": null,"bannedBy": null,"removalReason": null,"modReasonTitle": null,"isRobotIndexable": null,"mediaType": "text","hasMedia": false,"isVideo": false,"isGallery": false,"galleryCount": 0,"galleryImages": [],"mediaAssets": [],"videoUrl": null,"media": null,"secureMedia": null,"mediaMetadata": null,"galleryData": null,"ageHours": 66.22,"scorePerHour": 1.81,"commentsPerHour": 0.21,"engagementTotal": 134,"commentToScoreRatio": 0.12,"isHighEngagement": false,"titleLength": 17,"bodyLength": 17,"wordCount": 3,"outboundUrlHost": null,"createdAt": "2026-10-14T17:46:40+00:00","crawledAt": "2026-10-17T12:00:00+00:00","searchTerm": "artificial intelligence","dataSource": "live"}
Comment example
Comments appear when crawlCommentsPerPost or searchComments is on, and when a user profile URL is added with maxCommentsCount above 0.
{"dataType": "comment","id": "t1_def456","parsedId": "def456","postId": "abc123","parentId": "t3_abc123","linkId": "t3_abc123","depth": 0,"body": "Sample comment text.","bodyHtml": null,"authorId": "t2_xyz789","authorName": "example_user","communityName": "r/example","subredditId": "t5_2abcd","score": 8,"scoreHidden": false,"controversiality": null,"ups": 8,"downs": null,"gilded": null,"totalAwardsReceived": null,"edited": false,"isSubmitter": false,"stickied": false,"distinguished": null,"locked": false,"collapsed": false,"collapsedReason": null,"permalink": "https://example.com/r/example/comments/abc123/sample_post/def456/","removalReason": null,"createdAt": "2026-10-14T18:46:40+00:00","crawledAt": "2026-10-17T12:00:00+00:00","searchTerm": "artificial intelligence","dataSource": "live"}
Community example
Communities appear when searchCommunities is on, or when a subreddit URL is used with maxPostsCount set to 0.
{"dataType": "community","id": "t5_2abcd","parsedId": "2abcd","name": "example","namePrefixed": "r/example","title": "Example community","description": null,"descriptionHtml": null,"publicDescription": "A sample community.","subscribers": 50000,"activeUserCount": 120,"over18": false,"lang": "en","communityIcon": null,"bannerImg": null,"headerImg": null,"keyColor": null,"primaryColor": null,"submitText": null,"submissionType": null,"linkFlairEnabled": false,"allowImages": false,"allowVideos": false,"allowGalleries": false,"allowPolls": false,"wikiEnabled": false,"quarantine": false,"restrictPosting": false,"restrictCommenting": false,"advertiserCategory": null,"communityReviewed": false,"subredditType": "public","createdAt": "2017-07-14T02:40:00+00:00","crawledAt": "2026-10-17T12:00:00+00:00","searchTerm": "artificial intelligence","dataSource": "live"}
User example
User rows appear when a user profile URL is added to startUrls.
{"dataType": "user","id": "t2_xyz789","parsedId": "xyz789","username": "example_user","commentKarma": 1200,"linkKarma": 800,"awardeeKarma": null,"awarderKarma": null,"totalKarma": 2000,"isGold": false,"isMod": false,"isEmployee": false,"isBlocked": false,"verified": false,"hasVerifiedEmail": false,"hasSubscribed": false,"acceptFollowers": false,"acceptChats": false,"acceptPms": false,"iconImg": null,"snoovatarImg": null,"subredditDisplayName": "u_example_user","subredditTitle": "example_user","subredditSubscribers": 10,"subredditPublicDescription": "Sample profile.","createdAt": "2020-09-13T12:26:40+00:00","crawledAt": "2026-10-17T12:00:00+00:00","dataSource": "live"}
Run summary
The run-summary record in the key-value store includes source, scrapedAt, searchTerms, directUrls, fullSubreddits, itemsSaved, posts, comments, communities, users, unreachableSources and durationSeconds.
Notes and limitations
- Some posts, comments and users have empty fields, because Reddit does not publish every value for every item.
- Posts marked NSFW are skipped unless
includeNSFWistrue. maxPostsCountapplies to each search term, URL or subreddit separately, and Reddit may return fewer posts than you ask for.- On a user profile URL,
maxPostsCountcaps the posts andmaxCommentsCountcaps the comments collected for that profile. - On a subreddit URL,
maxPostsCountset to 0 returns only the community row. - If comment search across the whole site returns nothing, set
withinCommunityto search one subreddit's comments instead. - If nothing could be retrieved for your input, the run ends as failed with a message instead of succeeding with an empty dataset.
Tips and advanced usage
How many results can you scrape with Reddit Post & Subreddit Extractor?
maxPostsCount accepts up to 50,000 posts for each search term, URL or subreddit, and comments add rows on top. The exact number depends on how much Reddit returns for your keyword or community, your date range and your filters. The best way to know for your use case is a quick test run with a small Max posts value.
How to get faster or cheaper results
- Keep
maxPostsCountsmall while testing, because every saved row is charged. - Leave
crawlCommentsPerPostoff unless you need comments, and keepmaxCommentsPerPostlow. - Use
postedAfterandpostedBeforeto collect only the period you need. - Raise
postConcurrencyto fetch several comment threads at the same time. - Set a maximum cost per run in Apify to cap spending; the run stops cleanly and keeps everything saved so far.
Monitor a topic over time
Add your brand or product to searchTerms, set searchSort to new and searchTime to week, then schedule Reddit scraping in Apify. Compare score, commentsCount and isHighEngagement between runs, or send each finished run to a webhook.
Integrations and API
Can I use Reddit Post & Subreddit Extractor as an API?
Yes. The Apify API gives you programmatic access to this reddit subreddit scraper: start runs, schedule them and fetch results. Use the apify-client package for Node.js or Python. See the API tab for ready-to-use code.
How to scrape Reddit with Python
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("data_minds/reddit-post-subreddit-extractor").call(run_input={"searchTerms": ["artificial intelligence"],"startUrls": [{"url": "https://www.reddit.com/r/technology/"}],})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item)
Can I integrate Reddit Post & Subreddit Extractor with other apps?
Yes. Connect the Actor with Make, Zapier, Google Sheets, Slack and more through Apify integrations. Use webhooks to trigger an action whenever a run finishes, and schedule runs to keep your Reddit data fresh.
Can I use Reddit Post & Subreddit Extractor with AI agents (MCP)?
Yes. Connect the Actor to Claude and other MCP-compatible AI clients through the Apify MCP server. Open the MCP tab for setup steps.
Other Reddit scrapers
| Actor | What it does |
|---|---|
| ๐ฌ Reddit Post Comments Scraper | Scrape every comment from any Reddit post or thread, with full nested replies, scores, authors and timestamps. |
| ๐ฝ Reddit Scraper - Posts, Comments, Search & Subreddits | Bulk Reddit scraping without an API key or login from post, subreddit, user or search URLs. |
| ๐ 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... |
| ๐ Website Content Crawler | Turn any website into clean text, Markdown and page metadata for RAG pipelines and LLM knowledge bases. |
FAQ
Is it legal to use a reddit subreddit scraper?
This Actor collects publicly available Reddit data, but whether your use is legal depends on your country, the data and your purpose. Personal data is covered by rules such as GDPR, and Reddit's terms may apply. This is not legal advice; read Is web scraping legal? before collecting user data.
Does the reddit subreddit scraper need an API key or login?
No. You do not need a Reddit account, login or Reddit API key, so there is no Reddit API setup for public data. You only need an Apify account. Enter keywords, links or subreddit names, click Start and the results are saved to your dataset.
How does Reddit Post & Subreddit Extractor work?
You give it search terms, Reddit URLs or subreddit names plus optional filters such as dates, flair and NSFW. It collects the matching posts, comments, communities and user profiles, saves each result to the dataset as soon as it is ready, and writes a run summary with totals when the run ends.
Why scrape Reddit data?
People scrape Reddit to understand what real users say. Common uses are sentiment analysis, social listening, competitor monitoring, market research, content ideas, academic research and building text datasets for AI projects. Reddit threads contain questions, complaints and recommendations that are hard to collect by hand at scale.
How many posts can the reddit subreddit scraper get per run?
Add the subreddit to Subreddits to scrape in full or paste its link into Reddit URLs, then set Max posts. The field accepts up to 50,000 posts for each search term, URL or subreddit. Reddit can return fewer posts than you ask for, so check the run log and the run summary.
Can I export Reddit comments to CSV, Excel or JSON?
Yes. Open the Output tab after the run and choose JSON, CSV, Excel, XML or HTML. You can also download the data through the Apify API. Posts, comments, communities and users sit in one dataset, so filter by the dataType column to split them into separate files for a spreadsheet.
Why am I getting fewer results than expected?
Common causes are a small Max posts value, a narrow date range, a flair or NSFW filter, a search with few matches, or Reddit returning fewer items than requested. Widen the filters, raise Max posts and read the run log. Rows can also have empty values when Reddit does not publish them.
Reddit Post & Subreddit Extractor not working?
Open the run log first: it explains what happened and what to try next. If a run fails or returns nothing for an input that works in your browser, wait and run it again, then report it in the Issues tab of this Actor with your input and run link so the problem can be reproduced and fixed.
Support and feedback
Found a bug or have a feature request? Please create an issue on the Issues tab. For custom solutions, integrations or questions, write to hello.dataminds@gmail.com. Built and maintained by the data_minds team on Apify.
Reddit Post & Subreddit Extractor is independent and not affiliated with Reddit. Reddit and other trademarks belong to their owners. The Actor collects publicly available data only, and you are responsible for complying with applicable laws and the site's terms.