Shopify Store Scraper & Price Monitor avatar

Shopify Store Scraper & Price Monitor

Pricing

from $1.00 / 1,000 products

Go to Apify Store
Shopify Store Scraper & Price Monitor

Shopify Store Scraper & Price Monitor

Every product, variant, price and stock status from any Shopify store, and exactly what changed since your last run: price drops, back in stock, sold out, new and removed products. Half a cent per store, a tenth of a cent per product. Stores that block the public feed are reported free.

Pricing

from $1.00 / 1,000 products

Rating

0.0

(0)

Developer

Asgard Labs

Asgard Labs

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

Shopify Store Scraper & Price Monitor – products, variants, stock, price changes

Give it Shopify shop addresses. Get the complete catalog of each shop: every product and variant with price, compare-at price, stock status, images, tags and options. Run it again with only changes on and you get exactly what moved since last time: new products, price changes with old and new value, back in stock, out of stock, removed products.

No proxies, no browser, no login. It reads the public product feed every Shopify shop publishes, 250 products per page, so a 10,000-product shop takes under a minute.

Shopify product data per store

  • title, handle, vendor, productType, tags, url, store, currency
  • minPrice, maxPrice, onSale, maxDiscountPct, available, variantCount, availableVariantCount
  • variants – id, title, sku, price, compareAtPrice, available, options, weight, dates
  • images, featuredImage, options, createdAt, updatedAt, publishedAt
  • statusnew, changed, unchanged or removed; changesprice (from, to), back-in-stock, out-of-stock, variant-added, variant-removed; firstSeenAt
  • descriptionText / descriptionHtml when includeBody is on

Per shop, the run summary also records the shop's name, currency, country and its myshopify address.

Use cases

  • Watch competitor prices daily.
  • Track when a sold-out item returns.
  • Build a product list for a price-comparison site.
  • Audit a client's catalog.

Input

FieldDefaultMeaning
storesShop domains or URLs. Custom domains work. A pasted collection link (…/collections/sale) reads that collection only.
maxProductsPerStore00 = whole catalog.
collectionCollection handle, e.g. sale. A misspelled handle is reported as an error, not as an empty shop.
onlyChangesfalseOutput only new / changed / removed products since the last run. History is kept per shop in a key-value store.
onSaleOnly, availableOnly, vendor, productType, tags, minPrice, maxPriceFilters.
includeBody, includeCollectionsfalseProduct description; list of collections per shop.
timeoutSecs300Time budget per shop.
concurrency5Shops read in parallel.
stateStoreNameshopify-monitor-stateWhere the change history lives. Use a different name to start fresh.

Output example

{ "id": 6970463658064, "handle": "mens-tree-runners", "title": "Men's Tree Runners", "vendor": "Allbirds", "productType": "Shoes", "tags": ["men", "runner"],
"url": "https://allbirds.com/products/mens-tree-runners", "store": "allbirds.com", "currency": "USD",
"minPrice": 98, "maxPrice": 98, "onSale": false, "maxDiscountPct": 0, "available": true, "variantCount": 14, "availableVariantCount": 11,
"images": ["https://cdn.shopify.com/…"], "featuredImage": "…", "options": [{ "name": "Size", "values": ["8", "9"] }],
"variants": [{ "id": 4046, "title": "8", "sku": "TR1M-…", "price": 98, "compareAtPrice": null, "available": true, "option1": "8" }],
"status": "changed", "changes": [{ "variantId": 4046, "type": "price", "from": 110, "to": 98 }], "firstSeenAt": "2026-08-01T…" }

How to use

  1. Paste your store domains, one per line into the input form. The example input is ready to run as is.
  2. Click Start. Rows appear in the Output tab as they are found.
  3. Download the table as CSV, JSON or Excel, or read it through the API.
  4. For monitoring, create a Schedule and switch on onlyChanges: later runs return only what changed, and only that is charged.

Pricing

Pay per event: store-scan $0.005 per shop that was read, product $0.001 per product in the output. A 2,000-product catalog costs about $2. A daily onlyChanges run on 50 shops usually costs well under $0.50, because unchanged products are not output and not charged. Shops that are blocked, dead, not Shopify, or misspelled are free.

Good to know

  • "On sale" depends on the shop. A product counts as on sale only when the shop publishes a compare-at price higher than the price. Shops that show discounts in other ways (Gymshark and Allbirds among them) will show onSale: false.
  • Removed products are only reported on a full scan. With a product cap, a collection or a filter, the run sees part of the catalog, so it does not guess what was removed. The history of unseen products is kept for the next full scan.
  • Stock is yes/no. The public feed shows in stock or sold out per variant, never quantities.
  • Shops that switch off the public feed (password-protected or some enterprise setups) are reported as Shopify store but products.json is disabled/blocked and not charged.
  • Errors are in plain words: ENOTFOUND (domain not found), timeout, collection not found: xyz, not a Shopify store.

Use from code or an AI agent

Every run can be started and read through the Apify API, the JavaScript and Python clients, or an AI agent with tool access. Open the API tab on this page for ready-made snippets. Pricing is per event, so an agent pays only for what it receives.

FAQ

Does it work on custom domains, not only myshopify.com? Yes. Give it the shop's public address, e.g. allbirds.com. The shop's own currency, name and country come back with every product.

Can it see inventory quantities? No. Shopify's public feed shows in stock or sold out per variant, not how many. That is what available and availableVariantCount report.

What happens when a store has switched off the public product feed? The store is reported as Shopify store but products.json is disabled/blocked and is not charged. Nothing is guessed.

How does "only changes" billing work? The first full read charges every product once. Later runs with onlyChanges on charge only products that are new, changed or removed since the last run, so daily monitoring of a 1,000-product shop usually costs a few cents.

Can I read one collection only? Yes. Paste the collection link, e.g. shop.com/collections/sale, or set the collection handle. /collections/all means the whole catalogue. A misspelled handle is reported as an error, not as zero products.