Shopify Scraper & Price Monitor
Pricing
$1.00 / 1,000 products
Shopify Scraper & Price Monitor
Scrape every product of any Shopify store: prices, variants, SKU, stock and images. Schedule it to catch new products, price drops and restocks between runs. No API key, no login. $1 per 1,000 products.
Pricing
$1.00 / 1,000 products
Rating
0.0
(0)
Developer
jérémy PINSON
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
15 hours ago
Last modified
Categories
Share
Shopify Scraper & Price Monitor: Products, Prices, Stock & Changes
Shopify Scraper & Price Monitor extracts the full product catalog of any Shopify store (prices, variants, SKU, stock, images) and tells you what changed since the last run: new products, price drops, price increases, restocks and sold-out items.
No API key, no browser, no login: it reads the public product feed that every Shopify store exposes, so it is fast, cheap and very reliable. A 10,000-product catalog is scraped in minutes.
What does Shopify Scraper & Price Monitor do?
- 🛍️ Scrapes all products of one or hundreds of Shopify stores: title, vendor, product type, tags, description, images, options.
- 💰 Returns min/max price, compare-at price, discount % and whether the product is on sale.
- 📦 Returns stock status per product and per variant (size, color, SKU).
- 🔔 Detects changes between runs:
NEW,PRICE_DROP,PRICE_INCREASE,BACK_IN_STOCK,OUT_OF_STOCK,VARIANTS_CHANGED,REMOVED. - 💸 Pay only for changes: enable Output only changed products and schedule it daily.
Who is it for?
- E-commerce brands and dropshippers: monitor competitor prices and promotions every day.
- Product researchers: spot the new launches and bestsellers of successful Shopify stores.
- Resellers and collectors: get restock alerts for limited drops (sneakers, collectibles, fashion).
- Agencies and analysts: sync catalogs or run market studies across hundreds of stores.
How much does it cost to scrape a Shopify store?
You pay $1 per 1,000 products in the output (see the Pricing tab for the exact price of your plan).
| Use case | Products in output | Cost |
|---|---|---|
| Try it on one store, 50 products | 50 | $0.05 |
| Full catalog of a 1,000-product store | 1,000 | $1 |
| Daily price monitor of a 1,000-product store, Output only changed products on | usually 10 to 50 per day | a few cents per day |
Apify's free plan includes monthly credits, which are enough to test the Actor on several stores.
How to scrape a Shopify store
- Paste one or more store URLs (any page of the store works, e.g.
https://www.allbirds.com). - Keep Track changes between runs enabled.
- Click Start. The first run creates the baseline: every product is marked
FIRST_SEEN. - Schedule it daily or hourly. Each run reports what changed.
- Get alerts with a webhook, Slack, email or Google Sheets integration.
Input
| Field | What it does |
|---|---|
storeUrls | Shopify stores to scrape, any page of the store |
maxProductsPerStore | Limit per store, 0 = whole catalog (needed to detect REMOVED) |
trackChanges | Compare with the previous run and flag changes |
onlyChanges | Output only new or changed products (cheaper monitoring) |
includeVariants | Add the list of variants with price, SKU and stock |
proxyConfiguration | Usually not needed |
{"storeUrls": [{ "url": "https://www.allbirds.com" }, { "url": "https://gymshark.com" }],"trackChanges": true,"onlyChanges": true,"includeVariants": true}
Output
You can download the dataset as JSON, CSV, Excel, XML or HTML, or read it with the API.
{"store": "https://www.allbirds.com","productId": 6604351651920,"title": "Men's Tree Runners","url": "https://www.allbirds.com/products/mens-tree-runners","vendor": "Allbirds","priceMin": 79,"priceMax": 98,"compareAtPriceMax": 98,"onSale": true,"discountPercent": 19,"available": true,"variantsCount": 14,"variantsAvailable": 11,"changeType": "PRICE_DROP","changes": ["min price 98 -> 79"],"previousPriceMin": 98,"scrapedAt": "2026-10-27T08:00:00.000Z"}
| Field | Description |
|---|---|
store, productId, url, handle | Where the product lives |
title, vendor, productType, tags, description, images | Product details |
priceMin, priceMax, compareAtPriceMax, onSale, discountPercent | Pricing |
available, variantsCount, variantsAvailable, variants | Stock, per product and per variant |
changeType, changes, previousPriceMin | What changed since the previous run |
Integrations and API
- Run it from your code with the Apify API or the JavaScript and Python clients.
- Connect it to Make, Zapier, n8n, Google Sheets, Slack or any webhook.
- AI agents can find and run it through the Apify MCP server.
from apify_client import ApifyClientclient = ApifyClient("<YOUR_API_TOKEN>")run = client.actor("<username>/shopify-scraper").call(run_input={"storeUrls": [{"url": "https://www.allbirds.com"}], "maxProductsPerStore": 50})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["title"], item["priceMin"], item["available"])
FAQ
Does it work with every store? It works with any store running on Shopify whose catalog is public, which is the vast majority. Password-protected stores and non-Shopify sites are skipped with a warning.
Is it legal to scrape Shopify stores? The Actor only reads public product information that the store publishes for every visitor. It does not collect personal data. Check the terms of the stores you monitor for your own use case.
How is "REMOVED" detected? By comparing with the snapshot of the previous run. It is only reported when the whole catalog is fetched (Max products per store = 0), and a sudden drop of more than half the catalog is treated as a fetch error rather than a mass removal.
Do I need proxies? Usually not. Enable Apify Proxy if a store rate-limits you.
Can I monitor hundreds of stores? Yes. Paste all the URLs in one run, or split them across several scheduled tasks.
Support
Found a bug or need a field? Open an issue in the Issues tab, I usually reply within 24 h.