Substack Scraper: Posts, Newsletters & Archive avatar

Substack Scraper: Posts, Newsletters & Archive

Pricing

from $1.00 / 1,000 posts

Go to Apify Store
Substack Scraper: Posts, Newsletters & Archive

Substack Scraper: Posts, Newsletters & Archive

Scrape any Substack publication, including custom domains: post titles, dates, free or paid status, word counts, likes, comments and public bylines, plus the text of free posts. Up to 20 publications per run. Export JSON, CSV or Excel. $1 per 1,000 posts.

Pricing

from $1.00 / 1,000 posts

Rating

0.0

(0)

Developer

Philip Kirkbride

Philip Kirkbride

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

15 hours ago

Last modified

Categories

Features

Limited permissions

Share

Substack Publication Scraper

Export posts from Substack publications, including publications on their own domains: titles, publication dates, free or paid status, word counts, likes and comment counts, public bylines and, if you want, the text of free posts.

Price: $0.005 per run start plus $0.001 per delivered post. The Console example (20 posts from one publication) costs about $0.025; the same run with 50 posts costs about $0.055. Post text is included in the per-post price.

No login, no subscription and no API key needed.

Who it is for

  • Newsletter writers and media teams comparing engagement across publications: which posts get likes, comments and replies.
  • Researchers and analysts tracking what a set of newsletters publishes, by date and word count.
  • Content and SEO teams building a calendar of a niche's output, or checking how often competitors post.
  • Anyone who wants a clean spreadsheet of a publication's archive instead of scrolling a website.

How to use it

  1. Paste one or more publication URLs, such as https://www.oneusefulthing.org or https://name.substack.com. Custom domains work.
  2. Choose newest first or top posts.
  3. Set maximum posts per publication (default 50) and turn on free-post text if you need the words.
  4. Run it and export the dataset as JSON, CSV or Excel.

An empty form is safe: it collects a small example (10 posts from one publication) and says so in the run summary.

Input

  • Publication URLs: up to 20 publication home or archive URLs, such as https://name.substack.com or a custom domain like https://www.oneusefulthing.org.
  • Post order: newest first (default) or top posts.
  • Maximum posts per publication: 1 to 5,000, default 50.
  • Include free-post text: off by default. Turn it on to add the text of free posts.
{
"publicationUrls": ["https://www.oneusefulthing.org"],
"sort": "new",
"maxItems": 50,
"includeContent": false
}

Several publications in one run:

{
"publicationUrls": ["https://www.oneusefulthing.org", "https://www.platformer.news"],
"sort": "new",
"maxItems": 100,
"includeContent": false
}

Output

One row per post:

FieldMeaning
postIdSubstack post ID
publicationPublication name
title, subtitlePost title and subtitle
slug, urlPost slug and link
postedAtPublication date and time (UTC)
audiencefree or paid
wordcountWord count
reactionCount, commentCountLikes and comments
authorDisplayNamePublic byline shown on the post
bodyTextPost text (free posts, when text is turned on)

Output example

{
"postId": "12345",
"publication": "Example Newsletter",
"title": "A practical guide to evaluating new ideas",
"subtitle": null,
"slug": "a-practical-guide",
"url": "https://example.substack.com/p/a-practical-guide",
"postedAt": "2026-10-20T15:00:00Z",
"audience": "free",
"wordcount": 1200,
"reactionCount": 42,
"commentCount": 3,
"authorDisplayName": "Example Editorial Team",
"bodyText": null
}

Download results as JSON, CSV or Excel.

Cost examples

RunPostsApproximate cost
Empty input (10-post example)10$0.015
Console example, one publication20$0.025
One publication, 50 posts50$0.055
Five publications, 100 posts each500$0.505
One publication, full archive of 1,000 posts with text1,000$1.005

You pay per delivered post, not per page or per request, so a smaller maximum posts per publication costs less.

What can be empty, and why

  • Paid posts never include text. You still get their title, date and counts.
  • Some free posts have no text. Text is left empty when Substack shows only part of a post (the rest is locked or must be unlocked). A free post that simply mentions subscribing or upgrading still includes its text. Text that is returned is the post as published, links, names and contact details included.
  • publication can be empty on guest posts whose author does not belong to the publication.
  • Any other value the publication does not show is empty.

Limits

  • Works with Substack publications and custom-domain Substack sites. Profile links such as https://substack.com/@name are not supported yet; use the publication's own URL. A profile link is skipped and does not fail the run.
  • Single post links, keyword search and date filters are not supported.
  • Up to 5,000 posts per publication. A run with the default settings comfortably covers a few thousand posts without text; with text turned on, plan for up to about 1,000 posts per run, because text is collected post by post and is slower.
  • A publication that cannot be reached or has no posts is noted in the run summary; posts from the other publications are still delivered.

FAQ

How is it charged? $0.005 to start and $0.001 per delivered post, including the post text when you turn it on. A publication with no posts costs only the start charge.

Can I get the full text of paid posts? No. Only publicly free post text is collected; paid and truncated posts keep their metadata.

Why did I get fewer posts than I asked for? The publication either has fewer posts than your limit or shows only part of its archive. The run summary lists each publication with the number of posts it delivered.

Can I track only new posts over time? Save the input and schedule the task (daily or weekly). Each run is independent, so compare postId values with the previous run or keep your own baseline.

Do you support notes, comments or subscriber counts? Not in this Actor. It returns posts, their counts and the public byline.

Is the byline personal data? authorDisplayName is the public byline shown on the post, as published, and free-post text may contain names, emails, links or addresses supplied by the author.

Privacy

The actor returns only public post information and the public byline shown on each post. It does not collect commenter, subscriber or profile data. Titles, subtitles, bylines, publication names and free-post text are delivered as published.

Pricing

See the Pricing tab. The start charge is counted per GB of memory; the default 512 MB run is one start event.