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. Tells real discounts from fake ones by checking every drop against the 30-day low. 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

16 days 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.