News & content data

Substack Scraper: every post of any newsletter, with engagement

Give it Substack publications and get their posts with title, subtitle, date, free or paid, likes, comments, restacks, word count, podcast length, cover and URL. Optionally add the full text of free posts and a publication row with author, subscriber tier and paid plans. Custom domains work.

★ 5.0 rating · 1 reviews5 users91.3% successful runs (30 days)

What data you get

title / subtitlePost title and subtitle
datePublish date
audienceFree or paid post
likes / comments / restacksLikes, comments and restacks
wordCountWord count
podcastDurationPodcast length
cover / urlCover image and post URL
contentFull text of free posts (optional)
publicationPublication row: author, description, subscriber tier, launch date, paid plans

How it works

  1. Open the scraper on Apify and sign up (free).
  2. Enter routes, dates and options in the form.
  3. Click Start and download results as JSON, CSV or Excel, or call the API.

Pricing

$0.60 per 1,000 rows

You pay per post returned, per full-text add-on only for free posts when that option is on, and per publication row. Posts older than your date filter are skipped and not charged; there is no run fee.

Apify gives $5 free credits every month — enough to test this scraper at no cost.

Example tasks

Ready-made inputs. Copy one into the scraper form or send it through the API.

Scrape all posts from a Substack newsletter

50 newest posts from two publications.

{
  "publications": [
    "https://www.lennysnewsletter.com",
    "platformer.substack.com"
  ],
  "maxPostsPerPublication": 50
}
Run this task →

Get full text of Substack posts published this year

Free posts since January with content.

{
  "publications": [
    "astralcodexten.substack.com",
    "noahpinion.substack.com"
  ],
  "publishedAfter": "2026-01-01",
  "includeContent": true
}
Run this task →

List Substack podcast episodes of a newsletter

Podcast posts only, up to 100.

{
  "publications": [
    "https://www.lennysnewsletter.com"
  ],
  "postType": "podcast",
  "maxPostsPerPublication": 100
}
Run this task →

Compare Substack newsletters' subscriber tier and latest posts

Publication rows plus 10 posts each.

{
  "publications": [
    "thegeneralist.substack.com",
    "https://www.notboring.co",
    "platformer.substack.com"
  ],
  "maxPostsPerPublication": 10,
  "includePublicationRow": true
}
Run this task →

Use cases

FAQ

Does it work with custom domains?

Yes. Use Substack URLs, subdomains or custom domains such as lennysnewsletter.com.

Can I get the full text?

Yes, for free posts. Turn on full text to add contentHtml and contentText; paid posts are not unlocked.

Can I scrape only recent posts or only podcasts?

Yes. Set a published-after date and pick a post type such as newsletter, podcast, thread or video.

Is it legal to scrape Substack?

The scraper collects only publicly visible data from Substack, without logging in. Whether your use is lawful depends on your country and purpose: respect local law and the site's terms, and avoid collecting or storing personal data you don't need.

How do I get the data into my app or spreadsheet?

Run it from the Apify API or the Python and JavaScript clients, or connect it to Make, n8n, Zapier or Google Sheets. Results export to JSON, CSV or Excel.

More scrapers

Scrape Substack newsletters now

Run on Apify — free trial