Shopify Scraper — Products, Variants & Prices to CSV/Excel
Pricing
from $1.00 / 1,000 results
Shopify Scraper — Products, Variants & Prices to CSV/Excel
Shopify scraper that extracts any store's full product catalog — products, variants, prices, stock — into clean CSV/Excel/JSON rows. Automated variant flattening, numeric pricing, currency auto-detection, and deep variant linking. No API key. Built for dropshippers and price analysts.
Pricing
from $1.00 / 1,000 results
Rating
0.0
(0)
Developer
Matrix Crawl
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
8 days ago
Last modified
Categories
Share
🛍️ Shopify Scraper — Products, Variants & Prices to CSV/Excel
The fastest Shopify product scraper on Apify. Pull any Shopify store's entire product catalog — every product, every variant, every price — into clean, spreadsheet-ready rows in one run. No API key, no app install, no Shopify login required.
shopify scraper · shopify product scraper · shopify price scraper · ecommerce data extraction · product catalog export · shopify inventory scraper
Built for dropshippers, price monitors, and competitive-intelligence teams who need Shopify catalog data that's actually usable — not a wall of nested JSON you have to clean by hand before it touches Excel, Google Sheets, Power BI, or your ERP.
👥 Who Is This For?
- Dropshippers & E-commerce Operators: Quickly extract competitor catalogs, monitor vendor shifts, and bulk-import clean variant data straight into your own store apps.
- Price Analysts & Retail Aggregators: Track real-time markdowns, historical pricing adjustments, and stock variations across multiple domains concurrently.
- Competitive Intelligence Teams: Maintain a fully updated, structured database of total active stock profiles without dealing with messy JSON transformations.
⚡ Why This Scraper Is Different: The Variant Flattening Engine
Most Shopify scrapers hand you the raw API shape: one product object with all its variants trapped in a nested array. A T-shirt in 5 sizes becomes a single row with a sub-table buried inside one cell. Open that in Excel and you get [object Object] — useless for sorting by price, filtering in-stock SKUs, or importing anywhere.
This actor's Variant Flattening Engine explodes that into one clean row per variant — the grain that pricing analysis, inventory tracking, and CSV imports actually need.
Before (Standard scrapers — nested layout):
| title | variants |
|---|---|
| Wool Runner | [{size:"S",price:"95.00",sku:"WR-S"}, {size:"M",price:"95.00",sku:"WR-M"}, ...] |
After (This actor — clean flattened columns):
| title | variantTitle | sku | price | available |
|---|---|---|---|---|
| Wool Runner | S | WR-S | 95.00 | ✅ |
| Wool Runner | M | WR-M | 95.00 | ✅ |
| Wool Runner | L | WR-L | 95.00 | ❌ |
Sort by price. Filter to in-stock. Pivot by vendor. Import straight into anything — zero cleanup.
💡 Prefer the nested shape? Simply flip the
flattenOutputtoggle tofalseand you will receive one rich row per product with the raw variants array entirely intact.
💎 Premium Features Out-of-the-Box
- Numeric Prices:
priceandcompareAtPricecome out as real numbers (not text), so spreadsheets can calculate sums, filters, and compute discount markdowns natively. - Currency Auto-Detection: The scraper executes a single pre-flight check to resolve the storefront's native currency code and attaches it to every single data row.
- One-Click Deep Links: Generates distinct
productUrland variant-specificvariantUrllinks (?variant={id}) for immediate add-to-cart automation pipelines. - Discount Detection: Automatically extracts
compareAtPriceto flag the retailer's original retail strike-through price. - Multi-Store Concurrent Routing: Paste multiple target domains at once; every output row explicitly tags its source hostname so aggregate data sets stay cleanly filterable.
- Wallet Protection Cost Controls: A hard user-defined
maxItemscap automatically forces the loop to terminate if a massive catalog risks running away with your platform bill. - Advanced Anti-Block Hardening: Deploys Apify Proxies by default, paired with native Crawlee session pools to automatically rotate IPs the second a
403or429block is detected.
💰 Transparent, Value-Driven Pricing
This scraper charges strictly by delivery value at $1.00 per 1,000 written dataset rows. Because our Variant Flattening Engine safely outputs one unique row per distinct variant (e.g., separating a T-shirt into individual rows for sizes S, M, and L), your final item count will reflect total variation stock rather than the base product count.
- Example: A collection containing 100 base products that average 5 variants each will output 500 total clean spreadsheet rows, costing just $0.50!
🚀 How to Use
- Paste one or more Shopify store root URLs into Target Storefront URLs (Any sub-page works; the scraper automatically strips paths back to the clean root domain).
- Leave Flatten Output Data Grid enabled for immediate spreadsheet-ready integration (or toggle off for standard nested JSON extraction).
- Configure your safe Maximum Items cost ceiling threshold and click Start.
- Export your resulting data pool seamlessly as a CSV, Excel, JSON, or HTML grid directly from the platform interface.
Sample Input Configuration (JSON)
{"startUrls": [{ "url": "https://www.allbirds.com" },{ "url": "https://www.gymshark.com" }],"flattenOutput": true,"maxPagesPerStore": 100,"maxItems": 10000,"debugLog": false,"proxyConfiguration": { "useApifyProxy": true }}
📊 Output Data Dictionary
Each row in flattened mode (flattenOutput: true):
| Field | Type | Example |
|---|---|---|
productId | number | 1234567890 |
title | string | "Wool Runner" |
handle | string | "wool-runner" |
store | string | "www.allbirds.com" |
productUrl | string | "https://www.allbirds.com/products/wool-runner" |
vendor | string | "Allbirds" |
productType | string | "Shoes" |
tags | string[] | ["mens","wool"] |
createdAt | string (ISO) | "2023-01-04T12:00:00-05:00" |
updatedAt | string (ISO) | "2024-06-01T09:30:00-04:00" |
publishedAt | string (ISO) | "2023-01-05T00:00:00-05:00" |
imageUrl | string | "https://cdn.shopify.com/.../p.jpg" |
currency | string | null | "USD" |
variantId | number | null | 987654321 |
variantTitle | string | null | "US 9 / Grey" |
sku | string | null | "WR-9-GRY" |
price | number | null | 95 |
compareAtPrice | number | null | 120 |
available | boolean | null | true |
variantImageUrl | string | null | "https://cdn.shopify.com/.../v.jpg" |
variantUrl | string | null | "https://.../products/wool-runner?variant=987654321" |
option1 / option2 / option3 | string | null | "US 9" / "Grey" / null |
grams | number | null | 350 |
scrapedAt | string (ISO) | "2026-06-27T10:00:00.000Z" |
In nested mode (flattenOutput: false) each row holds the product metadata above plus a raw variants array (the full unmodified variant objects) instead of the flattened variant fields.
🔀 Output Modes At a Glance
| Flattened (default) | Nested | |
|---|---|---|
| Rows | one per variant | one per product |
| Best for | Excel / CSV / BI / price monitoring | programmatic use, full fidelity |
| Variant fields | top-level columns | inside variants[] |
📝 Notes & Limits
- Only published products are returned, with clean camelCase field names.
- Prices carry the store's default currency (auto-detected). Multi-currency markets may differ from a specific buyer's locale.
- Pagination caps at Shopify's 25,000-item ceiling per store. Larger-catalog and blocked-store fallbacks are on the roadmap.
- A product with zero variants still emits one row (with null variant fields) so nothing is silently dropped.
⚖️ Compliance & Responsible Use
This actor reads publicly available catalog data. You are responsible for using it lawfully: respect each target site's Terms of Service and robots.txt, applicable data-protection and intellectual-property laws, and reasonable request rates. Do not use it to infringe rights or for any unlawful purpose.