Shopify Store Monitor: Price Drops, Stock & New Products avatar

Shopify Store Monitor: Price Drops, Stock & New Products

Pricing

from $1.00 / 1,000 products

Go to Apify Store
Shopify Store Monitor: Price Drops, Stock & New Products

Shopify Store Monitor: Price Drops, Stock & New Products

Track any Shopify store or collection. Get price drops, price increases, back-in-stock, sold-out, new and removed products since your last run, or export the full product catalog with variants, SKUs and prices. No login.

Pricing

from $1.00 / 1,000 products

Rating

0.0

(0)

Developer

Đăng lê

Đăng lê

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

13 hours ago

Last modified

Categories

Share

Track any Shopify store or collection and get only what changed since your last run: price drops, price increases, back in stock, out of stock, new products and removed products, down to the exact variant (size, color, SKU). Or switch monitoring off and export the full product catalog with every variant, price, compare-at price and stock status.

The Actor reads the public product feed that every Shopify storefront serves. No login, no cookies, no browser, no proxies.

What you get

  • Change monitoring: schedule the Actor daily or hourly and receive one result per product and change type, with old price, new price and % change for each affected variant.
  • Pay only for changes: in monitor mode the first run saves a snapshot and returns nothing; later runs return changes only. Watching 10 stores with 20,000 products costs nothing on quiet days.
  • Full catalog export: title, vendor, product type, tags, images, options, price range, compare-at price, on-sale flag, stock status and every variant with SKU, options, price and weight.
  • Collections: paste a collection URL (.../collections/sale) to track only that collection.
  • Filters: title keywords, excluded words, vendors, product types, price range, in-stock only.
  • Headless stores: when www. serves a custom front end, the Actor also tries the bare domain where the Shopify feed lives (and the other way round).

Use cases

  • Watch competitor prices and discounts and react the same day.
  • Get restock alerts for sold-out sizes or limited drops.
  • Spot new product launches and discontinued items at brands you follow.
  • Build price history, deal feeds, affiliate catalogs or market research datasets.
  • Feed clean product data to spreadsheets, BI tools, CRMs or AI agents.

Input

FieldDescription
storesStore domains or URLs (allbirds.com, https://www.gymshark.com) or collection URLs (https://gymshark.com/collections/outlet-10).
monitorChangesOff (default): return all products. On: return only changes since the previous run with the same monitorName.
monitorNameSeparate monitors keep separate snapshots, e.g. competitors and restocks.
changeTypesReturn only some change types: price_drop, price_increase, back_in_stock, out_of_stock, new_product, removed_product. Empty = all.
minPriceChangePercentIgnore price changes smaller than this percentage.
keywords, excludeKeywordsKeep or drop products by words in the title.
vendors, productTypesKeep products from these vendors or of these types (exact name, case-insensitive).
minPrice, maxPricePrice range for the lowest variant price, in the store's currency.
onlyAvailableCatalog mode: keep products with at least one variant in stock.
includeDescriptionCatalog mode: add the product description as HTML and plain text.
maxResultsStop after this many results. In monitor mode, changes over the limit are kept and reported in the next run.

Monitor price drops of at least 10% and restocks at two stores:

{
"stores": ["allbirds.com", "https://gymshark.com/collections/outlet-10"],
"monitorChanges": true,
"monitorName": "competitors",
"changeTypes": ["price_drop", "back_in_stock"],
"minPriceChangePercent": 10
}

Export a catalog:

{
"stores": ["colourpop.com"],
"onlyAvailable": true,
"maxPrice": 30
}

How monitoring works

  1. Turn on monitorChanges and run once. The Actor saves a snapshot of every product and variant to a named key-value store (shopify-monitor-<monitorName>) in your Apify account and returns no results.
  2. Add a schedule (Apify Console → Schedules), for example every day at 8:00.
  3. Each run compares the store with the last snapshot and returns the changes. Add a store later and it gets its own first snapshot.

Connect the dataset to Slack, email, Google Sheets, Zapier, Make or a webhook to get alerts.

Output

Monitor mode, one item per product and change type:

{
"changeType": "price_drop",
"store": "allbirds.com",
"storeName": "Allbirds",
"currency": "USD",
"productId": 7340901859408,
"handle": "womens-allbirds-flip-flop-dusty-pink",
"title": "Women's Allbirds Flip Flop - Dusty Pink",
"vendor": "Allbirds",
"productType": "Shoes",
"url": "https://allbirds.com/products/womens-allbirds-flip-flop-dusty-pink",
"imageUrl": "https://cdn.shopify.com/s/files/1/1104/4168/files/A12513_26Q2_Allbirds-Flip-Flop-Dusty-Pink_PDP_LEFT.png?v=1774646345",
"priceMin": 25,
"priceMax": 25,
"available": true,
"variants": [
{ "variantId": 42146889203792, "title": "10", "sku": "A12513W100", "oldPrice": 35, "newPrice": 25, "priceChangePercent": -28.57, "available": true }
],
"previousCheckAt": "2026-10-23T08:00:00.000Z",
"detectedAt": "2026-10-24T08:00:00.000Z"
}

Catalog mode, one item per product:

{
"id": "allbirds.com:7340901859408",
"store": "allbirds.com",
"storeName": "Allbirds",
"currency": "USD",
"productId": 7340901859408,
"handle": "womens-allbirds-flip-flop-dusty-pink",
"title": "Women's Allbirds Flip Flop - Dusty Pink",
"vendor": "Allbirds",
"productType": "Shoes",
"tags": ["shoprunner"],
"url": "https://allbirds.com/products/womens-allbirds-flip-flop-dusty-pink",
"imageUrl": "https://cdn.shopify.com/s/files/1/1104/4168/files/A12513_26Q2_Allbirds-Flip-Flop-Dusty-Pink_PDP_LEFT.png?v=1774646345",
"images": ["https://cdn.shopify.com/s/files/1/1104/4168/files/A12513_26Q2_Allbirds-Flip-Flop-Dusty-Pink_PDP_LEFT.png?v=1774646345"],
"options": [{ "name": "Size", "values": ["5", "6", "7", "8", "9", "10", "11"] }],
"priceMin": 25,
"priceMax": 25,
"compareAtPriceMax": 50,
"onSale": true,
"available": true,
"variantsCount": 7,
"variants": [
{ "variantId": 42146889039952, "title": "5", "sku": "A12513W050", "options": ["5"], "price": 25, "compareAtPrice": 50, "available": false, "grams": 455 }
],
"publishedAt": "2026-03-27T21:03:50.000Z",
"createdAt": "2026-03-27T21:03:50.000Z",
"updatedAt": "2026-10-24T09:43:55.000Z",
"scrapedAt": "2026-10-24T08:00:00.000Z"
}

Prices are numbers in the store's currency. Fields the store does not provide are null. A run summary (stores scanned, stores without a public feed, products scanned, changes by type) is saved to the SUMMARY record in the key-value store.

Limits

  • Shopify serves at most 25,000 products per store or collection through the public feed. For bigger stores, the Actor scans the first 25,000, does not report removed products, and reports a product as new only if it was published after the previous check. Track collections to cover the rest.
  • Stock is in stock / out of stock per variant. Exact inventory counts are not public.
  • Stores that are password-protected, have the product feed disabled, or ask for a bot challenge are skipped and listed in SUMMARY. The Actor does not try to get around them.
  • Prices are the store's default currency and market. Market-specific prices are not included.

FAQ

Is this legal? The Actor reads only the public product feed that Shopify storefronts serve to every visitor. It does not log in, bypass protections or collect personal data.

How do I know if a site runs on Shopify? Just add it. Sites without a Shopify product feed are listed under storesWithoutShopifyFeed in SUMMARY.

Why did the first monitor run return nothing? It saved the snapshot that later runs compare against. Run it again (or wait for the schedule) to see changes.

Will I miss changes if I set maxResults? No. Changes over the limit are kept out of the snapshot and returned by the next run.