Shopify Scraper — Products, Prices & Inventory Monitor avatar

Shopify Scraper — Products, Prices & Inventory Monitor

Pricing

from $3.00 / 1,000 results

Go to Apify Store
Shopify Scraper — Products, Prices & Inventory Monitor

Shopify Scraper — Products, Prices & Inventory Monitor

Scrape any Shopify store's products, prices and variants, and monitor price drops, restocks and new products. No API keys. Fast, multi-store, exportable.

Pricing

from $3.00 / 1,000 results

Rating

0.0

(0)

Developer

Sasha Ebashu

Sasha Ebashu

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Shopify Price & Inventory Monitor

Scrape every product from any Shopify store — titles, vendors, prices, compare-at prices, variants, stock status and images — and monitor changes over time: price drops, price rises, restocks, sell-outs, new and removed products.

Just enter a store domain. No API keys, no login.

Two modes

1. Catalog — full product dump

Get the complete catalog of any store. One row per product with all variants (size/color, price, compare-at price, SKU, in-stock flag), images, tags, vendor and timestamps. Run across many stores at once. Export to JSON, CSV, Excel or Google Sheets.

2. Monitor — only what changed 🔥

Run it on a schedule. The actor remembers the previous run and outputs only the differences:

changeTypemeaning
price_drop / price_risea variant's price moved (with oldPrice, newPrice, changePct)
back_in_stock / out_of_stocka variant's availability flipped
new_product / removed_producta product appeared or disappeared
variant_added / variant_removeda size/color was added or dropped

Perfect for competitor price tracking, restock alerts, dropshipping research and MAP-violation monitoring — the things you check again and again.

Real vs fake discounts — price history 🕵️

Shopify's compare_at_price (the crossed-out "was" price) is set by the store, so onSale / discountPct can be inflated. Turn on priceHistory (monitor mode) and the actor keeps its own rolling price history per product. Every price_drop / price_rise row then carries:

fieldmeaning
priceLow30 / priceHigh30the real 30-day low & high the actor actually observed
isRealLowtrue = the new price is at/below the prior 30-day low (a genuine deal); false = a "sale" back to a price the item already had (a fake discount)
firstSeenAt / lastConfirmedAtdata-freshness stamps — when the product was first seen and last confirmed present

Accuracy builds up over the first few scheduled runs (the history needs a few data points). Off by default, so existing monitor runs are unchanged.

Why this one

  • Monitoring, not just a snapshot — most Shopify scrapers only dump the catalog once. This one tracks change over time, so a daily schedule actually tells you something.
  • Fast & cheap — reads the store's public product feed directly with parallel pagination (≈9,000 products in a few seconds), datacenter proxy is enough.
  • Multi-store — watch dozens of competitors in a single run.
  • Currency & shop name included — pulled from the store's metadata, so prices are unambiguous across regions.
  • Collection tagging & bestseller flags — optionally tag every product with the collections (categories) it belongs to, and flag isBestSeller / isOnSaleCollection from the store's own best-seller and sale collections — data that the raw product feed does not expose.
  • Run digest — monitor runs write a summary (price drops, restocks, sold-outs, new/removed counts) to the key-value store under DIGEST, so a scheduled run gives you a glanceable report, not just raw rows.
  • Clear status, no silent failures — if a store has no public feed, is password-protected or blocks the request, it's reported in the log instead of just returning nothing.

Input

FieldDescription
storeUrlsStore domains or URLs (gymshark.com, https://allbirds.com). A /collections/<handle> URL limits to that collection.
modecatalog (full dump) or monitor (only changes since last run).
collectionsLimit to specific collection handles. Empty = whole store.
minPriceChangePctMonitor: ignore price moves smaller than this %.
reportNewOnFirstRunMonitor: emit all products as new on the first (baseline) run.
priceHistoryMonitor: track a rolling price history so change rows get priceLow30/priceHigh30/isRealLow (real vs fake discount) + freshness stamps.
includeCollectionsTag products with their collections + isBestSeller/isOnSaleCollection flags.
maxCollectionsCap collections fetched per store when tagging is on.
flattenVariantsCatalog: output one row per variant (size/color) instead of one per product — spreadsheet-friendly.
includeVariantsInclude the per-variant array (id, sku, price, availability) on each product. Default on.
includeImagesInclude featuredImage + the images array on each product. Default on.
maxProductsPerStoreCap per store (0 = unlimited).

Output (catalog)

store, productId, title, handle, url, vendor, productType, tags, variantsCount, inStockVariants, available, minPrice, maxPrice, compareAtPrice, onSale, discountPct, createdAt, updatedAt, publishedAt, featuredImage, images, variants[].

Notes

Works on any standard Shopify store that exposes the public /products.json feed (the vast majority do). Monitor mode stores its baseline in the actor's key-value store, so keep using the same actor/schedule for change tracking to work.