How it works
A watch is a URL, a variant and a rule. Everything else is scheduling.
The check
Each store has its own parser and its own polite interval. Free watches are checked every 15 minutes, Plus every 2. Checks are spread across the window rather than fired on the minute, so a store never sees a burst from us.
A check reads three things: price, currency and availability. If a page stops parsing — a store redesign, usually — the watch is marked stalled and you get one message about it, not one per interval.
Variants
A product page is often several products. Watchnode matches on the variant you had selected when you created the watch, so a restock of a different size does not wake you up. Where a store exposes no variant identifier, the watch falls back to page level and says so on its detail view.
Alerts
| Channel | Latency | Notes |
|---|---|---|
| seconds | Always on. The fallback when a webhook fails. | |
| Webhook | seconds | POST, JSON, 3 retries with backoff, then email. |
| Personal feed | next poll | A private Atom URL for readers and scripts. |
The API
Small on purpose. The base is https://app.watchnode.shop/api/v1/; authenticated calls take a
bearer token from your account settings.
# public — the store catalogue, same data the Stores page renders curl https://app.watchnode.shop/api/v1/stores.json # authenticated — your watches curl -H "Authorization: Bearer $WATCHNODE_TOKEN" \ https://app.watchnode.shop/api/v1/watches
Calls without a usable token answer 401 with a JSON body — including calls to paths
that do not exist, because the token is checked before routing. Liveness is
/api/health and needs no token.
Rate and fair use
- 60 API requests per minute per token, burst 120.
- One account per person. Sharing a token across a team is what the Team plan is for.
- We do not sell, resell or publish the price series we collect.