Substack Newsletter Intelligence avatar

Substack Newsletter Intelligence

Pricing

from $20.00 / 1,000 publication analyzeds

Go to Apify Store
Substack Newsletter Intelligence

Substack Newsletter Intelligence

Substack leaderboards, category rankings, subscriber-scale signals, paid-tier pricing, posting cadence and recommendation networks. Intelligence, not archive scraping. Public metadata only - no post bodies, no personal data.

Pricing

from $20.00 / 1,000 publication analyzeds

Rating

0.0

(0)

Developer

hyeonsu kim

hyeonsu kim

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

A Substack scraper built for market intelligence, not archives. It extracts every newsletter leaderboard, category-level Substack rankings, published subscriber count signals, paid-tier pricing, posting cadence and recommendation networks — the newsletter intelligence layer that archive scrapers skip. Use it to answer questions like: who are the top paid newsletters in Finance? How many subscribers does a publication actually display? What does it charge, how often does it post, and who does it recommend?

Most Substack scrapers pull post archives. This actor collects the data around the publications instead:

  • Leaderboards & rankings — top publications per category, ranked by paid or total audience (32 leaderboard-enabled categories, sweepable in one run).
  • Audience scale — published subscriber counts ("Over 387,000 subscribers"), subscriber badges, and bestseller tiers (thousands / tens of thousands / hundreds of thousands of paid subscribers).
  • Monetization — is payment enabled, all plans ($/month, $/year, founding tiers), cheapest monthly price, free vs. paid benefits.
  • Activity — posts in the last 30 days, posts/week, average likes, comments and restacks, paid-post share, median post length.
  • Recommendation network — each publication's public outbound recommendations, the growth engine of Substack.

What it does NOT do

  • It does not collect post bodies or full text — only titles, links, dates and public counts. Copyright stays with the authors.
  • It does not touch anything behind a login and collects no personal data: no emails, no subscriber identities.
  • It is not an archive scraper. If you need full post archives, other actors already do that.

Modes

1. leaderboard — ranked top of a category

{
"mode": "leaderboard",
"category": "technology",
"leaderboardType": "paid",
"maxResults": 25
}

Use "category": "all" to sweep every leaderboard-enabled category in one run. leaderboardType switches between the paid-subscriber and all-subscriber rankings.

2. category — long-tail discovery

Same as leaderboard, but paginates deep past the top 25:

{
"mode": "category",
"category": "finance",
"maxResults": 200
}

3. publication — deep analysis of specific newsletters

{
"mode": "publication",
"publicationUrls": [
"https://www.astralcodexten.com",
"https://blog.bytebytego.com",
"https://stratechery.substack.com"
]
}

Works with *.substack.com subdomains and custom domains. Each publication gets archive-derived activity stats and its outbound recommendation network. Set "enrichPublications": true in leaderboard/category modes to get the same deep stats for every ranked publication.

Sample output

One dataset item per publication. This is a real (shortened) record from a leaderboard run on the Finance category with enrichment on:

{
"mode": "leaderboard",
"categoryName": "Finance",
"leaderboardType": "paid",
"rank": 3,
"name": "Doomberg",
"url": "https://newsletter.doomberg.com",
"subdomain": "doomberg",
"customDomain": "newsletter.doomberg.com",
"description": "A lateral-thinking approach to energy, finance, and geopolitics...",
"language": "en",
"author": { "name": "Doomberg", "handle": "doomberg", "twitter": "DoombergT" },
"audience": {
"freeSubscriberCount": 387000,
"subscriberBadge": "387K+",
"subscriberCountDisplay": "Over 387,000 subscribers",
"rankingDetail": "Tens of thousands of paid subscribers",
"paidSubscribersOrderOfMagnitude": 10000,
"totalSubscribersOrderOfMagnitude": 100000,
"bestsellerTier": 10000
},
"monetization": {
"paymentsEnabled": true,
"plans": [
{ "amountCents": 4000, "currency": "usd", "interval": "month" },
{ "amountCents": 40000, "currency": "usd", "interval": "year" },
{ "amountCents": 120000, "currency": "usd", "interval": "year" }
],
"cheapestMonthlyUsd": 40,
"paidBenefits": ["Access to all full-length published articles", "..."]
},
"activity": {
"postsLast30Days": 8,
"postsPerWeek": 1.87,
"paidPostShareInWindow": 0.88,
"avgReactionsRecent": 695.4,
"avgCommentsRecent": 188.9,
"medianWordcountRecent": 1273,
"lastPostDate": "2026-09-01T09:01:37.798Z",
"latestPosts": [
{
"title": "With American Characteristics",
"url": "https://newsletter.doomberg.com/p/with-american-characteristics",
"date": "2026-09-01T09:01:37.798Z",
"audience": "only_paid",
"reactions": 551,
"comments": 154,
"wordcount": 1375
}
]
},
"recommendations": { "outboundCount": 12, "outbound": [ { "name": "...", "url": "https://..." } ] },
"timeline": { "createdAt": "2021-04-21T18:58:46.449Z", "firstPostDate": "2021-05-03T13:31:20.521Z" },
"flags": { "podcastEnabled": false, "communityEnabled": true, "hasRecommendations": true }
}

Field guide

FieldMeaning
rank, leaderboardTypePosition on the category leaderboard, and which ranking it came from (paid or all)
audience.freeSubscriberCountSubscriber count as published by the publication itself (when displayed)
audience.subscriberBadge / subscriberCountDisplayThe badge/text shown on the publication's page ("387K+", "Over 387,000 subscribers")
audience.rankingDetailSubstack's own scale wording on the leaderboard ("Tens of thousands of paid subscribers")
audience.paidSubscribersOrderOfMagnitudeThat wording converted to a number you can sort on (10000 = tens of thousands)
audience.bestsellerTierBestseller badge tier: 1000 / 10000 / 100000 paid subscribers
monetization.plansEvery paid plan with amount (cents), currency and interval, incl. founding tiers
monetization.cheapestMonthlyUsdCheapest way in, normalized to USD/month for comparisons
activity.*Computed from the recent public archive: cadence, engagement averages, paid share, median length
recommendations.outboundPublications this newsletter publicly recommends (name, URL, blurb)
timeline.createdAtWhen the publication was created — spot fast risers vs. veterans
flagsPodcast/community enabled, invite-only, has recommendations, etc.

activity and recommendations are present in publication mode and whenever enrichPublications is on.

Use cases

  • Newsletter market research — map a category end to end: who ranks where, at what audience scale, at what price point, posting how often. Export to a spreadsheet or feed a dashboard directly from the dataset.
  • Competitive analysis — track competing newsletters' cadence, engagement averages, paid-post share and pricing changes over time by re-running publication mode on a fixed URL list.
  • Sponsorship & advertising prospecting — filter by category, subscriber order of magnitude and posting cadence to build a target list of newsletters worth sponsoring, with author handles for outreach via public channels.
  • Creator-economy analytics — pricing distributions per category, bestseller-tier composition, engagement-per-subscriber-scale comparisons across hundreds of publications.
  • Recommendation-graph mapping — crawl outbound recommendations from a seed list to discover adjacent newsletters and quantify who feeds audience to whom.

Pricing (pay-per-event)

You pay only for what a run actually delivers:

EventCharged when
actor-startOnce per run (small flat fee)
leaderboard-pagePer ranked leaderboard/category page fetched (25 publications each)
publication-analyzedPer publication deeply analyzed (activity stats + recommendation network)

If a page or publication can't be fetched, that event is simply not charged — no data, no charge. A maximum-cost limit set on the run is respected: the actor stops gracefully and keeps the partial results already collected.

FAQ

Is this legal? The actor reads only public, login-free pages and endpoints — the same data any visitor sees. Substack's robots.txt permits every path it touches (login, publishing and embed paths are excluded and never accessed). No post bodies are stored, and no personal data is collected: no emails, no subscriber identities, no tracking identifiers.

Am I charged when something fails? No. Events are charged only when the corresponding data is delivered to the dataset. A failed fetch produces no event. The only fixed cost is the small actor-start fee per run.

How fast / how polite is it? Requests run at low concurrency with a configurable delay (default 500 ms) and exponential backoff. This is deliberate — a polite scraper is a reliable scraper.

Where do I get help? Open an issue on the actor's Issues tab in Apify Console, and it will be looked at promptly. Feature requests (new fields, new modes) are welcome.