Substack Newsletter Finder: Best Newsletters on Any Topic avatar

Substack Newsletter Finder: Best Newsletters on Any Topic

Pricing

Pay per event

Go to Apify Store
Substack Newsletter Finder: Best Newsletters on Any Topic

Substack Newsletter Finder: Best Newsletters on Any Topic

Type a topic, get the most credible Substack newsletters on it, ranked 0-100 by subscribers, engagement, comment depth, consistency and topic fit, with why each ranks, its best on-topic post, and whether it takes sponsors. Also export posts, rank and monitor known newsletters.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Forge Labs

Forge Labs

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

22 days ago

Last modified

Security

Limited permissions

Share

Substack Newsletter Finder: Find the Best Newsletters on Any Topic

Type a topic. Get the most credible Substack newsletters on it, ranked, with the reason each one ranks and the best post to read first. You don't need to know any newsletter names.

Just press Start. The default topic, "AI startup idea validation", returns a ranked top 10 in under a minute.

Real example: "AI startup idea validation" (cloud run Oct 15, 2026, 51 s)

#NewsletterScore /100Why it ranksStart with
1Lenny's Newsletter79.91.2M subscribers, #1 Business leaderboard, median 474 engagements/postHow to validate your B2B startup idea
2The VC Corner76.3146K subscribers, posts 5x/week, 3 on-topic posts, takes sponsors (page)50 AI Agent Startup Ideas
3Andrew Chen66.2257K subscribers, Bestseller, 20 comments/postThe Anti-Pitch: When haters hate your startup idea
4Innovation & Strategy Lab63.2small, but its post is exactly on-topicThe Startup idea validation framework (free worksheet)
5Product Growth (Aakash Gupta)63.2241K subscribers, BestsellerHow to Build an AI Startup in 2026

Scores change as newsletters publish. Re-run for fresh results.

How the credibility score works (transparent, 0 to 100)

SignalWeightWhat it measures
Topic fit30How strongly and how often Substack search matches this newsletter's posts to your topic
Audience20Public subscriber count or followers (log scale), plus Substack Bestseller status
Engagement per post15Median likes + comments + restacks over the last 30 posts
Comment depth15Average comments per post. Real discussion is hard to fake.
Consistency10Posts per week
Recency10Days since the last post

Every row includes scoreBreakdown, whyItRanks and its weakest signal, so you can disagree with the ranking and re-sort.

Each row also has takesSponsors (yes / likely / not detected), advertisePage, sponsorMentionsLast30Posts, sponsorEvidence and publicContactEmail. "Yes" means we found an advertise or sponsor page, or sponsor mentions in at least 2 of the last 30 posts. Turn on Only newsletters that take sponsors to get a ranked, sponsor-ready shortlist in which credibility, engagement and comment depth come first, not just audience size. "Not detected" means we found no public signal. Some newsletters sell sponsorships privately.

Ideas for topics

"B2B SaaS pricing", "climate tech", "AI agents", "personal finance for doctors", "indie hacking", "product-led growth". Add extraSearchQueries such as "customer discovery" or "zero to one" to widen the search. The tool automatically searches your exact phrase and gives rare words (e.g. "investing" in "climate tech investing") more weight than common ones, so a newsletter that only matches the broad word ranks lower.

Already know the newsletters? Other modes

Which Substack newsletters actually get read? Give this Actor a list of newsletters. It ranks them by real engagement, posting frequency, followers and public subscriber count. It can also watch them and return only new posts, or export every post with likes, comments and restacks as clean CSV.

It uses public data only, with no login, cookies, browser or proxy. It handles custom domains, finishes in seconds, and charges per result with no start fee.

What you can do

ModeYou getTypical use
rankNewslettersOne profile row per newsletter, sorted, with a rank fieldSponsor shortlists, competitor benchmarks, lead lists
newSinceLastRunOnly posts published since the previous runDaily monitoring, Slack or webhook alerts, AI-agent feeds
postsOne row per post with engagement and optional full textContent research, datasets, RAG corpora

Who it's for

  • Sponsors and ad buyers: compare newsletters on engagement per post, not just audience size, before you buy a placement.
  • Newsletter operators: benchmark competitors' cadence, paywall share and top-performing posts.
  • Marketers, PR and investors: monitor a watchlist of newsletters and get only what's new.
  • Researchers and AI builders: get flat, typed rows ready for CSV, Sheets, pandas or an LLM.

Real example output

A rankNewsletters run on Oct 15, 2026, sampling 30 posts per newsletter:

#NewsletterPublic subscribersFollowersPosts/weekAvg engagementTop post engagement
1Astral Codex Tenhidden296,7374.32655.73,004
2Noahpinion460,000686,2033.5553.1922
3Lenny's Newsletter1,200,0001,384,9770.83527.21,246
4Slow Boring206,000362,23814.5396.81,025
5The Generalist169,000213,1870.999.9231

Lenny's Newsletter has the most subscribers, but Astral Codex Ten gets more engagement per post. This is the kind of insight a plain scraper won't give you.

Input:

{
"mode": "rankNewsletters",
"publications": ["lenny", "astralcodexten", "noahpinion", "thegeneralist", "www.slowboring.com"],
"maxPostsPerPublication": 30,
"rankBy": "avgEngagement"
}

A post row from a posts run, shortened (real data):

{
"publication": "noahpinion.substack.com",
"title": "AI vs. the railroads",
"subtitle": "Are we in 1872?",
"url": "https://www.noahpinion.blog/p/ai-vs-the-railroads",
"postDate": "2026-10-15T08:47:39.523Z",
"type": "newsletter",
"audience": "only_paid",
"isPaywalled": true,
"authors": "Noah Smith",
"wordcount": 3060,
"reactionCount": 232,
"commentCount": 69,
"restacks": 17,
"engagement": 318
}

How it compares

This table is based on each Actor's public Store listing as of Oct 15, 2026. Check the current listings, since they change.

This Actorautomation-lab/substack-scrapereasyapi/substack-posts-scraperfatihtahta/substack-scraper
Rank a list of newsletters✅ built in❌❌❌
Only new posts since last run✅ built in (stateful)date filters only❌❌
Computed stats (posts/week, avg and median engagement, top post)✅❌❌❌
Engagement (likes, comments, restacks)✅✅✅✅
Public subscriber count, followers, leaderboard rank✅subscriber count❌subscriber count
Flat CSV-ready rows (no nested JSON)✅nested commentsnot statednot stated
Comment threads❌✅❌not stated
Keyword discovery❌✅✅✅ (search)
Start feenone$0.005 per run$0.09 per runnone
Price per 1,000 posts (free plan)$1.50$1.15$4.99$2.50

If you need comment threads or keyword search, the alternatives above are a good fit. If you need to decide which newsletters matter, or keep watch on them, use this Actor.

Pricing (pay per result, no start fee)

Discover by topic: $0.02 per ranked newsletter (newsletter-ranked event), so a top 10 costs $0.20. Each row is a scored and explained recommendation with its best posts and sponsor signal, not a raw record.

EventPrice
Post (metadata and engagement)$0.0015 ($1.50 per 1,000)
Post with full text$0.003 ($3.00 per 1,000)
Newsletter profile (rank mode or includeProfiles)$0.005

Worked examples:

  • Rank 20 newsletters (30 posts sampled each): 20 profiles × $0.005 = $0.10. Posts sampled for stats aren't charged.
  • Export 1,000 posts: $1.50, or $3.00 with full text.
  • Monitor 10 newsletters daily (about 1 new post each per day): about 300 posts a month = about $0.45/month. Runs with nothing new cost $0.

Input

FieldDescription
modeposts (default), rankNewsletters or newSinceLastRun
publicationsSubdomains (astralcodexten), *.substack.com URLs, or custom domains (www.slowboring.com)
maxPostsPerPublicationPosts per newsletter. Default 50, or 30 in rank mode. Max 5,000
publishedAfterOptional ISO date, such as 2026-01-01
includeBodyTextFull plain text of free posts. Paywalled posts are never bypassed
includePaidPostsInclude metadata for paywalled posts (default on)
includeProfilesIn posts and monitor modes, also save profiles to the PROFILES key-value record
rankByavgEngagement, medianEngagement, topPostEngagement, postsPerWeek, followerCount, subscriberCountPublic
monitorStateNameName of the store that keeps monitor checkpoints. Use one name per watchlist

Output fields

Post rows: publication, postId, title, subtitle, url, postDate, type, audience, isPaywalled, authors, tags, section, wordcount, reactionCount, commentCount, restacks, engagement, podcastDurationSec, coverImage, previewText, bodyText, isNew, scrapedAt

Profile rows: rank, rankedBy, name, publication, url, tagline, customDomain, language, createdAt, paidSubscriptionsEnabled, authorName, authorHandle, authorBio, subscriberCountPublic, subscriberCountLabel, paidSubscribersRange, followerCount, bestsellerTier, leaderboardCategory, leaderboardRank, twitter, socialLinks, publicContactEmail, postsAnalyzed, firstPostAnalyzed, lastPostDate, daysSinceLastPost, postsPerWeek, paywalledShare, avgLikes, avgComments, avgEngagement, medianEngagement, topPostTitle, topPostUrl, topPostEngagement, error

Lists are joined with ; so every cell is plain text. The dataset has three ready-made views: Overview, Posts and Newsletter profiles.

Use with AI agents (MCP and API)

MCP (Claude, Cursor, VS Code and other MCP clients):

{ "mcpServers": { "apify": { "url": "https://mcp.apify.com/?tools=forgelabs/substack-newsletter-intelligence" } } }

Example prompts:

  • "Rank these 10 AI newsletters by average engagement and tell me which 3 to sponsor."
  • "Check my Substack watchlist and summarize anything published since yesterday."

API (one call, results returned directly):

curl -X POST "https://api.apify.com/v2/acts/forgelabs~substack-newsletter-intelligence/run-sync-get-dataset-items?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"mode":"rankNewsletters","publications":["lenny","noahpinion"]}'

Add &format=csv to get CSV.

Monitoring recipe: create a Task with "mode": "newSinceLastRun", schedule it daily, and attach a Slack, email or webhook integration that fires when a run succeeds.

FAQ

Is this allowed? It reads only what Substack serves publicly without login: archive listings, public posts and public profiles. It never touches paywalled content or private subscriber lists. You're responsible for how you use the data, including copyright when reusing text.

Why is subscriberCountPublic empty for some newsletters? Some authors hide the count. In that case, paidSubscribersRange (Substack's own public range) and followerCount are still filled in.

What does "engagement" mean? Likes, comments and restacks added together for each post.

What happens with a newsletter that left Substack? You get a row with an error field, and the rest of the run continues.

How does monitoring remember what it has seen? The last post date for each newsletter is saved in a named key-value store on your account (monitorStateName). The first run returns recent posts and sets the checkpoint.

Custom domains? Yes, for example www.slowboring.com or www.lennysnewsletter.com.

Support

Found a bug or need a field? Open an issue on the Issues tab.