Substack Newsletter Scraper avatar

Substack Newsletter Scraper

Pricing

$1.00 / 1,000 saved post metadata

Go to Apify Store
Substack Newsletter Scraper

Substack Newsletter Scraper

Substack newsletter scraper for post metadata from known public RSS or Atom feeds. Get one stable row per unique item. Pay $0.001 per saved row, with no separate start fee. The Actor reads the feed only.

Pricing

$1.00 / 1,000 saved post metadata

Rating

0.0

(0)

Developer

Cliqto Media

Cliqto Media

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

8 days ago

Last modified

Categories

Share

Substack newsletter scraper for recent post metadata from known public RSS or Atom feeds. Give the Actor one or more full /feed URLs and get one clean Dataset row per unique item.

Quick start

{
"feedUrls": ["https://on.substack.com/feed"],
"maxPostsPerFeed": 20,
"maxTotalPosts": 100
}

Use 1–20 full HTTPS URLs in the form https://<publication>.substack.com/feed.

  • maxPostsPerFeed: 1–20, default 20.
  • maxTotalPosts: 1–200 unique rows, default 100.
  • publishedFrom: optional inclusive ISO 8601 date or UTC date-time.
  • publishedTo: optional exclusive ISO 8601 date or UTC date-time.

The first version accepts Substack subdomain feeds only. Homepages, archive URLs, direct post URLs, bare publication names and custom domains are not accepted.

What you get

Each Dataset row contains:

FieldMeaning
postKeyStable versioned key for matching the same feed item between runs
feedUrl, publicationKey, publicationName, publicationUrlSource and publication context
sourceGuid, canonicalUrlIDs and links exposed by the feed
title, subtitle, publishedAt, updatedAt, author, categoriesPost metadata from RSS/Atom
audience, contentAvailabilityPublic audience and paywall signal when present
contentModeAlways metadata_only
enclosureURL, type and length metadata only; the media is not downloaded
retrievedAt, sourceStatusRetrieval time and saved/paywalled status

The run also writes a RUN_SUMMARY record in the default key-value store. It contains row counts, duplicate and limit counters, request and byte totals, and a clear outcome for each feed.

Pricing

The Actor charges $0.001 for each unique metadata row saved. There is no separate run start fee. Empty, blocked, invalid, rejected and repeated items do not create a saved-row charge.

Set a run maximum cost in Apify when you need a spending limit. The Actor stops before saving another row when that limit cannot cover the next charge.

Honest behavior

The Actor reads the public feed response only. It makes one limited request per feed and does not paginate an archive. A feed exposes a finite recent window, so the result is not a promise of a complete archive.

The default run is intended to finish in under five minutes for a normal public feed. A blocked or rate-limited source can take longer because retries are limited.

The Actor does not open article pages, fetch article text or HTML, download images or audio, read comments, collect contact details, log in or bypass a paywall. A paid post can still return public metadata when its feed exposes it.

The summary distinguishes an empty feed (NO_POSTS), metadata-only paywall signal (PAYWALLED_METADATA_ONLY), missing source, blocked access, rate limit, malformed XML, parser drift and other technical errors. A limit is reported as TRUNCATED_BY_LIMIT.

Privacy and source notice

Only metadata already present in the public RSS/Atom response is kept. Do not send private feed URLs, cookies or tokens as input. Article text, images, audio and author contact information belong to their publishers and authors.

Substack is a trademark of its owner. This project is independent and is not affiliated with or endorsed by Substack. Check Apify's current platform terms.

The versioned contracts, support notes and sanitized sample are in docs/, including docs/publication/SAMPLE-OUTPUT.json.