Substack Scraper (Posts, Full Text, Paywall Status, Comments) avatar

Substack Scraper (Posts, Full Text, Paywall Status, Comments)

Pricing

from $1.40 / 1,000 post scrapeds

Go to Apify Store
Substack Scraper (Posts, Full Text, Paywall Status, Comments)

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

Matthew Edward

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 hours ago

Last modified

Categories

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

FieldWhat it does
publicationUrlsOne or more publication home URLs (https://name.substack.com or a custom domain)
maxPostsPerPublicationNewest first; set high to fetch the full archive
sortnew or top
publishedAfterISO date; stops paging once older posts are reached
includeBodyFull text (Markdown + HTML). Paywalled posts return the free preview only
includeCommentsFetch every comment for each post
includePublicationProfileEmit 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 includeComments is on)
  • publication — per profile item (only if includePublicationProfile is 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.