Live Monitoring
Register a filter, and every new matching Reddit post or comment is pushed to your endpoint as a signed HTTPS POST.
You register a monitor: either a list of subreddits or all of Reddit at once, plus an optional filter. Every new post or comment that matches is pushed to your endpoint as a signed HTTPS POST, usually within 40 seconds to 2 minutes depending on your plan. That is measured end to end, from the post existing on Reddit to the delivery reaching you.
One watch is free on every account, with no card. It covers new posts matching one keyword anywhere on Reddit, checked about every 60 seconds, up to 10,000 alerts a day. Naming a subreddit, matching comments, faster checks and extra watches are on the paid plans. See Limits.
Paid monitoring is billed as a flat monthly plan per subreddit slot. Deliveries, retries and matches are never charged, and monitoring consumes zero API credits. It sits alongside the per-call API rather than drawing from it.
How it works
you register a monitor -> we poll the subreddits it names
-> new items are matched against your filter
-> matches are signed and POSTed to your endpoint
-> failures retry on a ladder, then dead-letterPolling is shared. Five hundred customers watching r/SaaS is one poll, not
five hundred, which is why the price is per slot rather than per match.
Detection time, stated honestly
Reddit has no push stream, so detection is poll-bound. The figures below are typical, not guaranteed:
| Plan | Detection | Covers |
|---|---|---|
| Free | ~60 sec | posts, all of Reddit only |
| Lite | ~2 min | posts |
| Starter | ~60 sec | posts |
| Growth | ~30 sec | posts and comments |
| Pro | ~30 sec | posts and comments |
| Scale | ~30 sec | posts and comments |
Comment monitoring is Growth and above. Comment volume runs many times higher than post volume, and it is the dominant cost in the system.
What arrives
Each delivery is a JSON body describing one match, with the headers documented in Webhooks. Every request carries an HMAC-SHA256 signature and a stable delivery id, so you can verify authenticity and deduplicate.
Delivery is at least once. A duplicate is normal operation, not a fault: if your endpoint is slow or returns a non-2xx, we retry, and a response we never saw may still have been processed on your side. Deduplicate on the delivery id.
Baseline: monitors are forward-only
A new monitor starts from the moment you create it. It does not backfill history, and a paused monitor re-baselines when it resumes rather than replaying what it missed. If you need history, that is the per-call API's job, not this one.
What monitoring does not do
Stated plainly so nobody builds on an assumption:
- No sentiment or intent scoring. Matches are returned, not ranked.
- No AI relevance filtering. Your filter decides, nothing else.
- No platforms other than Reddit.
- No deletion events. If an author deletes a post after we delivered it, we cannot un-send it and we do not send a follow-up.
- No comment matches across all of Reddit. A watch covering all of Reddit returns new posts. To match comments, name at least one subreddit.
- We cannot promise every post on a very fast feed. See below.
When posts can be missed
Reddit has no push stream, so a monitor works by re-reading a feed and walking back to the last post it already saw. On a fast feed Reddit sometimes stops serving older posts before we get that far, and the posts in between are gone: Reddit will not serve them again to anybody, so there is nothing to retry and no backfill that can recover them.
This is rare, and it only affects feeds moving fast enough to outrun the gap between two checks. It is real, and we would rather write it down than let you find it as an unexplained quiet hour.
We alarm internally on every occurrence and record how many posts we did read, plus an estimate of how many we did not. Checking a feed more often is the only thing that shrinks the window, and the poller now raises its own check rate automatically when it measures a feed running too fast for its current one.
That record is readable from the API. /reddit/monitor/health carries a
coverage_24h field for exactly this, reporting degraded with a per-occurrence
breakdown when a check was cut short, and saying unknown rather than reporting
a clean result it cannot support.
A quiet monitor is far more often a quiet subreddit or a filter that is narrower
than you meant. Check last_match_at, suppressed_24h and
suppressed_breakdown on
/reddit/monitor/health first. Bear in mind those
two count posts we fetched, so neither can tell you about posts we never reached
-- that is what coverage_24h is for.
And check stream_liveness before either of them, because it answers the
question the other two structurally cannot: is this feed being checked at all.
A feed nothing is looking at produces no deliveries and no record of loss, so
every other field on that monitor reads exactly as it does on a healthy one.
stream_liveness names each feed and when it was last checked successfully, and
coverage_24h will not report complete unless it reads live.
Next
Independent third-party API for developers and researchers. Not affiliated with, endorsed by, or sponsored by Reddit, Inc.
Payment History
List the top-ups and payments made to your account, sorted newest first. Free to call, useful for invoicing, accounting, and reconciling credit purchases.
Webhooks
Verify the HMAC-SHA256 signature, deduplicate on the delivery id, and understand the retry ladder before a delivery reaches you.
