# Changelog of Shopify Products Scraper: Store Catalog Export to JSON, CSV (`rowcraft/shopify-products-scraper`) Actor

- **URL**: https://apify.com/rowcraft/shopify-products-scraper/changelog.md
- **Full Actor documentation**: https://apify.com/rowcraft/shopify-products-scraper.md

## Changelog

### 1.0.6 (2026-10-17)

- README: the list of other Rowcraft actors now includes the five website and extension tools published on 16.10.2026.
- Shared library: URL-like fields named link or guid (feed items) are no longer flagged as phone numbers; retry log line now reads "retry n/m".
- Shared library: an HTML page where JSON was expected (maintenance or block page, seen on 17.10.2026 at the Polish KRS API and at Workday) is retried and then reported with the page text instead of crashing the run on a parse error.

### 1.0.5 (2026-10-15)

- README: the list of other Rowcraft actors now includes the five SEO and domain tools published on 15.10.2026.

### 1.0.4 (2026-10-13)

- README: the list of other Rowcraft actors now covers the whole family, and every ready-made example is linked from the Use cases section.
- Memory: the short-lived part of the Node heap is capped, so large runs on small memory no longer end without a message; the run summary reports the memory peak (memoryPeakMb).

### 1.0.3 (2026-10-11)

- README: screenshots of the input form and of the results table, taken from real runs.

### 1.0.2 (2026-10-11)

- Input form: a short intro line at the top says what the Actor reads and what it leaves out.

### 1.0.1 (2026-10-11)

- The field `stateKey` is now `stateName` (the memory used by **Only new rows**): the Apify quality check treats a field named \*Key as a secret and asked for it to be encrypted, which would hide the name you chose. Runs that still send `stateKey` keep working.
- The webhook address in `notifyUrl` is stored encrypted (secret input field): webhook URLs are credentials.
- README: the list of other Rowcraft actors now covers all 13.
- The row limit in the input form is prefilled with 50 (API calls that omit it keep the default of 1,000); the example input in the API tab is limited to 100 rows.

### 1.0.0 (2026-10-10)

- First release: products from the public catalogue endpoints of Shopify storefronts (products.json, collection products.json, product .json) for the stores the customer lists; a domain, a store URL, a collection URL or a product URL each work.
- One flat row per product (lowest and highest price, compare-at price, discount, stock, variants, SKUs, options, images, tags, dates, store name, country and currency from the store's own metadata) or one row per variant.
- Filters before anything is charged: in stock only, published or updated after a date, vendors, product types, tags, title text, price range; per-store and total limits.
- robots.txt is read and obeyed per store; a store that answers 403, 404, an anti-bot page, HTML instead of JSON or a 429 is skipped and named in the run summary, never retried through proxies.
- Standard Rowcraft features: count only (the store's own product count when no filter is set), only new rows since the last run, notification webhook, charge cap, run summary with one line per store.
