Substack Scraper: Posts, Subscribers, Newsletter Search · Apify
Substack Newsletter and Posts Scraper avatar

Substack Newsletter and Posts Scraper

Pricing

from $0.98 / 1,000 post rows

Go to Apify Store
Substack Newsletter and Posts Scraper

Substack Newsletter and Posts Scraper

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

Pricing

from $0.98 / 1,000 post rows

Rating

0.0

(0)

Developer

Mamba Labs

Mamba Labs

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

11 hours ago

Last modified

Features

Limited permissions

Share

Substack Scraper

Scrape Substack publications and posts, or search all of Substack by keyword. For each publication you get its name, author, subscriber count as Substack shows it, paid plan prices, and its newest posts. Each post row carries the date, the paid or free flag, likes, comments, restacks, word count, bylines, and tags. A search returns the matching posts, or one row per newsletter behind them, which turns a topic into a list of newsletters to pitch, sponsor, or study. Rows are flat, so they export to CSV or drop into a Clay table.

Features

  • Publication profile. Name, author, tagline, language, first post date, the subscriber count Substack prints on the homepage (Over 1,200,000 subscribers) or its rounded figure (1.3K+), Substack's subscriber tier text, and the monthly, yearly, and founding plan prices.
  • Every post as a row. Title, subtitle, URL, publish time, audience (free, paid, or founding), word count, likes, comments, restacks, bylines with guest writers, and tags. Optional post text, where a paid post gives its free preview.
  • Search Substack. Keyword search across Substack posts, with each post's publication and subscriber count on the same row. Set Search output to publications for one row per newsletter instead.
  • Any address works. Custom domains (lennysnewsletter.com), substack.com subdomains, profile links (substack.com/@lenny), or a bare name (lenny).
  • Date window. Keep only posts from the last N days.

How it reads Substack

Substack's public pages and the public JSON routes its own site uses: the publication homepage, the post archive, and post search. robots.txt is read for every host and checked before every request. No login, no account, no API key, and no other developer's actor. A host that refuses a direct request is retried through the Apify proxy.

Input

FieldTypeDefaultWhat it does
publicationsarrayUp to 100 publications: a URL, a domain, a substack.com profile, or a bare Substack name
search_queriesarrayUp to 20 keyword searches across Substack posts
search_outputstringpostsposts for one row per matching post, publications for one row per newsletter behind them
max_posts_per_publicationstring20Newest posts per publication, 0 to 1000. 0 returns only the publication row
max_search_resultsstring50Rows per search query, 1 to 1000
since_daysstring0Skip posts older than this many days. 0 keeps all
include_publication_rowstringtruefalse returns post rows only
include_bodystringfalsetrue adds the post text to each post row of a listed publication
max_charge_usdstringThe run stops before it would charge more than this
proxy_modestringautoauto (direct, then the Apify proxy for a host that refuses) or direct

Every scalar input is accepted as a string, which is what Clay sends.

Output

One row layout for every row type, so no column is lost between them. Key fields:

FieldRowsExample
row_typeallpublication, post, no_results, error
publication_name, publication_url, author_nameallLenny's Newsletter, https://www.lennysnewsletter.com, Lenny Rachitsky
subscriber_count_text, subscriber_count_minallOver 1,200,000 subscribers, 1200000
subscriber_tier_text, paid_subscriber_tier_textallMillions of subscribers, Tens of thousands of paid subscribers
has_paid_plan, monthly_price, yearly_price, founding_price, price_currencyalltrue, 20, 200, 400, USD
post_title, post_url, post_date, post_typepostHow to tell if a startup has a moat, newsletter
audience, is_paidpostonly_paid, true
reaction_count, comment_count, restack_count, wordcountpost372, 2, 21, 4153
post_authors, post_tags, post_excerpt, body_textpostDan Hockenmaier, Career
search_querysearch rowscold email
row_status, error_reason, billable_events_jsonallok, null, {"post-row":1}

subscriber_count_min is the lower bound of what Substack shows (1.3K+ reads as 1300), not an exact count. A publication that hides its count leaves both subscriber fields empty.

The run summary (key-value store record RUN_SUMMARY) lists each publication and search with its row count and any note.

Pricing

Pay per event. You pay only these events; the Apify platform and proxy costs of your run are paid by Mamba Labs.

EventFree planBronzeSilverGold
Post row (post-row), one post$0.00115$0.001093$0.001035$0.000977
Publication row (publication-row), one publication profile$0.002$0.0019$0.0018$0.0017
Actor start (apify-actor-start), once per run$0.001057$0.001057$0.001057$0.001057

Free rows: no_results and error rows, including the row a refused input returns. On the Apify free plan the actor stops at 1.50 USD of evaluation a month (about 1304 post rows); any paid Apify plan removes that cap.

Example: 10 publications with their 20 newest posts each is 10 publication rows ($0.02) plus 200 post rows ($0.23), $0.251 with the actor start.

Usage examples

Apify Console or API

{ "publications": ["lenny.substack.com", "https://www.notboring.co"], "max_posts_per_publication": "20" }
{ "search_queries": ["b2b marketing", "cold email"], "search_output": "publications", "max_search_results": "100" }
{ "publications": ["lenny"], "since_days": "30", "include_body": "true" }

Clay

Add an Apify column that sends a newsletter URL in publications with max_posts_per_publication set to 0, and read subscriber_count_min, has_paid_plan, and monthly_price from the publication row.

MCP

The MCP server @mambalabsdev/mcp-substack-scraper exposes this actor as a tool for Claude and other MCP clients.

Error handling

SituationWhat you get
The input has no publication and no query, or a value that cannot be readOne free row, row_status error, error_reason starting with input_invalid:. The run ends successfully and nothing is charged by this actor beyond the actor start
A site that is not a Substack publicationOne free error row saying so
A publication refuses every route, or robots.txt disallows itOne free error row with row_status blocked
A search with no matchOne free no_results row
Max charge reachedThe run stops before the next billable row

Limitations

  • 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.
  • You are responsible for how you use the data and for Substack's terms.

More from Mamba Labs

ActorActor ID
Account Hiring WatchgRAZA5WBi1r6L0gy7
Agent Accessibility AuditoranxbRv0lKrpQ1pnua
Agent to Brokerage ResolverePRRGLxOGyaVHO4dI
AI Answer Visibility TrackerRJZvzKniYK4nswcMg
AI List Extractor for Any WebsiteD5hOdIez45M0NX5jD
AI Tooling DetectorEwkHhmqiuJgRoVEbE
Amazon Product, Price, and Stock TrackerMtJPZoyjJ3IeqTFyo
Amazon Top Reviews Scraperwh6Mq6G6BlW1CRPwx
API Deprecation and Breaking Change MonitorpHsbS3xXUK8Jqutz5
App Store and Google Play Review MonitorMaCMEhGrbchxQZ92G
B2B Reddit Conversation MonitorSoDryzzsjmY3SsiyG
B2B Social Video TranscriptsdG2UYVKE2e4zfDucK
Bluesky Brand Presence MappereLpxzP4IuXznlFVND
Bluesky Posts ScraperKldSjS7wjoeZ7vQGm
Brand Sponsor FinderPPgK6xrgOmvL7Nrys
Bulk WHOIS and RDAP Domain Age LookupMTrkG5FLU6SjqLdJY
Business PDF Field ExtractorvM7JCk0CMAx5W0oJh
Career Change Signal EnginevX2Yga1a6wGaXaP14
Company Careers Page Jobs, 17 ATS BoardsizP0rfIgf5YaRZfIh
Company Change Event FeedoX44rS0fkEJ3rXLWe
Company Discovery List Builderjch0HdaZnpbMqlcGS
Company Firmographic EnricherYlUtLWjfPpqykmB8g
Company Funding RecordOFS4Mt1gyYNtGfUbE
Company Headcount EstimatoraHC4GROnNt6kfZe5r
Company Identity Resolverlr8fTRAmZCBZmuwwh
Company Role Email, Phone and Address Finder4mMncKaJykiq94grz
Company Social Presence Mapper4k6CCemkgBDz18m2h
Competitor Price, Stock, and Changelog MonitoryxdgCbUQ4PYQWwRNU
Contact Classifier0lGSeYJmniXhGANnO
Contractor License Search, CA, TX, WA, OR, LAWBYK3CPI2kdeq4bP1
CRM Contact Job Change CheckerL8UbEmMJC1XYPSZOb
Domain Deliverability Checker0tVgxI7A6o9jMlxmc
Domain to LinkedIn URL Resolver3HtnSaqPHOg1Qg5gx
Ecommerce Platform Profiler5G2NeYjBbQTjaTn9L
Ecommerce Store DiscoveryPeHu4sLyFvQHXUUrX
Email List Verifier, Bring Your Own KeyCzVJ4NlaCKk80xpgE
Event Presence IndexWLhMy8fMDgsxdYxv5
Eventbrite Events Scrapersgc6znyrbjOy5Yk9f
Expert Witness Finder, US and AustraliaLIpwlgfE3LaQBaXd4
Facebook Posts ScraperT6jxIeq4ua0SLXnqG
Funding and Press Signal ScannerFS13X6dhQVgX3XOM6
GDPR Cookie Banner and Consent CheckerTrKyOS0KBoGC35nbr
GitHub Followers and Following ExportSGNxDmFb9v3tRDaFI
GitHub Organization Signal ScannerahF8RRpv5mzPao5CN
Google Ads Transparency Center Scraper by Domain1eOwxhBVxzvOXAm4s
Google Maps Places ScraperSuvHCNJ7pIuw6gn54
Google Trends ScraperOeDzaACKmBYJXzHZk
GTM Hiring Signal ScraperD7O1SA2EqwHGsGr1P
GTM Signals AggregatorxKdRfnfFNkdMpFuNs
Healthcare Provider NPI EnricherMrgbHzcpDq3mOv9Df
ICP Fit ScorerW161DT8W4kW55dMFh
Influencer Change Monitord2VVgahNL6UmcLkhg
Influencer Lead List BuilderKnmByszcv135yM30G
Influencer Profile ScraperEqEnklDVMIcB1V499
Influencer Search Across TikTok, Instagram and YouTubetpkedmloIIWtXx6sg
Influencer Talent Agency LookupzCuX4Mgyg6JvXgGzd
Instagram Facebook Brand Presence MapperHXh65I0JBjPsunbY8
Integration and Marketplace Presence MapperV0guNuvM85Q61f2gj
Job Board Keyword Signal Scanner4DvqpvhMR74NLcDDY
Job Posting MonitorQCfICD9kOPiOdj5iI
Journalist and Media List BuildermAfizsZC8qRoR0ecS
Launch Directory List BuildercRq3bmvEZxZtioQ7U
Lead File Import CheckerRwlGVXTf46LqZdUgt
Legal Entity ResolverKHFyPCDIx7CyqULYm
Link in Bio Scraper and Newsletter DetectorOorucdheTIgu7RFzK
LinkedIn Company Page MapperzOPm6A9JEhUGcIdFW
LinkedIn Jobs FeedSH6N0d8cz46BhCC8B
LinkedIn Post TrackeroiGLNPuaf5BRaz9K5
Local Business Lead BuilderqMN97aoHhsAS5bznV
Local Rank and Map Pack Trackergv0kyHGDIg8XscclB
Lookalike Companies from Seed Domainse2O426WBAbLLQL4Z2
Manufacturer and Supplier FinderQcsdmd0lUfPzVkonh
MCP Server Change and Health MonitorIeqjWF9U0BdDQFY08
Media URL TranscriberSyfr7Ya3EsHgWfrB6
Meta Ad Library Ads by Company, Graph APIJ1GWlSXfSGU3u8Wng
Mobile Phone Waterfall6OOgPktf7RIa5XCOP
Multi Platform Social Posts and CommentsicFuHR1EzDvUcfCQ5
Netherlands Rental ListingssGKGsbwoX18lFb6dR
New Hire FindercKuc38p4nYHNF3IW8
Newly Registered Companies, UK, Norway, Finland, Franceg2WfZhWvCtc57g2Jo
News and Media Mention Monitorgol1PPUKrsIk4QLBd
News Site Article ArchiveNjcF3UD8791raFNHh
Newsletter Sponsor TrackerqSwpqxD1TiPZpLQHv
Open Tender and RFP FinderkPTGz6t6TFoUUyfaO
Outbound Stack Detectorv43UJC8r7qW7cBSTG
Page Finder and ExtractorTpurgcOZbVnknlaiC
Partner and Member Directory ExtractorZX0XJPPUvnFJxeC1a
People Finder & Email VerifierLEgloG7tWgQl4o6TD
Person LinkedIn URL ResolverssuyPV8LnEsL8qbnb
Person Social Footprint MapperjfQXa2zW9FHCJot9K
Personal Email to Company ResolverAefT5Ye6YNPFQwJBf
Pinterest Brand Presence Mapperd1HvjZfKhgvWsoEwn
Podcast Guest and Host Findero2MGSvgbSLeeXOsIo
Private Company Funding HistoryH02K3rQIVOYpnLYc3
Product Hunt Daily Launches with Maker DomainsO4VX63drWK9Y9x641
Property Owner Records0J7ovG1iaZpQD1P0T
Prospect Engineq9rT6v64nUJdPexOQ
Public Feature Board and Roadmap MonitorrcHF5gj5r2Vqnry35
Publishing Frequency TrackerTbLwaUUATdYb6wp4N
Recent Funding Rounds FeedKueVp9MOz7iOoAgDp
Reddit Brand Presence MapperpKQZmDaT70SEb54bZ
Reddit Search and Thread Scraper4Gsth5cP2Xt9V2xDN
Reporting Window FinderuINxR7a1IW8qUTRUX
Research Topic Institutions and AuthorsOH8ANqt7bCKbo72Gk
Semrush Domain Metrics3dqa0abJrpssHtrYL
Sequencer Event PollerS6s8Rjd61tGdrMRk4
Sequencer Lead Push0Jv27VeWM5tSZQs9x
Shopify App Store and Chrome Web Store ListingsgaY0BzkLyN77mD3wI
Site Crawler for Links and TableslLLJ6JxZ4XqN8ULz0
Streaming Subscription Prices by CountrytbMroS2Zyn57bW17E
Substack Newsletter and Posts ScraperUEFsdwiPLmPNVy9xd
Team Page People Extractorj8a9zX0k4mNbvDbWK
Tech Stack Signal Detectorqyd7nNyqFPelQViBx
Tennis Match Datav3OX6zxXHZOf2yurO
Threads Posts by Keyword, Exact Match2OT8K8RiEEWtaj2MW
Ticketmaster Event PricesCrvPX4IwLXQX9bls1
TikTok Brand Presence Mapperfco8FvoJcSafbeyd1
TikTok Video Statsuz9Q3cEycRgA6NfqA
Trustpilot Reputation Enricher3lIqfCt61j4hqE1xz
US and UK Contract Award Winners by CompanyzhEtllASykOcx9hJ8
US Import Records Buyer FinderVIMafpKF5ggOw0COU
VC and Accelerator Portfolio List BuilderchH8hrfuoqqolW06m
Website Accessibility Checker, WCAG 2.2 AAP3jBj3FRghKEhX52z
Website Phrase and Business Model ClassifierCBuZ9k7sRwBeiKiCS
Website Traffic Rank EstimatorGnOFUzlNVIoXgeJjH
Work Email WaterfallOT6xqTFThC0Rjf7Zj
Workplace Program DetectorLi6pPDhqbdzFz3h7G
X Brand Presence MapperoLOgadhHUkNAyDA3w
YouTube Channel and Video List ScrapertxaAjeBqgj5MStFE4
YouTube Channel Email FinderIDgKZcmeeuunUbccN
YouTube Channel from Company Domain6hSpD3kd2s2IQ4VSs
Zillow Listing DetailsyG4zM0Enfsw2NefJ1

Built by Mamba Labs.