All notable changes to Shopify Products Scraper are recorded here. The newest release is first.
Apify renders this as a Changelog tab on the Store page. Keeping it current is a
visible signal that the Actor is maintained, which feeds the quality score that
drives Store and MCP search ranking. Add an entry with every published build.
Store summaries (backward compatible: new inputs are optional and off by default; product prices and product rows are unchanged).
- New One row per = Store summary (
outputMode: "store"): one row per store, no product rows. Product and collection counts, the 25 largest collections, price range, median and average, currencies, share on sale and in stock, top vendors, product types and tags, last product update, ships-to countries, theme name and version, headless and password flags, apps seen in the home page's public scripts, and the store's own social links.
- New Add a store summary row (
includeStoreSummary): the summary next to the product rows; a row is kept free under Maximum results for every store's summary.
- New Products sampled per store summary (
storeSummarySampleSize, default 250, up to 1,000).
- New pay-per-event event
store: $0.004 per summary row, charged instead of the product result for that row. Failed parts leave the row with a collectionsError, productSampleError or homePageError reason instead of losing the store.
- Summaries hold no personal data: no emails, phone numbers or names, only the business's country and state and its business social profiles.
- Docs: related Actors listed; input field descriptions clarified for AI agents.
- A store that answers "slow down" (Shopify's HTTP 430) now gets the same polite back-off as a 429 instead of an immediate retry.
- A shop whose own page description mentions "captcha" or "access denied" is no longer mistaken for an anti-bot wall.
First public release.
- Reads any Shopify store's public product feed (
/products.json, collection feeds, /products/<handle>.json) with no login and no API key: products, variants, prices, compare-at prices, availability, SKUs, images, dates, store currency.
- Headless and redirecting stores are read through the store's own
.myshopify.com address; the store currency is pinned on every request.
- Filters (in stock, price range, product type, vendor, tags, title keywords, updated since), per-store limits, product or variant rows.
- Every row carries
status, so a missing record (not_found) and a failure (error) are told apart from real data. Only ok rows are charged.
- Records are validated against a schema before they are written, so an upstream change produces loud warnings instead of silently billing for empty rows.
- Callable with no arguments by an AI agent, which the input schema's defaults make safe.