Substack Newsletter Scraper avatar

Substack Newsletter Scraper

Pricing

from $3.00 / 1,000 results

Go to Apify Store
Substack Newsletter Scraper

Substack Newsletter Scraper

Scrape posts from any Substack newsletter publication. Returns post titles, URLs, publish dates, authors, and content previews via RSS feed.

Pricing

from $3.00 / 1,000 results

Rating

0.0

(0)

Developer

cloud9

cloud9

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

16 hours ago

Last modified

Categories

Share

Scrape posts from any Substack newsletter publication. Returns post titles, URLs, publish dates, authors, and content previews via RSS feed.

Use cases

  • Research newsletters in a niche and whether they are paid
  • Find writers for cross-promotion or sponsorship
  • Track a publication's posting frequency
  • Build a newsletter discovery digest
  • Benchmark your own publishing cadence

Input

ParameterTypeRequiredDefaultDescription
publicationUrlstringNo"https://noahpinion.substack.com"Substack publication URL (e.g., https://example.substack.com or just 'example')
maxResultsintegerNo20Maximum number of posts to return
includeContentbooleanNofalseFetch full post content (slower, makes additional requests)

Example input

{
"publicationUrl": "https://noahpinion.substack.com",
"maxResults": 20,
"includeContent": false
}

Output

Each dataset item looks like this — real output from an actual run of this Actor:

{
"title": "America is still beating China in the AI race",
"author": "Noah Smith",
"publicationName": "noahpinion",
"url": "https://www.noahpinion.blog/p/america-is-still-beating-china-in",
"publishedAt": "2026-09-05T07:36:17.000Z",
"description": "The U.S. is staying ahead, though the costs of that lead are still unknown.",
"isPaid": false
}
FieldType
titlestring
authorstring
publicationNamestring
urlstring
publishedAtstring
descriptionstring
isPaidboolean

Results are exportable from Apify Console or the API as JSON, CSV, Excel, or XML.

How to run it

In Apify Console — open the Actor, fill in the input form, click Start, then download the results from the Dataset tab.

With the JavaScript client

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('cloud9_ai/substack-scraper').call({
"publicationUrl": "https://noahpinion.substack.com",
"maxResults": 20,
"includeContent": false
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

With the Python client

from apify_client import ApifyClient
client = ApifyClient('YOUR_APIFY_TOKEN')
run = client.actor('cloud9_ai/substack-scraper').call(run_input={
"publicationUrl": "https://noahpinion.substack.com",
"maxResults": 20,
"includeContent": False
})
for item in client.dataset(run['defaultDatasetId']).iterate_items():
print(item)

With the APIPOST https://api.apify.com/v2/acts/cloud9_ai~substack-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN with the input JSON as the body.

Notes and limits

  • No API key, account, or login is needed — just the input above.
  • maxResults caps how much a single run collects, which is also what caps the run's cost.
  • Requests are paced and failed requests are retried automatically, so runs stay inside the source's rate limits.
  • Only publicly available data is collected. How you use the output is your responsibility, including the source's terms of use and any applicable data-protection law.

Support

Found a bug, or need a field that isn't in the output? Open an issue on the Issues tab of this Actor in Apify Console. Issues there are read and answered.

License

Apache-2.0