Substack Scraper avatar

Substack Scraper

Pricing

from $0.45 / 1,000 posts

Go to Apify Store
Substack Scraper

Substack Scraper

[$0.60/1K posts] Posts of any Substack publication: title, subtitle, date, free or paid, likes, comments, restacks, word count, podcast length, cover, URL — plus full text of free posts and a publication row with author, subscriber tier and plans. Custom domains work. No run fee, no login.

Pricing

from $0.45 / 1,000 posts

Rating

5.0

(1)

Developer

Matvey

Matvey

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 hours ago

Last modified

Share

Substack Scraper turns any Substack publication into a table of its posts: title, subtitle, date, free or paid, likes, comments, restacks, word count, post type, podcast length, cover image and URL — newest first, as deep into the archive as you want. Add the full text of free posts with one switch, and get a publication row with the author, description, subscriber tier, launch date, paid plans and benefits.

$0.0006 per post — a thousand posts for sixty cents. No start fee, no login, no browser. Custom domains work; publications that do not exist are free.

What is Substack Scraper?

A research tool for anyone who studies newsletters: content teams tracking competitors, analysts sizing a niche, writers picking topics by what gets likes, and AI agents that need a publication's archive as data. Substack serves its archive as JSON to its own pages; this Actor reads that directly, so a 500-post archive takes seconds and costs 30 cents.

What is in every row

FieldMeaning
title, subtitle, url, publishedAt, authors, sectionThe post
audience, isPaideveryone, only_paid or founding
likes, comments, restacksEngagement as Substack counts it
wordCount, postType, podcastDurationSec, hasVideo, hasPodcastFormat and length
description, truncatedBody, coverImageUrlPreview text and image
contentHtml, contentText, contentIsPreviewFull text when Add the full text is on; a paid post gives its free preview, flagged and not charged

The publication row adds authorName, authorHandle, authorBio, description, subscriberTier ("Hundreds of thousands of subscribers"), paidSubscriberTier, subscribersOrderOfMagnitude, createdAt, language, twitter, hasPaidPlan, plans (price, currency, interval) and the free and paid benefits.

How much does it cost?

EventPrice
Post row$0.0006
Full text of a free post (optional)$0.0006
Publication row (optional)$0.002
  • Posts skipped by the date filter or the type filter: $0.
  • Paid posts when full text is on: the preview is delivered free.
  • Publications that do not exist or are not on Substack: $0.

Bulk export: what 50,000 rows actually cost

This Actor is built for bulk jobs — hundreds of publications in one run, whole archives, or a schedule that reads every new post daily. There is no fee per run, no fee per page and no proxy charge: you pay for the rows you keep.

JobThis ActorMost-used Actor in this category
50,000 post rows across 100 runs$30$57.50 + start fees

Checked on the Apify Store on 23 September 2026 against the Actor with the most monthly users in this category ($0.00115 per post plus a fee per run). Some Actors here ask less per row — this table compares against the one buyers actually use most.

How to use it in three steps

  1. Paste publication URLs or subdomains into 📰 Publications — https://www.lennysnewsletter.com, platformer.substack.com, or just lenny.
  2. Set Posts per publication (newest first) and, if you like, Only posts published after and Post type. Turn on Add the full text of free posts for the body.
  3. Press Start, then download JSON, CSV or Excel — or call the run from the API, n8n, Make, Zapier or an AI agent.

⬇️ Input

{
"publications": ["https://www.lennysnewsletter.com", "platformer.substack.com"],
"maxPostsPerPublication": 100,
"publishedAfter": "2026-01-01",
"includeContent": true
}

⬆️ Output

{
"type": "post",
"publication": "Lenny's Newsletter",
"title": "Advanced evals: How to find (and fix) hidden AI failures in your product",
"subtitle": "Why you should never skip error discovery",
"url": "https://www.lennysnewsletter.com/p/advanced-evals-how-to-find-and-fix",
"postType": "newsletter",
"audience": "only_paid",
"isPaid": true,
"publishedAt": "2026-09-22T12:45:14.998Z",
"likes": 240,
"comments": 2,
"restacks": 10,
"wordCount": 3807,
"authors": ["Hamel Husain", "Shreya Shankar"],
"coverImageUrl": "https://substackcdn.com/image/fetch/…",
"scrapedAt": "2026-09-23T12:04:11.004Z"
}

Use cases

Competitive content research

Fifty publications in your niche, the last 100 posts each — sort by likes per word and see what actually lands.

Newsletter monitoring

Schedule daily with Only posts published after yesterday; new posts flow into Sheets or Slack.

Sizing a market

The publication row gives subscriber tiers, launch dates and paid plans for hundreds of newsletters in one run.

AI agents and RAG

Full text of free posts, clean contentText, through the Apify MCP server — "summarize what Platformer wrote about AI this month" returns sourced rows.

Integrations

Every run is available through the Apify API, and the Actor works out of the box with n8n, Make, Zapier, Google Sheets, LangChain and the Apify MCP server. Schedule it, webhook it, or export straight to CSV.

FAQ

Does it read paid posts? No. Paid posts come back with all their metadata and engagement, and with the free preview when full text is on — never the paywalled body.

Are subscriber counts exact? Substack publishes tiers, not numbers ("Tens of thousands of paid subscribers"); the row carries the tier text and its order of magnitude.

Custom domains? Yes — paste the domain; the Actor follows Substack's own redirects and reads the same JSON.

Comments and notes? Not in this Actor; it is posts and publications.

Is this legal? The Actor reads public pages and the JSON behind them, the same thing a browser loads without logging in. Use the content in line with each publication's terms and copyright.