Substack Publication Delta Monitor avatar

Substack Publication Delta Monitor

Pricing

Pay per usage

Go to Apify Store
Substack Publication Delta Monitor

Substack Publication Delta Monitor

Pricing

Pay per usage

Rating

0.0

(0)

Developer

andre donda de sa

andre donda de sa

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

Categories

Share

Monitor official public Substack RSS feeds and receive only meaningful post changes. The first successful run saves a free baseline; later runs emit and bill only new, updated, or removed-from-observed-feed posts.

This is a monitoring product, not an archive or paywall scraper. It uses public RSS only—no article crawling, comments, likes, subscribers, private endpoints, browser, proxy, AI, or authentication.

Quick start

  1. Add publication home URLs or exact /feed URLs.
  2. Keep the monitor key unchanged on scheduled runs.
  3. Run once to create the expected free baseline.
  4. Schedule the same input to receive later changes.
{ "publicationUrls": ["https://doomberg.substack.com"], "monitorKey": "doomberg-monitor" }

Example output

{ "recordType": "change", "changeType": "updated", "guid": "post-123", "title": "Revised title", "publication": "Example", "previousPost": { "contentHash": "old" }, "currentPost": { "contentHash": "new" } }

Pricing

Provisional pricing is $0.003 per post change. New, updated, and removed-from-observed-feed events are charged. Baselines, unchanged posts, aliases, retries, diagnostics, empty feeds, and failures are free.

Inputs

InputDefaultPurpose
publicationUrls[]Substack publication home pages
feedUrls[]Official feed URLs ending in /feed
monitorKeydefaultPersistent namespace
maxPublications25Hard maximum 100 with advanced mode
maxPostsPerFeed20Bounded observed feed window
maxConcurrency5Concurrent public feeds
requestTimeoutSecs15Whole transaction timeout
maxRequestRetries1Temporary failure retries
maxResponseBytes2000000Streaming limit per feed

Output

Changes include GUID, title, publication, published/updated dates, author, canonical feed URL, content hash, previous/current records, public provenance, and observation time. Missing source fields remain null. Raw post bodies are neither output nor persisted.

Statuses distinguish complete, empty, partial, and blocked runs. A blocked or invalid feed is never reported as a successful empty result.

Limitations

  • Only RSS responses declaring generator=Substack are accepted.
  • RSS is a bounded rolling window, not full history.
  • removed_from_observed_feed does not prove deletion, unpublishing, or retraction.
  • Changing feed depth can create apparent additions or removals; use a new monitor key.
  • Custom domains must resolve only to public networks and remain HTTPS through redirects.
  • Updated dates remain null when Substack does not publish one.

Public-data boundary

The Actor reads public /feed responses only. It does not open post pages or bypass paywalls, logins, private publications, or access controls. If reliable operation later requires a proxy, browser, account, or private endpoint, the product must stop instead of bypassing controls.

FAQ

Why was the first run a baseline? Existing posts must be learned before later changes can be detected; they are not billed.

Does it copy post content? No. It stores a normalized SHA-256 hash of the content publicly present in RSS.

Why did a post leave the feed? A rolling feed can push older posts outside the visible window. The Actor deliberately avoids claiming deletion.

Support

Provide the private run URL, feed URL, and diagnostic code. Never send Substack credentials; the Actor cannot use them.

See CHANGELOG.md.