Substack Post Scraper avatar

Substack Post Scraper

Pricing

from $30.00 / 1,000 post scrapeds

Go to Apify Store
Substack Post Scraper

Substack Post Scraper

Substack Post Scraper extracts full post content and comments from any Substack newsletter. Give it a newsletter subdomain and it returns complete article HTML, metadata, and reader comments — no login required for free posts

Pricing

from $30.00 / 1,000 post scrapeds

Rating

0.0

(0)

Developer

Romy

Romy

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

What does Substack Post Scraper do?

Substack Post Scraper extracts full post content and comments from any Substack newsletter. Give it a newsletter subdomain and it returns complete article HTML, metadata, and reader comments — no login required for free posts. Runs on the Apify platform with scheduling, proxy rotation, and API access built in.

Why use Substack Post Scraper?

  • Content intelligence: Read full article text to analyze topics, tone, and writing style
  • NLP & AI pipelines: Feed article HTML into summarizers, classifiers, or embedding models
  • Competitive research: Monitor what top newsletters are publishing and how readers respond
  • Comment analysis: Scrape reader feedback and sentiment for market research
  • Content archiving: Build a searchable archive of newsletter content over time

How to use Substack Post Scraper

  1. Open the actor on Apify and click Try for free
  2. Enter the Newsletter Subdomain (e.g. howtogrowanewsletter from howtogrowanewsletter.substack.com)
  3. Set Max Posts and choose Audience Filter (free posts only, or all posts)
  4. Toggle Include Comments on or off
  5. Click Start — results appear in the Output tab within seconds

Input

{
"subdomain": "howtogrowanewsletter",
"maxPosts": 20,
"audienceFilter": "everyone",
"includeComments": true
}

Also accepts full URLs:

{
"subdomain": "https://howtogrowanewsletter.substack.com",
"maxPosts": 50
}

Output

Each item in the dataset is one post with full content and comments:

{
"id": 208676609,
"title": "Substack Just Launched AI Detection. Here's What It Means For You.",
"subtitle": "A new feature lets readers scan any post to see how much was written by a human.",
"slug": "substack-just-launched-ai-detection",
"canonical_url": "https://howtogrowanewsletter.substack.com/p/substack-just-launched-ai-detection",
"post_date": "2026-07-27T13:08:45.764Z",
"audience": "everyone",
"wordcount": 542,
"reaction_count": 2,
"reactions": {"❤": 2},
"comment_count": 2,
"restacks": 1,
"cover_image": "https://substack-post-media.s3.amazonaws.com/...",
"body_html": "<p>This is the first issue of a new free series...</p>...",
"publishedBylines": [
{
"name": "How to Grow a Newsletter",
"handle": "howtogrowanewsletter",
"bio": "I run four Substack newsletters pulling in nearly $250K/year"
}
],
"postTags": [],
"comments": [
{
"id": 302090035,
"name": "Phaetrix",
"body": "AI detection may give readers additional information...",
"date": "2026-07-27T16:44:04.418Z",
"reactions": {"❤": 2},
"reaction_count": 2,
"children": []
}
]
}

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

Data table

FieldDescription
titlePost title
subtitlePost subtitle / description
canonical_urlFull URL to the post
post_datePublication date (ISO 8601)
audienceeveryone = free, only_paid = paywalled
wordcountApproximate word count
reaction_countTotal reactions (likes/hearts)
restacksNumber of restacks (reposts)
body_htmlFull article HTML (free posts only)
cover_imageCover image URL
publishedBylinesAuthor info: name, handle, bio, photo
postTagsPost tags/topics
comments[].bodyComment text
comments[].nameCommenter name
comments[].reactionsComment reactions
comments[].childrenNested replies

Audience filter

ValueBehavior
everyoneFree posts only — body_html contains the full article
allAll posts including paid — paywalled posts have empty body_html

Pricing

  • $0.05 per run start
  • $0.03 per post scraped

Scraping 100 free posts costs approximately $3.05. The free Apify tier gives you enough credits to test before subscribing.

Tips

  • Set audienceFilter: "everyone" to only get posts with full content — saves credits by skipping paywalled posts
  • Set includeComments: false if you only need article text — faster and cheaper
  • Newsletters with custom domains (e.g. citrinicitriniresearch.com) are supported automatically
  • Combine with Substack Newsletter Scraper to first discover newsletters, then scrape their posts

FAQ & Disclaimers

Is scraping Substack legal? This actor only accesses publicly available content through Substack's official mobile API — the same data visible to anyone without logging in. Paywalled content is never accessed.

Why is body_html empty for some posts? Posts with audience: "only_paid" are behind a paywall — Substack does not serve the article body without authentication.

Supports custom domains? Yes — newsletters that have migrated to a custom domain are followed automatically.

Support: Open an issue in the Issues tab on this actor's page. Custom solutions available on request.