Substack Posts Scraper Pro
Pricing
from $2.00 / 1,000 post rows
Substack Posts Scraper Pro
Extract posts from any Substack publication (custom domain or substack.com) as clean JSON: title, subtitle, publish date, paywall status, reaction and comment counts, word count and cover image, plus a full-body-text mode. Server-side search with exact pagination. No API key needed.
Pricing
from $2.00 / 1,000 post rows
Rating
0.0
(0)
Developer
AutomateLab
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Extract posts from any Substack publication as clean JSON: title, subtitle, publish date, paywall status, reaction and comment counts, word count and cover image. Works with custom-domain publications (newsletter.pragmaticengineer.com, noahpinion.blog) and substack.com publications alike. Optionally fetch complete body text per post. No API key needed.
Why this actor
The most-used Substack actor on the Store has no public reviews yet, and the best-rated one sits at 2.6 stars. This actor covers what buyers actually ask for:
- Search within a publication with server-side filtering, so non-matching posts are never returned or billed
- Custom-domain support: works on any Substack publication, whether it lives on substack.com or its own domain
- Engagement on every row: reaction totals, comment counts and word counts on archive rows
- Exact pagination: results stop precisely at your max count
- Full body text mode for single posts, with paywall status flagged
Input
| Field | Type | Description |
|---|---|---|
mode | select | posts (archive metadata rows, default) or post (full text for specific slugs) |
publicationUrl | text | Publication address, e.g. https://newsletter.pragmaticengineer.com or https://heathercoxrichardson.substack.com |
searchQuery | text | Optional keyword filter applied within the publication (posts mode) |
postSlugs | list | Post slugs for post mode, e.g. the-pulse-new-trend-of-building-internal |
maxItems | number | Hard cap on dataset items (1-1000, default 10) |
Output
One JSON row per post:
| Field | Description |
|---|---|
type | post (archive) or post_full (single mode) |
publication | Publication host |
postId | Numeric post ID |
title, subtitle, slug, url | Post identity and link |
publishDate | ISO publish date |
audience | everyone or only_paid |
isPaid | True when the post is for paid subscribers |
isPaywalled | Single mode only: full body is paywalled |
reactionsTotal, commentCount, wordCount | Engagement and size metrics |
section, coverImage, description | Section name, cover image URL, text preview |
bodyText | Single mode only: complete body text as plain text |
podcastDuration | Podcast episode length in seconds, when present |
Pricing
Pay per event:
- $0.005 per actor start
- $0.002 per post row saved to the dataset
Filtering happens before rows are saved, so you are never charged for rows you did not ask for. A 10-post test run costs about $0.025.
Use cases
- Content intelligence: track publishing cadence, topics and engagement for any publication or competitor newsletter
- Creator research: measure reaction and comment volume across a publication's archive before sponsoring or partnering
- LLM training data: clean full-text posts with titles, dates and metadata
- Lead generation: find high-engagement publications in a niche, with contact-ready publication URLs
FAQ
Does it work with custom-domain publications? Yes. Pass the domain as the publication URL. A small number of custom domains do not answer archive requests; the actor reports that clearly instead of returning empty results.
Can I get the full text of every post in a publication? Run posts mode first to get slugs, then re-run in post mode with the slugs you need.
Is scraping Substack allowed? Only publicly accessible content is returned. Paid posts are flagged as paid and are not unlocked.
Does it need cookies, keys or a logged-in account? No. It runs keyless.