← Health board

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.

100%golden-diff pass
Run it on Apify verified nightly

Verification

100%golden-diff success
33canary runs
14days since last update

Output fields

Authoritative field set from the dataset schema.

FieldType
domainstring|null
change_typestring|null
product_titlestring|null
product_handlestring|null
product_idinteger|null
variant_skustring|null
variant_idinteger|null
old_pricenumber|null
new_pricenumber|null
price_change_pctnumber|null
old_availableboolean|null
new_availableboolean|null
tracked_productsinteger|null
changes_foundinteger|null
detected_atstring|null
source_urlstring|null
scraped_atstring|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

FieldTypeReqDefaultDescription
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