Shopify Product Scraper - Prices, Variants & Stock
Pricing
from $1.00 / 1,000 results
Shopify Product Scraper - Prices, Variants & Stock
Export products from any Shopify store, collection or product URL: prices, compare-at prices, every variant with SKU, barcode and stock status, images, vendor and tags. Fast JSON mode, keyword search, price & stock monitoring.
Pricing
from $1.00 / 1,000 results
Rating
2.1
(2)
Developer
Liang Undef
Maintained by CommunityActor stats
5
Bookmarked
119
Total users
0
Monthly active users
16 days ago
Last modified
Categories
Features
Share
Shopify Product Scraper – Prices, Variants, SKUs & Stock
Export the full product catalog of any public Shopify store – titles, prices, compare-at (sale) prices, every variant with SKU, barcode and stock status, images, vendor, product type and tags – as JSON, CSV, Excel or via API. No login, no Shopify API key, no store access needed.
What can this Shopify scraper do?
- 🛍️ Whole store: paste a store URL (e.g.
https://cadenlane.com) and get every published product. - 📂 One collection: paste a collection URL (e.g.
https://store.com/collections/sale). - 🔗 Single products: paste product URLs (e.g.
https://store.com/products/blue-shirt). - 🔎 Keyword search: set Search keyword to scrape only products matching a term in each store.
- 🧩 All variants: price, compare-at price, SKU, barcode, options (size/color…) and
availablefor every variant – or switch on One row per variant to get a flat table. - ⚡ Fast and cheap: catalog mode uses Shopify's public JSON endpoints (250 products per request) instead of a browser.
- 🔁 Price & stock monitoring: schedule the Actor (hourly/daily) and compare datasets to track price drops, restocks and new arrivals.
Use cases
- Competitor price monitoring and MAP / price-drop alerts
- Stock and restock tracking for dropshipping and resellers
- Product research, assortment and trend analysis
- Building product feeds / catalogs for comparison sites and marketplaces
- Feeding product data into AI agents, spreadsheets, BI dashboards or n8n / Make / Zapier workflows
How to use it
- Click Try for free.
- Add one or more Shopify store, collection or product URLs.
- (Optional) Set Max results, Search keyword or One row per variant.
- Click Start and download the data as JSON, CSV, Excel, XML or HTML, or fetch it through the Apify API.
Input
| Field | Type | Description |
|---|---|---|
startUrls | array | Shopify store, collection or product URLs. Required. |
q | string | Optional search keyword (uses a browser; slower). Leave empty for full catalog. |
maxItems | integer | Max results saved in total (0 = no limit). Default 1000. |
splitVariants | boolean | One output row per variant instead of per product. Default false. |
maxRequestsPerCrawl | integer | Safety limit on fetched pages. Default 200. |
proxyConfiguration | object | Apify Proxy settings (on by default). |
Example input:
{"startUrls": [{ "url": "https://cadenlane.com" }],"maxItems": 100,"splitVariants": false}
Output
One record per product (or per variant when splitVariants is on). Example (shortened):
{"id": 10321118036028,"title": "Personalized Kids' Blanket | Lilac Dream","handle": "personalized-kids-blanket-lilac-dream","url": "https://cadenlane.com/products/personalized-kids-blanket-lilac-dream","storeUrl": "https://cadenlane.com","vendor": "PTG","productType": "Blanket","tags": ["blanket", "kids", "purple"],"image": "https://cdn.shopify.com/s/files/.../MRS445845771.jpg","images": ["https://cdn.shopify.com/s/files/.../MRS445845771.jpg"],"price": 68,"maxPrice": 68,"compareAtPrice": null,"inStock": true,"variantsCount": 1,"availableVariantsCount": 1,"options": [{ "name": "Title", "values": ["Default Title"] }],"variants": [{"variantId": 50504442544188, "variantTitle": "Default Title","sku": "BLT-BLMK-LILDRE-0-DTO-OS", "barcode": "804887567","price": 68, "compareAtPrice": null, "available": true,"option1": "Default Title", "option2": null, "option3": null}],"descriptionHtml": "<p>...</p>","createdAt": "2026-10-21T10:00:00-04:00","updatedAt": "2026-10-25T08:00:00-04:00","scrapedAt": "2026-10-26T14:00:00.000Z"}
Output fields
| Field | Description |
|---|---|
title, handle, url | Product name, Shopify handle and product page URL |
vendor, productType, tags | Brand/vendor, product type and tags |
price / maxPrice | Lowest / highest variant price (store currency) |
compareAtPrice | Highest "compare at" (original) price – indicates a sale |
inStock | true if at least one variant is available (null if the store hides stock) |
variants[] | Every variant: id, title, SKU, barcode, price, compare-at price, availability, options, weight, image |
image, images[] | Main image and all image URLs |
descriptionHtml | Product description (HTML) |
createdAt, updatedAt, publishedAt | Shopify timestamps |
With One row per variant, each row also contains variantId, variantTitle, sku, barcode, available, option1–3, and price / inStock refer to that variant.
Pricing
This Actor uses pay-per-event pricing: you pay a small fee per Actor start and per result saved (see the Pricing tab for the current price). Platform usage (compute and proxy) is included – there are no other costs. Use Max results to cap the cost of a run. Example: 1,000 products ≈ $1.
FAQ
Does it work with every Shopify store?
It works with public Shopify stores that expose the standard /products.json endpoint (the vast majority). Password-protected stores or stores that disabled the endpoint return no data; the log says so.
Why is the stock status null in catalog mode for some stores?
Some stores hide availability in their JSON. Try product URLs (single product mode reads the .js endpoint) or keyword search.
Can I get inventory quantities?
Shopify does not publish exact quantities publicly; you get available per variant.
Is the currency included? Prices are in the store's default currency as returned by Shopify.
Can I monitor price changes?
Yes – create a Task, schedule it, and compare price / inStock between runs (or use Apify integrations / webhooks).
Is scraping Shopify stores legal? The Actor only reads publicly available product data. Make sure your use complies with the store's terms and applicable laws (e.g. GDPR). Contact us via the Issues tab if you need help or a feature.