If you need to pull Substack data at scale and there's no clean official API, this guide shows how to export it to JSON, CSV or Excel in a couple of minutes — with no scraping code to maintain.
We'll use the Substack Scraper - Newsletters, Posts & Authors, a hosted scraper on the Apify platform. You only need a free Apify token — no Substack login, no proxies, no reverse-engineering.
What data you get
Each run returns structured records with fields like:
recordTypepublicationNameauthorNamecategorypostTitleaudiencepostDatereactionscommentCountrestackscanonicalUrlpublicationIdsubdomaincustomDomain
Results are paginated automatically — you can pull thousands of rows per run and export them as JSON, CSV, Excel, JSONL or XML.
Option 1 — No code (Apify Console)
- Open the actor: https://apify.com/logiover/substack-newsletter-scraper
- Click Try for free.
- Leave the input empty for a broad sample, or set the fields below.
- Run it, then Export the dataset as CSV/JSON/Excel.
Option 2 — Node.js
npm install substack-newsletter-scraper
const scrape = require("substack-newsletter-scraper");
(async () => {
const items = await scrape({}, { token: process.env.APIFY_TOKEN });
console.log(items.length, "results");
console.log(items[0]);
})();
Option 3 — Python
pip install substack-newsletter-scraper
from substack_newsletter_scraper import scrape
items = scrape({}, token="YOUR_APIFY_TOKEN")
print(len(items), "results")
print(items[0])
Grab a free token at https://console.apify.com/account/integrations.
Input options
| Field | Type | What it does |
|---|---|---|
categorySlugs |
array | Category Slugs to Discover |
categoryRanking |
string | Category Ranking Mode |
newsletterUrls |
array | Direct Newsletter URLs |
maxPublicationsPerCategory |
integer | Max Publications Per Category |
maxPostsPerPublication |
integer | Max Posts Per Publication |
audienceFilter |
string | Audience Filter |
minPostDate |
string | Minimum Post Date (ISO) |
maxPostDate |
string | Maximum Post Date (ISO) |
keywordFilter |
array | Keyword Filter (post title / subtitle) |
includePublicationMetadata |
boolean | Include Publication Metadata in Each Record |
alsoPushPublicationRecord |
boolean | Also Push Publication-Level Records |
language |
string | Publication Language Filter |
Common use cases
- Build a fresh Substack dataset for analysis or dashboards
- Feed Substack records into your own app, CRM or spreadsheet
- Monitor changes on a schedule and get alerts via webhooks
- Enrich leads or research with up-to-date Substack data
Automation & export
Because it runs on Apify, you can schedule it, trigger it via webhook, and pipe results into Google Sheets, S3, Zapier, Make or n8n. Every run's dataset is downloadable as CSV, JSON, JSONL, Excel or XML.
FAQ
Do I need an API key? Only a free Apify token. No Substack account needed.
How many results can I get? Thousands per run; raise the limit to pull more.
Is it an official Substack API? No — it's an unofficial, maintained alternative when there's no official or affordable API.
Can I export to CSV/Excel? Yes — JSON, CSV, JSONL, Excel and XML.
▶️ Run the Substack Scraper - Newsletters, Posts & Authors on Apify: https://apify.com/logiover/substack-newsletter-scraper
📚 Docs & code examples: https://github.com/logiover/substack-newsletter-scraper
🧰 More scrapers: https://apify.com/logiover
Top comments (0)