Shopify Products Scraper: Catalog, Prices & Variants to JSON
Pricing
from $0.90 / 1,000 products
Shopify Products Scraper: Catalog, Prices & Variants to JSON
Shopify product data: every product from any store's public catalog (title, vendor, type, tags, dates, min/max and compare-at price, variants with SKU and availability, images, URL). Whole store or one collection. No login, no browser.
Pricing
from $0.90 / 1,000 products
Rating
0.0
(0)
Developer
Lepi Data
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
8 days ago
Last modified
Categories
Share
Give it a list of Shopify stores and get one row per product from each store's public catalog: title, vendor, product type, tags, created/updated/published dates, lowest and highest price, compare-at ("was") price, variants with SKU, price and availability, images and the product URL. Read a whole store or a single collection. No login, no browser, no proxies.
Useful for price monitoring, competitor and assortment research, catalog migration, and feeding product data into Sheets, a database or an AI agent.
What you get
| Field | Meaning |
|---|---|
type | product for a product; free status rows otherwise |
store, url | Store host and the product page URL |
id, title, handle | Shopify product id, title and URL handle |
vendor, productType, tags | As set by the store |
createdAt, updatedAt, publishedAt | ISO 8601, in the store's time zone |
priceMin, priceMax | Lowest / highest variant price, in the store's default currency |
compareAtPriceMin, compareAtPriceMax | Compare-at prices, when the store sets them |
available, variantCount | Any variant in stock to buy; number of variants |
variants | Up to 100: id, title, sku, price, compareAtPrice, available |
options | Option names and values (e.g. Size, Color) |
images, imageCount | Up to 20 image URLs; total number of images |
The currency isn't included in Shopify's public catalog, so prices are numbers in whatever currency the store shows by default. Product descriptions and stock quantities are not returned.
Pricing
$0.90 per 1,000 products (pay per event product), no extra start fee beyond Apify's standard one. Free: stores that aren't Shopify, are password-protected, rate-limited or blocked by robots.txt (store-error rows with the reason), and the limit rows. Set a maximum charge per run and the Actor stops cleanly when it's reached.
Free-plan accounts can check up to 20 stores and get up to 100 products per run to try it out. Paid Apify plans get full results.
Input
storeUrls: domains (allbirds.com), URLs, or*.myshopify.comaddresses. A URL with/collections/<handle>reads just that collection.maxProductsPerStore(default 100): stop after this many products per store, in the store's own catalog order.collection(optional): a collection handle, e.g.sale, applied to every store.
How it works, and what it never touches
- It requests only the store's public catalog files,
/products.jsonand/collections/<handle>/products.json, 250 products per request. Every other path is refused in code, including after redirects: it never requests customer, order, cart, checkout, account, admin or search pages. - robots.txt is checked for each store. Stores whose robots.txt disallows the catalog, or can't be read, are skipped as free rows.
- At most one request per second per store (slower if robots.txt sets a crawl delay). On HTTP 429 it waits (honoring
Retry-After) and retries up to 3 times, then reportsRATE_LIMITED. - The user agent names the Actor and links to our Apify profile.
Good to know
-
Stores that block access are not supported. If a store's robots.txt disallows its catalog, it answers 401/403 or redirects to a password page, or it keeps answering 429 after 3 polite retries, you get one free
store-errorrow and the Actor makes no further requests to that store in the run. It does not switch to proxies, change its user agent or headers, or try other pages (such as/collections/all, sitemaps or feeds). -
Shopify's public catalog lists at most 25,000 products per store or collection. Bigger stores get a free
store-incompleterow; read them collection by collection to get more. -
Some Shopify stores turn off or block their public catalog. They show up as
STORE_PROTECTED,NOT_SHOPIFYorROBOTS_BLOCKEDrows, free of charge. -
Non-Shopify sites are detected (no Shopify product list at
/products.json) and reported asNOT_SHOPIFY. -
Only public https sites; private and internal addresses are refused.
FAQ
Is this data public? Yes. It's the product information each store publishes for anyone to read, with no login. No personal data is collected. If you republish product text or images, respect the store's rights and terms.
Why didn't I get every product? Check maxProductsPerStore (default 100), and look for a store-incomplete or store-error row for that store.
Not affiliated
This Actor is an independent, unofficial tool. It is not made, endorsed, or supported by Shopify Inc. "Shopify" is used only to describe the public store catalogs this tool reads.