Snag Watcher Docs

Guides

Schedules

JSON
"schedule": {
  "every": "1d",
  "start_at": "2026-12-01T09:00",
  "burst": { "near": "release_date", "window": "48h", "every": "1h" },
  "until": "+90d"
}

Durations are a number and m, h or d.

every

How often it runs. Runs get up to 10% jitter, capped at 5 minutes, so watchers made at the same time don't all fetch at once.

start_at

The first run. A time without an offset is read as UTC.

burst

Runs every burst.every inside window, centered on one moment. Give it one of two ways:

  • at: a time you already know, like a drop at 10:00 or an on-sale. { "at": "2026-11-07T10:00:00-05:00", "window": "30m", "every": "1m" }
  • near: release_date or opens_at, taken from target.attributes or from a page once a run sees the date.

A 48h window runs from a day before to a day after.

burst.every must be shorter than every.

until

ValueStops
"2027-01-31"At the end of that day, UTC
"+30d"30 days after start_at, or after now
"after_first_match"After the first match. Status becomes matched
"never"When you delete it

A watcher runs for at most a year.

Minimum intervals

Each site has a fastest interval. If you ask for faster, we use the site's minimum and list it in clamped; the request isn't refused.

Siteeveryburst.every
Any site1m1m
Cal.com, Hacker News, Bluesky, SEC EDGAR, Trusted Traveler, USGS, DexScreener, OpenSea, Magic Eden, Etherscan, Kalshi, stock quotes (Finnhub), crypto exchange listings1m1m
Statuspage, Instatus, Twitch2m1m
CoinGecko2m (1m with a demo key)2m (1m)
Reddit5m2m
Resy, Eventbrite, Luma, Ticketmaster, DICE, Meetup, Tito, Partiful, Greenhouse, Lever, crates.io, Wikipedia, ActiveNet, Amilia, Mindbody, Mariana Tek, eBay, Discogs, Reverb, Etsy5m1m
Jane App, NexHealth5m2m
GitHub commits, repository stats, issues and pull requests5m with GITHUB_TOKEN (30m without)2m (10m)
Socrata, ArcGIS, Polymarket, Companies House5m5m
CourtListener5m2m
Calendly, OpenTable, SeatGeek, start.gg, Steam, foreUP, GolfNow, Chronogolf, Playtomic, CourtReserve, CivicRec, Zen Planner10m2m
Congress.gov, FRED, username and package name lookups10m5m
NOAA space weather (Kp)10m10m
Tock10m1m
Recreation.gov permits15m2m
Recreation.gov campsites, Acuity, Square Appointments, SimplePractice, Fresha, Booksy, Vagaro, Boulevard, Zocdoc, MyChart, Ashby, Workday, SmartRecruiters, npm, PyPI, feeds, YouTube, Federal Register, Grants.gov, Regulations.gov, USAJOBS, US wildfires, InciWeb, road work (WZDx), learned recipes, page changes15m5m
GitHub security advisories15m with GITHUB_TOKEN (1h without)5m (15m)
OSV.dev15m15m
Stack Exchange15m (1m with STACKEXCHANGE_KEY)15m (1m)
Amazon, Vetstoria, Open Library loans30m10m
WooCommerce, Squarespace, BigCommerce, Magento stores30m10m
GitHub releases, Docker Hub, Sessionize30m5m
Nike1h5m
Any online store, Shopify stores, other stores1h15m
NHTSA, CPSC1h15m
openFDA1h30m
Open States, USAspending, House trade reports, ClinicalTrials.gov, arXiv, PubMed, Europe PMC, U.S. Treasury Fiscal Data, European Central Bank, Legistar, Open Library, apartment listings (AppFolio, SightMap)1h15m
BLS and BEA release calendars1h5m
Semantic Scholar, hospital price files, TLS certificates1h1h
BLS data1h with BLS_API_KEY (6h without)1h (6h)
NVD2h2h
SAM.gov3h1h
schema.org pages, domain registration (RDAP), AirNow1h30m

A store named by its host is checked at most hourly, since its platform isn't known until the first check. A url match on a product link that shows its platform (/product/<slug> on WooCommerce, /<shop>/p/<slug> on Squarespace, <key>.html on Magento) gets that platform's 30m.

JSON
"clamped": [{ "field": "schedule.every", "asked": "5m", "used": "30m", "site": "amazon.com", "reason": "amazon.com is checked at most every 30m." }]