Chorelet
Apify Actor

Substack Posts Scraper

Every post of any Substack publication — custom domains included, no login.

Plus $1 per 1,000 posts when you ask for the full text. Pay per result on Apify; runs that return nothing cost nothing; Apify's free plan includes $5 of usage a month.

Paste publication URLs, subdomains or author handles, set how many posts you need or a date like “90 days”, and get title, date, likes, comments, restacks, authors and the paid/free flag for every post — optionally with the full text — as JSON, CSV or Excel, or through the Apify API and integrations.

It reads the same public archive that powers each publication's own Archive page, so custom domains work, nothing needs a login, and paywalled posts return exactly what an anonymous reader sees: metadata plus the public preview.

What you get

  • Any number of publications per run; newest posts first with a date cut-off
  • Custom domains and moved subdomains resolved automatically; @handles accepted
  • Engagement per post: likes, comments, restacks, word count, paid/free
  • Optional full text of free posts (and the public preview of paid ones)
  • Monitored daily; fixed within 24 hours when Substack changes its API

Typical uses

  • Newsletter monitoring and competitive research across dozens of publications
  • Feeding posts into an LLM for summaries or topic tracking
  • Engagement benchmarks (likes, comments, restacks per post) over time
  • Archiving a publication to CSV or a database

Output

publication, publicationName, publicationAuthorHost, name and author of the publication
id, slug, url, title, subtitle, description, date, typeThe post and its listing summary; newsletter, podcast, thread or video
audience, isPaid, wordCountFree vs paywalled, length
reactions, reactionCount, commentCount, restacksEngagement as shown publicly
authors, tags, section, coverImage, podcastUrlBylines with handles, tags, section, media
previewText, bodyText, bodyHtmlListing preview; full text and HTML when requested

Run it from code

Same Actor, same output, from your own scripts (any language) or from n8n, Make and Zapier.

curl -X POST "https://api.apify.com/v2/acts/chorelet~substack-posts-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"publications":["lenny","https://www.astralcodexten.com"],"maxPostsPerPublication":50,"postedAfter":"90 days","includeContent":false}'