Shopify Products Scraper — Prices, Variants & SKUs
Pricing
from $0.80 / 1,000 shopify products
Shopify Products Scraper — Prices, Variants & SKUs
Export public Shopify catalog data from store, collection or product URLs: products, variant prices, SKUs, images and availability. Product-event and memory-based startup fees apply; platform usage is billed separately.
Pricing
from $0.80 / 1,000 shopify products
Rating
0.0
(0)
Developer
Coor Yu
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
7 days ago
Last modified
Categories
Share
Shopify Products Scraper exports public Shopify products, variant prices, SKUs, compare-at prices, availability, images, options and tags. Use a store, collection or product URL for catalog and price research.
One saved product = one product event. All variants exposed in that product's public JSON are included. There is no per-variant or per-store surcharge. No Shopify account or Admin API key is required; running through the Apify API requires your Apify token.
Quick start
- Replace the Allbirds demo with your target Shopify URLs.
- Keep 100 products per URL, or adjust the limits below.
- Click Start and export the Products dataset as JSON, CSV or Excel.
{"storeUrls": ["https://www.allbirds.com", "https://kith.com"],"maxProductsPerStore": 100}
{} selects the paid Allbirds demo, requesting up to 100 products. At the configured 256 MB memory, 100 saved products cost $0.085 in event fees, plus actual Apify platform usage. The two-URL example can save up to 200 products, subject to other limits. Example storefront accessibility is not guaranteed.
Bare domains such as kith.com are accepted. Tracking parameters, fragments and repeated URL scopes are removed automatically.
Store, collection and single-product exports
- Store URL: paginate the store's public
/products.jsoncatalog. - Collection URL: paginate only that collection's public product feed; no collection rows are saved or charged.
- Product URL: request that product's public JSON, including exposed variants—not only the variant selected in a query string.
{"storeUrls": ["https://your-store.com/collections/sale","https://your-store.com/products/a-product-handle"],"maxProductsPerStore": 50,"includeDescription": true}
Replace these illustrative URLs with accessible storefronts. Common locale prefixes such as /en-us/ are retained. No Shopify Admin API or private inventory is accessed.
Input fields
| Field | Default | Purpose |
|---|---|---|
storeUrls | Allbirds demo | 1–20 public store, collection or product URLs |
maxProductsPerStore | 100 | Matching products saved from each URL scope, 1–5,000 |
maxProducts | 1,000 | Global saved-product cap across all scopes, 1–10,000 |
onlyAvailable | false | Require at least one explicitly available variant |
includeDescription | false | Include plain-text descriptions, limited to 10,000 characters |
minPrice, maxPrice | unset | Inclusive variant-price filters; nonnegative numbers, with minimum no greater than maximum |
When availability and price filters are combined, the same variant must satisfy all conditions. Filters select products; returned products still include their other exposed variants. Prices use each storefront's currency without conversion. Restrictive filters can cause more pages to be fetched than products saved; platform usage still applies.
Output and billing unit
Each dataset row is one product, with:
id,handle,title,vendor,productType, product URL and store/domain detailscurrencywhen public shop metadata exposes it; numericminPriceandmaxPricecalculated from exposed variant pricesavailable,onSaleandvariantCount, derived from returned variantsvariants: IDs, titles, SKUs, barcode when exposed, numeric prices, compare-at prices, option values, weight, shipping and availability flags- Product image URLs, tags and option definitions
- Source
createdAt,updatedAtandpublishedAtstrings when exposed;sourceUrland collection-timescrapedAt - Optional plain-text
description
Missing nullable values stay null. Availability is a storefront flag, not an exact inventory count. onSale indicates a compare-at price above the variant price, not a verified promotion. No sales, revenue, orders, customer data or supplier costs are inferred.
JSON retains nested variants; CSV/Excel may stringify arrays. For one row per SKU, expand variants downstream. Billing remains per product.
Current pricing: product events + platform usage
Current configured prices are in USD; see the Pricing tab for authoritative effective pricing.
| Charge | Current rate |
|---|---|
apify-default-dataset-item | $0.0008 per saved product — $0.80 per 1,000 |
apify-actor-start | $0.005 per GB of allocated memory, minimum one startup event per run |
| Exposed variants, images and optional descriptions | Included in the product event |
| Apify platform usage | Billed separately to the running user at their Apify plan rates |
The current Actor memory is fixed at 256 MB, so its minimum one-event startup charge is $0.005. Startup is memory-based, not fixed at every memory setting.
At that configured memory:
| Saved products | Event fees, excluding platform usage |
|---|---|
| 1 | $0.0058 |
| 100 | $0.085 |
| 1,000 | $0.805 |
Total cost = startup events + saved-product events + actual platform usage. Compute, transfer and storage can cost money on empty/failed runs; retaining or reading datasets can also incur charges. No paid upstream Actors, data services, browsers, residential proxies or automatic paid fallbacks are called.
The startup charge can apply even if a store is blocked, empty, invalid or filtered to zero matches. Failed fetches, malformed/filtered products, skipped duplicates and the key-value run summary do not produce product events. Deduplication uses store domain + product ID within the run, including overlapping URL scopes; different store domains are separate records.
Apify's Maximum charge per run caps event charges; the configured minimum cap is $0.0058. Remaining product-event allowance is checked before requests and writes. The cap excludes platform usage and cannot guarantee a complete export.
Reliability and limits
- Public product JSON feeds only. Password protection, login pages, bot challenges, missing feeds and HTTP errors are not bypassed.
- Sequential scope/page processing, with one retry for HTTP 5xx errors; no repeated rate-limit or permanent-error retries.
- Two-minute collection deadline, 100 HTTP requests including metadata/redirects/retries, 15-second request deadline and 8 MiB per response.
- Public HTTPS storefronts only. Internal/local targets, URL credentials and unsafe redirects are rejected.
- Repeated pages are detected and stopped. Budget, global-product, request and time limits can leave later scopes unvisited.
The OUTPUT key-value record provides per-scope counts, skipped duplicates, filter counts, errors and stop reasons. Mixed failures retain products with a partial summary; if every feed fails, the run fails. Valid empty catalogs or zero filter matches can succeed without rows; startup and platform charges still apply.
Public feeds may change, expose fewer products or variants than requested, or report delayed availability. Split large or heavily filtered crawls into smaller runs. Use only data you are entitled to access and follow applicable site terms and laws.
FAQ
Can I export an entire Shopify store?
You can request its public catalog, but completeness depends on exposed feeds, product limits, event budget and safety deadlines. This is not an Admin API export.
Are all SKUs and stock quantities available?
Only SKUs and availability flags exposed in public product JSON are returned. Private stock quantities and missing barcodes are not recovered.
Related Actors
- WooCommerce Store Products Scraper — for public WooCommerce catalogs instead of Shopify feeds.
- Website Contact & Social Scraper — for publicly listed website contacts and social links, separate from catalog data.