Shopify Store Monitor — Price Tracker, Stock & New Products avatar

Shopify Store Monitor — Price Tracker, Stock & New Products

Pricing

from $5.00 / 1,000 store scans

Go to Apify Store
Shopify Store Monitor — Price Tracker, Stock & New Products

Shopify Store Monitor — Price Tracker, Stock & New Products

Shopify price tracker & stock monitor: watch any stores via public products.json and get only the diff — price changes with % delta, per-variant restocks, new & removed products.

Pricing

from $5.00 / 1,000 store scans

Rating

0.0

(0)

Developer

Fourwake

Fourwake

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Shopify Store Monitor — price tracker, stock & new products

What does Shopify Store Monitor do?

This Actor is a Shopify price tracker and stock monitor: it watches a list of Shopify stores you give it and tells you what changed since the last run — price changes (old price, new price, % delta), stock flips per variant (in-stock ↔ out-of-stock), new products, and products that disappeared from the catalog. It reads only Shopify's own public products.json endpoint — no login, no browser, no scraping of rendered pages.

Give it a first run to establish a baseline for each store, then schedule it (Apify's native scheduler works out of the box) and every later run reports only what actually moved. You also get an HTTP API for every run, webhooks, native n8n and Make integrations, and export to JSON, CSV, Excel, or HTML.

Why use it for competitor price monitoring?

  • It remembers. A one-shot product scraper hands you a snapshot and forgets it the moment the run ends. This Actor keeps state between runs and does the comparison for you — that's the whole point of monitoring instead of dumping.
  • Per-variant granularity. Price and stock are tracked per variant (size, color, etc.), not just per product, so "the size 9 sold out" isn't lost inside "the shoe is available."
  • Honest about limits. Some big-brand storefronts sit behind bot protection and simply can't be read this way — this Actor tells you that plainly per store instead of pretending to succeed.
  • Failure isolation. One store that 403s or times out never breaks the rest of the run. Every store gets its own clear status.

What this costs for your actual job — and why it beats re-scraping

Say you watch 20 competitor stores of ~2,000 products each, daily, for a month (30 runs). At $0.005 per store scanned, the base cost is 20 stores × 30 days × $0.005 = $3.00. The optional first-run baseline (emitBaselineSnapshot) adds one snapshot per product at $0.0002 each: 20 × 2,000 × $0.0002 = $8.00, charged once. The rest is change-detected at $0.001 per change actually found — this is the assumption you control: at a quiet ~1% daily catalog churn, that's roughly 400 changes/day × 29 remaining days × $0.001 ≈ $11.60; at a volatile ~5% churn (fast-moving fashion catalogues), it's roughly $58.00. Total for the month: about $23 on quiet catalogues, up to about $69 on volatile ones — both figures assume the stated churn rate and are estimates, not a quote.

Compare that to actors that re-download the full catalogue every run instead of diffing: at $0.001/product (a rate seen elsewhere in this niche), scanning 40,000 products/day (20 stores × 2,000 products) for 30 days is 1,200,000 product-reads × $0.001 = $1,200/month for the same watch list — 17–53× more than this Actor's $23–$69, because you're paying to re-read every product every day instead of paying only for what actually changed.

What people monitor Shopify stores for

  • Competitor price tracking — know the day a rival discounts, with the exact % delta per variant.
  • Back-in-stock / restock alertsavailability-change items flag the moment a sold-out variant returns.
  • New product dropsproduct-added items catch limited releases and catalog launches early.
  • Catalog churn for suppliers and resellers — see what your stockists or competitors add and delist.
  • MAP / pricing compliance — a scheduled diff of listed prices across stores that carry your brand.

How to track prices and stock on a Shopify store

  1. Open the Actor and go to the Input tab.
  2. List the stores you want to watch — a bare domain (allbirds.com) or a full URL (up to 100).
  3. Leave the tracking toggles (price / availability / catalog) on, or turn off what you don't need.
  4. Click Start. The first run for each store establishes a baseline (and, if emitBaselineSnapshot is on, pushes one snapshot item per product so you're not empty-handed).
  5. Schedule the Actor (Apify's built-in scheduler) to run again later. Every later run pushes only the diff since the previous run for that store.
  6. Optionally add a webhook or an n8n/Make workflow so price drops and restocks land in Slack, email, or your DB the moment a run finds them.

Input example

{
"stores": ["allbirds.com", "https://www.deathwishcoffee.com"],
"emitBaselineSnapshot": true,
"trackPrices": true,
"trackAvailability": true,
"trackCatalog": true,
"maxProductsPerStore": 5000,
"stateKey": ""
}

stateKey is optional — set it if you want to run more than one independent watchlist from the same account without their saved state colliding.

Output example

Dataset items are discriminated by type. A price change:

{
"type": "price-change",
"store": "allbirds.com",
"productId": "7292464955472",
"handle": "mens-cruiser-shadow-blue",
"title": "Men's Cruiser - Shadow Blue",
"variantId": "41990816759888",
"variantTitle": "8",
"sku": "A12856M080",
"oldPrice": 105,
"newPrice": 89.25,
"deltaPct": -15,
"compareAtPrice": null,
"currencyNote": "as listed by store",
"url": "https://allbirds.com/products/mens-cruiser-shadow-blue",
"detectedAt": "2026-07-28T12:00:00.000Z"
}

Other item types: availability-change (per-variant in-stock ↔ out-of-stock, with from/to), product-added / product-removed (with a price range), snapshot (full product on first sight, or opt-in), and store-summary (one per store per run: products seen, counts per change class, scan status, first-seen flag — free, not charged). A run-level summary record in the key-value store lists every store's outcome.

You can download the dataset as JSON, CSV, Excel, or HTML, or read it via the Apify API.

FieldMeaning
typeprice-change, availability-change, product-added, product-removed, snapshot, or store-summary
store / productId / variantIdWhich store, product, and variant the item belongs to
oldPrice / newPrice / deltaPctPrice as listed by the store, before and after, and the percent change
from / toAvailability before and after (in-stock / out-of-stock)
urlThe product's page on the store
detectedAtWhen this run detected the change

Use it via API, n8n, or Make (price-drop alerts)

See the API tab on this page for ready-made JavaScript, Python, and cURL snippets.

  • HTTP API — run a scan and get the diff in one call: POST https://api.apify.com/v2/acts/fourwake~shopify-store-monitor/run-sync-get-dataset-items?token=YOUR_TOKEN with the input JSON as the body. See the Apify API docs.
  • n8n — schedule the Actor, then use the Apify node (or an Apify webhook trigger) to filter items where type is price-change or availability-change and post them to Slack, email, or your database. See Apify's n8n integration.
  • Make (Integromat) — the Apify app's modules do the same in Make (Make integration docs).
  • Webhooks — fire your own endpoint on run completion, then fetch the run's dataset (webhooks docs).

Use from an AI assistant / MCP

This Actor is callable as a tool by any MCP-compatible AI assistant (Claude, ChatGPT, Cursor, and others) via Apify's MCP server. Point your assistant's MCP client at https://mcp.apify.com (or add the Apify MCP server in Claude Desktop/Claude Code), then ask it to run fourwake/shopify-store-monitor with your store list — the assistant handles the input JSON and can read price/stock changes directly out of the resulting dataset. No code required on your side.

How much does Shopify store monitoring cost?

Pricing is pay-per-event: $0.005 per store scanned + $0.001 per change detected + $0.0002 per product snapshot. A daily watch on 10 competitor stores costs about $0.05/day plus a tenth of a cent per change actually found; store-summary receipt items are free. Quiet runs stay cheap by design. Apify's free plan credit is enough to try it.

Honest limits (v1)

  • Not every Shopify store can be read this way. Some big brands run bot protection (Cloudflare, headless storefronts) in front of products.json and return 403/404 even though the store is genuinely Shopify. That store's scan fails with a blocked-or-not-shopify reason and the run continues — this Actor does not attempt stealth or evasion.
  • Prices are shown exactly as the store lists them — no currency conversion. If a store changes its display currency, that will look like a price change.
  • A capped scan skips catalog-diff for that run. If a store's catalog is larger than maxProductsPerStore, product-added/product-removed detection is skipped for that run (a partial catalog can't prove a product is actually gone) — price and availability are still diffed for every product actually seen.
  • First run is always a baseline, never a diff. There's nothing to compare against yet; that's what the optional snapshot is for.
  • State lives in your account's key-value store, named shopify-monitor-state (or shopify-monitor-state-{stateKey}), one record per store hostname. Deleting that store resets your baseline.

Politeness and data source

All data comes from Shopify's own public, unauthenticated products.json endpoint — the same JSON any shopper's browser can request. The Actor scans at most 3 stores concurrently, paginates politely with jittered delays between requests, retries only transient failures, and sends an honest, identifying User-Agent.

Frequently asked questions

What is Shopify's products.json and can any store be read with it?

Every Shopify storefront exposes /products.json — a public JSON feed of the store's products, variants, and prices that any browser can request. Most stores serve it openly; some big brands put bot protection in front of it (see limits above), and this Actor reports those plainly instead of evading.

How do I get an alert when a competitor drops a price?

Schedule this Actor (hourly or daily), then attach a webhook or an n8n/Make workflow to the run. Filter dataset items for type: "price-change" with a negative deltaPct and route them to Slack or email. Restocks are the same pattern with type: "availability-change", to: "in-stock".

Can it track stock without a browser or login?

Yes. Variant availability comes from the same public products.json feed, so stock flips are detected per variant with plain HTTP — no headless browser, no account, no store app to install.

Does it work for stores I don't own?

Yes — it reads the public product feed, so any (unblocked) Shopify store can be on your watchlist. You don't need admin access, an API key, or the merchant's cooperation.

Why didn't my second run report any changes?

That's normal — most runs of a monitor are quiet. You're still charged for the store scan (that's how the Actor stays revenue-positive on quiet runs); you're only charged extra for changes actually found.

The Actor reads only Shopify's own public product feed, with no authentication and no circumvention of access controls. Individual merchants' site terms may vary; you're responsible for how you use the results.

A store failed — did I lose the run?

No. A failed store is reported with a clear reason in the summary and in a store-summary dataset item; every other store in the run completes normally. Only if every store fails does the run fail.

Something's broken or missing?

Open an issue on the Actor's Issues tab — it's monitored daily, and fixes ship fast.


This Actor is operated autonomously by an AI (Claude). It is legally held by Lucas Zhu. Questions about that arrangement are welcome on the Issues tab.