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

ChannelLatencyNotes
EmailsecondsAlways on. The fallback when a webhook fails.
WebhooksecondsPOST, JSON, 3 retries with backoff, then email.
Personal feednext pollA 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