Shopify & WooCommerce Catalog Change Monitor
Under maintenancePricing
from $0.001 / result
Shopify & WooCommerce Catalog Change Monitor
Under maintenanceMonitors public Shopify and WooCommerce product catalogs and emits normalized change events between runs.
Pricing
from $0.001 / result
Rating
0.0
(0)
Developer
Leadercorp
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
4 days ago
Last modified
Categories
Share
Monitor public Shopify and WooCommerce product catalogs and emit normalized change events between Actor runs.
What it does
This Actor fetches public product catalog endpoints from Shopify and WooCommerce stores, normalizes products into a common structure, compares the current catalog with the previous snapshot stored in the default Apify Key-Value Store, and writes product-level change events to the dataset.
It is designed for lightweight monitoring of public e-commerce catalogs without browser automation, login flows, CAPTCHA bypass, or proxies by default.
Use cases
- Track new and removed products across competitor or partner stores.
- Monitor price and availability changes for public catalog items.
- Build recurring catalog intelligence feeds from simple Shopify and WooCommerce stores.
- Detect added or removed variants when stores expose variant data publicly.
Input
{"stores": [{"url": "https://www.allbirds.com","platform": "shopify"},{"url": "https://woocommerce.com"}],"autoDetectPlatform": true,"maxProductsPerStore": 500,"compareWithPreviousRun": true,"emitUnchangedProducts": false,"includeVariants": true,"requestTimeoutSecs": 30,"snapshotStoreName": "catalog-change-monitor-snapshots"}
Input fields
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
stores | array | yes | - | Stores to monitor. Each item must include url and may include platform. |
stores[].url | string | yes | - | Public store homepage or catalog URL. |
stores[].platform | string | no | - | Optional platform override: shopify or woocommerce. |
autoDetectPlatform | boolean | no | true | When no platform is provided, try Shopify first and WooCommerce second. |
maxProductsPerStore | integer | no | 500 | Maximum number of products to fetch per store. |
compareWithPreviousRun | boolean | no | true | Compare against the previous snapshot in the default Key-Value Store. |
emitUnchangedProducts | boolean | no | false | Emit unchanged events for products with no detected changes. |
includeVariants | boolean | no | true | Include variants in normalization and variant add/remove detection. |
requestTimeoutSecs | integer | no | 30 | Timeout for each catalog HTTP request. |
snapshotStoreName | string | no | catalog-change-monitor-snapshots | Named Apify Key-Value Store used to persist snapshots across Actor runs. |
Output
Each dataset item is a normalized event:
{"storeUrl": "https://www.allbirds.com","platform": "shopify","eventType": "price_changed","productId": "1234567890","handle": "wool-runner","title": "Wool Runner","productUrl": "https://www.allbirds.com/products/wool-runner","variantId": null,"variantTitle": null,"currency": null,"oldPrice": "98.00","newPrice": "109.00","oldAvailable": true,"newAvailable": true,"imageUrl": "https://cdn.shopify.com/example.jpg","scrapedAt": "2026-05-23T10:00:00.000Z","errorMessage": null}
Event types
| Event type | Description |
|---|---|
new_product | Product exists in the current snapshot but not the previous snapshot. |
removed_product | Product existed in the previous snapshot but not the current snapshot. |
price_changed | Product-level normalized price changed. |
availability_changed | Product-level normalized availability changed. |
variant_added | Variant exists in the current product but not the previous product. |
variant_removed | Variant existed in the previous product but not the current product. |
unchanged | Product did not change and emitUnchangedProducts is enabled. |
store_error | Store could not be fetched or platform detection failed. |
How comparison works
For each store, the Actor stores a normalized snapshot in the named Apify Key-Value Store configured by snapshotStoreName under a stable key derived from the normalized store URL. On the next run, the Actor loads that snapshot, compares products by normalized product ID, compares variants by normalized variant ID, emits dataset events, and then saves the latest snapshot.
If compareWithPreviousRun is false, every fetched product is emitted as new_product and the latest snapshot is still saved for future runs.
Limitations
- Only public Shopify
/products.jsonand WooCommerce Store API catalog endpoints are supported. - Shopify product currency is not exposed by
/products.json, socurrencyis usuallynullfor Shopify. - WooCommerce variant detail depends on what the public Store API exposes.
- The Actor does not log in, bypass CAPTCHA, use browser automation, or use proxies by default.
- Snapshots are stored in the named Key-Value Store configured by
snapshotStoreName; changing this value starts a separate comparison history. - Store-level failures are emitted as
store_errorevents and do not fail the whole run.
Performance and costs
The Actor uses plain HTTP requests. Shopify is fetched in pages of up to 250 products and WooCommerce in pages of up to 100 products. Runtime and dataset size are mainly controlled by stores, maxProductsPerStore, and emitUnchangedProducts.
Responsible use
Use this Actor only with websites and data you are allowed to access. Respect target website terms, robots policies where applicable, and applicable laws. Do not use it to collect personal data, bypass access controls, or overload websites.
Changelog
0.1.0
- Initial MVP with Shopify and WooCommerce public catalog support.
- Added platform auto-detection, normalized snapshots, change events, and store-level error events.
- Added unit tests for normalization and diff behavior.