Home › Guides › Substack Newsletter Scraper

Substack newsletter posts as data: engagement, free-vs-paid and the authors behind each one

The Substack Newsletter Scraper returns any newsletter's posts straight from its public API — one clean row per post with title, URL, publish date, free or paid, word count, reactions, comments, restacks, tags and authors, plus optional full body text. No API key, no login, no browser.

Who it's for

What you get

GroupFields
PostNewsletter host, title, subtitle, slug, URL, type (newsletter/podcast/thread), publish & update times, word count
Monetisationaudience (everyone / only_paid) and an isPaid flag
EngagementReaction count, comment count, child-comment count, restacks
AttributionAuthors, author handles, tags; cover image, description, teaser; full bodyText with includeBody

A real row (trimmed):

{
  "newsletter": "www.lennysnewsletter.com",
  "title": "All of the Lenny & Friends Summit talks",
  "type": "newsletter",
  "audience": "everyone",
  "isPaid": false,
  "postDate": "2026-09-29T...",
  "wordcount": 1276,
  "reactionCount": 287,
  "commentCount": 7,
  "restacks": 5,
  "authors": ["Lenny Rachitsky"]
}

Input

InputWhat it does
newslettersOne per line: a handle (bariweiss), a .substack.com URL, or a custom domain (the exact host that serves it)
maxPostsPerNewsletter · maxResultsPosts per newsletter, newest first (default 100) · total posts across all (0 = no cap)
postedAfter · includeBodyKeep only posts on/after a date · add the post's full body as plain text
{ "newsletters": ["bariweiss", "https://www.lennysnewsletter.com"], "maxPostsPerNewsletter": 20 }

Honest limits

Pricing

Pay per result: one post event per delivered row. An unreachable newsletter returns a free error row and is not charged. Current prices are on the actor's Pricing tab on Apify.

Turn a newsletter into data: posts with engagement, free-vs-paid and the authors behind each one. Exportable to JSON, CSV or Excel.

Open the Substack Newsletter Scraper →

Related

On other creator sources, the Bluesky Scraper gives creator reach and engagement, the X Profile Scraper account activity and growth, and the YouTube Channel Finder a niche's channels.

Frequently asked questions

Do I need a Substack account or API key?

No. It reads each newsletter's own public post API — the same endpoint the site itself calls — with no key, no login and no browser.

Can I get subscriber counts?

No — those are behind Substack's login. This Actor returns posts, engagement, audience and authors, never a fabricated subscriber number.

How do I enter a custom-domain newsletter?

Use the exact host that serves it, often www. or the {handle}.substack.com subdomain. If a host doesn't serve the public API you get a clear, free error row.

Can I get the full article text?

Yes — turn on includeBody for the post's full body as plain text (HTML stripped). Paid posts may be truncated behind the paywall.

What does free vs paid look like?

Each post carries an audience value (everyone or only_paid) and an isPaid flag, so you can see how much a newsletter gates behind a subscription.

Using the data lawfully

It reads each newsletter's own public post API — the same endpoint the site calls. Posts carry author names published publicly; personal data is protected by the GDPR and similar laws, so only process it with a legitimate basis. Not affiliated with Substack Inc.

Substack Newsletter Scraper — posts, engagement, free-vs-paid and authors. Pay per post, no API key.

Get Substack data on Apify →