WooCommerce Product Feed & Catalog Monitor: Price/Stock Alerts
Pricing
from $5.00 / 1,000 change detecteds
WooCommerce Product Feed & Catalog Monitor: Price/Stock Alerts
Your catalog changes daily: prices move, stock flips, products appear and vanish. This monitor records a baseline of any WooCommerce store catalog, then diffs the live catalog on every scheduled run and reports exactly what changed: new products, removed products, price changes, stock flips.
Pricing
from $5.00 / 1,000 change detecteds
Rating
0.0
(0)
Developer
dheeraj kumar
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
WooCommerce Catalog Monitor
Track any WooCommerce store's catalog over time: new products, removed products, price changes, and stock flips — read from the store's public WooCommerce Store API. No scraping, no browser, no proxies, nothing to break when a site redesigns.
Run it once to record a baseline, then schedule it (daily, hourly — your call). Every scheduled run diffs the live catalog against the last snapshot and pushes one row per change. The first run for a store never charges for changes.
What it monitors
| Change type | Meaning |
|---|---|
new | Product appeared in the catalog |
removed | Product disappeared from the catalog |
price_changed | Price (or currency) changed — old and new values included |
stock_changed | Stock status flipped (e.g. instock → outofstock) |
Each change row carries the product name, SKU, permalink, prices, stock status, and detection timestamp. Every run also writes a store-summary row per store with counts.
Pricing — pay per event, no subscription
| Event | Price |
|---|---|
| Run started | $0.001 per run |
| Product checked | $0.0002 per product read ($0.20 per 1,000) |
| Change detected | $0.005 per new / removed / price-changed / stock-flipped product |
Typical run: a 1,000-product store with 10 changes costs about $0.25 ($0.001 run + $0.20 products + $0.05 changes).
Failed stores (no public Store API, private/B2B, network errors) return an error row and are not charged. Set Maximum charge per run and the actor stops cleanly before exceeding it.
Example input
{"storeUrls": ["https://your-store.com"],"maxProductsPerStore": 1000,"outputMode": "changes","stateName": "woo-catalog-monitor","maxChargeUsd": 5}
Example output (one row per change)
Prices are in the store currency's minor units (e.g. cents), exactly as the Store API returns them.
{"recordType": "change","store": "https://your-store.com","storeUrl": "https://your-store.com","productId": "1234","changeType": "price_changed","name": "Ceramic Mug - 12oz","sku": "MUG-12","price": 1650,"regular_price": 1650,"sale_price": 1650,"oldPrice": 1400,"currency": "USD","oldCurrency": "USD","stock_status": "instock","is_in_stock": true,"permalink": "https://your-store.com/product/ceramic-mug-12oz","detectedAt": "2026-10-16T09:00:00+00:00"}
Input
- Store URLs — one or more WooCommerce store URLs, e.g.
https://competitor-store.com. - Max products per store (default 1,000) — caps catalog reads and your per-run cost.
- Output mode —
Changes only(one row per change; best for monitoring) orFull catalog snapshot(every product). - Snapshot store name — the named key-value store holding baselines. Keep it constant across scheduled runs; change it to start a fresh baseline.
- Maximum charge per run (USD) (default $5) — hard spending cap.
Requirements and limits
- The store must expose the public WooCommerce Store API (
/wp-json/wc/store/v1/products). The vast majority of WooCommerce stores do — it's on by default. Private, password-protected, and B2B stores are reported as unsupported, not charged. - Prices come from the store's own API in its own currency.
- Polite by design: sequential requests, small delays between pages.
Use it from code
curl -X POST "https://api.apify.com/v2/acts/dheerajitbhu~woocommerce-catalog-monitor/run-sync-get-dataset-items" \-H "Authorization: Bearer $APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"storeUrls": ["https://competitor-store.com"], "outputMode": "changes"}'
from apify_client import ApifyClientclient = ApifyClient("YOUR_API_TOKEN")run = client.actor("dheerajitbhu/woocommerce-catalog-monitor").call(run_input={"storeUrls": ["https://competitor-store.com"],"outputMode": "changes",})for row in client.dataset(run["defaultDatasetId"]).iterate_items():if row.get("recordType") == "change":print(row["changeType"], row["name"], row.get("permalink"))
Schedule it in Apify with a daily (or hourly) schedule and a fixed snapshot store name — each run then reports only what changed since the last one.
Independent tool. Not affiliated with or endorsed by WooCommerce / Automattic. Use monitored data in line with each store's terms.