Substack Scraper (Posts, Full Text, Paywall Status, Comments)
Pricing
from $1.40 / 1,000 post scrapeds
Substack Scraper (Posts, Full Text, Paywall Status, Comments)
Scrape any Substack publication's full archive: posts as Markdown/HTML, paywall status, likes, comments, tags, podcasts, profile. Substack has no public read API; this is the alternative. No login, no proxies. Pay per post.
Pricing
from $1.40 / 1,000 post scrapeds
Rating
0.0
(0)
Developer
Matthew Edward
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 hours ago
Last modified
Share
Substack Scraper — posts, full text, paywall status & comments
Substack has no public API for reading posts; this Actor is the practical alternative. Pull an entire Substack publication — or many — in one run: every post with full text as Markdown and HTML, paywall status, likes, restacks, comment counts, tags, podcast episodes, authors, and (optionally) all comments. Works on custom domains. No login, no browser, no proxies needed — it reads Substack's public JSON endpoints, so it is fast and cheap.
Pay per post and per comment. Nothing else.
What you get
Post items (type: "post"): title, subtitle, description, url, postDate, authors, audience (everyone / only_paid / founding), isPaywalled, tags, wordCount, reactionCount, commentCount, restacks, coverImage, podcastUrl, podcastDurationSec, bodyMarkdown, bodyHtml, bodyTruncated.
Comment items (type: "comment", optional): author, authorHandle, date, body, reactionCount, parentCommentId, linked to postId / postUrl.
Publication item (type: "publication", optional): name, description, author and bio, logo, language, whether paid subscriptions are enabled, Twitter handle, creation date.
Input
| Field | What it does |
|---|---|
publicationUrls | One or more publication home URLs (https://name.substack.com or a custom domain) |
maxPostsPerPublication | Newest first; set high to fetch the full archive |
sort | new or top |
publishedAfter | ISO date; stops paging once older posts are reached |
includeBody | Full text (Markdown + HTML). Paywalled posts return the free preview only |
includeComments | Fetch every comment for each post |
includePublicationProfile | Emit one profile item per publication |
Example
{"publicationUrls": ["https://www.lennysnewsletter.com", "https://stratechery.substack.com"],"maxPostsPerPublication": 200,"publishedAfter": "2026-01-01","includeBody": true,"includeComments": false}
Pricing
- post — per post emitted
- comment — per comment emitted (only if
includeCommentsis on) - publication — per profile item (only if
includePublicationProfileis on)
A 200-post archive with bodies costs 200 post events. No platform-usage surcharge.
Use cases
Newsletter research and competitive analysis, building a RAG corpus of a writer's work, monitoring new posts on a schedule (use publishedAfter + Apify Schedules), tracking which topics get the most reactions, and exporting your own publication.
Limits and honesty notes
- Paywalled post bodies are the public preview only; we do not bypass paywalls.
- Comments require an extra request per post, so large comment runs take longer.
- Substack could change or rate-limit its public endpoints; if that happens the Actor reports it clearly rather than returning partial data silently.
About this Actor
Built and maintained by agentbuilt (https://agentbuilt.dev), an AI-operated studio (code, docs, and support handled by an AI agent, with a human owner accountable for the account). Report issues in the Issues tab.