Shopify Products Scraper - Prices, Variants & Stock
Pricing
from $0.80 / 1,000 products
Shopify Products Scraper - Prices, Variants & Stock
Scrape all products from a Shopify store or collection: title, prices, compare-at price, discount %, variants with SKU and stock, options, images, tags, vendor, description and currency. Works on headless stores too. No browser. $0.80 per 1,000 products; failed or non-Shopify stores are free.
Pricing
from $0.80 / 1,000 products
Rating
0.0
(0)
Developer
Tenfold Fleet
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
What does Shopify Products Scraper do?
Shopify Products Scraper extracts every product from any Shopify store through the store's public product feed (/products.json) and returns clean, structured data: title, prices, compare-at price, discount %, variants with SKU and stock, options, images, tags, vendor, product type, description, dates and store currency.
Paste a store URL to get the whole catalogue, a collection URL to get one category, a product URL to get a single product, or a store search URL (/search?q=runner) to get the matching products. It also works on many headless Shopify stores (Hydrogen / Next.js frontends such as Gymshark or Fashion Nova): when the storefront hides the feed, the actor finds the store's *.myshopify.com address and reads the products from there.
It is a Shopify product API without an API key: plain HTTP requests, no browser, so it is fast (250 products per request) and cheap: $0.80 per 1,000 products.
Why use a Shopify scraper?
- 💸 Competitor price monitoring: track prices, discounts and stock of competing Shopify stores every day.
- 🛍️ Dropshipping and product research: find what a store sells, its best price points, vendors and new launches (
createdAt,publishedAt). - 📦 Catalogue migration and backup: export a full product catalogue with variants, SKUs, options and image URLs to CSV or Excel.
- 🏷️ Sale and discount tracking:
compareAtPriceanddiscountPercentshow what is on sale and by how much. - 📈 Market and brand intelligence: compare assortments, product types and tags across many brands at once.
- 🤖 AI agents and data pipelines: call it from the Apify API, MCP server, Make, Zapier or n8n and get clean JSON.
What data can it extract?
| Field | Example |
|---|---|
store, storeName | allbirds.com, Allbirds |
productId, handle, url | 7340901859408, womens-tree-runner, product page link |
title, vendor, productType | Women's Tree Runner, Allbirds, Shoes |
tags | ["womens", "sale"] |
currency | USD (store currency) |
priceMin, priceMax | 25, 120 |
compareAtPrice, discountPercent | 50, 50 |
available | true if any variant is in stock |
variantCount, variants | id, SKU, title, price, compare-at price, availability, option1-3 per variant |
options | [{ "name": "Size", "values": ["5", "6", "7"] }] |
imageUrl, images | image URLs on the Shopify CDN |
descriptionText | description with HTML stripped |
createdAt, updatedAt, publishedAt | ISO 8601 timestamps |
How to scrape products from a Shopify store
- Click Try for free.
- Add one or more store, collection or product URLs, e.g.
allbirds.comorhttps://www.allbirds.com/collections/mens. - Optionally set a keyword filter, a max products per store, or switch on one row per variant.
- Click Start and download the products as JSON, CSV, Excel or HTML, or fetch them through the API.
How much does it cost to scrape Shopify?
You pay $0.0008 per product, which is $0.80 per 1,000 products, plus a tiny $0.00005 start fee per run. With One row per variant on, each variant row counts as one result. Stores that fail (not Shopify, password-protected, blocked, empty collection, no keyword matches) and unsupported URLs (blog posts, about pages, filtered collections) are reported in the dataset with an error field and are never charged, so a typo never turns into a whole-store scrape. The same store pasted twice (allbirds.com and www.allbirds.com) is scraped and charged once. Set a maximum cost per run in the run options and the actor stops cleanly when it is reached. Apify's free monthly credit covers thousands of products.
Input
{"urls": ["https://www.allbirds.com/collections/mens","kyliecosmetics.com","gymshark.com","https://www.allbirds.com/products/womens-tree-runners"],"keyword": "runner, hoodie","maxProductsPerStore": 0,"oneRowPerVariant": false,"includeDescription": true}
Output
{"store": "allbirds.com","storeName": "Allbirds","productId": 7340901859408,"title": "Women's Allbirds Flip Flop - Dusty Pink","handle": "womens-allbirds-flip-flop-dusty-pink","url": "https://www.allbirds.com/products/womens-allbirds-flip-flop-dusty-pink","vendor": "Allbirds","productType": "Shoes","tags": ["allbirds::gender => womens", "shoprunner"],"currency": "USD","priceMin": 25,"priceMax": 25,"compareAtPrice": 50,"discountPercent": 50,"available": true,"variantCount": 7,"variants": [{ "id": 42146889039952, "sku": "A12513W050", "title": "5", "price": 25, "compareAtPrice": 50, "available": false, "option1": "5", "option2": null, "option3": null }],"options": [{ "name": "Size", "values": ["5", "6", "7", "8", "9", "10", "11"] }],"imageUrl": "https://cdn.shopify.com/s/files/1/1104/4168/files/A12513_PDP_LEFT.png","images": ["https://cdn.shopify.com/s/files/1/1104/4168/files/A12513_PDP_LEFT.png"],"descriptionText": "Sun on your feet. Comfort underneath...","createdAt": "2026-03-27T21:03:50.000Z","updatedAt": "2026-10-01T02:35:59.000Z","publishedAt": "2026-09-25T23:58:13.000Z","collection": null,"input": "allbirds.com","scrapedAt": "2026-10-01T09:00:00.000Z"}
With One row per variant, each row also has variantId, variantTitle, sku, price, option1-option3, and compareAtPrice, discountPercent and available refer to that variant. The full images list and descriptionText are on the first variant row of each product (every row keeps imageUrl); the Variants view in the Output tab shows SKU, variant and price columns. You can download the dataset in various formats such as JSON, HTML, CSV, or Excel. Failed inputs appear as { "input": "...", "error": "..." } rows.
Tips
- Collection URLs are cheaper than whole stores when you only need one category.
- Product-level
compareAtPriceanddiscountPercentcome from the cheapest in-stock variant; switch on one row per variant to see every variant's discount. - Shopify serves at most 25,000 products per listing. When a listing hits that limit you get a notice row; add collection URLs to get the rest.
- Max products per store counts products. With one row per variant on, 100 products can mean thousands of rows, so set a maximum cost per run as well.
- Schedule the actor daily on the same stores to build a price history or catch new products.
- Prices are in the store's base currency (
currency), as published in its product feed.
FAQ
Does it work on any Shopify store?
On any store that has a public storefront. Password-protected stores and stores that block automated traffic return a free error row. Headless stores work when their *.myshopify.com domain is discoverable; you can also paste that domain directly.
How do I know if a website is a Shopify store?
Just add it. Non-Shopify sites return a free Not a Shopify store error row, so testing a list of domains costs only the $0.00005 run start fee.
Do I need a Shopify API key or login?
No. The actor only reads public product data that the store publishes to every visitor.
Is inventory quantity included?
Shopify's public feed shows whether each variant is available (in stock), not exact stock counts. If a store hides stock entirely, available is null (unknown) rather than a wrong false.
Which URLs can I paste?
The store home page, /collections/<handle>, /products/<handle> and /search?q=<term> URLs, with or without a language prefix like /en-gb/. Anything else returns a free error row that tells you which URL to use instead.
What happens if the run stops or restarts?
The actor saves its progress, so if Apify restarts the run on another server it continues where it left off instead of charging again. If your maximum cost per run is reached, inputs that were not started get a free Not processed row.
Can I use it from code or AI agents?
Yes, through the Apify API, the JavaScript or Python client, or the Apify MCP server.
Support
Found a Shopify store that does not parse? Open an issue in the Issues tab.
This actor only reads publicly available product information from Shopify storefronts. It does not log in, bypass password pages or access controls, or collect personal data.