Shopify Store Products & Collections Scraper avatar

Shopify Store Products & Collections Scraper

Pricing

from $5.00 / 1,000 results

Go to Apify Store
Shopify Store Products & Collections Scraper

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

M Usama

Maintained by Community

Actor 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

  1. 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".
  2. Click Start. Download results as JSON, CSV or Excel, or read them through the API.
  3. Add a Schedule and an Integration (Slack, Google Sheets, webhook) to get new records automatically.

Input

FieldDescription
storeUrlsOne or more Shopify store domains or URLs, for example allbirds.com or https://gymshark.com.
collectionHandleLimit the run to one collection, using the handle from its URL (/collections/<handle>). Leave blank for the full catalog.
onlyAvailableDrop products where every variant is sold out.
minPrice / maxPriceDrop products whose lowest variant price falls outside this range.
maxResultsHard stop for the run. You are billed per result, so this caps the cost.
proxyConfigurationApify 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"
}
FieldMeaning
idStable key (shopDomain:productId), safe for deduplication between runs
titleProduct title
vendorBrand or vendor as set in Shopify
productTypeProduct type as set in Shopify
priceLowest variant price
compareAtPriceCompare at price on the cheapest variant, when the store lists one, otherwise null
availableTrue if at least one variant is in stock
urlPublic product page URL
handleShopify product handle
tagsProduct tags, as published by the store
imagesProduct image URLs
variantsEvery variant with its own SKU, price, compare at price, stock status and options
optionsOption names and possible values (Size, Color, and so on)
collectionHandleThe collection this run was scoped to, or null for the full catalog
publishedAt, createdAt, updatedAtISO timestamps from the store
scrapedAtWhen 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.json and /collections/{handle}/products.json feeds 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.