Shopify Store Products & Collections Scraper
Pricing
from $5.00 / 1,000 results
Shopify Store Products & Collections Scraper
Pull the full product catalog from any Shopify store's public JSON feed: titles, prices, variants and stock status. Filter by collection, price range or availability, and pay only per result returned.
Pricing
from $5.00 / 1,000 results
Rating
0.0
(0)
Developer
M Usama
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
20 hours ago
Last modified
Categories
Share
What does Shopify Store Products & Collections Scraper do?
Give it one or more Shopify store domains and it returns the full product catalog: title, vendor, product type, price, sale price, stock status, every variant with its own SKU and price, images and options. Scope a run to a single collection, or filter by price range and availability, so you only pay for the products you actually need.
Data source
Each store's public /products.json feed (and /collections/{handle}/products.json when a collection is set), the same JSON every Shopify storefront publishes for its own theme to render; data is as fresh as the store's live catalog at run time.
Why use it?
- Competitor price and catalog monitoring: track a rival's pricing, new drops and stock levels over time.
- Sourcing and dropshipping research: pull SKUs, prices and variant options from a supplier's storefront in bulk.
- Market and assortment research: compare product types, tags and price bands across several stores at once.
- Feed building: turn a Shopify catalog into structured data for your own site, spreadsheet or BI tool, without manual copy-paste.
How to use it
- Open the Actor and enter one or more store domains (for example
allbirds.com). Optionally set a collection handle, a price range or "only in stock". - Click Start. Download results as JSON, CSV or Excel, or read them through the API.
- Add a Schedule and an Integration (Slack, Google Sheets, webhook) to get new records automatically.
Input
| Field | Description |
|---|---|
storeUrls | One or more Shopify store domains or URLs, for example allbirds.com or https://gymshark.com. |
collectionHandle | Limit the run to one collection, using the handle from its URL (/collections/<handle>). Leave blank for the full catalog. |
onlyAvailable | Drop products where every variant is sold out. |
minPrice / maxPrice | Drop products whose lowest variant price falls outside this range. |
maxResults | Hard stop for the run. You are billed per result, so this caps the cost. |
proxyConfiguration | Apify proxy is recommended for larger runs. |
Example input:
{"storeUrls": ["allbirds.com"],"onlyAvailable": true,"minPrice": 20,"maxPrice": 200,"maxResults": 100}
Output
Every record is one product, with all of its variants nested inside:
{"id": "allbirds.com:7218356060240","shopDomain": "allbirds.com","title": "Men's Strider Explore - Natural Black (Dark Grey Sole)","vendor": "Allbirds","productType": "Shoes","price": 130,"compareAtPrice": null,"available": false,"url": "https://allbirds.com/products/mens-strider-explore","handle": "mens-strider-explore","tags": ["allbirds::edition => classic", "allbirds::gender => mens", "shoprunner"],"images": ["https://cdn.shopify.com/s/files/1/1104/4168/files/A11768_25Q4_Strider-Explore-Natural-Black-Dark-Grey-Sole_PDP_LEFT.png?v=1759336475"],"variants": [{ "id": 41334293889104, "title": "8", "sku": "A11768M080", "price": 130, "compareAtPrice": null, "available": false, "option1": "8", "option2": null, "option3": null },{ "id": 41334293921872, "title": "8.5", "sku": "A11768M085", "price": 130, "compareAtPrice": null, "available": false, "option1": "8.5", "option2": null, "option3": null }],"options": [{ "name": "Size", "values": ["8", "8.5", "9", "9.5", "10"] }],"collectionHandle": null,"publishedAt": "2026-08-26T10:22:14-07:00","createdAt": "2025-09-10T12:47:47-07:00","updatedAt": "2026-09-20T01:16:18-07:00","scrapedAt": "2026-09-20T08:16:18.252Z"}
| Field | Meaning |
|---|---|
id | Stable key (shopDomain:productId), safe for deduplication between runs |
title | Product title |
vendor | Brand or vendor as set in Shopify |
productType | Product type as set in Shopify |
price | Lowest variant price |
compareAtPrice | Compare at price on the cheapest variant, when the store lists one, otherwise null |
available | True if at least one variant is in stock |
url | Public product page URL |
handle | Shopify product handle |
tags | Product tags, as published by the store |
images | Product image URLs |
variants | Every variant with its own SKU, price, compare at price, stock status and options |
options | Option names and possible values (Size, Color, and so on) |
collectionHandle | The collection this run was scoped to, or null for the full catalog |
publishedAt, createdAt, updatedAt | ISO timestamps from the store |
scrapedAt | When this Actor read the record |
Pricing
Pay per event: a small fee when a run starts, then a fixed price per result returned. You only pay for products that pass your filters. Set maxResults to cap any run.
Limitations
- Only stores that expose the standard
/products.jsonand/collections/{handle}/products.jsonfeeds are supported; stores that disable this feed or sit behind a password page are not covered. - Prices are the storefront's listed prices in the store's own currency; the feed does not include a currency code, so confirm the store's currency separately.
- Inventory counts are not published here, only an in stock or sold out signal per variant.
FAQ
Is this legal? The Actor reads the same public JSON feed a Shopify store serves to every visitor's browser, with no login and no personal data. You are responsible for how you use the data.
Something is missing or broken? Open an issue in the Issues tab; response time is usually under a day.