Shopify Competitor Price, Stock & Launch Watcher
Pricing
from $5.00 / 1,000 store checkeds
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
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
| Event | When it fires |
|---|---|
price_dropped | A variant's price went down by at least min_price_change_pct |
price_increased | A variant's price went up by at least min_price_change_pct |
back_in_stock | A variant changed from unavailable to available |
out_of_stock | A variant changed from available to unavailable |
new_product | A product appeared that was not in the last snapshot |
removed_product | A 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 scraper | This watcher | |
|---|---|---|
| Output each day | The whole catalog (thousands of rows) | Only the changes |
| You pay for | Every product, every day | $0.005 per store checked, plus $0.001 per change |
| Comparing with yesterday | You build it (database, sheet or n8n code) | Built in (saved snapshots) |
| Store that blocks or fails | Often looks like "everything removed" | Reported as blocked or partial_error, snapshot kept, no charge |
Quick start
- Enter competitor domains, for example
allbirds.com. - Run once. Each store returns
status: "baseline"and its snapshot is saved. - Schedule the Actor (for example daily) with the same
state_key. Later runs returnchangedorunchanged.
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 theevents. - 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.jsoncatalog. Some large or headless stores close it. Those stores returnendpoint_disabledand 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.
Related tools
- Shopify to llms.txt Generator builds an AI-ready summary of a Shopify catalog.
- AliExpress Search Scraper looks up supplier prices for products you find.
- Website Tech Stack Detector checks whether a competitor runs on Shopify before you add it.