Shopify Store Scraper - Products, Variants, Prices & Leads
Pricing
$4.00 / 1,000 result scrapeds
Shopify Store Scraper - Products, Variants, Prices & Leads
Scrape any Shopify store: products with variants, SKUs, prices, compare-at discounts, stock, images, options & tags, plus store intelligence and merchant leads (email, phone, socials). Modes for store, collection or product. Monitoring for new products & price drops. No login.
Pricing
$4.00 / 1,000 result scrapeds
Rating
0.0
(0)
Developer
Scrape Sage
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Shopify Store Scraper — Products, Variants, Prices, Inventory & Store Leads
Extract complete product data from any Shopify store — every product with all variants, SKUs, barcodes, prices, compare-at discounts, inventory/stock, images, options and tags — plus store intelligence (currency, country, payment methods, theme, product & collection counts) and the merchant's contact lead (email, phone, social profiles). Works on millions of Shopify stores. No login, no app, no API key.
Built for dropshippers, product researchers, price-monitoring teams, and agencies/app-developers who sell to Shopify merchants. Turn any store URL into a structured catalog — and turn the store owner into a ready B2B lead.
Why this Shopify scraper?
Generic "paste-a-URL" crawlers grab a few visible fields and miss the data that actually matters. This actor reads Shopify's public product, collection and store endpoints directly and ships the richest dataset in the category — full variant arrays, computed price/discount/stock signals, store-level intelligence, and the merchant contact lead, in one clean table.
| Data | Generic crawlers | This actor |
|---|---|---|
| Product title, vendor, type, tags, description | partial | ✅ |
| All variants — SKU, barcode, price, compare-at, availability, weight, options | ❌ / partial | ✅ |
| Computed price range, discount %, on-sale flag | ❌ | ✅ |
| Computed in-stock + in-stock variant count | ❌ | ✅ |
| All product images (src, alt, position, dimensions) | partial | ✅ |
| Store intelligence — currency, country, payment cards, theme, product/collection counts | ❌ | ✅ |
| Store-owner lead — email, phone, Instagram/Facebook/TikTok/X/YouTube/Pinterest/LinkedIn | ❌ | ✅ |
| Scrape a whole store, a collection, or single products | partial | ✅ |
| Monitoring mode — only new products & price/stock changes | ❌ | ✅ |
| One clean dataset, no empty columns | ❌ | ✅ |
Use cases
- Product & niche research — pull a competitor's full catalog with prices, variants and best-sellers signals to spot winning products and gaps.
- Price & inventory monitoring — track price drops, sell-outs and back-in-stock events across the stores you care about, on a schedule.
- Dropshipping & sourcing — export catalogs with SKUs, variants and images to seed your own store or supplier research.
- Competitive intelligence — compare assortment, pricing, discounts and payment options across an entire set of Shopify stores.
- B2B lead generation — use Store leads mode to prospect Shopify merchants: contact email, phone, socials and tech stack, ready for your CRM or outreach (perfect for agencies, app developers, 3PLs and B2B vendors who sell to Shopify brands).
How to use
- Sign up for Apify — the free plan is enough to try this actor.
- Open the Shopify Store Scraper, choose a mode (Products by default), and paste one or more store URLs (e.g.
https://www.allbirds.comor justrothys.com). - Click Start and watch results stream into the dataset table.
- Export as JSON, CSV, Excel, XML, or RSS — or pull results programmatically via the Apify API.
Input
{"mode": "products","storeUrls": ["https://www.allbirds.com", "rothys.com"],"maxProductsPerStore": 0,"enrichStoreLeads": true,"monitorMode": false}
- mode (default
products) —products(full catalog of each store in storeUrls),collection(products inside the collectionUrls you provide),product(single productUrls), orstore(store intelligence + owner lead only, no products). - storeUrls — one or more Shopify stores. Full URL, bare domain, or
*.myshopify.comdomain. Used byproductsandstoremodes. - collectionUrls — full collection URLs (e.g.
…/collections/mens-shoes) forcollectionmode. - productUrls — full product URLs (e.g.
…/products/wool-runners) forproductmode. - maxProductsPerStore (default 0 = no limit) — cap products per store for quick test runs.
- onlyAvailable / minPrice / maxPrice — filter to in-stock products and/or a price band (in the store's own currency).
- includeVariants / includeImages (default true) — include the full variant and image arrays.
- includeStoreMeta (default true) — attach store intelligence (from
meta.json) to each product. - enrichStoreLeads (default true) — read the storefront for the merchant's email, phone, socials and theme. Always on in
storemode. - monitorMode (default false) — emit only new/changed products (see below).
- proxyConfiguration — proxy settings (Apify Proxy by default; switch to Residential for the few large brands behind Cloudflare).
Output
By default you get one clean, dense table of products — every column applies to every row. Use the Products, Variants and Store leads dataset views to switch the visible columns.
A product record (mode: "products"):
{"mode": "products","storeUrl": "https://www.allbirds.com","storeDomain": "www.allbirds.com","store": {"name": "Allbirds","myshopifyDomain": "weareallbirds.myshopify.com","currency": "USD","country": "US","paymentCardBrands": ["visa", "master", "american_express"],"publishedProductsCount": 72,"publishedCollectionsCount": 1338,"email": "help@allbirds.com","socials": { "instagram": "https://www.instagram.com/allbirds", "tiktok": "https://www.tiktok.com/@weareallbirds" },"theme": "Handover theme","leadScore": 7},"id": 3687618936912,"title": "Trino® Tubers - Onyx","handle": "trino-tubers-onyx","url": "https://www.allbirds.com/products/trino-tubers-onyx","vendor": "Allbirds","productType": "Socks","tags": ["unisex", "socks"],"description": "The Trino Tubers is a tube sock that hugs just below your calf…","options": [{ "name": "Size", "position": 1, "values": ["S", "M", "L"] }],"featuredImage": "https://cdn.shopify.com/…","imageCount": 5,"price": 16,"priceMin": 16,"priceMax": 16,"compareAtPriceMax": null,"onSale": false,"discountPercent": 0,"currency": "USD","variantCount": 4,"availableVariantCount": 2,"inStock": true,"variants": [{ "id": 28848479666256, "title": "S (W5-7)", "sku": "ST1UONX101", "price": 16, "compareAtPrice": null, "available": false, "option1": "S (W5-7)", "grams": 99 }],"images": [{ "src": "https://cdn.shopify.com/…", "alt": "Trino Tubers Onyx", "position": 1 }],"scrapedAt": "2026-06-15T18:00:00.000Z"}
A store-lead record (mode: "store") is a flat row with name, storeDomain, myshopifyDomain, currency, country, publishedProductsCount, paymentCardBrands, email, phone, instagram/facebook/tiktok/twitter/youtube/pinterest/linkedin, theme and a leadScore.
What to expect (field coverage)
Shopify exposes products and store metadata publicly, so the catalog is highly complete. Some fields are merchant-entered and only present when the store filled them in:
| Field group | Coverage |
|---|---|
| Product core (title, handle, vendor, type, price, variants, images) | ✅ ~100% on stores that expose products.json |
barcode, inventoryQuantity, weight/weightUnit | present when the store publishes them (varies by store) |
Store intelligence (meta.json: currency, country, counts, payment cards) | ✅ when the store keeps meta.json public (most do) |
Store lead email | ~50–70% (homepage/contact page) |
Store lead socials, theme | ✅ usually present |
A blank field means the merchant didn't publish it — not that scraping failed. Nothing is dropped, so you always get the richest dataset available. A small number of large brands serve their storefront behind Cloudflare or use a headless (Hydrogen) front end without products.json; for those, switch to Residential proxy or expect them to be skipped with a clear log note.
Monitoring mode — only new products & price drops
Turn on monitorMode to remember every product returned in previous runs and emit only products that are new or whose price / discount / availability changed since the last run. Each record is tagged monitorStatus (new or changed). It fingerprints on price and stock — not Shopify's volatile updated_at — so you get real signal, not noise.
Pair it with Apify Schedules: the schedule triggers the run on your cadence, and monitor mode remembers what it already returned across those runs (state is kept in a named key-value store, completely separate from the scheduler). New launches, price drops and back-in-stock events land straight in your dataset — perfect for a daily price-watch or a Slack/CRM alert.
Automate & schedule
Run this actor on autopilot and pull results into your own stack:
- Apify API — start runs, fetch datasets, and manage schedules over REST.
- apify-client for JavaScript and apify-client for Python — official SDKs.
- Schedules — run it daily/weekly to track catalogs, prices and stock over time.
- Webhooks — trigger downstream actions (CRM import, Slack alert, restock email) the moment a run finishes.
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'MY_APIFY_TOKEN' });const run = await client.actor('scrapesage/shopify-store-scraper').call({mode: 'products',storeUrls: ['https://www.allbirds.com'],monitorMode: true,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(`Got ${items.length} products`);
Integrate with any app
Connect the dataset to 5,000+ apps — no code required:
- Make — multi-step automation scenarios.
- Zapier — push new products or price drops straight into your tools.
- Slack — get notified when a monitored store drops a price or adds a product.
- Google Drive / Sheets — auto-export every run to a spreadsheet.
- Airbyte — pipe results into your data warehouse.
- GitHub — trigger runs from commits or releases.
Use with AI assistants (MCP)
The output is clean, LLM-ready JSON. Call this actor from Claude, ChatGPT, or any agent framework through the Apify MCP server — ask your assistant to "list every product and price from this Shopify store" and let it run the scraper for you.
More scrapers from scrapesage
Build a complete e-commerce & marketplace intelligence stack:
- Shopify App Store Scraper — apps, pricing plans, ratings, reviews and developer leads from the Shopify App Store.
- Made-in-China Scraper — B2B suppliers, products and company details for sourcing.
- Product Hunt Scraper — launches, makers and maker leads.
- Google Play Scraper — apps, reviews and developer leads.
- Apple App Store Scraper — apps, reviews and charts.
- Chrome Web Store Scraper — extensions, ratings, reviews and developer leads.
- Steam Scraper — games, prices, reviews and charts.
- Facebook Ad Library Scraper — competitor ad intelligence on Meta & Instagram.
Tips
- Pick a single mode for a clean, fully-populated table. Use
productsfor whole-store catalogs,collectionto target a specific collection,productfor a handful of URLs, andstorefor pure lead lists. - Store leads: keep
enrichStoreLeadson to capture the merchant's email, phone, socials and theme — it's the difference between a product row and a contactable lead. - Big catalogs: leave
maxProductsPerStoreat 0 to get everything; products stream in pages of up to 250 so rows appear within seconds. - Large brands behind Cloudflare: a few big stores front their storefront with Cloudflare or run a headless (Hydrogen) front end — switch
proxyConfigurationto Residential for those, or expect a clear skip note in the log. - Recurring monitoring: combine Schedules with
monitorModeto track price drops and new launches automatically.
FAQ
Which stores work? Any store running Shopify that keeps its public product endpoints available — that's the large majority of the millions of Shopify stores. Paste the store's main domain or its *.myshopify.com domain.
Does it need the Shopify Admin API or an access token? No. This actor reads Shopify's public storefront endpoints (products.json, collections/<handle>/products.json, products/<handle>.json, meta.json) — no key, app install or login needed.
Can I get inventory quantities? You get per-variant availability (in stock / out of stock) and an in-stock variant count on every store. Exact on-hand quantities are only returned by stores that publish them — many don't expose that publicly.
Can I export to Google Sheets, CSV, or Excel? Yes — one click in the dataset view, or automatically on every run via the Google Drive integration.
How do I track price drops and new products? Turn on monitorMode and create a Schedule. Each run returns only products that are new or whose price/stock changed, tagged monitorStatus.
A field is empty — why? Some merchants don't publish barcodes, weights or a contact email, and some big brands hide products.json. Fields are blank only when the store didn't publish that data — never because the scraper skipped it.
Is scraping Shopify stores legal? This actor collects publicly available data only. You're responsible for using the data in compliance with applicable laws (e.g. GDPR/CCPA for personal data) and the stores' terms.
Need help?
Open an issue on the actor's Issues tab, or visit the Apify help center. Feature requests are welcome — this actor is actively maintained.