Substack Posts Scraper
Pricing
from $0.26 / 1,000 post results
Substack Posts Scraper
Scrape posts from any Substack publication (subdomain or custom domain): full HTML and plain text for public posts, paywall signal and teaser for paid posts. Flat, LLM-ready JSON. $0.0002 per post.
Pricing
from $0.26 / 1,000 post results
Rating
0.0
(0)
Developer
Leonardo Santos
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Fetch the posts of any Substack publication — a .substack.com subdomain or a
custom domain like www.slowboring.com — as clean, flat, LLM/agent-ready JSON.
Free posts come back with full HTML and plain text; paywalled posts come back
with the paywall signal plus whatever public teaser the publication provides.
One item per post, newest-first, ready to drop straight into a pipeline.
Why this actor?
- 💵 $0.0002 per post — undercuts the field: the category leader charges a $0.005 start fee before you get a single item, and the next-cheapest credible competitor is still 50% more per item. No start fee here — you only pay for posts delivered.
- 🎯 Reliability-first — built and monitored on a first-party JSON API
(
/api/v1/posts), not brittle HTML scraping. Contract-checked by an automated watchdog with smoke tests on every run. - 🌐 Works with custom domains — subdomains and mapped custom domains
(
www.slowboring.com,astralcodexten.com) are handled identically. - 🔒 No personal data — public post content only. This actor never returns subscriber lists, author emails, or any contact data.
- ⏱️ Incremental crawls built in —
publishedAfterstops pagination as soon as it reaches older posts, so scheduled re-runs only pay for new content. - 🤖
body_textready for LLM pipelines — tag-stripped, entity-decoded plain text alongside the rawbody_html, so you can feed posts straight into an LLM without writing your own HTML cleaner.
Input
{"publications": ["astralcodexten", "www.slowboring.com"],"maxPostsPerPublication": 50,"publishedAfter": "2026-01-01","includeBodyHtml": true}
publications accepts a bare name (astralcodexten → astralcodexten.substack.com),
a subdomain, a custom domain, or a post/homepage URL — up to 50 publications
per run, deduplicated. See the input schema for proxyConfiguration.
Output
One item per post:
{"input": "astralcodexten","publication_host": "astralcodexten.substack.com","post_id": 148213567,"slug": "links-for-july","url": "https://astralcodexten.substack.com/p/links-for-july","title": "Links For July","subtitle": "Highlights from the comments, some AI news, and more","post_date": "2026-07-14T13:05:00.000Z","type": "newsletter","audience": "everyone","is_paywalled": false,"body_html": "<p>Here's a bunch of stuff I found interesting this month...</p>","body_text": "Here's a bunch of stuff I found interesting this month...","word_count": 3120,"description": "Highlights from the comments, some AI news, and more","cover_image": "https://substackcdn.com/image/fetch/astralcodexten/links-for-july-cover.jpg","comment_count": 412,"reaction_count": 987,"error": null,"scraped_at": "2026-07-17T00:00:00.000Z"}
A paywalled post comes back the same shape with is_paywalled: true,
audience: "only_paid", body_html: null, and body_text set to whatever
teaser the publication exposes (may be empty — not every publication ships
one).
Pricing
Pay per result: one post-result event at $0.0002 per delivered post
item — free and paywalled posts are both charged, since metadata plus the
paywall signal is a delivered result either way. Error items (bad input,
publication not found, no posts match) are always free. This is a Pay
per event + usage actor — you also pay Apify platform usage for the run's
compute, same as our other actors.
Limitations
- Up to 50 publications per run, up to 2,000 posts per publication.
- Paywalled post bodies are not included. You get the paywall signal
(
is_paywalled,audience) and whatever public teaser the publication provides — never the paid content itself. - No comments and no Notes in v1 — post metadata and content only.
Use cases
- 🗞️ Content monitoring — track new posts from publications you follow or
compete with, with
publishedAfterfor cheap incremental runs. - 🤖 LLM pipelines / RAG — flat, pre-cleaned
body_textfor summarization, search indexing, or agent tool use. - 📊 Research & analysis — post cadence, paywall mix, and engagement
signals (
comment_count,reaction_count) across a set of publications.
FAQ
Can I get the full text of paywalled posts? No — this actor never attempts to circumvent paywalls. Paid posts return the paywall signal and any public teaser only.
Does this work on custom domains, not just *.substack.com? Yes, custom
domains are handled identically to subdomains — just pass the domain as the
publication.
Do I pay for posts that fail? No — error items (invalid input, publication not found, no matching posts) are always free.
This Actor is an independent tool, not affiliated with or endorsed by Substack Inc.