Substack Posts Scraper avatar

Substack Posts Scraper

Pricing

from $2.00 / 1,000 post rows

Go to Apify Store
Substack Posts Scraper

Substack Posts Scraper

Scrape any Substack publication: post titles, subtitles, authors, dates, likes, comments, paywall status, cover images and optionally full HTML body. Give it publication URLs and it walks the archive. No login.

Pricing

from $2.00 / 1,000 post rows

Rating

0.0

(0)

Developer

John Rutherford

John Rutherford

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Share

Scrape any Substack publication's archive: titles, subtitles, authors, dates, likes, comments, restacks, paywall status, cover images and, optionally, the full post body. Give it publication URLs and it walks the archive newest-first. No login.

For newsletter research, competitor tracking, content aggregation, trend analysis and building reading lists or datasets.

What you get

One row per post:

FieldMeaning
publication, post_id, slug, urlIdentity and link
title, subtitle, description, cover_imageHeadline material
typenewsletter, podcast, thread
post_date, authorPublished time (ISO) and bylines
likes, comments, restacksEngagement
paywalled, audienceonly_paid means subscribers only
word_countLength
body_html, body_textFull body when Include full post body is on (free preview only for paywalled posts)

Sample row:

{
"publication": "www.lennysnewsletter.com",
"title": "How to hire your first PM",
"post_date": "2026-09-02T12:01:00.000Z",
"author": "Lenny Rachitsky",
"likes": 412,
"comments": 37,
"paywalled": false,
"url": "https://www.lennysnewsletter.com/p/how-to-hire-your-first-pm"
}

Input

OptionDefaultWhat it does
Publication URLsOne or more Substack sites, custom domains included
Max posts per publication100Newest first
Only posts sinceISO date; stops at older posts
Post typeallnewsletter, podcast, thread
Include full post bodyoffAdds body_html and body_text
Max posts total5000Cap across all publications

Pricing

Pay per event: one small charge per post row. The body option adds one request per post but no extra charge.

Notes and limits

  • Works with custom domains as long as the site is a Substack (the /api/v1/archive endpoint answers).
  • Paywalled bodies return only the public preview; this Actor does not bypass paywalls.
  • Be polite: a 300 ms pause between archive pages is built in.