Shopify Store Catalog
Pricing
$0.85 / 1,000 product scraped (all variants)s
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
Maintained by CommunityActor 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
| Field | Type | Required | Description |
|---|---|---|---|
storeUrls | array of strings | yes | Storefront root URLs, e.g. https://allbirds.com. |
maxProducts | integer | no | Stop paging a store once this many products have been pushed. Omit for no limit. |
collectionHandle | string | no | Restrict 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.jsonentirely; those stores come back as oneerrorrow 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.mdrule 4); no residential proxy.