Shopify Products Scraper & Price Change Monitor
Pricing
from $1.00 / 1,000 products
Shopify Products Scraper & Price Change Monitor
Export any Shopify store's public product catalogue: titles, variants, SKUs, prices, compare-at prices, stock status, images and tags. Monitor mode returns only new, changed and removed products, so scheduled price tracking costs only for changes.
Pricing
from $1.00 / 1,000 products
Rating
0.0
(0)
Developer
Brisa Works
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
This Shopify products scraper exports the public product catalogue of any Shopify store — titles, variants, SKUs, prices, compare-at prices, stock status, images, tags — from the store's own /products.json. Switch on change monitoring and scheduled runs return only what changed since last time: new products, price and stock changes, and removals.
What it does
- Reads each store's public
/products.jsoncatalogue, 250 products per page, up to your limit. - Returns one row per product with its variants nested (a Variants view flattens them to one row per variant).
- Change monitor: remembers each store's catalogue and marks products
new,changed(with a list of changes: price, compare-at price, availability, title, variants added or removed) orremoved. With Only return changes on, unchanged products are neither returned nor charged. - Respects each store's robots.txt (including Crawl-delay) and requests at most one page every 2 seconds per store.
- Collects product catalogue data only: no customer, order or contact data.
Typical uses: competitor price tracking, stock monitoring for resellers, catalogue exports for analysis, alerting on new drops.
How to use
- Add store URLs (any page of the store works).
- Set the maximum products per store.
- For monitoring, turn on Monitor changes between runs and schedule the Actor (e.g. daily). The first run returns everything as
new. - Export the dataset as JSON, CSV or Excel (the Variants view gives one row per variant), read it through the Apify API, or send changes to Slack, email or a spreadsheet with Apify integrations.
Input
| Field | Description |
|---|---|
storeUrls | Shopify store URLs (required). |
maxProductsPerStore | Default 1,000. |
includeDescription | Add the description as plain text. |
monitorChanges | Compare with the previous run. |
onlyChanges | In monitor mode, return only new/changed/removed products (default on). |
{ "storeUrls": ["https://www.allbirds.com"], "maxProductsPerStore": 20, "monitorChanges": true }
Output
One row per product (illustrative values from a fictional store):
{"store": "https://shop.example.com","productId": 1001,"title": "Wool Runner - Natural Grey","handle": "wool-runner-natural-grey","url": "https://shop.example.com/products/wool-runner-natural-grey","vendor": "Example Outfitters","minPrice": 95,"maxPrice": 95,"available": true,"variantCount": 2,"variants": [{ "variantId": 2001, "title": "8", "sku": "WR-GRY-08", "price": 95, "compareAtPrice": 110, "available": true, "options": ["8"] }],"changeType": "changed","changes": [{ "field": "price", "variantId": 2001, "before": 110, "after": 95 }]}
Prices are in the store's own currency, as Shopify publishes them. changeType and changes appear in monitor mode only.
Pricing
| Event | Price | Per 1,000 | Charged when |
|---|---|---|---|
product | $0.001 | $1.00 | A product is saved (in change-only mode: only new, changed or removed products) |
Stores that block /products.json, password-protected stores and non-Shopify sites return a free status row.
How much does it cost to scrape a Shopify store?
- A 2,000-product catalogue: $2.00.
- Daily price monitoring of that store with Only return changes on: the first run $2.00, then $0.001 per new, changed or removed product (a day with 30 changes costs $0.03).
- Apify adds its standard small run-start fee.
Set a maximum cost per run in the run options: the Actor checks it before saving each product and stops before going over it. In monitor mode, the products it did deliver are remembered, so the next run neither repeats nor re-charges them.
FAQ
How do I know if a store runs on Shopify?
Add it anyway: a non-Shopify site returns a free not_shopify row.
Can I track competitor prices and stock?
Yes. Turn on Monitor changes between runs and schedule the Actor. Each run reports price, compare-at price, availability, title and variant changes since the previous run, plus new and removed products.
Does it get stock quantities?
No. Shopify's public catalogue publishes an available flag per variant, not a quantity.
Is it legal to scrape Shopify stores?
The Actor reads only the public product catalogue the store publishes at /products.json, honours each store's robots.txt and paces its requests. Check each store's own terms of use before monitoring it.
Limits
- Only works on Shopify storefronts that keep
/products.jsonpublic; some stores disable or password-protect it. - Stock is Shopify's
availableflag per variant, not a quantity. - A store with a robots.txt Crawl-delay is fetched more slowly; a 10,000-product store takes about 40 pages, roughly 80 seconds at the default pace.
- Removals are reported only when the whole catalogue was scanned without errors (not when your product limit or a failed page cut the scan short).
- If a store's robots.txt cannot be read because of a server error, the store is skipped (
robots_unreachable), as the robots.txt standard (RFC 9309) requires. - Check each store's own terms of use before monitoring it.
Data source
- The store's public Shopify storefront endpoint
/products.json?limit=250&page=N(fieldsid,title,handle,vendor,product_type,tags,variants,images…), checked live on 2026-10-14 against https://www.allbirds.com/products.json, whose Shopify-default robots.txt (read 2026-10-14) does not disallow it.
Privacy
No personal data is collected: the endpoint carries product catalogue data only.
Support
Open an issue on the Actor's Issues tab; issues are answered within a few days and fixed within 14 days.