Shopify product API: prices and variants
Pricing
$2.00 / 1,000 observed products
Shopify product API: prices and variants
Extract products, variants, prices, stated stock and image URLs from public Shopify catalogs. Start with one store and inspect completeness. Demo: https://market-data-gateway-production-2084.up.railway.app/launch/shopify-catalog-proof
Pricing
$2.00 / 1,000 observed products
Rating
0.0
(0)
Developer
Hadi Kanj
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a month ago
Last modified
Categories
Security
Limited permissionsShare
Shopify Catalog Proof — Products & Change Monitor
Export public Shopify catalogues with variants, prices, sale discounts, stock availability, descriptions and image URLs. Schedule repeat runs to detect restocks, sold-out variants, price changes, new products and confirmed removals.
Quick start
- Enter one or more Shopify store homepage URLs.
- Set a maximum product count and maximum run cost.
- Run and download the dataset as JSON, CSV or Excel.
- Open Scan completeness to check whether each catalogue was fully scanned.
{"stores":["https://www.allbirds.com"],"maxProducts":1000,"stateKey":"competitors","onlyChanges":false}
What makes the change monitor useful
Product and variant IDs drive comparisons. A short page does not prove completeness: the scanner continues until an empty page. Failed, blocked, repeated or capped pagination is explicitly incomplete. Incomplete scans never mark products removed or replace a complete baseline. A budget-limited run also preserves the previous baseline. History is kept separately for every Apify user and monitor name.
The first run returns BASELINE records. Repeat the same input with the same stateKey to compare. Set onlyChanges to suppress unchanged output; every observed product is still charged, including unchanged products. A complete scan of an empty catalogue may confirm removals from a prior complete baseline. Changing the maximum product count can prevent baseline updates if the scan becomes capped.
Output
Each product includes id, store, url, title, vendor, productType, tags, plain-text description, images, publication/update timestamps, variants, evidenceUrl, observedAt, baselineAt and changes.
Variants include stable IDs, SKU, barcode, option values, numeric price, compareAtPrice, discount percentage and available (true, false or null). No inventory quantity is inferred from availability. Images are original URLs; this Actor does not download or license image files.
Change types include BASELINE, NEW_PRODUCT, NEW_VARIANT, REMOVED_VARIANT, PRICE_CHANGED, RESTOCK, SOLD_OUT, CONTENT_CHANGED, VARIANT_CHANGED and REMOVED_PRODUCT. Removal rows have recordType: "REMOVAL".
SUMMARY contains each store's status, completeness, pages fetched, observed products, baseline update state and error, plus output count and budget-stop status. Read this even if the dataset is empty. A successful Actor run does not guarantee that every store was accessible.
API integration
Use your own Apify token. Never share it in public code.
curl -X POST 'https://api.apify.com/v2/acts/hadi.kanj~shopify-catalog-proof/run-sync-get-dataset-items' \-H "Authorization: Bearer $APIFY_TOKEN" \-H 'Content-Type: application/json' \-d '{"stores":["https://www.allbirds.com"],"maxProducts":1000}'
For larger catalogues, start an asynchronous run with /runs, poll its status and retrieve its defaultDatasetId and defaultKeyValueStoreId. Schedule daily runs in Apify with an unchanged monitor name to build history.
Limits and honest data handling
Up to 20 stores and 10,000 products per store. Only public, unauthenticated feeds are supported. Headless stores, password-protected shops, robots restrictions or merchant firewalls may prevent extraction. No login, proxies, browser rendering or bypass is included. HTTP failures and invalid feeds are reported in the summary.
The public products feed does not establish currency; currency is null rather than guessed. Prices use the store's denomination. Stock means the feed's advertised availability, not exact inventory. This is a snapshot, not a reservation or checkout quote. Source timestamps may change while pagination runs; no public feed provides transactional consistency across pages. Recheck the store before a purchasing decision.
Pricing
The Store pricing panel is authoritative. Billing is per observed product, including unchanged checks; variant rows are included within that product. Confirmed removal rows and unsuccessful fetches do not trigger product charges. Use Maximum cost per run to control spending. Platform usage is included when the pricing panel specifies it.
Support
Open an issue on this Actor with the store URL, run ID and unexpected result. Do not include API tokens or private credentials.