Skip to main content
Glama
harshmaur

reddit-scraper-mcp

by harshmaur

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

search_reddit

Keyword search across Reddit or one subreddit; sort, time window, date range, optional comments. Brand monitoring, lead discovery, "what is Reddit saying about X".

scrape_reddit_urls

Post permalinks (with the full thread), /user/<name>/ profiles, subreddit listing URLs, search-page URLs.

scrape_subreddit

Bulk posts from one or more subreddits, optionally date-bounded and with comments.

Environment:

Variable

Default

Meaning

APIFY_TOKEN

required

Apify API token

REDDIT_SCRAPER_ACTOR

harshmaur/reddit-scraper-pro

Set to harshmaur/reddit-scraper to run the flagship listing instead

REDDIT_SCRAPER_TIMEOUT

300

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 server

  • server.json — official MCP Registry manifest for Pro; server-reddit-scraper.json — same for the flagship

  • Dockerfile, glama.json — for directory indexers

MIT. Built by Harsh Maur.

Available Tools

3 tools
scrape_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlsYes
maxPostsNoCap for listing/profile URLs
includeNsfwNo
maxCommentsPerPostNo
includeCommentThreadsNoFor post URLs, return the comments too

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
maxPostsNoTotal posts across all subreddits
subredditsYese.g. ['SaaS', 'r/startups']
includeNsfwNo
postedAfterNo
postedBeforeNo
maxCommentsPerPostNo
includeCommentThreadsNo

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNonew
timeNoall
queriesYesSearch terms; each runs as its own search
maxPostsNoTotal posts across all queries
subredditNoRestrict to one subreddit, e.g. 'SaaS' or 'r/SaaS'
includeNsfwNo
postedAfterNoOnly posts on/after this date (UTC)
postedBeforeNoOnly posts on/before this date (UTC)
searchCommentsNoAlso return comments that mention the terms
maxCommentsPerPostNo
includeCommentThreadsNoFetch comments under each matching post (multiplies result count)

TDQS

A4.2/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

  1. 3 tool updatesv0.1.0
    • First observedscrape_reddit_urls
    • First observedscrape_subreddit
    • First observedsearch_reddit

TDQS

A3.9/5.0

Scored across 3 tools

Disambiguation4/5

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.

Naming Consistency4/5

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.

Tool Count5/5

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.

Completeness5/5

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

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables 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.
    1
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables 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
    -
  • A
    license
    B
    quality
    D
    maintenance
    Enables 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.
    2
    40
    7
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables 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.
    2
    MIT