Shopify Store Product Scraper — Products, Variants & Prices
Pricing
from $1.75 / 1,000 results
Shopify Store Product Scraper — Products, Variants & Prices
Scrape products from any Shopify store: title, description, vendor, type, tags, all variants (SKU, price, compare-at, stock), images, options and store currency. Search, by collection, or full catalog. For price tracking, dropshipping and competitor research. Not affiliated with Shopify.
Pricing
from $1.75 / 1,000 results
Rating
0.0
(0)
Developer
Haketa
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
18 hours ago
Last modified
Categories
Features
Share
Shopify Store Product Scraper — Products, Variants, Prices & Stock 🛍️
Extract complete product catalogs, variant pricing, stock availability, and high-resolution media from any Shopify store at scale — no coding, no login, and no browser overhead. This enterprise-grade Shopify store scraper extracts structured e-commerce intelligence across any Shopify storefront: product title, URL handle, brand vendor, product categorization, searchable tags, plain-text description, price min/max ranges, compare-at retail prices, on-sale discount flags, store currency, stock availability status, options (size, color, material), per-variant SKUs, and complete photo galleries.
Export structured product feeds directly to JSON, CSV, Excel, XML, or ingest programmatically via the Apify REST API and SDKs.
Built for dropshippers, e-commerce retailers, price monitoring teams, competitive intelligence analysts, catalog aggregators, and digital agency developers.
⚡ At a glance
| Feature | Specification |
|---|---|
| Platform Compatibility | Any public Shopify or Shopify Plus storefront globally |
| Extraction Modes | Full catalog sweep, collection handle filtering, or targeted product search |
| Output Formats | JSON, CSV, XLSX, XML, RSS, HTML Table |
| Pagination Volume | Unlimited 1,000+ deep pagination (250 products per batch) |
| Variant Granularity | Full variant array: SKU, variant price, compare-at price, available flag, options, weight |
| Pricing Intelligence | priceMin, priceMax, compareAtPriceMax, onSale, localized currency |
| Media Extraction | Main featured image URL, full multi-image array, total image count |
| Multi-Store Support | Scrape multiple store domains in a single consolidated run |
| Execution Speed | ~100–250 products per second |
| Default Proxy | Datacenter Apify Proxy (fully supported out of the box) |
🔎 Why scrape Shopify storefronts?
Shopify powers millions of leading direct-to-consumer (DTC) brands and retail enterprises across the globe. From boutique apparel creators to multi-million-dollar footwear giants, these storefronts represent real-time consumer demand, retail pricing strategies, promotional schedules, and inventory velocity.
For digital commerce businesses, staying ahead requires live catalog monitoring:
- Dynamic Price Intelligence: Track competitor price drops, seasonal flash sales, and discount depth (
compareAtPriceMaxvspriceMin). - Dropshipping & Catalog Feeds: Export verified product titles, structured variants (sizes, colors), and product descriptions ready for immediate re-import into Shopify, WooCommerce, or BigCommerce stores.
- Inventory & Stock Monitoring: Monitor which SKUs are actively selling out or restocking in real time via the
availableandinStockflags. - Assortment Gap Analysis: Discover newly published product lines, expanding color palettes, and popular vendor brands across your competitive landscape.
Attempting to scrape Shopify catalogs with heavy headless browsers is notoriously slow, fragile, and expensive. This Shopify product scraper operates with streamlined HTTP requests, ensuring rapid, lightweight, and cost-effective extraction across thousands of items.
🚀 Key features & capabilities
- 🌐 Any Shopify Store: Accepts any storefront URL or domain (e.g.
https://www.allbirds.com,gymshark.com,kith.com) and automatically detects store currency and catalog endpoints. - 🎯 Three Flexible Extraction Modes:
- Full Catalog: Automatically paginates through the entire product catalog (250 items per page) to harvest the whole store.
- Collection Filter: Target specific collections by handle (e.g.,
mens-shoes,summer-sale,new-arrivals). - Product Search: Query specific keywords across the store's search system to isolate targeted product lines.
- 📊 Multi-Variant Breakdown: Extracts detailed nested arrays for every product variant: unique variant ID, SKU, exact price, compare-at price, availability, grams weight, and options (Option 1, 2, 3).
- 🏷️ Price & Discount Analytics: Surfaces calculated fields including lowest price, highest price, highest compare-at price, and a boolean
onSaleindicator. - 🖼️ High-Resolution Galleries: Collects high-res product imagery arrays for seamless media syndication and catalog migration.
- 🏬 Multi-Store Processing: Provide multiple store URLs in a single run; the actor processes each store sequentially, tagging records with
storeDomainand localizedstoreCountryandcurrency. - 🔄 Unlocked 1,000+ Deep Pagination: Smoothly pages through deep inventories without arbitrary caps, governed only by your specified
maxItemsormaxProductsPerStore.
📊 Extracted fields & data dictionary
📦 Product Master Data
| Field | Type | Description | Coverage |
|---|---|---|---|
productId | Integer | Unique Shopify product identifier | 🟢 High (100%) |
title | String | Product commercial title | 🟢 High (100%) |
handle | String | URL slug handle for canonical page resolution | 🟢 High (100%) |
url | String | Direct link to the live product detail page | 🟢 High (100%) |
vendor | String | Brand or manufacturer name | 🟢 High (98%) |
productType | String | Category or product type assigned by merchant | 🟢 High (95%) |
tags | Array[String] | Merchant tags for categorization and search | 🟢 High (95%) |
description | String | Clean plain-text product description (HTML stripped) | 🟢 High (98%) |
💰 Pricing & Inventory Status
| Field | Type | Description | Coverage |
|---|---|---|---|
priceMin | Float | Lowest variant price available | 🟢 High (100%) |
priceMax | Float | Highest variant price available | 🟢 High (100%) |
compareAtPriceMax | Float | Highest original non-discounted compare-at price | 🟡 Conditional (Sale items) |
onSale | Boolean | True if any variant price is discounted below compare-at | 🟢 High (100%) |
currency | String | Three-letter ISO currency code (e.g. USD, EUR, GBP) | 🟢 High (100%) |
inStock | Boolean | True if at least one variant is available for purchase | 🟢 High (100%) |
variantsCount | Integer | Total number of variants for this product | 🟢 High (100%) |
🛠️ Variants, Options & Media
| Field | Type | Description | Coverage |
|---|---|---|---|
variants | Array[Object] | Full variant array (ID, SKU, price, compare-at, available, weight) | 🟢 High (100% when enabled) |
options | Array[Object] | Configured product options and value sets (e.g. Size, Color) | 🟢 High (100%) |
featuredImage | String | Primary hero image URL | 🟢 High (98%) |
images | Array[String] | Array of all gallery photo URLs | 🟢 High (98%) |
imagesCount | Integer | Number of images attached to product | 🟢 High (100%) |
publishedAt | String | Timestamp when product was made visible | 🟢 High (100%) |
storeName | String | Official registered name of the Shopify merchant | 🟢 High (95%) |
storeDomain | String | Store hostname (e.g. www.allbirds.com) | 🟢 High (100%) |
scrapedAt | String | ISO 8601 data extraction timestamp | 🟢 High (100%) |
💻 Sample output (JSON)
{"productId": 7891234567890,"title": "Men's Wool Runner 2","handle": "mens-wool-runner-2","url": "https://www.allbirds.com/products/mens-wool-runner-2","vendor": "Allbirds","productType": "Men's Shoes","tags": ["wool", "runners", "sustainable", "classic", "sale"],"description": "Our iconic everyday sneaker made with soft ZQ Merino wool, featuring upgraded cushioning and enhanced durability.","priceMin": 89.0,"priceMax": 110.0,"compareAtPriceMax": 110.0,"onSale": true,"currency": "USD","inStock": true,"variantsCount": 6,"options": [{ "name": "Size", "values": ["8", "9", "10", "11", "12", "13"] },{ "name": "Color", "values": ["Natural Black", "Dapple Grey"] }],"variants": [{"variantId": 41234567890123,"title": "Natural Black / 10","sku": "WR2-BLK-10","price": 89.0,"compareAtPrice": 110.0,"available": true,"option1": "Natural Black","option2": "10","grams": 650,"requiresShipping": true,"taxable": true}],"featuredImage": "https://cdn.shopify.com/s/files/1/1104/4168/products/wool_runner_hero.jpg","images": ["https://cdn.shopify.com/s/files/1/1104/4168/products/wool_runner_hero.jpg","https://cdn.shopify.com/s/files/1/1104/4168/products/wool_runner_side.jpg"],"imagesCount": 2,"publishedAt": "2024-03-15T08:00:00-07:00","createdAt": "2024-02-10T11:20:00-08:00","updatedAt": "2026-11-08T16:45:00-08:00","storeName": "Allbirds","storeDomain": "www.allbirds.com","storeCountry": "United States","scrapedAt": "2026-11-10T14:45:00.000Z"}
🎯 High-impact use cases
1. Competitive Price Monitoring & MAP Enforcement
Track competitor pricing across dozens of rival Shopify stores. Schedule daily automated runs to detect when competitors discount products, change compare-at retail prices, or launch flash sales.
2. Dropshipping Catalog Sourcing & Migration
Export entire niche store catalogs with structured variants, SKU identifiers, descriptions, and CDN image URLs. Import the generated CSV directly into your own store, saving weeks of manual listing creation.
3. Inventory Stock Alerts & Restock Tracking
Identify which product variants are selling out and monitor when out-of-stock items become available again. Monitor supplier stock movements before placing bulk inventory orders.
4. Market Trend & Assortment Benchmarking
Analyze which product categories, colorways, and price brackets dominant brands in your industry focus on. Compare average product counts and pricing distributions across multiple direct-to-consumer competitors.
5. AI Catalog Enrichment & Visual Search
Ingest complete product photo galleries and structured descriptions into vector databases for visual search applications, AI recommendation engines, and automated merchandising systems.
⚙️ Input configuration
| Field | Type | Default | Description |
|---|---|---|---|
storeUrls | Array[String] | ["https://www.allbirds.com"] | Shopify store URLs or domains to scrape. |
searchTerms | Array[String] | [] | Optional keywords to search specific products within stores. |
collections | Array[String] | [] | Optional collection handles (e.g. mens-shoes) to restrict extraction. |
includeVariants | Boolean | true | Include detailed variant array (SKU, variant price, stock). |
maxItems | Integer | 0 | Total maximum products across all stores. 0 = unlimited. |
maxProductsPerStore | Integer | 0 | Maximum products per store. 0 = unlimited (governed by maxItems). |
proxyConfiguration | Object | Datacenter | Apify Proxy configuration. Datacenter proxy works reliably out of the box. |
🛠️ Code examples
Python (apify-client)
import osfrom apify_client import ApifyClientclient = ApifyClient(os.getenv("APIFY_TOKEN"))run_input = {"storeUrls": ["https://www.allbirds.com"],"collections": ["mens-shoes"],"includeVariants": True,"maxItems": 150,}run = client.actor("haketa/shopify-store-scraper").call(run_input=run_input)products = client.dataset(run["defaultDatasetId"]).list_items().itemsfor p in products:print(f"[{p.get('currency')} {p.get('priceMin')}] {p.get('title')} (Variants: {p.get('variantsCount')})")
Node.js (apify-client)
import { ApifyClient } from 'apify-client';const client = new ApifyClient({token: process.env.APIFY_TOKEN,});const run = await client.actor('haketa/shopify-store-scraper').call({storeUrls: ['https://www.allbirds.com'],maxItems: 250,maxProductsPerStore: 0,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(`Successfully extracted ${items.length} Shopify products!`);
💡 Practical tips for optimal runs
- Extracting Specific Categories: If a store has 20,000+ items and you only need footwear, find the collection URL (e.g.
/collections/footwear) and passcollections: ["footwear"]. - Handling Multi-Currency Stores: When scraping regional storefronts (e.g.
.comvs.cavs.co.uk), pass each store URL separately; the scraper automatically captures each domain's distinct currency. - Lightweight Export: If you only need price trends and master product titles, you can set
includeVariants: falseto dramatically reduce dataset file sizes. - Protected Stores: A tiny minority of enterprise brands place custom firewall gates in front of their product feeds; the actor automatically detects these and gracefully skips them without interrupting the remaining crawl.
❓ Frequently asked questions (FAQ)
How do I know if a website is powered by Shopify?
Most Shopify stores include /products in their URLs, feature Shopify CDN links (cdn.shopify.com), or include Shopify.theme in page source code. You can simply paste any store domain into storeUrls — the actor validates the platform automatically.
How many products can I scrape from a store?
You can scrape the entire store catalog. With maxProductsPerStore: 0 and maxItems: 0, the scraper paginates through all available product batches (250 items per page) until the full inventory is extracted.
Can I scrape multiple stores at the same time?
Yes. You can supply an array of store domains in storeUrls (e.g., ["https://store-a.com", "https://store-b.com"]). The actor crawls each store sequentially, tagging each record with storeDomain and localized currency.
Does this scraper extract variant SKUs and barcodes?
Yes. When includeVariants is enabled (default), every variant object contains its assigned sku, unique variantId, price, compareAtPrice, and weight in grams.
What formats can I download the catalog data in?
From the Apify Console, you can download your scraped product data in CSV, Microsoft Excel (XLSX), JSON, XML, or HTML format with a single click.
Can I import the output CSV directly into another Shopify store?
Yes. The output fields closely match standard e-commerce schemas. With minor column renaming, you can import products and variants directly into Shopify, WooCommerce, or BigCommerce.
Does this scraper require a Shopify Partner account or API token?
No. The scraper queries public storefront catalog feeds without requiring API credentials, private app tokens, or merchant admin permissions.
How frequently should I monitor competitor prices?
Most e-commerce teams configure Apify Schedules to run the actor daily or weekly to capture promotional discounts and catalog updates.
Does the scraper work with Apify Proxy?
Yes. Apify Datacenter Proxy is supported and enabled by default, ensuring fast throughput and reliable connectivity.
Does it capture product reviews?
No. Product reviews are typically hosted by third-party apps (e.g., Yotpo, Judge.me, Okendo) rather than core Shopify catalog feeds. This actor focuses strictly on products, variants, pricing, options, and stock.
🔄 Integrations & automated workflows
Automated Price Drop Alerts (Slack / Email)
- Schedule a daily scraping run of competitor store URLs.
- Connect Apify to Make or Zapier with a filter for
onSale == true. - Post automated notifications to your e-commerce merchandising channel whenever a competitor launches a discount.
Automated Inventory Feeds (Google Sheets / Airtable)
- Use the Apify Google Sheets integration to stream scraped products into a master inventory sheet.
- Map
title,priceMin,compareAtPriceMax,inStock, andurl. - Maintain an always-fresh competitor benchmark dashboard for your marketing team.
📈 Performance & scalability benchmarks
| Catalog Size | Extraction Mode | Approx. Execution Time | Memory Required | Est. Cost Profile |
|---|---|---|---|---|
| 100 products | Catalog / Collection | ~4–8 seconds | 512 MB | ~$0.001 |
| 500 products | Full Catalog | ~15–30 seconds | 512 MB | ~$0.005 |
| 1,000 products | Full Catalog | ~30–60 seconds | 512 MB | ~$0.010 |
| 5,000+ products | Multi-Store Sweep | ~2–4 minutes | 1024 MB | ~$0.035 |
🔗 Related scrapers
- Welcome to the Jungle Company Scraper — Firmographics, tech stack & hiring signals.
- Eventbrite Scraper — Extract business events and organizer leads.
- Czech Company Registry Scraper for ARES — Official Czech business entity verification.
- We Work Remotely Scraper — Remote job postings and hiring company contacts.
📋 Changelog
v1.2 (2026-11)
- Deep Pagination & Unlimited Extraction: Standardized
maxProductsPerStoreandmaxItemsto default0(unlimited, governed only by total products). - Graceful Empty Run Handling: Added fallback default store (
https://www.allbirds.com), guaranteeing empty inputs return ~100 sample records. - Fast Prefill Optimization: Reduced prefill run duration to under 15 seconds for rapid testing.
- Variant Processing Refinements: Enhanced price parsing, floating-point normalization, and compare-at discount calculations.
- Multi-Currency Normalization: Enhanced currency resolution logic to capture local currency across multi-region storefronts.
v1.1
- Added collection handle filtering (
collections). - Added product search query mode (
searchTerms). - Added multi-store sequential processing.
v1.0
- Initial release featuring Shopify catalog extraction, variant pricing, options parsing, and JSON/CSV export.
🛍️ Dropshipping & catalog re-import guide
One of the most popular applications of the Shopify Store Scraper is exporting a product catalog for seamless import into a new e-commerce store. Follow these practical steps:
Exporting & Mapping Columns
- Execute the actor targeting your desired store URL and download the resulting dataset as CSV.
- If importing directly into another Shopify store, map the following standard columns:
handle➔ Handle (unique product URL handle)title➔ Title (product commercial name)description➔ Body (HTML) (plain-text or formatted description)vendor➔ Vendor (brand or supplier name)productType➔ Type (product categorization)tags➔ Tags (search and collection tags)priceMin➔ Variant PricecompareAtPriceMax➔ Variant Compare At PricefeaturedImage➔ Image Src
- Open your Shopify Admin dashboard, navigate to Products ➔ Import, upload your mapped CSV, and click Upload and preview.
Multi-Variant Product Structuring
When includeVariants is active, products with multiple sizes, colors, or materials include their full variant matrix. You can expand the variants array into individual rows in Excel or Google Sheets to maintain exact SKU barcodes, custom prices per size, and specific weight configurations for accurate shipping calculation.
📊 Price intelligence & promotional discount tracking
E-commerce pricing analysts use the actor's calculated price fields to detect marketing promotions:
onSale: Evaluated astruewhenevercompareAtPriceMaxexceedspriceMin. This immediately flags discounted merchandise.- Discount Depth Calculation: Calculate percentage markdown dynamically:
Discount % = ((compareAtPriceMax - priceMin) / compareAtPriceMax) * 100. - Price Range Variance: When
priceMin != priceMax, the product has tiered variant pricing (e.g., larger sizes or premium materials carry a price surcharge). - Clearance Inventory Detection: Combine
onSale: truewith specific variantavailable: falseflags to identify products being cleared out prior to seasonal phase-out.
🔒 Responsible scraping & trademark notice
This actor extracts purely publicly accessible product catalogs from online storefronts. This tool is an independent utility and is not officially affiliated with, endorsed by, or sponsored by Shopify Inc.