Shopify Product Scraper
Pricing
from $0.90 / 1,000 results
Shopify Product Scraper
Scrape all products from any Shopify store — prices, variants, images, tags & more. Uses the public /products.json API (no browser). Fast, cheap HTTP-only. Supports multiple stores, pagination, variant details, and Shopify app detection.
Pricing
from $0.90 / 1,000 results
Rating
0.0
(0)
Developer
Hodayfa El Hazbi
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Shopify Store Product Scraper
Extract every product from any Shopify store — titles, descriptions, prices, variants, images, tags, and more — using the store's public /products.json API. No browser required. Pure HTTP requests keep costs low and runs fast.
Optionally detects which Shopify apps and themes a store has installed (Klaviyo, Yotpo, Judge.me, and 15+ more).
What it does
This actor targets the publicly available https://store.com/products.json endpoint that every standard Shopify store exposes. It paginates automatically (250 products per page) until all products are collected or your limit is reached.
Output fields
| Field | Type | Description |
|---|---|---|
storeUrl | string | Normalized base URL of the store |
productId | integer | Shopify internal numeric product ID |
title | string | Product title |
handle | string | URL slug / handle |
productUrl | string | Full canonical product page URL |
description | string | Description with all HTML stripped |
vendor | string | Product vendor / brand name |
productType | string | Shopify product type |
tags | string[] | Array of tag strings |
createdAt | string | ISO 8601 creation date |
updatedAt | string | ISO 8601 last-updated date |
publishedAt | string | ISO 8601 published date |
imageUrl | string | Highest-resolution product image URL |
allImages | string[] | All product image URLs |
priceMin | number | Lowest price across variants |
priceMax | number | Highest price across variants |
currency | string | ISO 4217 currency code (default: USD) |
available | boolean | True if at least one variant is in stock |
variants | object[] | (when includeVariants: true) — see below |
detectedApps | string[] | (when detectApps: true) — app names found |
theme | string | (when detectApps: true) — store theme name |
Variant fields (inside variants[])
| Field | Type | Description |
|---|---|---|
variantId | integer | Shopify variant ID |
title | string | Variant name (e.g. "Black / L") |
sku | string | SKU code |
price | number | Selling price |
compareAtPrice | number|null | Original / compare-at price |
available | boolean | Whether this variant is in stock |
inventoryQuantity | integer|null | Stock quantity if exposed by the store |
option1 | string|null | First option value (e.g. color) |
option2 | string|null | Second option value (e.g. size) |
option3 | string|null | Third option value |
Use cases
- Dropshipping research — find winning products, their prices, and stock levels across multiple Shopify stores
- Competitor price monitoring — track price changes and new product launches from competing brands
- Product catalog export — build a complete product database for any Shopify store
- Market analysis — analyze vendor landscape, product types, tagging strategies, and pricing tiers
- App stack intelligence — discover which marketing and retention tools competitors use (Klaviyo, Yotpo, Loox, etc.)
Input
{"storeUrls": ["https://www.kith.com", "allbirds.com"],"maxProductsPerStore": 1000,"includeVariants": true,"detectApps": false,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyCountry": "US"}}
Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
storeUrls | string[] | ["https://www.kith.com"] | Shopify store URLs. Accepts any format: https://store.com, store.com, store.myshopify.com. |
maxProductsPerStore | integer | 1000 | Max products to scrape per store (1–50,000). Pagination is handled automatically. |
includeVariants | boolean | true | Include the full variants array on each product. |
detectApps | boolean | false | Fetch the homepage once per store and detect installed apps/theme. Adds one extra request per store. |
proxyConfiguration | object | Apify Proxy US | Standard Apify proxy object. |
Example output
{"storeUrl": "https://www.kith.com","productId": 6719173042230,"title": "Kith for Tribeca Festival Logo Lockup Nelson Crewneck - Black","handle": "khmg030009-001","productUrl": "https://www.kith.com/products/khmg030009-001","description": "Crafted from a heavyweight fleece, this crewneck features a Kith x Tribeca Festival co-branded graphic embroidered at the chest.","vendor": "Kith","productType": "Crewnecks","tags": ["crewneck", "fleece", "tribeca", "collaboration"],"createdAt": "2024-05-01T09:00:00Z","updatedAt": "2024-06-07T12:00:00Z","publishedAt": "2024-05-01T09:00:00Z","imageUrl": "https://cdn.shopify.com/s/files/1/0094/2252/products/khmg030009-001.jpg","allImages": ["https://cdn.shopify.com/s/files/1/0094/2252/products/khmg030009-001.jpg","https://cdn.shopify.com/s/files/1/0094/2252/products/khmg030009-001-back.jpg"],"priceMin": 155.00,"priceMax": 155.00,"currency": "USD","available": true,"variants": [{"variantId": 40123456789,"title": "Small","sku": "KHMG030009-001-S","price": 155.00,"compareAtPrice": null,"available": true,"inventoryQuantity": null,"option1": "Small","option2": null,"option3": null}]}
Pricing
$0.90 per 1,000 products (HTTP-only — no browser, no Playwright, minimal compute).
| Products scraped | Estimated cost |
|---|---|
| 1,000 | ~$0.90 |
| 5,000 | ~$4.50 |
| 10,000 | ~$9.00 |
| 50,000 | ~$45.00 |
Notes & limitations
- Works only with standard Shopify stores that expose
/products.jsonpublicly. Some stores disable this endpoint — the actor will log a warning and skip them without crashing. - The
/products.jsonendpoint does not expose inventory quantities unless the store has configured Shopify to show them publicly. TheinventoryQuantityfield will benullin most cases. - Currency is defaulted to
USD. Shopify's public API does not expose the store's configured currency in/products.json. - Password-protected stores (wholesale/preview mode) cannot be scraped.
- The app-detection feature (
detectApps: true) uses static HTML pattern matching and may miss apps injected via tag managers.
Developer
Built and maintained by Hodayfa El Hazbi