· 15 min read
Reddit MCP Scraper: Up to 2,500 Free Results a Month (2026)
Each post record carries 8 primary identity and content field groups, returning structured JSON for subreddits, comments, user profiles, search results, and curated communities. A thousand results cost $2.00 on the free plan, which covers up to 2,500 results monthly through Apify's free plan without entering a credit card. You can configure 63 input controls to isolate target threads, filter out removed posts, or extract full comment trees. This Actor is designed for data teams and software engineers building automated research pipelines or training data; it is not for users who require hidden user emails or private community data, which public Reddit records do not include.
Try it: open Reddit MCP Scraper on Apify, sign in on the free plan and run the prefilled example.
Can you try Reddit MCP Scraper before paying?
Yes. Apify's free plan includes $5.00 of prepaid usage every month and asks for no credit card. At $0.002 per result, that covers up to 2,500 results of Reddit MCP Scraper a month, before run-start charges and platform usage.
Reddit MCP Scraper was last updated on 2026-08-27. It is one of 1,724 Actors CrawlerBros publishes on Apify, which together have 722,845 lifetime public runs and an average rating of 4.63 out of 5 across 416 reviews.
What does it cost to run Reddit MCP Scraper?
Each result costs $0.002 on Apify's free plan, which is $2.00 per 1,000 results. Starting a run is charged separately at $0.005 per GB of Actor memory. Apify also bills the platform usage each run consumes, at the rates of your Apify plan, on top of these charges.
| Apify plan | Per result | Per 1,000 results |
|---|---|---|
| FREE | $0.002 | $2.00 |
| BRONZE | $0.00167 | $1.67 |
| SILVER | $0.00133 | $1.33 |
| GOLD | $0.001 | $1.00 |
| PLATINUM | $0.001 | $1.00 |
| DIAMOND | $0.001 | $1.00 |
Your choice of subreddits, postUrls, or keywords directly dictates the volume of dataset writes that incur charges. The global maxItems control serves as the primary safeguard against unexpected billing spikes by terminating output generation once your target item count is reached. To test your setup without wasting budget, execute your first run with maxPosts set to a low number like 5.
How do you run Reddit MCP Scraper from the API?
The schema marks 1 of its 63 controls as required: mode. The payload below uses the schema's own prefilled values, so it runs as written once you substitute your API token.
Call the synchronous endpoint to start a run and receive dataset items in one request:
curl -X POST "https://api.apify.com/v2/acts/crawlerbros~reddit-mcp-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"mode":"subreddit","subreddits":["python"],"postUrls":[],"usernames":[],"keywords":[]}'
The same run from Python, using the official client:
from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run_input = {
"mode": "subreddit",
"subreddits": [
"python"
],
"postUrls": [],
"usernames": [],
"keywords": []
}
run = client.actor("crawlerbros~reddit-mcp-scraper").call(run_input=run_input)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)
And from Node.js:
import { ApifyClient } from 'apify-client'
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' })
const input = {
"mode": "subreddit",
"subreddits": [
"python"
],
"postUrls": [],
"usernames": [],
"keywords": []
}
const run = await client.actor('crawlerbros~reddit-mcp-scraper').call(input)
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)
The synchronous endpoint holds the connection open until the run finishes, which is convenient for small batches and wrong for large ones. For anything long running, start the run asynchronously and poll, or attach a webhook, so a dropped connection does not cost you the results.
Which Reddit MCP Scraper inputs matter, and which can you skip?
The mode parameter dictates how all other controls behave, requiring you to set it to subreddit, comments, profile, search, or discover before populating other inputs. Choose your target lists, such as subreddits for subreddit mode or postUrls for comment trees, and leave advanced filtering toggles untouched during initial schema testing. Most users should start with default sorting and small item caps before enabling strict content filters.
mode(string): Choose which Reddit data to scrape: subreddit posts, post comment threads, user profiles, keyword search, or curated community discovery (no keyword needed). Default:"subreddit".subreddits(array): List of subreddits to scrape. Accepts names (python), r/ names or full URLs.postUrls(array): List of Reddit post URLs (or comment URLs / post IDs) to scrape comment threads from.usernames(array): List of Reddit usernames to scrape (names, u/ names or profile URLs).keywords(array): Keywords to search for. Advanced syntax supported: "exact phrase", python AND rust, -exclude, author:name, flair:tag, subreddit:name, site:domain.maxPosts(integer): Maximum posts per subreddit / user / keyword. In profile mode this caps the 'posts'/'overview' sections' post count only - see maxComments for the comment count cap. Default:25.maxItems(integer): Global safety cap on the total number of records pushed across the whole run (all modes and all inputs). Default:100000.sort(string): How to sort posts (subreddit mode), search results (search mode), or a user's post/comment history (profile mode - 'rising'/'best' fall back to 'new' for profile mode since Reddit's user listing doesn't support them). Default:"hot".timeFilter(string): Time range for 'top'/'controversial' sort (subreddit mode, profile mode) or search results (search mode). Default:"day".maxComments(integer): Maximum comments per post (comments mode), per keyword (search mode), or per user's comment history (profile mode, 'comments'/'overview' sections - capped independently from maxPosts). Default:100.commentSort(string): How to sort comment threads (comments mode). Default:"confidence".includePost(boolean): Emit the parent post record before each thread's comments. Default:true.
The other 51 controls, with their defaults, are listed in the input schema on Reddit MCP Scraper on Apify.
Fixed-choice controls: mode accepts subreddit (Subreddit posts), comments, profile, search, discover (Discover communities); sort accepts relevance, hot, new, top, rising, controversial, best, comments (Comment count); timeFilter accepts hour (Past Hour), day (Past Day), week (Past Week), month (Past Month), year (Past Year), all (All Time); commentSort accepts confidence (Best (Confidence)), top, new, controversial, old, qa (Q&A).
What does Reddit MCP Scraper return?
Returned dataset records provide structured post content, nested comment threads, community rule sets, and user karma totals that are ready for database insertion or LLM indexing. They omit private account details, non-public mod logs, and real-time subscriber counts not served by public pages.
Output: per-post (mode = subreddit / search / profile)
- Identity -
post_id,post_name,subreddit,subreddit_prefixed,subreddit_id,subreddit_subscribers,subreddit_type - Content -
title,author(bare username),author_meta(lean author-identity object:username,id,flair+ background/text color/css class/richtext/template id,is_premium,is_blocked,has_patreon_flair- built from data already on the post, no extra requests),content(self-post body, markdown),content_html,content_url,url/permalink,url_overridden_by_dest,domain,post_hint,is_self,post_type(self/link/image/video/gallery/poll) - Engagement -
score,ups,downs,upvote_ratio,num_comments,num_crossposts,num_duplicates,gilded,total_awards_received,awards[](name, count, coin price, icon) - Flair -
link_flair(+ background/text color, css class, richtext, template id) - Media -
thumbnail_url/thumbnail_width/thumbnail_height,media_type,has_media,images[],gallery_images[],gallery_count,video_url,video_duration_seconds,video_width,video_height,video_has_audio,video_bitrate_kbps,poll_data(options, vote count, end time) - External embeds -
embed_provider,embed_type,embed_title,embed_author_name,embed_thumbnail_url,embed_html,embed_width,embed_height(YouTube/Imgur/Twitch/Vimeo etc. link posts) - Flags -
is_stickied,is_locked,is_archived,is_pinned,is_nsfw,is_spoiler,is_original_content,is_crosspost(+crosspost_parent_id),is_crosspostable,is_meta,distinguished(moderator/admin/special),removed_by_category,content_categories,quarantine - Timestamps & metadata -
created_utc,created_at,edited,edited_at,crawled_at,source(json/dom),search_term(search mode only),dataType: "post"
Output: per-comment (mode = comments / search / profile)
- Identity & linkage -
comment_id,comment_name,post_id,post_url,post_title,link_id,parent_id,parent_kind(post/comment),depth(0 = top-level),subreddit,subreddit_prefixed,subreddit_id,subreddit_type - Content -
body,body_html,author(bare username),author_meta(lean author-identity object:username,id,flair+ colors/css class/richtext/template id,is_premium,is_blocked,has_patreon_flair- built from data already on the comment, no extra requests) - Engagement -
score,ups,downs,score_hidden,controversiality,gilded,total_awards_received,awards[] - Flags -
is_op(comment author = post author),is_stickied,is_locked,distinguished,archived,collapsed(+collapsed_reason,collapsed_because_crowd_control,collapsed_reason_code),removed_by_category - Timestamps & metadata -
created_utc,created_at,edited,edited_at,permalink,crawled_at,source,search_term(search mode only),dataType: "comment"
Output: per-community (mode = subreddit with community info / search / discover)
- Identity -
subreddit,subreddit_prefixed,subreddit_id,url,title - Description -
description,description_html,public_description,public_description_html,submit_text,submit_text_html,submit_text_label,submit_link_label - Size & activity -
subscribers,active_user_count,created_utc,created_at - Type & rules -
subreddit_type(public/restricted/private/user),submission_type,restrict_posting,restrict_commenting,over18,quarantine,wiki_enabled,lang,advertiser_category,rules[](name, description, violation reason, priority - only when "Include subreddit rules" is on) - Appearance -
community_icon,icon_img(+ width/height),banner_img(+ width/height),banner_background_image,banner_background_color,mobile_banner_image,header_img(+ width/height),header_title,primary_color,key_color - Content permissions -
allow_images,allow_videos,allow_videogifs,allow_galleries,allow_polls,allowed_media_in_comments,spoilers_enabled,original_content_tag_enabled,all_original_content - Flair configuration -
link_flair_enabled(+ position),user_flair_enabled_in_sr(+ position, type, text, richtext, template id, colors) - Metadata -
crawled_at,source,search_term(search mode only),dataType: "community"
Output: per-user_profile (mode = profile / search)
- Identity -
username,user_id,profile_url,icon_img(avatar),snoovatar_img(+snoovatar_size) - Karma breakdown -
post_karma,comment_karma,total_karma,awardee_karma(received from awards),awarder_karma(given as awards) - Account flags -
is_gold(Reddit Premium),is_mod,is_employee,has_verified_email,verified,accept_followers,hide_from_robots - Profile subreddit -
user_subredditobject: display name, title, subscriber count, icon, banner, bio (public_description), NSFW flag, type, URL - Optional enrichment -
trophies[](name + icon URL, when "Include trophies" is on),moderated_subreddits[](subreddit, subscribers, type, mod permissions - when "Include moderated subreddits" is on) - Timestamps & metadata -
created_utc,created_at(account creation),crawled_at,source,search_term(search mode only),dataType: "user_profile"
These are the documented fields. Optional ones can be empty on a given record, so measure how often each field your deliverable depends on is populated across a real sample before automating the handoff.
How do you build the workflow end to end?
Open Reddit MCP Scraper and work through these in order. Each step ends with something to check, so a bad configuration surfaces on a small run rather than a scheduled one.
- Select your target operational mode using the mode parameter.
- Supply the relevant starting array, such as subreddits, postUrls, usernames, or keywords depending on your chosen mode.
- Set maxItems as a hard upper bound on total dataset output across all execution branches.
- Configure date range constraints using postedAfter and postedBefore in UTC format YYYY-MM-DD.
- Apply specific output filtering toggles like excludeRemoved, excludeStickied, or minScore to filter unwanted records before dataset writing.
- Execute a test run with low item caps to verify schema shape across emitted dataType values.
- Inspect the resulting dataset to confirm missing optional attributes meet your downstream expectations.
How do you apply it? Three worked playbooks
These are Reddit MCP Scraper's own documented use cases, each worked through as an operating pattern rather than a description.
Use case 1: Market research & brand monitoring
Outcome: Track mentions of a product, brand or competitor across subreddits on a schedule
Configure: mode="search", keywords=["brand name"], searchPosts=true, searchComments=true, timeFilter="week"
Working method: Start by setting target keywords in the keywords control. Run the search mode across both posts and comments, saving output to an external database. Compare weekly volumes and sentiment distribution across discovered subreddits to track brand reach over time.
Deliverable: A structured dataset of Reddit posts and comments containing target terms, annotated with crawl timestamps and post scores.
Stop condition: Execution yields zero records for three consecutive runs or search mode returns empty dataset errors.
Use case 2: Lead generation
Outcome: Find high-intent posts and comments matching your keywords via search mode
Configure: mode="search", keywords=["looking for alternative", "recommendation"], withinCommunity="r/technology", minScore=5
Working method: Define high-intent purchase query phrases in keywords. Restrict scope using withinCommunity to focus on relevant buyer spaces, then filter out low-engagement threads using minScore before exporting relevant leads.
Deliverable: Filtered list of high-intent post and comment records with direct permalink URLs and author metadata.
Stop condition: More than half of the returned records lack valid permalink strings or fail minScore checks.
Use case 3: AI/ML training data
Outcome: Build clean, structured Reddit corpora (posts + comments + profiles) for fine-tuning or RAG
Configure: mode="subreddit", subreddits=["python"], maxPosts=500, fullSubreddit=true, excludeRemoved=true
Working method: Extract broad thread histories from target communities using fullSubreddit mode. Strip deleted or removed content via excludeRemoved, then collect matching comment trees using comments mode to form connected conversation datasets.
Deliverable: Clean JSON dataset containing paired post body texts, structured comment threads, and community rule definitions.
Stop condition: The proportion of removed or empty content fields in the returned dataset exceeds ten percent.
What breaks, and how do you design around it?
When encountering Reddit's internal caps of roughly 1,000 posts per listing or 200 search results, split your targets into narrower date windows using postedAfter and postedBefore. If comment searches slow down due to direct page parsing, switch to post-level collection or isolate specific threads via postUrls.
When should you not use Reddit MCP Scraper?
Do not use this Actor if you only need simplified comment extraction without multi-mode routing, as using a narrower tool will reduce pipeline complexity. For standalone comment collection, consider Reddit Comment Scraper or Reddit Comment Scraper Pro. If your project focuses exclusively on tracking keyword search results without extracting user profiles or full community metrics, Reddit Keywords offers a direct search integration.
What should you check before trusting the output?
- Verify that dataType correctly tags each record as post, comment, community, or user_profile.
- Check that created_utc falls strictly within your specified postedAfter and postedBefore window.
- Confirm that body or content is non-empty on records where postType or mode requires text payloads.
- Halt execution if the ratio of dropped items via excludeRemoved causes total output to fall below expected sample thresholds.
- Validate that score or upvote_ratio satisfies your configured minScore or minUpvoteRatio rules.
None of this proves a record is correct. It gives a scheduled Reddit MCP Scraper run defined points where it should stop instead of quietly passing bad data downstream.
Frequently asked questions
How much does running this Actor cost on Apify?
Data output costs $0.002 per result on the free plan, which equals $2.00 per 1,000 results. Apify's free plan provides $5.00 of monthly credit, covering up to 2,500 results before platform compute costs apply.
Do I need a Reddit API key or user credentials?
No API key or user credentials are required. The Actor processes publicly accessible web data directly without needing OAuth application tokens or login session cookies.
Why are some fields missing from my output JSON?
To prevent stray empty keys, the Actor omits fields that Reddit does not supply for a given item. For instance, video metadata only attaches to native video uploads.
Can I target specific subreddits when using search mode?
Yes. Set the withinCommunity input to restrict keyword searches to a single target subreddit, or use advanced keyword syntax inside the keywords array.
Does this Actor export data suitable for LLM applications?
Yes. Every record contains a dataType tag that simplifies parsing posts, comments, profiles, and communities into downstream RAG vector databases or training pipelines.
Where to go next
When you are ready to run it, open Reddit MCP Scraper on Apify; the free plan covers up to 2,500 results a month.
Start with the Reddit MCP Scraper Actor page for the current input schema, pricing tier, and run history.
It is part of the Reddit Scraping Suite, which puts every related Actor on one page with its price and run history.
If you are comparing approaches rather than committing to one Actor, these category pages list every option we publish:
- Comment scrapers covers 34 Actors in this family.
Other Actors we maintain for related data:
- Reddit MCP Scraper Pro (Multi-Mode): Unified Reddit scraper - run subreddit, comments and profile modes in a single execution.
- Reddit Profile Crawler Pro: Scrape Reddit user profiles with split karma (post/comment/awarder/awardee), account age, admin/employee/moderator badges, trophies, moderated subreddits, and recent comments.
- Reddit Comment Scraper: Scrape Reddit Comments from a post on Reddit.
- Reddit Scraper: Scrape entire subreddits with this crawler.
- Reddit Keywords: Welcome to Reddit Keywords Scraper.
- Reddit Comment Scraper Pro: Scrape comments from any Reddit post with advanced filters (minScore, maxDepth, excludeDeleted, authorFilter, keywordFilter) and rich per-comment fields: awards, gildedCount, controversiality, repliesCount, parentCommentId, body, bodyHtml, subreddit, permalink.
- Reddit Video Downloader: Download videos from Reddit posts, subreddits, or user profiles.
- Reddit Community Scraper: Scrape full community intelligence for any subreddit: description, subscriber count, active users, weekly activity, posting rules, wiki pages, icons/colors and settings - plus optional recent posts.
Related guides:
- Reddit Comment Scraper: Up to 1,000 Free Results a Month (2026)
- Reddit Scraper Guide: Practical Use Cases & Extraction Workflow
- Reddit Product Intelligence Pipeline Without API Keys
- Reddit Keywords: Up to 1,000 Free Results a Month (2026)
Resources
Actor documentation, input schema, and pricing: verified against the published Actor on 2026-10-02.
Actor last updated by its maintainers on 2026-08-27.
Run outcome figures cover the 30 day public window ending 2026-10-02.
Featured actors
Reddit MCP Scraper
Unified Reddit scraper supporting 3 modes: (1) Subreddit posts with content extraction, (2) Post comments with threading, (3) User profiles with metadata. Extract comprehensive data including scores, timestamps, flairs, NSFW flags, and more.
Run on Apify ↗