Substack Scraper - Posts, Full Text, Comments & Rankings avatar

Substack Scraper - Posts, Full Text, Comments & Rankings

Pricing

$1.00 / 1,000 results

Go to Apify Store
Substack Scraper - Posts, Full Text, Comments & Rankings

Substack Scraper - Posts, Full Text, Comments & Rankings

Scrape Substack newsletters: every post of a publication with full text, comments and replies, keyword search across all of Substack, and category leaderboards with subscriber counts. No login, no API key.

Pricing

$1.00 / 1,000 results

Rating

0.0

(0)

Developer

Frank0306

Frank0306

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Substack Scraper

Get data from Substack newsletters without an API key and without a login. Five modes in one Actor:

  • Posts of publications. Every post of the newsletters you choose, newest or most popular first, with likes, comments, restacks, word count, authors and tags. Add the full text with one switch.
  • Post details. Full text and HTML of single posts.
  • Comments. All comments of a post, with replies, likes and authors.
  • Search. Posts that match your keywords across all of Substack, like the search box on substack.com.
  • Publications and rankings. Substack's category leaderboards (top paid newsletters, or all newsletters) with subscriber counts, followers and paid subscriber ranges, or the same profile data for the publications you list.

Use it for media monitoring, competitor and creator research, finding newsletters to sponsor or pitch, tracking what is said about a topic, building reading lists and RSS-like feeds, and feeding articles to AI tools.

  • Type a URL, a subdomain or a handle. https://www.lennysnewsletter.com, noahpinion and @lenny all work, custom domains included.
  • Clean, flat records. ISO dates, numbers as numbers, plain text next to the HTML, ready for spreadsheets.
  • Subscriber counts. The number Substack shows on author profiles ("462K+ subscribers"), plus followers and the paid subscriber range ("Tens of thousands").
  • No login, no API key, no proxy.
  • Low price. $1 per 1,000 results.

What data can you get?

ModeOne result isMain fields
Posts of publicationsOne postTitle, subtitle, link, publish date, type (newsletter, podcast, thread), free or paid, word count, likes, comments, restacks, authors, tags, preview text, cover image, podcast link and length. Optional: full text and HTML
Post detailsOne postThe same fields, always with full text and HTML, last update time and whether the text is cut by a paywall
CommentsOne comment or replyText, date, likes, number of replies, author name and handle, parent comment, depth, pinned flag, link
SearchOne postPost fields plus the publication's name and link and the keyword that found it
Publications and rankingsOne publicationRank, category, name, link, custom domain, description, author, author bio, X/Twitter handle, creation date, paid plan benefits, subscriber count, followers, paid subscriber range, leaderboard rank

How to use it

  1. Click Try for free.
  2. Choose a mode in What to scrape.
  3. Add publications, post links, keywords or categories.
  4. Click Start, then download the results as JSON, CSV or Excel.

Input examples

Posts of two newsletters published since September, with full text:

{
"mode": "posts",
"publications": ["https://www.lennysnewsletter.com", "noahpinion"],
"dateFrom": "2026-09-01",
"includeContent": true
}

The 20 most popular posts of a newsletter:

{
"mode": "posts",
"publications": ["@lenny"],
"sortBy": "top",
"maxItems": 20
}

Comments and replies of a post:

{
"mode": "comments",
"postUrls": ["https://charlesduhigg.substack.com/p/the-robots-are-coming-and-i-feel"]
}

Posts about AI agents from this year, across all of Substack:

{
"mode": "search",
"searchQueries": ["ai agents"],
"dateFrom": "2026-01-01",
"maxItems": 200
}

The top 100 paid newsletters in Technology and Finance, with subscriber counts:

{
"mode": "publications",
"categories": ["4", "153"],
"ranking": "paid",
"maxItemsPerQuery": 100
}

Output examples

A post:

{
"type": "post",
"postId": 174637920,
"title": "Artificial intelligence is taking over the world!",
"subtitle": "What's the best way to learn about artificial intelligence? Which apps should I be using?",
"url": "https://charlesduhigg.substack.com/p/the-robots-are-coming-and-i-feel",
"publishedAt": "2025-09-27T10:57:16Z",
"postType": "newsletter",
"audience": "everyone",
"isPaid": false,
"wordCount": 782,
"reactionCount": 91,
"commentCount": 14,
"restackCount": 4,
"authors": ["Charles Duhigg"],
"authorHandles": ["charlesduhigg"],
"tags": [],
"previewText": "I live near Silicon Valley, where conventional wisdom holds there are three ways to become a billionaire:",
"publicationId": 1810583,
"publicationName": "The Science of Better",
"publicationUrl": "https://charlesduhigg.substack.com",
"isPaywalled": false,
"text": "I live near Silicon Valley, where conventional wisdom holds there are three ways to become a billionaire:\n- Be born to a billionaire and then wait.\n...",
"html": "<p>I live near Silicon Valley, ...</p>"
}

A publication from a leaderboard:

{
"type": "publication",
"rank": 1,
"category": "Technology",
"ranking": "paid",
"publicationId": 6349492,
"name": "SemiAnalysis",
"url": "https://newsletter.semianalysis.com",
"subdomain": "semianalysis",
"customDomain": "newsletter.semianalysis.com",
"description": "Bridging the gap between the world's most important industry, semiconductors, and business.",
"authorName": "Dylan Patel",
"authorHandle": "semianalysis",
"twitter": "dylan522p",
"hasPaidPlan": true,
"subscriberCount": 325000,
"subscriberCountText": "325K+ subscribers",
"paidSubscribersRange": "Tens of thousands",
"followerCount": 378966,
"leaderboardRank": 1
}

A comment:

{
"type": "comment",
"commentId": 160837451,
"commentUrl": "https://charlesduhigg.substack.com/p/the-robots-are-coming-and-i-feel/comment/160837451",
"postTitle": "Artificial intelligence is taking over the world!",
"isReply": true,
"parentCommentId": 160496861,
"depth": 1,
"text": "nuts! it used to be free!",
"createdAt": "2025-09-28T17:33:23Z",
"reactionCount": 0,
"authorName": "Charles Duhigg",
"authorHandle": "charlesduhigg"
}

How much does it cost?

You pay per saved result: $1.00 per 1,000 results. A post, a comment, a reply and a publication each count as one result. There is no start fee and no monthly rental.

RunResultsCost
The last 100 posts of a newsletter100$0.10
1,000 search results with full text1,000$1.00
Top 500 paid newsletters of a category500$0.50

Set a maximum charge per run in the run options and the Actor stops when it is reached.

Limits you should know

  • Paid posts give only the free part. Without a subscription, Substack shows the beginning of a paid post. The Actor saves that part and sets isPaywalled to true. It does not log in and cannot read paid content.
  • The Actor is polite, so big runs take time. It waits a little between requests to stay within Substack's limits: about 30 posts per second from archives, and about 1 to 2 per second with full text, comments or subscriber counts turned on.
  • Search returns what Substack's own search returns, ordered by relevance, usually a few hundred posts per keyword. Notes and profiles in the search results are skipped.
  • Leaderboards stop at about 500 publications per category, the same as on substack.com.
  • Subscriber counts are rounded by Substack ("325K+"), and some authors hide them. Paid subscriber numbers are only given as ranges.
  • "Only posts about" uses the publication's archive search and always sorts newest first.
  • This is unofficial. The Actor reads the same public data that Substack's website loads. It is not made by, endorsed by or connected to Substack.

FAQ

Is it legal? The Actor collects only data that Substack shows publicly to every visitor, and it does not read paid content. Results can contain personal data such as names and comments. Make sure you have a legitimate reason to process it, as required by the GDPR and similar laws, and respect the authors' copyright if you republish their text.

Something is broken or missing? Open a ticket in the Issues tab. Issues are usually answered within a day.