Shopify Store Catalog avatar

Shopify Store Catalog

Pricing

$0.85 / 1,000 product scraped (all variants)s

Go to Apify Store
Shopify Store Catalog

Shopify Store Catalog

Pulls a Shopify storefront's public /products.json catalog: title, vendor, tags, images, and per-variant SKU/price/availability.

Pricing

$0.85 / 1,000 product scraped (all variants)s

Rating

0.0

(0)

Developer

Mark

Mark

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Share

Pulls a Shopify storefront's public /products.json catalog — product metadata plus every variant's SKU, price, compare-at price, and availability. No login, no proxy: this is an endpoint Shopify publishes on purpose for every store that hasn't disabled it.

Input

FieldTypeRequiredDescription
storeUrlsarray of stringsyesStorefront root URLs, e.g. https://allbirds.com.
maxProductsintegernoStop paging a store once this many products have been pushed. Omit for no limit.
collectionHandlestringnoRestrict to one collection (/collections/<handle>/products.json) instead of the full catalog.

The actor pages /products.json?limit=250&page=N (or the collection equivalent) per store until a page comes back empty.

Output example

One row per product, from a live run against allbirds.com:

{
"storeUrl": "https://allbirds.com",
"id": 7218356060240,
"title": "Men's Strider Explore - Natural Black (Dark Grey Sole)",
"handle": "mens-strider-explore",
"vendor": "Allbirds",
"product_type": "Shoes",
"tags": ["allbirds::gender => mens", "shoprunner", "..."],
"published_at": "2026-08-26T10:22:14-07:00",
"url": "https://allbirds.com/products/mens-strider-explore",
"images": ["https://cdn.shopify.com/s/files/1/1104/4168/files/....png"],
"variants": [
{ "sku": "A11768M080", "price": "130.00", "compare_at_price": null, "available": false }
]
}

If a store's /products.json is disabled or the endpoint doesn't return JSON, the actor pushes one row instead and charges nothing for it:

{ "storeUrl": "https://example-store.com", "error": "products-json-disabled" }

Pricing

Pay-per-event (PPE). One product-scraped event is charged per product row — $0.00085/product ($0.85 per 1,000), 15% under the best-rated comparable Actor (trovevault/shopify-products-scraper, 5.0★, $0.001/item). The error row above is never charged. Event name/price are configured in the Apify Console's pricing step, not in this repo.

Limits / known gaps

  • v1 has no sitemap fallback. Some stores disable /products.json entirely; those stores come back as one error row and nothing else. A /sitemap.xml + product-JSON-LD fallback is future work, not built here.
  • No customer or seller personal data is collected — catalog/pricing only.
  • Free-plan compute only (policy/RULES.md rule 4); no residential proxy.