Shopify Competitor Change Monitor
Under maintenancePricing
from $8.00 / 1,000 change detecteds
Shopify Competitor Change Monitor
Under maintenanceMonitor Shopify competitors for new and removed products, variant price changes, and stock changes. First run builds a baseline; later runs return only changes.
Pricing
from $8.00 / 1,000 change detecteds
Rating
0.0
(0)
Developer
Lâm Đỗ
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Monitor public Shopify storefronts and receive only product changes since the previous compatible run—not another full catalog dump. This Shopify competitor monitor produces structured, API-friendly price, stock, and product-change records without Shopify credentials.
FIRST RUN CREATES THE BASELINE AND NORMALLY RETURNS ZERO DATASET ITEMS. Run it again later with the same configuration to receive detected changes.
What it monitors
NEW_PRODUCT— a product appears in a complete comparison.PRODUCT_REMOVED— a product disappears from a complete comparison.PRICE_DROP— a variant price decreases.PRICE_INCREASE— a variant price increases.OUT_OF_STOCK— a variant becomes unavailable for purchase.BACK_IN_STOCK— a variant becomes available again.
Price and availability changes are tracked by stable Shopify variant IDs. This makes the Actor useful as a Shopify price monitor, Shopify price tracker, and Shopify stock monitor without treating product renames or variant reordering as changes.
How it works
Run 1 → establish baseline → return zero changesRun 2+ → compare with baseline → return changes only
The Actor checks public storefront sitemaps and Shopify's public product data. It supports multiple stores and automatically manages the latest compatible baseline.
Who is this for?
- E-commerce operators monitoring competitor assortments and availability.
- Shopify merchants tracking market price movements.
- Competitive-intelligence and pricing teams.
- Agencies monitoring multiple client or competitor stores.
- Data and API workflows that need structured Shopify product changes.
Input
{"storeUrls": ["https://example-store.com","https://another-store.myshopify.com"],"maxProducts": 500}
storeUrls accepts 1–20 public HTTP(S) storefronts. maxProducts applies per store,
defaults to 500, which is also the V1 maximum, and can be lowered for small tests.
Output
The default dataset contains only detected changes. Stable product and variant IDs and human-facing URLs remain available in raw JSON.
Price change:
{"changeType": "PRICE_DROP","storeUrl": "https://example-store.com","productId": "329678821","handle": "red-rain-coat","title": "Red Rain Coat","productUrl": "https://example-store.com/products/red-rain-coat","variantId": "794864229","variantTitle": "Small","previousPriceMinor": 12900,"currentPriceMinor": 10900,"detectedAt": "2026-08-26T10:00:00.000Z"}
Stock change:
{"changeType": "OUT_OF_STOCK","storeUrl": "https://example-store.com","productId": "329678821","handle": "red-rain-coat","title": "Red Rain Coat","productUrl": "https://example-store.com/products/red-rain-coat","variantId": "794864229","variantTitle": "Small","previousAvailable": true,"currentAvailable": false,"detectedAt": "2026-08-26T10:00:00.000Z"}
Product-level change:
{"changeType": "NEW_PRODUCT","storeUrl": "https://example-store.com","productId": "329678999","handle": "new-jacket","title": "New Jacket","productUrl": "https://example-store.com/products/new-jacket","detectedAt": "2026-08-26T10:00:00.000Z"}
Prices use Shopify's exact integer minor-unit representation. Currency formatting is intentionally left to the consumer.
How to monitor automatically
Create an Apify Task with the desired input, then schedule that Task in Apify Console. Executions of the same Task share an isolated monitoring baseline. The Actor does not create schedules itself.
Important behavior
- The first compatible run normally returns zero changes and creates the baseline.
- Later compatible runs return changes only.
- Changing
maxProductsestablishes a new compatible baseline context. - If the previous extraction was incomplete, unsafe
NEW_PRODUCTevents are suppressed. - If the current extraction is incomplete, unsafe
PRODUCT_REMOVEDevents are suppressed. - Directly observed matching variants can still produce reliable price and availability changes.
- Dataset delivery is at least once: a rare persistence failure after output may cause duplicate changes on retry rather than permanently losing events.
Limits
- Only publicly accessible Shopify storefront data is supported.
- Private, password-protected, malformed, or merchant-blocked storefronts may fail.
- Availability means storefront purchasability, not physical inventory quantity.
- No CAPTCHA bypass, authentication bypass, private API, or anti-bot evasion is used.
- V1 monitors at most 500 products per store.
- Large catalogs intentionally use conservative request pacing for reliability.
- A best-effort stale-write guard exists, but overlapping runs are not transactionally locked.
Pricing
Platform usage is included. Customers are not charged underlying compute, storage, or data-transfer usage separately.
| Event | Price | Charged when |
|---|---|---|
| Actor start | $0.00005 | Once per run |
| Product checked | $0.00005 | For each successfully fetched and validated Shopify product |
| Change detected | $0.008 | For each change result written to the dataset |
That is $0.05 per 1,000 successfully checked products and $8 per 1,000 detected changes. A quiet scheduled run still costs product-check fees because the catalog must be checked to determine that nothing changed.
Examples:
- 10 products and no changes: $0.00055.
- 500 products and no changes: $0.02505.
- 500 products and one detected change: $0.03305.
- 500 products and five detected changes: $0.06505.
Local development
npm installnpm run buildnpm run typechecknpm testnpm start