Shopify Scraper — Products, Prices & Inventory Monitor
Pricing
from $3.00 / 1,000 results
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
16 days ago
Last modified
Categories
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:
| changeType | meaning |
|---|---|
price_drop / price_rise | a variant's price moved (with oldPrice, newPrice, changePct) |
back_in_stock / out_of_stock | a variant's availability flipped |
new_product / removed_product | a product appeared or disappeared |
variant_added / variant_removed | a 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:
| field | meaning |
|---|---|
priceLow30 / priceHigh30 | the real 30-day low & high the actor actually observed |
isRealLow | true = 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 / lastConfirmedAt | data-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/isOnSaleCollectionfrom 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
| Field | Description |
|---|---|
storeUrls | Store domains or URLs (gymshark.com, https://allbirds.com). A /collections/<handle> URL limits to that collection. |
mode | catalog (full dump) or monitor (only changes since last run). |
collections | Limit to specific collection handles. Empty = whole store. |
minPriceChangePct | Monitor: ignore price moves smaller than this %. |
reportNewOnFirstRun | Monitor: emit all products as new on the first (baseline) run. |
priceHistory | Monitor: track a rolling price history so change rows get priceLow30/priceHigh30/isRealLow (real vs fake discount) + freshness stamps. |
includeCollections | Tag products with their collections + isBestSeller/isOnSaleCollection flags. |
maxCollections | Cap collections fetched per store when tagging is on. |
flattenVariants | Catalog: output one row per variant (size/color) instead of one per product — spreadsheet-friendly. |
includeVariants | Include the per-variant array (id, sku, price, availability) on each product. Default on. |
includeImages | Include featuredImage + the images array on each product. Default on. |
maxProductsPerStore | Cap 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.