Shopify Price & Stock Change Tracker
Monitor any Shopify store for changes — price increases/decreases, back-in-stock & out-of-stock flips, and products added or removed. Run on a schedule for set-and-forget competitor and supplier watching.
Verification
Output fields
Authoritative field set from the dataset schema.
| Field | Type |
|---|---|
domain | string|null |
change_type | string|null |
product_title | string|null |
product_handle | string|null |
product_id | integer|null |
variant_sku | string|null |
variant_id | integer|null |
old_price | number|null |
new_price | number|null |
price_change_pct | number|null |
old_available | boolean|null |
new_available | boolean|null |
tracked_products | integer|null |
changes_found | integer|null |
detected_at | string|null |
source_url | string|null |
scraped_at | string|null |
Sample row
{
"domain": "allbirds.com",
"change_type": "price_decreased",
"product_title": "Wool Runner",
"product_handle": "wool-runner",
"product_id": 100,
"variant_sku": "WR-9-GREY",
"variant_id": 1001,
"old_price": 110,
"new_price": 88,
"price_change_pct": -20,
"old_available": null,
"new_available": null,
"tracked_products": null,
"changes_found": null,
"detected_at": "2026-02-01T00:00:00+00:00",
"source_url": "https://allbirds.com"
} Inputs
| Field | Type | Req | Default | Description |
|---|---|---|---|---|
domains | array | yes | ["allbirds.com"] | Shopify store domains or URLs to monitor, e.g. 'allbirds.com'. The first run captures a baseline (free); run again later (a schedule works well) to get the changes since the previous run. |
minPriceChangePercent | integer | no | 0 | Ignore price moves smaller than this percentage (noise filter). 0 reports every price change. |
maxProductsPerStore | integer | no | 2000 | Cap on products sampled per store (bounds cost). Very large catalogs are sampled up to this many products. |
proxyConfiguration | object | no | {"useApifyProxy":false} | Optional. Shopify storefronts are usually reachable directly; enable a proxy (e.g. residential) only if a store is blocked. |
Pricing
Pay per result (dataset-item) — no charge for empty runs.
Example: 1000 changes detected at $0.01/result ≈ $10.00.
FAQ
How does it detect changes?
It reads the store's public catalog (/products.json) and diffs it against the previous run's snapshot.
What happens on the first run?
It captures a free baseline — there's nothing to diff yet. From the second run on, you get the changes.
How am I charged?
Pay-per-change: one charge per detected change. Runs with no changes are free.
What changes does it catch?
Price increases/decreases (with old price, new price, and %), back-in-stock and out-of-stock flips, and products added or removed.
How often should I run it?
On a schedule (e.g. daily) — it's built for set-and-forget monitoring.
Are there store limits?
~10–15% of stores disable /products.json; those return an 'unavailable' marker. Enable the proxy toggle if a store blocks datacenter IPs.
Related actors