Mcp Substack Scraper

com.mambabuiltPublished by mambabuilt.comv1.0.1Updated Nov 7, 2026

Substack publications, posts, subscriber counts, and keyword search.

VerifiedSTDIODesktop onlyWeb Search & ScrapingData & Analytics

Overview

AI-generated overview

MCP server that scrapes Substack publications, posts, subscriber counts and keyword search results through an Apify actor.

What you can do
  • Read publication profiles: name, author, tagline, subscriber count and paid plan prices
  • List a publication's newest posts with title, URL, date, audience tier, likes, comments, restacks, word count and tags
  • Optionally include post text, limited to the free preview on paid posts
  • Search Substack by keyword and return matching posts or the publications behind them
  • Filter posts by recency and cap rows per publication or search query
When to use it
Useful when you want an assistant to research Substack newsletters: comparing subscriber counts and pricing, checking what a publication posted recently, or finding newsletters on a topic by keyword.
Requirements
Runs locally via npx, so Node.js 18 or newer is needed. An Apify account and an Apify API token set as the APIFY_TOKEN environment variable are required; the tool is listed without a token but calls need one. Network access to Apify and Substack is required.
Before you install
All work runs on Apify and is billed per returned row to your Apify account (post rows, publication rows and a per-run start fee), so large limits cost money; max_charge_usd can cap a run. The APIFY_TOKEN is a secret and should be kept out of shared configs. It reads Substack's public pages and JSON routes, so results reflect only what is publicly visible.

Installation

In SourceWeft

  1. Open Mcp Substack Scraper in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

Substack Scraper MCP Server

[Glama score] [MCP Registry] [npm version] [npm downloads] [license] [mcpservers.org]

[Substack Scraper MCP server]

An MCP server for the Mamba Labs Substack Newsletter and Posts Scraper actor on Apify. Give it Substack publications or keywords. It returns publication profiles and posts as flat rows.

What's Inside

What it does

  • Publications: name, author, tagline, subscriber count as Substack shows it (subscriber_count_text, and subscriber_count_min as a number), subscriber tier text, and monthly, yearly, and founding plan prices.
  • Posts: title, URL, date, audience (free, paid, or founding), likes, comments, restacks, word count, bylines, and tags. Optional post text with include_body.
  • Search: keyword search across Substack posts, returned as posts or as the publications behind them.

All of the work runs on Apify. This package is a thin client that starts the actor run, waits for it, and hands back the dataset rows.

Quick start

You need Node.js 18 or newer and an Apify account with an API token.

Add this to your Claude Desktop config (claude_desktop_config.json), Cursor, or any MCP client:

json
{  "mcpServers": {    "mamba-substack-scraper": {      "command": "npx",      "args": [        "-y",        "@mambalabsdev/mcp-substack-scraper"      ],      "env": {        "APIFY_TOKEN": "your-apify-token"      }    }  }}

Restart the client. The scrape_substack tool appears.

Prerequisites

Example prompts

  • "How many subscribers does Lenny's Newsletter have, and what does a paid plan cost?"
  • "Find Substack newsletters that write about cold email and list their subscriber counts."
  • "What did notboring.co publish in the last 30 days, and which posts were paid only?"

Tool

scrape_substack. One tool. Example arguments:

json
{  "publications": [    "lenny.substack.com"  ],  "search_queries": [    "cold email"  ],  "max_posts_per_publication": "5",  "max_search_results": "5"}

Inputs

Every buyer facing input of the actor, unchanged. Omitted inputs take the actor's own defaults. Numbers and booleans are sent as strings.

InputTypeDescription
publicationsarraySubstack publications, one per line, up to 100: a URL (https://www.lennysnewsletter.com), a domain (lenny.substack.com), a profile (substack.com/@lenny), or a bare Substack name (lenny). Each one returns a publication row and its newest posts
search_queriesarrayKeywords to search across Substack posts, one per line, up to 20. Each query returns matching posts, or the publications behind them when Search output is publications
search_outputstringWhat a search query returns Default posts
max_posts_per_publicationstringNewest posts returned per publication, 0 to 1000. 0 returns only the publication row Default 20
max_search_resultsstringRows returned per search query, 1 to 1000 Default 50
since_daysstringOptional. Skip posts older than this many days. 0 or empty keeps every post up to the max Default 0
include_publication_rowstringtrue to return one publication row per listed publication (name, author, subscribers, paid plan prices), billed as a publication row. false returns only post rows Default true
include_bodystringtrue to add the post text (up to 20,000 characters) to each post row of a listed publication. A paid post gives its free preview. Reads one more page per post; no extra charge Default false
max_charge_usdstringOptional. The run stops before it would charge more than this
proxy_modestringHow pages are fetched Default auto

Pricing

Pay per event on Apify, billed to your Apify account. Prices in USD.

EventFree planBronzeSilverGold
post-row, one Substack post returned as a row: from a listed publication or from a search$0.00115$0.001093$0.001035$0.000977
publication-row, one Substack publication profile returned as a row: name, author, subscriber count as shown, and paid plan prices$0.002$0.0019$0.0018$0.0017
apify-actor-start, per run start$0.001057$0.001057$0.001057$0.001057

no_results and error rows are free, including the one row a refused input returns.

Your keys

The actor needs no key. It reads Substack's public pages and public JSON routes and holds no key of any kind. Proxy traffic adds nothing to your price: Mamba Labs pays the platform costs of the run.

Full actor documentation

apify.com/mambalabs/substack-scraper

License

MIT. See LICENSE.

Source: README.md at commit a3d3c1a

Tools

1

scrape_substack

Scrape Substack publications, posts, and search

Read Substack publications and posts, or search Substack by keyword. Give publications as URLs, domains, substack.com profiles, or bare Substack names (for example lenny.substack.com, https://www.notboring.co, lenny). Each publication returns one publication row (name, author, subscriber count as Substack shows it, subscriber tier text, paid plan prices) and its newest posts, one row each with date, free or paid audience, likes, comments, restacks, word count, bylines, and tags. Search queries return matching posts with their publication and subscriber count, or one row per publication when search_output is publications. Input with nothing to run returns one free row whose error_reason starts with input_invalid:. A run that does not succeed is returned as an error with its run ID. Read-only; requires an APIFY_TOKEN; Apify charges per post row and per publication row.

Parametersproxy_modesince_daysinclude_bodypublicationssearch_outputmax_charge_usdsearch_queriesmax_search_resultsinclude_publication_rowmax_posts_per_publication

Version history

2
  1. v1.0.1LatestNov 5, 2026
  2. v1.0.0Oct 29, 2026

Score

90% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts
  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts