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
6 days 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: trueand 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 the publication's substack.com URL, e.g.https://platformer.substack.com. Custom-domain publications serve their public API on the underlying substack.com URL, so use that instead.stateKey— namespace for the snapshot. Change it to start a fresh baseline. The prefilleddefaultkey rotates daily so the free trial always shows recent posts; use your own key for persistent monitoring.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 (tiered: Bronze $0.0009, Silver $0.0008, Gold/Platinum/Diamond $0.0007)
- New post detected: $0.0025 (tiered: Bronze $0.0023, Silver $0.0021, Gold/Platinum/Diamond $0.0020)
Storefront shows "from $2.00 / 1,000 new posts". Compare with one-shot scrapers: a daily scheduled one-shot re-run bills per scanned post every day; this monitor bills only when there is genuinely something new — a quiet week costs ~$0.007.
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.