Substack Post Scraper avatar

Substack Post Scraper

Pricing

from $1.80 / 1,000 post scrapeds

Go to Apify Store
Substack Post Scraper

Substack Post Scraper

Scrape all posts from any Substack publication. Title, publish date, likes, comments, restacks, word count, paywall status, and author for every post in the archive.

Pricing

from $1.80 / 1,000 post scrapeds

Rating

0.0

(0)

Developer

Andrew

Andrew

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

Extract every post from any Substack publication — titles, publish dates, engagement stats, paywall status, word counts, and author details.

What you get

  • Publication info: publication name, URL, and description
  • Post identifiers: postId, postUrl
  • Content metadata: title, subtitle, description, type (newsletter, podcast, etc.), cover image URL
  • Publishing data: publishedAt timestamp, word count, paywall status
  • Engagement metrics: likes count, comments count, restacks count
  • Author details: author name and handle
  • Run metadata: scrapedAt timestamp on every record

One row per post — clean for export to CSV, JSON, or Google Sheets directly from the Apify console.

Use cases

  • Content research — see what topics and formats a newsletter publishes
  • Competitor analysis — benchmark your newsletter against others in your niche
  • Publishing cadence tracking — measure how often a publication posts and when
  • Newsletter sponsorship research — vet potential sponsorship targets by audience engagement
  • Top-performing post discovery — sort by likes, comments, or restacks to find what resonates
  • Creator and influencer research — build lists of active Substack writers in any vertical

How to use

  1. Paste one or more Substack publication URLs into URLs (works with *.substack.com subdomains and custom domains)
  2. Set Max Items — the cap per run (default 100; set 0 for unlimited)
  3. Run the actor — results appear in the Dataset tab
  4. Export to JSON, CSV, or Google Sheets, or pipe into the Substack Post Content Fetcher to grab full post bodies

Output format

Each dataset record:

{
"publicationName": "Astral Codex Ten",
"publicationUrl": "https://astralcodexten.substack.com",
"publicationDescription": "P(A|B) = [P(A)*P(B|A)]/P(B), all the rest is commentary.",
"postId": 182510930,
"postUrl": "https://www.astralcodexten.com/p/three-model-organisms-for-taste",
"title": "Three Model Organisms For Taste",
"subtitle": "...",
"description": "...",
"publishedAt": "2026-05-08T08:50:41.734Z",
"type": "newsletter",
"isPaywalled": false,
"likesCount": 175,
"commentsCount": 324,
"restacksCount": 5,
"wordCount": 1786,
"coverImageUrl": "https://substackcdn.com/...",
"authorName": "Scott Alexander",
"authorHandle": "astralcodexten",
"scrapedAt": "2026-05-09T07:08:37.000Z"
}