Shopify Competitor Price, Stock & Launch Watcher avatar

Shopify Competitor Price, Stock & Launch Watcher

Pricing

from $5.00 / 1,000 store checkeds

Go to Apify Store
Shopify Competitor Price, Stock & Launch Watcher

Shopify Competitor Price, Stock & Launch Watcher

Track competitor Shopify stores daily: price drops, price increases, back-in-stock, out-of-stock, new and removed products. Built-in saved snapshots, so each run returns only what changed. No database, no browser.

Pricing

from $5.00 / 1,000 store checkeds

Rating

0.0

(0)

Developer

HirePulse

HirePulse

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Watch up to 50 competitor Shopify stores and get only what changed since the last run: price drops, price increases, items back in stock, items out of stock, new products and removed products.

The first run saves a snapshot of each store. Every later run with the same watch list name (state_key) compares against that snapshot and returns a clean list of change events. You don't need a database, a browser, or diff logic in n8n.

What it tracks

EventWhen it fires
price_droppedA variant's price went down by at least min_price_change_pct
price_increasedA variant's price went up by at least min_price_change_pct
back_in_stockA variant changed from unavailable to available
out_of_stockA variant changed from available to unavailable
new_productA product appeared that was not in the last snapshot
removed_productA product from the last snapshot is gone

Each event includes the product and variant title, SKU, product URL, previous and current price, the change in money and in percent, compare_at_price, and an on_sale flag (true when compare_at_price is above the price).

Why not just scrape products.json?

Raw products.json scraperThis watcher
Output each dayThe whole catalog (thousands of rows)Only the changes
You pay forEvery product, every day$0.005 per store checked, plus $0.001 per change
Comparing with yesterdayYou build it (database, sheet or n8n code)Built in (saved snapshots)
Store that blocks or failsOften looks like "everything removed"Reported as blocked or partial_error, snapshot kept, no charge

Quick start

  1. Enter competitor domains, for example allbirds.com.
  2. Run once. Each store returns status: "baseline" and its snapshot is saved.
  3. Schedule the Actor (for example daily) with the same state_key. Later runs return changed or unchanged.

Input example:

{
"domains": ["allbirds.com", "gymshark.com"],
"state_key": "footwear-competitors",
"max_pages_per_store": 4,
"min_price_change_pct": 1
}

Output

One dataset row per store:

{
"domain": "allbirds.com",
"status": "changed",
"summary": {
"products_monitored": 356,
"variants_monitored": 4168,
"total_events": 3,
"new_products_count": 1,
"removed_products_count": 0,
"price_drops_count": 1,
"price_increases_count": 0,
"back_in_stock_count": 0,
"out_of_stock_count": 1
},
"events": [
{
"event_type": "price_dropped",
"product_id": 7340901859408,
"variant_id": 42146889039952,
"product_title": "Women's Allbirds Flip Flop - Dusty Pink",
"variant_title": "5",
"sku": "A12513W050",
"product_url": "https://allbirds.com/products/womens-allbirds-flip-flop-dusty-pink",
"previous_price": 62.5,
"current_price": 50,
"compare_at_price": null,
"price_change_amount": -12.5,
"price_change_pct": -20,
"on_sale": false,
"previous_available": false,
"current_available": false
}
],
"charged": true,
"error_message": null
}

(Real output from a cloud run on 31 Oct 2026. The change was produced by passing an edited known_state snapshot, so the $62.50 "previous price" is a test value; the current price and product fields are live from the store.)

Statuses: baseline, changed, unchanged (charged), and not_shopify, endpoint_disabled, blocked, partial_error, error (never charged, previous snapshot kept, with a plain explanation in error_message).

The run also writes a SUMMARY record, plus a STATE record (domain -> snapshot) that you can pass back as known_state if you prefer to keep state yourself.

Pricing

Pay per event:

  • $0.005 per store checked (baseline, changed or unchanged).
  • $0.001 per change event, at most 50 charged per store per run (so at most $0.055 per store per run). The first baseline run has no change charges.
  • Stores that are not Shopify, have closed their catalog, block the request or fail part-way are not charged.

Example: 10 competitors checked daily for 30 days, with about 500 changes in the month, comes to about $2.

Use with n8n, Make or an AI agent

  • n8n: Schedule Trigger → Apify node (run this Actor, get dataset items) → IF status = changed → Slack/Telegram/Email with the events.
  • API:
curl -X POST "https://api.apify.com/v2/acts/hirepulse~shopify-competitor-watcher/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"domains": ["allbirds.com"], "state_key": "my-competitors"}'
  • MCP (Claude, Cursor and other agents): https://mcp.apify.com?tools=hirepulse/shopify-competitor-watcher

Limits, stated honestly

  • It works on standard Shopify stores that expose the public /products.json catalog. Some large or headless stores close it. Those stores return endpoint_disabled and are not charged.
  • Stock is tracked as available or unavailable per variant. Shopify's public catalog does not show exact stock counts.
  • With the default of 4 pages, each store is read up to 1,000 products. For larger catalogs, price and stock changes are still tracked, but new and removed products are not reported, so a cut-off catalog never produces false "removed" alerts.
  • The watcher reads public data only. It does not log in, use a browser or bypass protection.