Substack Newsletter Scraper
Pricing
$1.00 / 1,000 saved post metadata
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
Maintained by CommunityActor 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:
| Field | Meaning |
|---|---|
postKey | Stable versioned key for matching the same feed item between runs |
feedUrl, publicationKey, publicationName, publicationUrl | Source and publication context |
sourceGuid, canonicalUrl | IDs and links exposed by the feed |
title, subtitle, publishedAt, updatedAt, author, categories | Post metadata from RSS/Atom |
audience, contentAvailability | Public audience and paywall signal when present |
contentMode | Always metadata_only |
enclosure | URL, type and length metadata only; the media is not downloaded |
retrievedAt, sourceStatus | Retrieval 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.