REST API
Read your competitor data from anywhere. Tokens live under Settings → API tokens inside the app.
Authentication
Every request must include a bearer token:
Authorization: Bearer cw_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Tokens are shown once at creation. If you lose one, create a new one and revoke the old.
Base URL
https://trident-watch.vercel.app/api/v1
GET /api/v1/competitors
Returns every competitor you're tracking.
curl https://trident-watch.vercel.app/api/v1/competitors \ -H "Authorization: Bearer cw_xxx..."
GET /api/v1/changes
Returns the change-event feed. Query params:
limit— 1–500, default 100event_type— one ofprice_change,stock_out,restock,new_product,removed_product,inventory_lowcompetitor_id— filter to a specific competitorsince— ISO timestamp; only events after
curl 'https://trident-watch.vercel.app/api/v1/changes?event_type=price_change&limit=50' \ -H "Authorization: Bearer cw_xxx..."
GET /api/v1/matches
Side-by-side matches between your products and competitor products.
curl https://trident-watch.vercel.app/api/v1/matches \ -H "Authorization: Bearer cw_xxx..."
Outgoing webhooks (push instead of pull)
If you'd rather receive events as they happen, configure an outgoing webhook in Settings → Outgoing webhooks. We POST a signed JSON body with X-Foresight-Signature (HMAC-SHA256 of the raw body using the secret you saved once).
POST /api/v1/competitors
Track a new competitor. Body: { "domain": "competitor.com" }. Honors your plan limit.
curl -X POST https://trident-watch.vercel.app/api/v1/competitors \
-H "Authorization: Bearer cw_xxx..." \
-H "Content-Type: application/json" \
-d '{"domain":"allbirds.com"}'Browser extension
Drop-in MV3 extension at /extension/manifest.json. Load it in Chrome via chrome://extensions → Load unpacked pointing at the public/extension/ folder of this repo. Set your token once; click the icon on any storefront to add it.
Slack slash command
Create a slash command in your Slack workspace pointed at:
https://trident-watch.vercel.app/api/slack/command
Set SLACK_SIGNING_SECRET in Vercel env. Usage in Slack:
/competitor cw_xxx → list every competitor you track /competitor cw_xxx allbirds.com → stats for one competitor
Zapier / Make / n8n
The outgoing-webhooks system is the easiest fit. In any of those tools, create a webhook trigger and paste the URL into Settings → Outgoing webhooks. We POST every event as a signed JSON body.
If you prefer pull, use scheduled HTTP requests against GET /api/v1/changes?since=<last_seen> and track the latest detected_at in your tool of choice.
Rate limits
One request per second per token is fine. Hammer it and you may see 429 responses without warning.

