Substack Scraper - Posts, Dates, Subtitles, Subscriber Counts
Pricing
from $1.00 / 1,000 posts
Substack Scraper - Posts, Dates, Subtitles, Subscriber Counts
Scrape any Substack newsletter by name or URL: post title, URL, publish date, subtitle, free preview snippet, paywall flag, likes, comments, restacks, word count and the publication's public subscriber count. No login, no browser, no proxy needed.
Pricing
from $1.00 / 1,000 posts
Rating
0.0
(0)
Developer
Anatolian Data
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Get the post list of any Substack newsletter as clean JSON, CSV or Excel. Give a newsletter name, subdomain or URL; the Actor returns one row per post with title, URL, publish date, subtitle, the free preview snippet, paywall flag, likes, comments, restacks and word count, plus the publication's public subscriber count.
- No login, no cookies, no browser, no proxy needed
- Works with custom domains (e.g.
www.lennysnewsletter.com) and*.substack.com - Filters: newest or top posts, free-only or paywalled-only, keyword, date range
- Fast: ~100 posts in about 10 seconds
What it does not collect
Only data that Substack shows publicly on the newsletter's archive page:
- No paywalled content. For paid posts you get the title, subtitle, date and the public free preview only.
- No full article text, no subscriber or email lists, no author or reader personal data.
Input
| Field | Description |
|---|---|
publications | List of newsletters: noahpinion, Lenny's Newsletter, https://www.lennysnewsletter.com, https://example.substack.com, or any post URL. Names are matched with Substack's own search; unrelated matches are rejected. |
maxPostsPerPublication | Max posts per newsletter (default 50). |
sort | new (newest first) or top (most popular). |
audience | all, free or paid. |
keyword | Optional, uses the newsletter's own archive search. |
dateFrom, dateTo | Optional date range, e.g. 2026-01-01. |
Example:
{"publications": ["noahpinion", "https://www.lennysnewsletter.com"],"maxPostsPerPublication": 50,"sort": "new","dateFrom": "2026-01-01"}
Output
One row per post:
{"publicationName": "The Pragmatic Engineer","publicationUrl": "https://newsletter.pragmaticengineer.com","subscriberCount": 1100000,"subscriberCountText": "Over 1,100,000 subscribers","paidSubscribersText": null,"postId": 183694080,"title": "When AI writes almost all code, what happens to software engineering?","subtitle": "No longer a hypothetical question, this is a mega-trend set to hit the tech industry","url": "https://newsletter.pragmaticengineer.com/p/when-ai-writes-almost-all-code-what","publishedAt": "2026-01-06T17:41:49.383Z","type": "newsletter","audience": "everyone","isPaywalled": false,"freeSnippet": "This article was originally a paid one...","wordCount": 6843,"reactionCount": 1076,"commentCount": 41,"restackCount": 104,"coverImage": "https://substack-post-media.s3.amazonaws.com/...","tags": [],"scrapedAt": "2026-10-17T21:00:00.000Z"}
Other fields: publicationId, publicationSubdomain, publicationTagline, publicationLanguage, hasCustomDomain, slug, description, section, language, podcastDurationSecs, input.
subscriberCount is the number Substack displays on the newsletter page ("Over 460,000 subscribers"). It is null when the publication hides it.
A run summary (posts per newsletter, skipped inputs) is saved in the key-value store as RUN_SUMMARY.
Pricing
Pay per result: $0.001 per post (that is $1 per 1,000 posts) plus a tiny start fee. Platform usage is included. Set a maximum cost per run in the Apify console and the Actor stops exactly there.
Use cases
- Track competitors' or partners' publishing frequency and engagement
- Build a list of newsletters in a niche with their subscriber counts for sponsorship outreach
- Monitor new posts from a set of newsletters (schedule the Actor daily with
dateFrom) - Research datasets of titles, subtitles and engagement over time
Notes
- If a name matches no newsletter, the run skips it and tells you why; use the URL instead.
- Newsletters that left Substack (e.g. moved to Ghost) are skipped with a clear message.
- Questions or a missing field? Open an issue on the Actor page.