Substack Data & API Alternative | Posts, Comments | $0.25 / 1K avatar

Substack Data & API Alternative | Posts, Comments | $0.25 / 1K

Pricing

from $1.70 / 1,000 actor starteds

Go to Apify Store
Substack Data & API Alternative | Posts, Comments | $0.25 / 1K

Substack Data & API Alternative | Posts, Comments | $0.25 / 1K

Substack data without a login or key: full post text, word count, reactions, restacks and comment threads from any Substack-hosted newsletter. Incremental mode returns only new posts. $0.25 per 1,000 posts, $0.12 per 1,000 comments, $0.0017 per run. Paid posts return the free preview only.

Pricing

from $1.70 / 1,000 actor starteds

Rating

0.0

(0)

Developer

Hriday Rungta

Hriday Rungta

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

an hour ago

Last modified

Share

Substack data export: posts, full text and comments from any Substack newsletter

Get Substack data as clean rows: every post with full body HTML, word count, reactions and restacks, plus optional comment threads. The Actor calls the same public JSON endpoints a publication's own website uses to render its archive. No login, no API key, no browser, no proxy. Turn on incremental mode to get only the posts published since your last run.

$0.25 per 1,000 posts, $0.12 per 1,000 comments, $0.0017 start fee per run.

What people use it for

  • Download a Substack newsletter archive: export a publication newest-first, with full post HTML, for backups, offline reading or analysis.
  • Monitor competitor and industry newsletters: track a list of publications and get only new posts on each run. Good for content research and market intelligence.
  • Substack posts dataset for AI: full text, titles, subtitles and dates for LLM, RAG or topic-modelling datasets.
  • Substack comments export: every comment with author, score, timestamp, depth and parent id, for audience research and sentiment analysis.
  • Engagement research: reactions, restacks, comment counts and word count per post, to see what topics and lengths perform.
  • Newsletter curation: pull the latest posts from the writers you follow into a sheet, a Notion table or a digest.

Why use this instead of the Substack API?

Substack has no official public API for reading publications. The endpoints this Actor uses are undocumented but stable and are what the Substack website itself calls, which is why no proxy or browser is needed. The Actor adds:

  • Full post bodies: the archive listing has no body, so the Actor fetches each post you receive.
  • Comment trees flattened with depth and parentId.
  • Incremental mode, tracked per publication in a key-value store in your own account.
  • Scheduling, webhooks, CSV, Excel and JSON export from Apify.

Limits, stated plainly

  • Publications hosted on Substack only. Use name.substack.com URLs or bare names. Custom domains work when the publication still runs on Substack (for example astralcodexten.com), but sites that left Substack or never used it return web pages instead of data. Stratechery's own domain returned HTML in our checks.
  • Paid posts return the public preview only. There is no login. Check the audience field (everyone or only_paid); for only_paid posts bodyHtml holds just the free preview, usually shorter than wordcount.
  • Not covered: Substack Notes, subscriber lists, publication search or leaderboards, and paid-subscriber data.
  • Comment rows for deleted comments are marked and their body and author are blanked.

Incremental mode

Set mode to changes. The first run per publication takes posts since firstRunSince (30 days by default, all for a deliberate backfill). Every later run returns only posts newer than the last one for that publication. A run cut short by maxItems still advances the mark from what it emitted, so no duplicates and no skipped posts.

Input

InputDefaultNotes
publicationsrequiredOne per line: platformer, platformer.substack.com or a custom domain that runs on Substack
modeallall or changes (incremental)
includeCommentsfalseFetch each post's comment thread
maxCommentDepth50 is top-level comments only
maxItems100Cost cap: posts and comments count together, and publications are read in the order listed, so a low cap can be used up by the first one
firstRunSince30 dayschanges mode only

Example input, a publication archive with full text:

{ "publications": ["noahpinion.substack.com"], "mode": "all", "maxItems": 50 }

Example input, track two newsletters (schedule it):

{ "publications": ["astralcodexten.substack.com", "noahpinion.substack.com"], "mode": "changes", "firstRunSince": "14 days", "maxItems": 100 }

Output

One row per post, plus one row per comment if comments are on. Real example, a post row (bodyHtml shortened):

{
"postId": 206469842,
"title": "Against Against Handover",
"slug": "against-against-handover",
"type": "newsletter",
"audience": "everyone",
"wordcount": 4492,
"bodyHtml": "<p>...</p>",
"postDateUtc": "2026-10-20T20:32:59.315Z",
"commentsCount": 318,
"reactions": { "❤": 201 },
"restacks": 25,
"canonicalUrl": "https://www.astralcodexten.com/p/against-against-handover",
"publicationHost": "astralcodexten.substack.com"
}

Post rows also include subtitle, description and coverImage. Comment rows carry commentId, postId, parentId, depth, body, authorName, authorHandle, score, reactionCount, createdAtIso and deleted.

Pricing: pay per event, worked examples

EventPrice
Actor started$0.0017, once per run
Post scraped$0.00025 ($0.25 per 1,000)
Comment scraped$0.00012 ($0.12 per 1,000)
RunCost
50 posts, no commentsabout $0.014
1,000 postsabout $0.25
1,000 comments$0.12
Daily incremental run with 3 new postsabout $0.0025

Every post already includes the full body, with no separate tier. maxItems is your hard cost cap. Platform usage is included.

Integrations and scheduling

  • Apify Schedules: run incremental mode hourly or daily.
  • Webhooks, Make, n8n and Zapier: send new posts to Slack, email, Notion or a CRM.
  • Google Sheets: export datasets to a sheet.
  • API and clients (JavaScript, Python), and Apify's MCP server for AI agents.

FAQ

Does Substack have an API? Not an official public one for reading newsletters. This Actor uses the public endpoints the website itself relies on.

Can I download a whole Substack newsletter? Yes for free posts, newest-first. Paid posts give the public preview only.

Can I scrape a newsletter on a custom domain? If the publication is still hosted on Substack, usually yes. If the domain returns a normal website, the Actor cannot read it.

How do I export Substack comments? Set includeComments to true. Each comment is one row.

How do I get only new posts? Use mode: changes and schedule it.

Is it legal? It reads public pages' data without logging in. Respect each author's copyright when reusing content.

What are alternatives? qpayre/substack-scraper, automation-lab/substack-scraper and easyapi/substack-notes-scraper (for Notes, which this Actor does not cover). Compare current pricing and features on their pages.