Substack Newsletter Scraper: Posts, Full Text, Stats avatar

Substack Newsletter Scraper: Posts, Full Text, Stats

Pricing

Pay per event

Go to Apify Store
Substack Newsletter Scraper: Posts, Full Text, Stats

Substack Newsletter Scraper: Posts, Full Text, Stats

Scrape every post from any Substack newsletter: title, date, authors, paywall status, likes, comments, restacks, tags and full article text (free posts). URLs, custom domains or names. No login, no proxies. $1 per 1,000 posts, full text included.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Trevor Staubach

Trevor Staubach

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

10 days ago

Last modified

Share

Substack Newsletter Scraper: Posts, Full Text & Engagement Stats

Export every post from any Substack newsletter as clean, structured data: title, subtitle, URL, publish date, authors, paywall status, likes, comments, restacks, word count, tags, section, cover image, and the full article text for free posts (the public preview for paid ones). Works with name.substack.com, custom domains and substack.com/@handle links. $1 per 1,000 posts, full text included. No login, API key or proxies needed.

Why this scraper

  • Full text at the metadata price. Other Substack scrapers charge about twice as much for posts with content. Here the price is the same with or without text.
  • Engagement stats. Likes, comments and restacks for every post, so you can rank a newsletter's best content or benchmark competitors.
  • Incremental runs. postedSince stops at the first older post, so daily monitoring costs only the new posts.
  • Clean text, ready for AI. HTML is converted to readable paragraphs, which makes it suitable for summarisation, RAG, sentiment and topic analysis.
  • Many newsletters per run, each logged separately; a failing one never stops the run.

Use cases

Content and competitor research, newsletter sponsorship prospecting, media monitoring, training/RAG datasets, trend analysis, archiving your own newsletter.

Input

FieldDescription
publicationsNewsletter URLs, custom domains, substack.com/@handle or subdomain names.
maxPostsPerPublicationNewest first. Empty = whole archive.
postedSinceOnly posts on or after this date.
keywordsKeep posts whose title/subtitle contains any of these.
freeOnlySkip paid-only posts.
includeContentFull text (default on).
maxTotalPostsHard cap for the run.
{ "publications": ["https://www.lennysnewsletter.com", "platformer", "https://substack.com/@noahpinion"], "postedSince": "2026-09-01" }

Output

{
"publication": "www.lennysnewsletter.com", "postId": "215694124",
"title": "All of the Lenny & Friends Summit talks are now online",
"subtitle": "Plus, some reflections and takeaways from the day",
"url": "https://www.lennysnewsletter.com/p/all-of-the-lenny-and-friends-summit",
"type": "newsletter", "postDate": "2026-09-29T13:15:57.512Z",
"audience": "everyone", "isPaywalled": false, "authors": ["Lenny Rachitsky"],
"wordcount": 1276, "reactionCount": 289, "commentCount": 7, "restacks": 5,
"tags": [], "sectionName": null, "coverImage": "https://substack-post-media.s3.amazonaws.com/...",
"description": "Plus, some reflections and takeaways from the day",
"previewText": "👋 Hey there, I'm Lenny...",
"contentText": "👋 Hey there, I'm Lenny. Each week, I share...",
"contentIsPreviewOnly": false
}

type can be newsletter, podcast or thread. For paid posts contentText holds only the public preview and contentIsPreviewOnly is true.

Pricing

$1.00 per 1,000 posts ($0.001 each), full text included, plus a tiny $0.00005 per run start. Use maxTotalPosts to cap spend.

Notes

  • Only public data is collected. Paid content beyond the free preview is never accessed.
  • Respect authors' copyright when reusing text.

FAQ

Does it work with custom domains? Yes, paste the newsletter's homepage URL. Can I get only new posts every day? Yes, schedule it with postedSince. Export formats? JSON, CSV, Excel, XML, or via the Apify API.