Substack New-Post Monitor
Under maintenancePricing
from $2.00 / 1,000 new posts
Substack New-Post Monitor
Under maintenanceWatch your favorite Substack newsletters and get alerted only when something new is published. Built-in cross-run dedup means scheduled re-runs push nothing and cost ~nothing when nothing changed. Pay only per new post detected.
Pricing
from $2.00 / 1,000 new posts
Rating
0.0
(0)
Developer
Delta Tools
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
7 hours ago
Last modified
Categories
Share
Watches your favorite Substack newsletters and reports only genuinely new posts. Schedule it daily or hourly: runs where nothing new was published push zero rows and cost nothing beyond the Actor start — you pay per new post detected, never per scan.
How it works
- For each publication you configure, the Actor fetches the latest public posts
from Substack's public API (
/api/v1/archive) — no auth, no key, no proxy. - It compares them against a saved snapshot in a named key-value store
(
substack-monitor-state), namespaced perstateKey, so separate monitors never share or clobber baselines. - Posts it has never seen are pushed to the dataset and billed once each
(
new-substack-postevent). Everything else — including scheduled re-runs with zero new posts — pushes nothing and bills nothing.
Only public post metadata is read (title, subtitle, public excerpt, published
date, author, URL, audience). For paywalled posts the Actor sets paywalled: true
and reports the public metadata only — it never attempts to read paid content.
Input
{"publications": [{ "url": "https://platformer.substack.com", "maxPosts": 10 },{ "url": "https://astralcodexten.substack.com", "maxPosts": 20 }],"stateKey": "default","reportInitialAsNew": true}
publications— one entry per newsletter. Use thehttps://<name>.substack.comURL. Custom-domain publications serve the public API on their underlying<name>.substack.comURL, so use that instead.stateKey— namespace for the snapshot. Change it to start a fresh baseline.reportInitialAsNew— first run reports everything as new (builds the baseline while reporting); turn off to silently establish the baseline.
Output (dataset)
One row per genuinely new post:
| field | meaning |
|---|---|
publicationName, publicationUrl | which newsletter |
postId | stable Substack post id (dedup key) |
title, subtitle, excerpt | public metadata |
url | canonical post URL |
publishedDate | ISO timestamp |
author, authorHandle | byline |
postType | e.g. newsletter, podcast |
paywalled | true when audience is not everyone (public metadata only) |
detectedAt | when this Actor first saw it |
A run receipt (substack-monitor-state → state-v1-<stateKey>-last-receipt)
records per-publication status, fetch counts, and errors for auditing.
Pricing (pay-per-event)
- Actor start: $0.001
- New post detected: $0.0025
A daily monitor that finds 3 new posts in a week costs roughly 7 × $0.001 + 3 × $0.0025 = $0.0145. Runs that find nothing cost just the start event. (All prices are the FREE-tier event price; Apify's tiered discounts apply at higher plans.)
Limits & honesty
- Public API only. If Substack removes or gates an endpoint, affected
publications report
status: "error"in the run receipt instead of failing the run. - Invalid URLs and nonexistent publications are reported per-publication with a clear message; the rest of the run continues.