Substack RSS Feed Extractor & Newsletter Monitor
Pricing
from $1.40 / 1,000 substack posts
Substack RSS Feed Extractor & Newsletter Monitor
Extract structured newsletter posts from official public Substack RSS feeds without browser scraping. Users are responsible for lawful access and downstream use.
Pricing
from $1.40 / 1,000 substack posts
Rating
0.0
(0)
Developer
Tugelbay Konabayev
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Substack RSS feed extractor for public newsletters: submit authorized publication feeds and receive post URL, title, author, categories, summary, content, media metadata, status, and publishedAt as structured JSON for monitoring and research.
This Actor intentionally reads the RSS interface that Substack documents for public publications. It does not crawl publication pages, discover feeds, use a private API, access paywalled content, collect comments or Notes, or bypass access controls. You provide the feeds you are authorized to process.
Why use it and features
- Accepts up to 50 official
https://publication.substack.com/feedURLs per run. - Parses RSS publication metadata and public post fields.
- Returns title, canonical URL, GUID, publication date, author, categories, summary, content text, image metadata, and podcast enclosure metadata when present.
- Deduplicates posts by canonical URL or GUID.
- Filters posts with an optional
publishedAfterISO 8601 date-time. - Limits results per feed and caps large content fields.
- Processes feeds sequentially with configurable polite pacing.
- Retries rate limits and temporary server errors with bounded backoff.
- Stops after 3 redirect hops, 20 total retries, or 540 seconds per run.
- Produces visible
feedErrordataset rows for HTTP, network, or XML failures. - Uses no browser and no proxy by default, keeping runs fast and inexpensive.
Input
| Field | Type | Default | Description |
|---|---|---|---|
feedUrls | array | required | Official public Substack RSS URLs in request-list format. |
maxItemsPerFeed | integer | 20 | Newest matching items returned per feed, from 1 to 100. |
publishedAfter | string | empty | Optional ISO 8601 cutoff date-time. |
includeContentHtml | boolean | false | Include the HTML supplied in the RSS item. |
maxContentChars | integer | 5000 | Character cap for content text and optional HTML. |
requestDelaySecs | number | 1 | Delay between sequential feed requests. |
Example input:
{"feedUrls": [{ "url": "https://thedatacollector.substack.com/feed" }],"maxItemsPerFeed": 10,"publishedAfter": "2026-07-01T00:00:00Z","includeContentHtml": false}
Output data fields
Each successful dataset row represents one public RSS post:
{"recordType": "post","feedUrl": "https://publication.substack.com/feed","publicationTitle": "Publication name","publicationUrl": "https://publication.substack.com","postTitle": "Post title","postUrl": "https://publication.substack.com/p/post-slug","guid": "https://publication.substack.com/p/post-slug","publishedAt": "2026-07-13T10:00:00Z","author": "Author name","categories": ["AI", "Data"],"summary": "Plain-text summary","contentText": "Plain-text RSS content","status": "ok"}
If a feed is unavailable or malformed, the Actor stores a diagnostic-style row with recordType: "feedError", the feed URL, and a concise error. Successful posts use the substack-post pay-per-event name; feedError records and Actor starts do not emit a billable event. The OUTPUT key-value-store record summarizes feeds, posts, errors, downloaded bytes, retries, 429 responses, billable event count, and runtime.
Pricing
Billing deduplication is scoped to a single feed response in a single run. Re-running the same feed can emit and charge for the same posts again. The FREE-tier list price is $2 per 1,000 successful posts ($0.002 per substack-post event). The hard maximum is 5,000 billable post events per run (50 feeds × 100 posts), so the maximum list-price result charge for one run is $10. Store tier discounts can only reduce that amount. Failed feeds and Actor starts do not emit a billable event.
How to run and use the feed extractor
- Start with one authorized public
publication.substack.com/feedURL and a small item limit. - Inspect canonical post URLs,
publishedAt, content fields, and any explicitfeedErrorrow. - Schedule only the validated feed and persist the last successful cutoff in your own workflow.
Use the Actor from Apify Console, API, schedules, webhooks, Make, Zapier, or any integration that consumes the default dataset. For monitoring, schedule periodic runs and set publishedAfter to the previous successful checkpoint in your own workflow. RSS feeds normally expose only a recent window, so this Actor is not a historical archive.
Substack RSS comparison
| Route | Best for | Trade-off |
|---|---|---|
| This Actor | Bounded multi-feed JSON in Apify datasets, schedules, webhooks, and integrations | Only the public RSS window and fields are available |
| Direct RSS client | One feed inside your own application | You maintain retries, XML normalization, storage, and run summaries |
| Page scraper/private API | Fields absent from RSS | Outside this Actor's safety boundary; paywalls and access controls must not be bypassed |
Use the direct feed when your application already owns the ingestion stack. Use this Actor when Apify orchestration and normalized error rows remove maintenance.
FAQ
Does this read paid or subscriber-only posts?
No. It returns only content present in the public RSS response and does not access subscriber sessions or paywalls.
Can it discover a publication feed for me?
No. You provide direct authorized Substack publication feed URLs; unrestricted URL fetching is intentionally rejected.
Can the same post be billed again?
Yes. Deduplication is run-local. Re-running the same feed can return and bill the same public post again.
Validation evidence and Substack terms (2026-07-14)
Validation on 2026-07-14 preserves the RSS-only boundary:
- Substack's current Terms of Use and Privacy Policy remain authoritative.
- Results retain feed/post URLs, GUID, status, and
publishedAt; unavailable or malformed feeds produce explicit non-billablefeedErrorrows. - Strict Actor QA validates URL restrictions, schemas, bounded retries, links, metadata, Docker configuration, and the
substack-postPPE event before release. - Only feeds you are authorized to process should be submitted; copyright, privacy, and republication obligations remain with the user.
This evidence does not guarantee feed availability, historical completeness, subscriber content, rankings, traffic, or AI citations.
Limits and responsible use
Only direct Substack publication subdomains are accepted in this first release. Custom-domain feeds are intentionally rejected because an unrestricted URL fetcher would introduce server-side request forgery risk. The Actor cannot return content absent from the public RSS response, recover deleted posts, access subscriber-only pages, or guarantee that every publication exposes the same fields.
Respect publishers' rights, applicable law, Substack terms, and reasonable request frequency. Do not use the output for spam, unauthorized republication, personal-data enrichment, or attempts to evade access restrictions.
This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Substack. Substack is a third-party service, so feed availability and behavior can change without notice. Only submit feeds you are authorized to access and process. RSS output can contain third-party copyrighted material; you are responsible for ensuring that storage, analysis, republication, and other downstream use is lawful and authorized.
The Actor stops a feed after bounded retries and reports 429 responses in OUTPUT. Operational policy: if 429 responses affect 20% or more of feed requests in monitored public runs, pause public traffic and review the integration rather than adding proxies or increasing retries. Sustained Substack blocking is a stop condition, not a signal to bypass controls.
Support
When reporting an issue, include the public feed URL, sanitized Actor input, run ID, and the error message. Never send account credentials, cookies, or private publication data.