Watch a price page. Get a webhook when it changes.
Scheduled scrape, content-hash diff, structured webhook on every change. Cloud Starter from 29 €/month.
Three changes a week. Manually.
You sell a product. Your competitors change their prices three times a week. You either watch them manually, build a flaky cron + Puppeteer setup, or pay an “ecommerce intelligence platform” 800 € a month for a dashboard you don’t need.
Scrape, schedule, diff, webhook.
- 1. Scrape the competitor product page once into a `table` dataset with an `extract` schema for `name`, `price`, `currency`, `in_stock`.
- 2. Schedule the same scrape to run every six hours (Cloud Starter+).
- 3. Stekpad computes a `_content_hash` on every re-scrape. If it changes, `_version` increments and a `row.changed` webhook fires.
- 4. Your webhook handler diffs the price column and posts to Slack.
Three calls. End-to-end.
# Initial scrape with extractioncurl -X POST https://api.stekpad.com/v1/scrape \ -H "Authorization: Bearer stkpd_live_..." \ -d '{ "url": "https://competitor.com/product/widget", "schema": { "type": "object", "properties": { "name": { "type": "string" }, "price": { "type": "number" }, "currency": { "type": "string" }, "in_stock": { "type": "boolean" } } }, "dataset": { "type": "table", "name": "Competitor prices", "primary_key": ["url"] } }' # Schedule it (Cloud Starter+)curl -X POST https://api.stekpad.com/v1/schedules \ -H "Authorization: Bearer stkpd_live_..." \ -d '{ "name": "Watch competitor widget price", "cron": "0 */6 * * *", "spec": { "verb": "scrape", "params": { "url": "https://competitor.com/product/widget", "schema": "...", "dataset": { "id": "ds_abc" } } } }' # Subscribe to changescurl -X POST https://api.stekpad.com/v1/webhooks \ -H "Authorization: Bearer stkpd_live_..." \ -d '{ "url": "https://myapp.com/hooks/price", "events": ["row.changed"], "filter": { "dataset_id": "ds_abc" } }'When the price changes, your webhook receives:
{ "event": "row.changed", "dataset_id": "ds_abc", "row_id": "row_01HZ...", "previous": { "price": 49.99, "in_stock": true }, "current": { "price": 39.99, "in_stock": true }, "changed_at": "2026-04-14T10:00:00Z"}29 €/month for 50 products.
- 1 product, every 6 hours, 30 days = 120 scrapes/month = 120 credits
- 50 products, every 6 hours, 30 days = 6,000 credits
- Cloud Starter (29 €/mo) includes 10,000 credits, scheduling, webhooks, and change monitoring.
50 products under one continuous monitor: 29 €/month flat.
Cookie bridge for logged-in prices.
Some competitors gate prices behind a login. Use use_session: "<domain>" with the cookie bridge. Your Chrome stays logged in; Stekpad scrapes through the bridge.
Common questions.
How sensitive is change detection?
It’s a content hash on the extracted JSON, not the raw HTML — so layout changes don’t trigger false positives. Only schema-field changes count.
Can I diff specific columns?
Yes. The webhook payload includes `previous` and `current` versions of every changed column.
What's the minimum cron interval?
5 minutes on Cloud Scale, 1 hour on Cloud Starter and Growth.
Start with the free plan.
300 credits to test on one product. Upgrade to Cloud Starter when you need scheduling.