reddit-scraper-mcp
Provides tools for searching Reddit by keyword, scraping post URLs with full comment threads, and bulk pulling posts from subreddits as structured JSON.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@reddit-scraper-mcpsearch Reddit for recent mentions of 'OpenAI' and include comments"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Reddit Scraper MCP server
MCP server for the Reddit Scraper Pro Apify Actor (also works with Reddit Scraper). Gives Claude, Cursor, Codex, Windsurf, ChatGPT and any other MCP client three tools for Reddit as structured JSON: keyword search, URL scraping with full comment threads, and bulk subreddit pulls. No Reddit API key, no login. Billed per result on Apify ($1.50 per 1,000 + $0.01 per run; the free plan covers small runs).
Two ways to connect. Both need an Apify token from https://console.apify.com/account/integrations.
Option A — remote (nothing to install)
Apify hosts the Actor as an MCP tool:
{
"mcpServers": {
"reddit-scraper-pro": {
"url": "https://mcp.apify.com/?tools=harshmaur/reddit-scraper-pro",
"headers": { "Authorization": "Bearer <APIFY_TOKEN>" }
}
}
}Stdio-only clients can bridge with npx mcp-remote https://mcp.apify.com/?tools=harshmaur/reddit-scraper-pro. This is the endpoint registered in the official MCP Registry as io.github.harshmaur/reddit-scraper-pro.
Related MCP server: Reddit MCP Server
Option B — local stdio server (this repo)
Purpose-built tools with typed arguments, so the model fills in queries, subreddit, postedAfter instead of a raw Actor input object.
{
"mcpServers": {
"reddit-scraper": {
"command": "npx",
"args": ["-y", "reddit-scraper-mcp"],
"env": { "APIFY_TOKEN": "<APIFY_TOKEN>" }
}
}
}Published on npm as reddit-scraper-mcp. Or clone and run node index.js. Node 20+.
Tool | Use it for |
| Keyword search across Reddit or one subreddit; sort, time window, date range, optional comments. Brand monitoring, lead discovery, "what is Reddit saying about X". |
| Post permalinks (with the full thread), |
| Bulk posts from one or more subreddits, optionally date-bounded and with comments. |
Environment:
Variable | Default | Meaning |
| required | Apify API token |
|
| Set to |
|
| Seconds to wait for a run |
Every item carries dataType (post, comment, community, user); posts include title, body, postUrl, communityName, authorName, score, commentsCount, createdAt, flair. Field reference: https://apify.com/harshmaur/reddit-scraper-pro#output-example
Automation templates
templates/n8n/— importable n8n workflows: Reddit mentions → Slack, Reddit lead alerts → Google Sheets.templates/make/— Make scenario recipe for Slack, Notion or Sheets.
The Actor can also deliver results itself (Slack, Notion, Airtable, Sheets) through its mcpConnector input, with an Apify Schedule as the trigger, if you prefer no middleware.
Files
index.js— the stdio serverserver.json— official MCP Registry manifest for Pro;server-reddit-scraper.json— same for the flagshipDockerfile,glama.json— for directory indexers
MIT. Built by Harsh Maur.
Available Tools
3 toolsscrape_reddit_urlsScrape Reddit URLsAInspect
Scrape specific Reddit URLs: post permalinks (optionally with the full comment thread), user profile URLs (/user// returns the user's posts and comments), subreddit listing URLs (/r//new/, /r//top/?t=week) or Reddit search-result page URLs. Returns structured JSON rows with a dataType of post, comment, user or community.
| Name | Required | Description | Default |
|---|---|---|---|
| urls | Yes | ||
| maxPosts | No | Cap for listing/profile URLs | |
| includeNsfw | No | ||
| maxCommentsPerPost | No | ||
| includeCommentThreads | No | For post URLs, return the comments too |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description carries the full disclosure burden and does so well: it states the return format (structured JSON rows), the shape of the data (dataType of post/comment/user/community), and the specific behavior of user-profile URLs (returns the user's posts and comments). It leaves rate limits, error handling, and auth needs undisclosed, which is the gap keeping it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with no waste: the action is stated first, followed by concrete URL-style examples, and closes with the output data type. Every sentence earns its place and the examples are tightly packed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 5 parameters, no annotations, and no output schema, the description covers the essential decision points: acceptable URL patterns, per-URL behaviors, and the returned dataType field. Slight gaps are the includeNsfw semantics and quirks like search-result page parity with search_reddit, but the main calling scenarios are well covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only 40% schema description coverage, the description compensates meaningfully: it supplies exact URL format examples for the un-documented 'urls' parameter and clarifies behaviors around comments/threads. Parameters includeNsfw and maxCommentsPerPost none by description to un-documented; their purpose remains implied, but the core urls semantics are materially enriched.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb-resource pairing ('Scrape specific Reddit URLs') and enumerates exactly four supported URL shapes: post permalinks, user profiles, subreddit listings, and search-result pages. This level of enumeration makes it easy to distinguish from siblings like search_reddit and scrape_subreddit without opening their schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly routes the agent: it states this tool is for specific Reddit URLs, implying that scrape_subreddit is the alternative for whole subreddits and search_reddit for queries. However, it never explicitly names the sibling tools or gives when/not-to-use exclusions, which stops it short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scrape_subredditScrape a subreddit in bulkBInspect
Pull posts from one or more subreddits in bulk (far more than a single listing page), optionally limited to a date window and optionally with each post's comments. Use for building a dataset of a community, trend analysis, or 'what has r/X been discussing since '. Subreddit names only, not post links.
| Name | Required | Description | Default |
|---|---|---|---|
| maxPosts | No | Total posts across all subreddits | |
| subreddits | Yes | e.g. ['SaaS', 'r/startups'] | |
| includeNsfw | No | ||
| postedAfter | No | ||
| postedBefore | No | ||
| maxCommentsPerPost | No | ||
| includeCommentThreads | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must disclose behavior. It mentions 'bulk' and 'far more than a single listing page' but does not explain the output format, pagination, rate limits, or potential side effects. The absence of an output schema makes this a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the primary action, followed by usage context in a few sentences. It avoids fluff but could benefit from a structured breakdown of parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description omits crucial details such as the return format, pagination behavior, error conditions, and how the tool handles large bulk requests. An agent would lack information needed to correctly interpret the response or anticipate failures.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaning to the date window and comment inclusion, but leaves maxPosts, includeNsfw, and other parameters implicit. With only 29% schema coverage, the description partially compensates but does not fully explain the relationship between maxPosts and maxCommentsPerPost or the semantics of includeNsfw.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (pull posts in bulk) and the resource (subreddits), and distinguishes from URL-based scraping with 'Subreddit names only, not post links.' It does not explicitly name sibling tools, but the intent is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit use cases: building a dataset, trend analysis, or 'what has r/X been discussing since <date>'. It also sets a boundary by noting it accepts subreddit names only, not post links. However, it does not directly contrast with search_reddit or scrape_reddit_urls.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_redditSearch RedditAInspect
Keyword search across Reddit (or inside one subreddit) and return matching posts as structured JSON: title, body, postUrl, communityName, authorName, score, commentsCount, createdAt. Use for brand monitoring, lead generation, market research, 'what is Reddit saying about X'. Search is literal keyword matching, so pass short terms (several are fine) rather than sentences.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | new | |
| time | No | all | |
| queries | Yes | Search terms; each runs as its own search | |
| maxPosts | No | Total posts across all queries | |
| subreddit | No | Restrict to one subreddit, e.g. 'SaaS' or 'r/SaaS' | |
| includeNsfw | No | ||
| postedAfter | No | Only posts on/after this date (UTC) | |
| postedBefore | No | Only posts on/before this date (UTC) | |
| searchComments | No | Also return comments that mention the terms | |
| maxCommentsPerPost | No | ||
| includeCommentThreads | No | Fetch comments under each matching post (multiplies result count) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must disclose behavior. It notes that search is literal keyword matching, which is helpful to avoid semantic overreach, and it mentions that results are structured JSON. It does not disclose pagination, rate limits, or how the time/sort filters interact. While it adds some value, the absence of edge-case details prevents a higher score.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, with the purpose and return format front-loaded. Every clause adds value, and there is no fluff. The guidance about literal search is brief but useful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 11 parameters, some complex (searchComments, includeCommentThreads). The description covers the overall function and the core behavior of returning matching posts. However, it does not explain how time and sort interplay, nor does it warn about the multiplicative behavior of includeCommentThreads beyond the schema's note. Since there is no output schema, a bit more detail on the response structure would be useful, but the description already lists the fields in the JSON, so the score is good.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 64%, leaving several parameters (sort, time, maxPosts, includeNsfw, maxCommentsPerPost) undocumented in the schema. The description explicitly explains that queries are literal and short, and it confirms that returning JSON includes the listed fields. This compensates for the missing schema descriptions, but not all undocumented parameters are explicitly explained in the description (e.g., sort/time are not explained), keeping it from a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with a specific verb ('search') and a clear resource ('Reddit'), and specifies that it returns structured JSON with a list of fields. It also distinguishes from siblings by mentioning 'keyword search' versus their likely scraping functions. This is clear and differentiates the tool from scrape_reddit_urls and scrape_subreddit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It lists concrete use cases (brand monitoring, lead generation, etc.) and explains that search is literal, so short terms are better than sentences. It also limits to searching inside one subreddit, which aligns with the subreddit parameter)Skip. However, it does not explicitly contrast with the sibling scraping tools, but the use cases and keyword nature implicitly suggest when to use this tool over scraping.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
3 tool updates
v0.1.0- First observed
scrape_reddit_urls - First observed
scrape_subreddit - First observed
search_reddit
TDQS
Scored across 3 tools
The three tools have largely distinct purposes: keyword search, arbitrary URL scraping, and bulk subreddit harvesting. There is some overlap because scrape_reddit_urls accepts subreddit listing and search-result URLs, but the descriptions clarify the use cases well enough.
Two tools use the clear verb_noun pattern scrape_*, while the third uses search_reddit instead of a scrape_* variant. This is a minor deviation rather than a real inconsistency, and all names are readable and predictable.
Three tools is appropriately scoped for a Reddit scraper: keyword search, general URL scraping, and bulk subreddit collection each cover a distinct scraping need without bloat or redundancy.
The toolset covers the main Reddit scraping workflows: searching by keywords, scraping arbitrary post/user/subreddit/search URLs, and bulk-collecting subreddit data with optional comments. No obvious dead ends or critical missing operations are apparent.
Related MCP Connectors
Reddit MCP server: search posts, subreddit feeds, comments & user profiles as JSON. No API key.
Reddit MCP — public Reddit data via JSON endpoints (no auth required)
Find high-intent Reddit conversations and manage lead workflows from MCP-compatible AI agents.
Reddit & X data for AI agents over MCP. Semantic search, hosted, no Reddit API.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables interaction with Reddit through OAuth 2.1 authentication, providing tools for searching content, managing notifications, analyzing posts and comments, and demonstrating advanced MCP features like sampling and real-time notifications.1MIT
- FlicenseNot gradedqualityCmaintenanceEnables interaction with Reddit through the Reddit API, allowing users to search posts, retrieve saved content, fetch comments, reply to comments, and access detailed post information with comment trees.4-
- AlicenseBqualityDmaintenanceEnables AI agents to search Reddit for posts, comments, and users or monitor for high-intent leads and brand mentions. It functions by delegating scraping tasks to high-performance Apify cloud actors.2407MIT
- AlicenseNot gradedqualityDmaintenanceEnables searching Reddit posts, fetching subreddit content, and retrieving post comments without requiring an API key. It uses public JSON endpoints to provide seamless access to Reddit data for LLM-based applications.2MIT