Substack Scraper - Newsletters, Posts & Sponsorship Leads
Pricing
from $1.50 / 1,000 results
Substack Scraper - Newsletters, Posts & Sponsorship Leads
Scrape Substack newsletters and posts without login: subscriber tier, paid plans, posting frequency, engagement, reactions and comments. Build newsletter sponsorship lead lists and research creators.
Pricing
from $1.50 / 1,000 results
Rating
0.0
(0)
Developer
ahmed abdelmenem
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Substack Scraper: Newsletters, Posts & Sponsorship Leads
Scrape Substack newsletters and posts without logging in. This Substack scraper turns any Substack publication (on *.substack.com or a custom domain) into clean, structured data: post titles, dates, reactions, comments, restacks and paid/free status, plus publication profiles with subscriber tier, paid plan prices, posting frequency and engagement averages. Use it to build newsletter sponsorship lead lists, research creators, analyze content, or monitor competitors.
It works like a lightweight Substack API: you give it newsletter URLs or keywords and get JSON, CSV, Excel or HTML back.
What data you get
Publications (sponsorship and outreach leads)
| Field | Example |
|---|---|
name, url, subdomain, customDomain | Lenny's Newsletter, https://www.lennysnewsletter.com |
description, language, logo | Newsletter tagline and logo |
authorName, authorHandle, authorProfileUrl, authorBio, twitterHandle | Public author info |
subscriberTier, subscriberCountText, paidSubscriberTier | "Millions of subscribers", "Over 1,200,000 subscribers" (as shown publicly by Substack) |
hasPaidPlan, paidPrices | Monthly, yearly and founding-member prices |
postsLast30Days, postsLast90Days | Publishing cadence |
avgReactionsRecent, avgCommentsRecent, paidPostShareRecent | Engagement over the 10 most recent posts |
lastPostAt, firstPostAt, createdAt | Activity and age |
hasPodcast, communityEnabled, sampleSize, scrapedAt | Extras |
No personal email addresses are collected.
Posts
publication, publicationUrl, postId, title, subtitle, slug, url, postType, author, authors (name, handle, profile URL), publishedAt, audience (everyone, only_paid, founding, only_free), isPaid, wordcount, reactionCount, commentCount, restacks, section, tags, coverImage, podcastDurationSec, bodyText (optional, free public posts only), scrapedAt.
Use cases
- Newsletter sponsorships: find newsletters in your niche, check audience size tiers, posting cadence and engagement before you pitch an ad placement.
- Influencer and creator research: build lists of Substack writers by topic, with their profile links and social handles.
- Content analysis: see which topics, formats and lengths get the most reactions, comments and restacks.
- Competitor monitoring: track what competing newsletters publish, how often, and what goes behind the paywall.
- Pricing research: compare paid subscription prices across a niche.
How to use
- Add Substack URLs: publication homepages (
https://example.substack.com,https://www.lennysnewsletter.com), single post URLs (.../p/post-slug) or author profiles (https://substack.com/@handle). - Optionally add search keywords (e.g.
product management,sourdough) to discover publications automatically. - Choose the output: posts, publications, or both.
- Run and download your dataset. The Posts and Publications views in the dataset show each type as a table.
Example input
{"startUrls": [{ "url": "https://www.lennysnewsletter.com" },{ "url": "https://newsletter.pragmaticengineer.com" }],"searchQueries": ["product management"],"maxPublicationsPerQuery": 20,"outputMode": "both","maxPostsPerPublication": 20,"postedWithinDays": 90,"includeBody": false,"maxItems": 1000}
Example output (publication)
{"type": "publication","name": "Lenny's Newsletter","url": "https://www.lennysnewsletter.com","authorName": "Lenny Rachitsky","authorProfileUrl": "https://substack.com/@lenny","subscriberTier": "Millions of subscribers","subscriberCountText": "Over 1,200,000 subscribers","hasPaidPlan": true,"paidPrices": [{ "name": "$20 a month", "amount": 20.0, "currency": "USD", "interval": "month", "isFounding": false }],"postsLast30Days": 3,"postsLast90Days": 10,"avgReactionsRecent": 481.2,"avgCommentsRecent": 9.7,"lastPostAt": "2026-09-29T13:15:57+00:00"}
Input options
| Option | Description |
|---|---|
startUrls | Publication, post or author profile URLs. |
searchQueries | Keywords to discover publications through Substack's public search. |
maxPublicationsPerQuery | Publications per keyword (default 20). |
outputMode | posts, publications or both (default). |
maxPostsPerPublication | Most recent posts saved per publication (default 20). |
postedWithinDays | Only save posts from the last N days. |
includeBody | Add plain-text body (max 8,000 characters) for free, public posts only. |
maxItems | Cap on total results. |
Pricing: pay per result
This Actor uses pay-per-result pricing: you are charged per item saved to the dataset (each post or publication counts as one result). Use maxItems and maxPostsPerPublication to control cost. If you set a maximum charge for the run, the scraper stops as soon as it is reached.
Notes and limitations
- Only publicly available data is collected. No login is used and paid-only content is never extracted; for paid posts you get metadata (title, date, engagement) but no body text.
- Subscriber numbers are the public tier text that Substack shows (e.g. "Over 1,000 subscribers"); exact counts are not public. Some publications hide them.
postsLast30Days/postsLast90Daysare computed from a recent sample of up to 120 posts and arenullif the sample doesn't cover the period.- Keyword discovery uses Substack's public profile search, which ranks writers by relevance; results depend on Substack.
- Requests are rate-limited (max 3 concurrent) with automatic retries.
This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Substack Inc.