redditapis-mcp

redditapis-mcp is the official MCP server for RedditAPIs, built for developers and AI agents that need live Reddit data in Claude, Cursor, Windsurf, VS Code or any MCP client, with no Reddit developer app. Your agent can search posts and comments, read subreddit feeds and rules, expand comment trees, look up users and communities, and set up monitors that send new matching posts to your webhook. Reads cost $0.0015 per call (or a monthly read plan from $19 for 30,000 reads), every account gets 1,000 free reads a month, and new accounts get $0.50 of free credit with no card. Connect your Reddit account once to comment, post, vote and DM as you. Every tool maps to one endpoint at api.redditapis.com.
Install: npx -y redditapis-mcp@latest with REDDITAPIS_KEY from https://www.redditapis.com
Hosted, sign in instead of pasting a key (Claude Code): claude mcp add --transport http reddit https://api.redditapis.com/mcp (carries every tool except the 5 that read your own account)
Website: https://www.redditapis.com/mcp
Quick start
No install needed. Run with npx. You need one thing: an API key from redditapis.com. Reads work with just that key, so there is no account login or session step to set up. Monitor/webhook management additionally requires an active monitoring plan (monitoring has no free tier).
Setup
Claude Desktop
Edit claude_desktop_config.json (Settings > Developer > Edit Config):
{
"mcpServers": {
"reddit": {
"command": "npx",
"args": ["-y", "redditapis-mcp@latest"],
"env": { "REDDITAPIS_KEY": "YOUR_API_KEY" }
}
}
}
Restart Claude Desktop. The reddit_* tools appear in the tool picker.
Claude Code
claude mcp add reddit --env REDDITAPIS_KEY=YOUR_API_KEY -- npx -y redditapis-mcp@latest
Cursor
~/.cursor/mcp.json (or Settings > MCP > Add New Server):
{
"mcpServers": {
"reddit": {
"command": "npx",
"args": ["-y", "redditapis-mcp@latest"],
"env": { "REDDITAPIS_KEY": "YOUR_API_KEY" }
}
}
}
Windsurf
~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"reddit": {
"command": "npx",
"args": ["-y", "redditapis-mcp@latest"],
"env": { "REDDITAPIS_KEY": "YOUR_API_KEY" }
}
}
}
VS Code (Copilot / agent mode)
.vscode/mcp.json in your workspace, or the user-level MCP settings:
{
"servers": {
"reddit": {
"type": "stdio",
"command": "npx",
"args": ["-y", "redditapis-mcp@latest"],
"env": { "REDDITAPIS_KEY": "YOUR_API_KEY" }
}
}
}
Configuration
| Env var | Required | Default | Purpose |
|---|
REDDITAPIS_KEY | Yes | (none) | API key from redditapis.com. REDDIT_APIS_KEY is accepted as an alias. |
REDDITAPIS_BASE_URL | No | https://api.redditapis.com | Override the API host. |
REDDITAPIS_TIMEOUT_MS | No | 30000 | Per-request timeout in milliseconds. |
REDDITAPIS_FEEDBACK_DIR | No | ~/.redditapis | Where reddit_feedback_send keeps its local draft queue (feedback-queue.json). |
Authentication is a Bearer token: the server sends Authorization: Bearer <REDDITAPIS_KEY> on every request.
Tools
59 tools and 3 playbook resources: 32 Reddit reads, 10 Reddit account tools (connect, status, disconnect, comment, submit, vote, DM, and schedule, list or cancel a post or comment for later), 10 monitor/webhook management tools, reddit_set_watch (one call that stands up a whole watch), reddit_explain (where the rows you are holding came from), 3 feedback tools, and 2 account tools (reddit_account_me, which is also where the credit balance lives, and reddit_account_payments, the top-up history). Reddit writes (commenting, posting, voting, DMs) act as YOUR Reddit account and only after you connect it with reddit_connect; each is marked as a write so your client asks before it runs. Monitor/webhook tools configure your OWN redditapis.com account (an alerting subscription), never Reddit itself, and the feedback tools send a report to the redditapis.com team, never to Reddit. Every read works with just your API key; the 6 monitor/webhook writes additionally need an active monitoring plan (see Monitoring below). The feedback tools are free and need only your key.
A few conventions across the catalog:
- Subreddit names go in without the
r/ prefix, and usernames without the u/ prefix. reddit_subreddit_posts takes its community as subreddit; the /sub/{name}/... tools take it as name.
- Listing and search tools return an
after cursor. Pass it back as after to fetch the next page, exactly as it was returned. limit accepts 1 to 100 (the API clamps out-of-range values).
- When
after comes back null there is no next page to ask for. That does not always mean you have every item: Reddit often stops serving a busy listing long before it runs out. The final response also carries listing_status, which reads complete, truncated or unknown. Only complete means nothing is missing. Treat the other two as a partial answer and widen across sorts, timeframes or search terms rather than paging deeper.
t (hour, day, week, month, year, all) sets the time window; on subreddit listings it applies to the top and controversial sorts, and on search it bounds the whole result set.
Search and discovery
| Tool | Endpoint | What it does |
|---|
reddit_search | GET /api/reddit/search | Search posts across all of Reddit or within one subreddit (subreddit). |
reddit_search_comments | GET /api/reddit/search/comments | Search by comment text; returns the parent posts, since Reddit's comment search does not hand back the matching comment itself. |
reddit_deep_comment_search | GET /api/reddit/search/comments/deep | Genuine comment search: returns the actual matching comment bodies (score, author, comment-deep permalink, parent post). limit sets how many parent posts to expand; group_by="author" switches to research mode (the distinct people talking about your query). Premium call. |
reddit_search_media | GET /api/reddit/search/media | Search posts filtered to media, narrowed by kind (image, video, gif, all). |
reddit_search_communities | GET /api/reddit/search/communities | Find subreddits by name or topic (title, subscribers, description, NSFW flag). |
reddit_search_users | GET /api/reddit/search/users | Find redditors by name or keyword (username, karma, account age). |
Subreddits
| Tool | Endpoint | What it does |
|---|
reddit_subreddit_posts | GET /api/reddit/posts | List a subreddit's posts by sort (new, hot, top, rising, controversial, best). |
reddit_feedback_list | GET /feedback | List the reports this account has sent, newest first, with their status. The way back to a report whose id was not kept. Free. |
reddit_verify_comments | POST /api/reddit/comments/verify | Check whether up to 100 specific comments still exist and are publicly visible. A read despite the POST; tells 'deleted by author' from 'removed by a mod' from 'still there'. |
reddit_home_feed | GET /api/reddit/feed | Read YOUR OWN Reddit home feed. Needs your reddit_session and loid from POST /api/reddit/login (a REST call, not an MCP tool); they travel as headers, never in the URL. |
reddit_subreddit_top | GET /api/reddit/sub/{name}/top | Top posts of a subreddit for a time window (t). |
reddit_subreddit_comments | GET /api/reddit/sub/{name}/comments | Stream the newest comments across an entire subreddit (not one post's thread). |
reddit_subreddit_about | GET /api/reddit/sub/{name}/about | A subreddit's public metadata: title, description, subscriber and active-user counts, type, NSFW flag. |
reddit_subreddit_rules | GET /api/reddit/sub/{name}/rules | A subreddit's posting rules plus Reddit's site-wide rules. |
reddit_subreddit_moderators | GET /api/reddit/sub/{name}/moderators | A subreddit's moderator team, each with permissions, flair, and when they joined. |
reddit_subreddit_flairs | GET /api/reddit/sub/{name}/flairs | A subreddit's post flair templates (id, text, editable, colours, mod_only), so a post can carry the flair_id the community requires. Reddit lists flairs only to signed-in accounts, so it reads as your connected Reddit session; with none connected it answers 503 SESSION_REQUIRED and is not charged. |
reddit_subreddit_wiki | GET /api/reddit/sub/{name}/wiki/{page} | A subreddit's wiki page by name and page (markdown + HTML, revision metadata). |
Posts and comments