Substack Scraper – Posts, Notes, Authors & Rankings
Pricing
from $1.00 / 1,000 results
Substack Scraper – Posts, Notes, Authors & Rankings
Scrape Substack newsletters, search posts across Substack, get the top newsletters of any category, and writer profiles with their Notes: reactions, comments, full text, audience size, paid tier, followers and leaderboard rank. No login or API key needed.
Pricing
from $1.00 / 1,000 results
Rating
0.0
(0)
Developer
Sheshinmcfly
Maintained by CommunityActor stats
1
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Features
Share
Substack Scraper — Posts, Notes, Authors, Rankings & Subscriber Counts
Scrape any Substack newsletter — subdomain or custom domain — search all of Substack by keyword, pull the top newsletters of any category, or get writers' profiles and their Substack Notes. Every post comes with engagement (reactions, restacks, comments), the free preview text, language and authors; every newsletter with its audience as Substack shows it ("Over 1,200,000 subscribers", "Tens of thousands of paid subscribers"). Add comments with nested replies, full post HTML, the newsletters each publication recommends and the topics trending on Substack. No login, no account, no API key.
| 🏆 Category rankings | The top newsletters — or top paid newsletters — of any of Substack's 35 categories, up to ~525 each, with author, audience and X account |
| ✍️ Authors & Notes | A writer's profile (exact followers, audience, leaderboard rank, X account, publications) plus their latest Notes with likes, restacks and replies |
| 🔍 Search all of Substack | Find posts on any topic across every newsletter, each with its publication and audience size |
| 👥 Audience size | Subscriber range and paid-subscriber tier for every publication |
| 🤝 Recommendations | The newsletters each publication recommends — map a niche, find prospects |
| 📬 Full archives | Hundreds of posts per newsletter, newest, top or pinned |
| 💬 Comments | Every comment with nested replies (optional) |
Data you get
Per post
| Field | Description |
|---|---|
| postId / title / subtitle / description | Post identity and summary |
| url / slug / postDate | Canonical link, slug, publish date (ISO 8601) |
| type / audience / isPaid | newsletter, podcast…; everyone or only_paid |
| wordcount / language | Length and language |
| freeExcerpt | The preview text Substack shows publicly (also for paid posts) |
| authors / tags / sectionName | Bylines, tags, section |
| reactionCount / reactions / restacks | Engagement (reactions broken down by emoji) |
| commentCount / childCommentCount | Comments and replies to comments |
| restackedFromPublication | When the post is a restack of another newsletter |
| coverImage / hasVoiceover / podcastUrl / podcastDuration | Media |
| bodyHtml | Full HTML (optional) |
| publicationUrl / publicationId | The newsletter it belongs to |
| publicationName / publicationAuthor / subscriberCountText… | Search mode: the newsletter and its audience |
Per publication (recordType: publication_metadata)
| Field | Description |
|---|---|
| name / title / description | Newsletter name and description |
| authorName / authorHandle | Author |
| subscriberCountText / subscriberCountApprox | e.g. "Over 461,000 subscribers", "461K+" |
| subscriberTier / paidSubscriberTier | e.g. "Hundreds of thousands of subscribers", "Tens of thousands of paid subscribers" |
| paidSubscriptionsEnabled / hasPodcast | Monetization and podcast |
| language / createdAt / firstPostDate | Language and age |
| subdomain / customDomain / logoUrl / coverImage | Branding |
Substack publishes audience as ranges, not exact numbers; the fields carry its exact wording. When a newsletter does not show its audience, those fields are null.
Per comment (optional) — commentId, postId, body, authorName, authorHandle, authorPhoto, date, editedAt, reactionCount, reactions, restacks, childrenCount, score, ancestorPath
Per recommendation (optional) — recommendedBy, name, publicationUrl, authorName, description, paidSubscriptionsEnabled, logoUrl, createdAt
Per ranked newsletter (recordType: ranking, Rankings mode)
| Field | Description |
|---|---|
| rank / category / rankingType | Position in the category, which category, top or paid |
| name / publicationUrl / description / subdomain / customDomain / logoUrl | The newsletter |
| authorName / authorHandle / authorProfileUrl / authorBio / twitterUrl | Its writer |
| subscriberCountText / subscriberCountApprox / subscriberTier / paidSubscriberTier | Audience as Substack shows it |
| paidSubscriptionsEnabled / hasPodcast / language / createdAt / firstPostDate | Monetization, podcast, language and age |
Per author (recordType: author, Authors mode) — name, handle, profileUrl, bio, photoUrl, followerCount (exact), subscriberCountText ("466K+ subscribers"), subscriberCountApprox, bestsellerTier, leaderboardCategory / leaderboardRank / leaderboardType, twitterUrl, twitterVerified, links, primaryPublicationName, primaryPublicationUrl, publications (name, URL, role), profileCreatedAt.
Per note (recordType: note, Authors mode) — noteId, noteUrl, date, body, quotedText (when the note quotes a post), attachedPostTitle / attachedPostUrl / attachedPublication (when it shares a post), images, reactionCount, restacks, replyCount, language, authorName, authorHandle.
Per trending topic (recordType: trendingTopic, optional) — rank, isFeatured, title, query, description, category, relatedQueries, searchUrl, updatedAt.
Quick start
A newsletter's last 100 posts with its audience
{ "publications": ["www.lennysnewsletter.com"], "maxPostsPerPublication": 100 }
Search all of Substack
{ "mode": "search", "searchQueries": ["venture capital", "artificial intelligence"], "maxPostsPerPublication": 50 }
Top 200 paid newsletters in Technology and Finance
{ "mode": "rankings", "categories": ["technology", "finance"], "rankingType": "paid", "maxPublicationsPerCategory": 200 }
Writers' profiles and their last 100 Notes
{ "mode": "authors", "authors": ["garymarcus", "https://substack.com/@noahpinion"], "maxNotesPerAuthor": 100 }
Map a niche through recommendations
{ "publications": ["www.noahpinion.blog", "www.natesilver.net"], "maxPostsPerPublication": 5, "includeRecommendations": true }
Posts with full text and every comment
{ "publications": ["www.noahpinion.blog"], "maxPostsPerPublication": 20, "includeFullContent": true, "includeComments": true }
How to use
- Choose a Mode: Publications I list, Search all of Substack by keyword, Top newsletters by category or Authors and their Notes.
- Add publications (a subdomain like
noahpinion, a domain, or any URL from the newsletter), search keywords, categories (e.g.technology,us-politics) or authors (a handle orsubstack.com/@link). - Set the limits — posts per publication or keyword, newsletters per category, notes per author — and turn on comments, full content, recommendations or trending topics if you need them.
- Run. The status message shows what each run returned by record type, and names any publication, category or author that was not found.
Use cases
- Sponsorship & lead generation — the top newsletters of a category with their audience size, paid tier, writer and X account; or the newsletters a niche recommends.
- Creator research — a writer's reach (followers, audience, leaderboard rank) and what they post on Notes, with engagement.
- Content research — analyze a newsletter's posting frequency, topics and engagement over time.
- Competitive monitoring — track competitor newsletters' output and reader engagement.
- Trend & topic tracking — search all of Substack for a keyword and see who writes about it and how it lands.
- Network mapping — follow recommendations to map who recommends whom in a niche.
Input
| Field | Type | Description |
|---|---|---|
| mode | select | publications (default), search, rankings or authors |
| publications | array | Newsletters to scrape (Publications mode) |
| searchQueries | array | Keywords to search across Substack (Search mode) |
| categories | array | Categories to rank, by name or slug (Rankings mode) |
| rankingType | select | all (top newsletters) or paid (top paid) |
| maxPublicationsPerCategory | integer | How far down each ranking (default 100, up to ~525) |
| authors | array | Writers by handle or profile link (Authors mode) |
| maxNotesPerAuthor | integer | Latest notes per author (default 50, 0 = profile only) |
| sort | select | new, top or pinned |
| maxPostsPerPublication | integer | Max posts per publication or keyword (default 50) |
| includePublicationMetadata | boolean | One profile record per publication, audience included (default true) |
| includeFullContent | boolean | Full HTML of each post |
| includeComments | boolean | Every comment and reply |
| includeRecommendations | boolean | Newsletters each publication recommends |
| includeTrendingTopics | boolean | Topics Substack features as trending right now (any mode) |
Output examples
Publication
{"recordType": "publication_metadata","publicationUrl": "https://www.lennysnewsletter.com","name": "Lenny's Newsletter","authorName": "Lenny Rachitsky","language": "en","createdAt": "2019-06-01T15:35:37.885Z","subscriberCountText": "Over 1,200,000 subscribers","subscriberCountApprox": "1.2M+","subscriberTier": "Millions of subscribers","paidSubscriberTier": "Tens of thousands of paid subscribers","paidSubscriptionsEnabled": true,"hasPodcast": true}
Post
{"recordType": "post","title": "How to turn your AI into a world-class designer","postDate": "2026-09-01T12:45:59.568Z","wordcount": 4604,"language": "en","reactionCount": 1214,"restacks": 93,"commentCount": 23,"isPaid": true,"authors": ["Anshu Chimala"],"freeExcerpt": "👋 Hey there, I’m Lenny. Each week, I share deeply researched product, growth, and career advice. For more: Le…","url": "https://www.lennysnewsletter.com/p/how-to-turn-your-ai-into-a-world"}
Ranked newsletter
{"recordType": "ranking","rank": 2,"category": "Technology","rankingType": "top","name": "The Pragmatic Engineer","authorName": "Gergely Orosz","subscriberCountText": "Over 1,100,000 subscribers","paidSubscriberTier": "Tens of thousands of paid subscribers","paidSubscriptionsEnabled": true,"publicationUrl": "https://newsletter.pragmaticengineer.com"}
Author
{"recordType": "author","name": "Noah Smith","handle": "noahpinion","followerCount": 697305,"subscriberCountText": "466K+ subscribers","leaderboardCategory": "Business","leaderboardRank": 2,"leaderboardType": "paid","twitterUrl": "https://x.com/Noahpinion","primaryPublicationUrl": "https://www.noahpinion.blog"}
Note
{"recordType": "note","noteUrl": "https://substack.com/@garymarcus/note/c-369323630","date": "2026-10-24T18:34:47.472Z","body": "“There’s an old joke that if building architecture and construction practices were like software…”","reactionCount": 113,"authorHandle": "garymarcus"}
Search result
{"recordType": "post","queryContext": "venture capital","title": "Venture Capital 101. Introduction","postDate": "2026-03-03T17:04:09.508Z","publicationName": "Stanford GSB Professor on Startups & Investors","publicationUrl": "https://ilyastrebulaev.substack.com","publicationAuthor": "Ilya Strebulaev","subscriberCountText": "Over 11,000 subscribers","reactionCount": 474,"url": "https://ilyastrebulaev.substack.com/p/venture-capital-101-introduction"}
Performance
Measured runs:
| Request | Records | Time |
|---|---|---|
| 3 newsletters × 50 posts | 104 | ~5–8 s |
| 1 newsletter × 300 posts | 301 | ~9 s |
| 20 posts + full text + all comments | 229 | ~8–12 s |
| 2 newsletters + recommendations | 72 | ~6 s |
| Search, 2 keywords × 30 posts | 60 | ~10–13 s |
| Rankings, 2 categories × 60 | 120 | ~14 s |
| Whole ranking of a category | 525 | ~15 s |
| 2 authors + 60 notes each | 122 | ~9 s |
Pricing
Pay per result: $0.001 per record (post, comment, publication profile, recommendation, ranked newsletter, author, note or trending topic) returned, plus $0.00005 per run start.
| Records | Price |
|---|---|
| 1,000 | $1.00 |
| 10,000 | $10.00 |
Publications, categories and authors that do not exist are reported in the status message and never charged.
FAQ
Do I need a Substack account? No. The actor reads public Substack data — no login, no cookies, no API key.
Can I get the full text of paid posts?
You get what Substack shows the public: the free preview (freeExcerpt) for every post, and the full text of free posts with Include full post content.
Is the subscriber count exact? Substack shows audience as ranges ("Over 461,000 subscribers", "Tens of thousands of paid subscribers"); the actor returns exactly what Substack shows.
How far do the category rankings go?
Substack ranks about 525 newsletters per category (top and top paid). Ask for fewer with maxPublicationsPerCategory.
Which notes do I get? The author's own Notes, newest first. Notes that share a post include that post's title and link, and the quote when there is one.
Does it work with custom domains?
Yes — www.lennysnewsletter.com, www.noahpinion.blog and similar work just like name.substack.com.
Keywords
substack scraper, newsletter scraper, substack api, substack notes scraper, substack leaderboard, top substack newsletters, substack subscriber count, substack search, substack authors, newsletter analytics, newsletter sponsorship leads, creator economy data, substack posts, substack comments, newsletter recommendations
More actors
Browse all my scrapers on my Apify profile.
Disclaimer
This actor collects only publicly available data from Substack and is not affiliated with Substack. You are responsible for how you use the data.
Changelog
| Version | Date | Changes |
|---|---|---|
| 1.3 | 2026-11-12 | New: Rankings mode — the top (or top paid) newsletters of any Substack category, up to ~525 each, with writer, audience and X account; Authors mode — writer profiles (exact followers, audience, leaderboard rank, X account, publications) with their latest Notes; optional trending topics. A brief network hiccup no longer leaves a publication without posts. Run log in English. |
| 1.2 | 2026-11-06 | Posts are back after a change on Substack's side, and long archives are read in full again. If Substack answers with an error, the run status now names the publication instead of returning it without posts. Same input, same fields. |
| 1.1 | 2026-10-29 | New: search all of Substack by keyword; publication audience (subscriber range and paid tier), author, language and creation date; recommended newsletters; free preview text, language, restack source and reply counts on posts. Publications that do not exist are now reported and no longer return an empty billed record. Faster runs and a per-run summary in the status message. |
| 1.0 | 2026-07-13 | Initial release — post archive with full engagement and content metadata |