
Shopify Product Scraper
hipersoft/shopify-product-scraper
Scrape the full product catalog of any Shopify store: title, vendor, type, tags, description, images, options and every variant with price, SKU and availability. Great for e-commerce and competitor research.
Total users
3Monthly users
2Total runs
115Per product scraped
$0.002Last rebuilt
Oct 26, 2026Overview
Scrape the entire product catalog of any Shopify store from its public products.json endpoint — title, vendor, type, tags, description, images, options and every variant with price, SKU and availability. Output is clean, structured JSON, ready for spreadsheets, databases or your own tooling. No account, no API key. Built for e-commerce teams, competitor research, price monitoring and catalog syncing.

Features
- 🏬 Whole catalog, any store — pass one or many
storeUrls(e.g. "allbirds.com") and page through every product automatically, 250 at a time. - 🎚️ Full variant detail — each product carries a
variantsarray withprice,compareAtPrice,sku,available, weight andoption1/2/3. - 🔀 Two output shapes — keep one row per product, or set
oneRowPerVariantto flatten to one row per variant for easy spreadsheet analysis. - 🏷️ Rich product fields —
vendor,productType,tags,options,images,bodyHtmlplusminPrice/maxPriceand anavailableflag. - 🔢 Cap or grab everything —
maxProductsPerStorelimits volume, or set 0 to pull the entire catalog. - 🛡️ Optional proxy — most stores need none; add a residential proxy for stores that require one.
- 🧾 Clean JSON output — flat, predictable records ready to export to CSV, Excel, JSON or an API.
What you get

One record per product (default mode), variants nested inside:
{
"store": "www.allbirds.com",
"productId": 4636362965059,
"title": "Men's Wool Runners",
"handle": "mens-wool-runners",
"vendor": "Allbirds",
"productType": "Shoes",
"tags": ["wool", "runners"],
"url": "https://www.allbirds.com/products/mens-wool-runners",
"options": [{ "name": "Size", "values": ["9", "10", "11"] }],
"images": ["https://cdn.shopify.com/s/files/1/img1.jpg"],
"featuredImage": "https://cdn.shopify.com/s/files/1/img1.jpg",
"variantsCount": 3,
"minPrice": 98,
"maxPrice": 98,
"available": true,
"variants": [
{ "id": 31234, "title": "9", "sku": "WR-M-09", "price": 98, "compareAtPrice": null, "available": true, "option1": "9", "option2": null, "option3": null }
]
}
Output schema
| Field | Type | Description |
|---|---|---|
store |
string | Domain of the Shopify store. |
productId |
integer | Shopify's numeric product ID. |
title |
string | Product title. |
handle |
string | URL handle/slug of the product. |
vendor |
string | Product vendor or brand. |
productType |
string | Product type/category. |
tags |
array | Tags assigned to the product. |
url |
string (URL) | Link to the product page. |
createdAt |
string (ISO date) | When the product was created. |
publishedAt |
string (ISO date) | When the product was published. |
updatedAt |
string (ISO date) | When the product was last updated. |
bodyHtml |
string | Product description as HTML. |
options |
array | Product options (e.g. size, color) with their values. |
images |
array | Image URLs for the product. |
featuredImage |
string (URL) | Main product image URL. |
variantsCount |
integer | Number of variants for the product. |
minPrice |
integer | Lowest variant price. |
maxPrice |
integer | Highest variant price. |
available |
boolean | Whether any variant is in stock. |
variants |
array | All variants with price, compareAtPrice, SKU, availability and options. |
Input
{
"storeUrls": ["https://www.allbirds.com", "gymshark.com"],
"maxProductsPerStore": 0,
"oneRowPerVariant": false,
"proxyConfiguration": { "useApifyProxy": false }
}
| Field | Description |
|---|---|
storeUrls |
Shopify store domains or URLs; each store's full catalog is scraped. |
maxProductsPerStore |
Max products per store (0 = entire catalog). |
oneRowPerVariant |
Output one flattened row per variant instead of one per product. |
proxyConfiguration |
Optional proxy; a residential proxy is recommended for stores that require one. |
Use cases
- Sync or import a competitor's full catalog into your own store or database.
- Monitor prices, discounts (
compareAtPrice) and stock across variants over time. - Analyze assortment, vendors and product types for market research.
- Feed clean product data into pricing, analytics or reselling workflows.
Pricing
Pay-per-event: you're billed a small amount per run and per item scraped — you only pay for what you get. See the Pricing tab for current rates.
FAQ
Do I need a Shopify account or API key? No. Just enter the store URLs and run — no account, login or API key required.
What format is the output?
Structured JSON — one row per product (or per variant with oneRowPerVariant) — exportable as JSON, CSV, Excel or via the Apify API.
Can I integrate this with other tools? The Shopify Product Scraper can be connected with almost any cloud service or web app thanks to integrations on the Apify platform. It works with Make, Zapier, Slack, Airbyte, GitHub, Google Drive and many more, plus the Apify API, JavaScript/Python clients and MCP. Or use webhooks to trigger an action whenever a run finishes.
Notes
This scraper only reads a store's publicly available products.json catalog — no login-walled content, orders or customer data. It is an independent tool and is not affiliated with, authorized or endorsed by Shopify or any store; "Shopify" and store names belong to their respective owners.
Input
| Field | Type | Description |
|---|---|---|
storeUrls requiredStore URLs | array | Shopify store domains or URLs, e.g. "allbirds.com" or "https://www.allbirds.com". Each store's full catalog is scraped. |
maxProductsPerStoreMax products per store | integer | Maximum products to collect per store (0 = entire catalog). Default: 0 |
oneRowPerVariantOne row per variant | boolean | If true, output one row per variant (flattened) instead of one row per product with a variants array. Default: false |
proxyConfigurationProxy | object | Proxy configuration. Leave the default — it is tuned for reliable results. Default: {"useApifyProxy": false} |
API
curl -X POST "https://api.apify.com/v2/acts/hipersoft~shopify-product-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"storeUrls": [
"https://www.allbirds.com"
]
}'from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("hipersoft/shopify-product-scraper").call(run_input={
"storeUrls": [
"https://www.allbirds.com"
]
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('hipersoft/shopify-product-scraper').call({
"storeUrls": [
"https://www.allbirds.com"
]
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);Pricing
| Event | Price | Paid plans from |
|---|---|---|
| Product scraped One Shopify product with title, price, variants, images and link | $0.002 | $0.001 |
| Store page fetched One Shopify store products page fetched | $0.001 | $0.001 |
You pay only for what the run returns. Set a maximum cost per run and it stops cleanly at that limit.
Related scrapers
Carousell Scraper
Scrape Carousell search listings: title, price, condition, location, seller, photo and URL. Requires your own Carousell app token.
242 runs · 2 users · $0.003 / listing scrapedGoogle Flights Scraper
Scrape flight options from Google Flights by route and date: airline, flight number, departure and arrival times, duration, stops, layovers and price. One-way or round-trip, any cabin and currency. For travel and price monitoring.
216 runs · 4 users · $0.004 / flight scrapedPinterest Scraper
Search Pinterest and scrape pins (title, description, destination link, image, pinner, board, saves), boards and users. Fast. For visual research, e-commerce, trend and marketing analysis.
151 runs · 2 users · $0.0034 / item scrapedGoogle Trends Scraper
Scrape Google Trends for any keyword: interest over time, related and rising queries, and interest by region. Per country and timeframe. For SEO, market and trend research. No setup.
139 runs · 6 users · $0.001 / keyword scrapedAliExpress Product Search Scraper
Search AliExpress by keyword and export one clean row per product — title, sale price, original price, image and product URL. Export to JSON, CSV or Excel.
135 runs · 3 users · $0.003 / product scrapedGoogle Maps Scraper
Search Google Maps and scrape places: name, category, full address, city, coordinates, rating, phone, website, Place ID and map link. Fast browser-free via Google's internal endpoint, no setup. For local lead generation and market research.
130 runs · 2 users · $0.005 / place scrapedSend the site and the fields. We build it and you get it first.