Substack Scraper

v1.0.0$0.00115/post rowSignal Detection

Last updated October 29, 2026

Scrape Substack publications and posts: subscriber count, paid plan prices, author, and every post with date, paid flag, likes, comments, restacks, authors, and tags. Search Substack by keyword for posts or the newsletters behind them. Public data, no login. Clay ready.

Install

bash
npx @mambalabsdev/mcp-substack-scraper

Every tool here also runs hosted, with no install at all, through Apify's MCP endpoint.

Features

  • Publication profile: author, subscriber count as Substack shows it, and the monthly, yearly, and founding plan prices.
  • Every post as a row with date, paid flag, likes, comments, restacks, bylines, and tags.
  • Keyword search across Substack, for posts or for the newsletters behind them.
  • Custom domains, substack.com subdomains, profile links, or a bare name all work.
  • Pay per event: Post row at $0.00115.
  • Pay per event: Publication row at $0.002.

Input

publicationsarrayoptional

Substack 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_queriesarrayoptional

Keywords 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_outputstringoptional

What a search query returns.

max_posts_per_publicationstringoptional

Newest posts returned per publication, 0 to 1000. 0 returns only the publication row.

max_search_resultsstringoptional

Rows returned per search query, 1 to 1000.

since_daysstringoptional

Optional. Skip posts older than this many days. 0 or empty keeps every post up to the max.

include_publication_rowstringoptional

true to return one publication row per listed publication (name, author, subscribers, paid plan prices), billed as a publication row. false returns only post rows.

include_bodystringoptional

true 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.

max_charge_usdstringoptional

Optional. The run stops before it would charge more than this.

proxy_modestringoptional

How pages are fetched.

Output schema

json
{
  "row_type": "string",
  "input_key": "string",
  "search_query": "string",
  "publication_name": "string",
  "publication_url": "string",
  "publication_host": "string",
  "substack_subdomain": "string",
  "author_name": "string",
  "author_handle": "string",
  "publication_description": "string",
  "subscriber_count_text": "string",
  "subscriber_count_min": "integer",
  "subscriber_tier_text": "string",
  "paid_subscriber_tier_text": "string",
  "has_paid_plan": "boolean",
  "monthly_price": "number",
  "yearly_price": "number",
  "founding_price": "number",
  "price_currency": "string",
  "first_post_date": "string",
  "language": "string",
  "post_title": "string",
  "post_subtitle": "string",
  "post_url": "string",
  "post_date": "string",
  "post_type": "string",
  "audience": "string",
  "is_paid": "boolean",
  "wordcount": "integer",
  "reaction_count": "integer",
  "comment_count": "integer",
  "restack_count": "integer",
  "post_authors": "string",
  "post_tags": "string",
  "post_excerpt": "string",
  "body_text": "string",
  "row_status": "string",
  "error_reason": "string",
  "billable_events_json": "string",
  "scraped_at": "string"
}

Pricing

$0.00115per post row
EventFree plan price
Post row$0.00115
Publication row$0.002
Actor Start$0.001057

Pay per event on the Apify platform. Paid Apify plans pay less per event. No subscription, no seat license.

On the Apify free plan the actor stops at $1.50 of charges a month, about 1,304 post rows. Any paid Apify plan removes the cap.

Limits

  • Subscriber counts are what Substack chooses to show: an exact homepage figure for some publications, a rounded figure (1.3K+) for others, and nothing for publications that hide it.
  • Paid posts give only the free preview Substack shows to visitors.
  • Substack search ranks by its own relevance and returns at most about 1,000 posts per query.
  • Notes, comments text, and subscriber lists are not read.