# Changelog of Shopify Trending Products Scraper (`badr_xba/shopify-trending-products-scraper`) Actor

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

## Changelog

### 1.0.7 – 2026-11-09

- Successful runs that saved at least one result end their status message with one short, optional invitation to leave a Store review or open an issue (never on failed or empty runs); README section "Feedback and reviews". Output and billing unchanged.

### 1.0.6 – 2026-11-08

#### Added

- `options` on every row: the options the store offers with their values (the placeholder "Title: Default Title" is dropped).
- With `includeVariants`: `weightGrams`, `requiresShipping` and the variant's own photo `imageUrl` (validated https) per variant.
- Dataset view **Options, variants & identifiers** (image column first) and its output link.
- Visual report (kit 1.1.0): live progress while the run is in progress (stores analysed / total, products so far,
  at most one write per minute), warnings & errors panel with failed stores grouped by error code, data-quality panel.
  A FAILED report is saved also when an unexpected error stops the run.

#### Changed

- Visual report: at most 3 photos per product (main photo first, small thumbnails under the card photo); was 5.

### 1.0.5 – 2026-11-08

#### Added

- **Visual report** (`REPORT`, same key, still saved as `text/html`): product cards with the product's own photos
  (gallery viewer with arrows, keyboard and swipe), price / compare-at price / discount, Trend Score badge with level and
  confidence, top signal chips and an expandable "Why this score" panel (every signal with points, kind and evidence);
  search, store / country / category / brand / trend-level filters, a minimum Trend Score slider, signal-kind and
  confidence chips, on-sale / new / increasing-signal filters; sorts (Trend Score, newest, discount, price, growth);
  compare up to 4 products; KPI tiles and charts that follow the filters; CSV / JSON export of the filtered rows and
  links to the full dataset; light and dark mode; works on phones. Up to 2,000 products per report (5 photos each),
  with a notice for bigger runs. Built with the shared visual kit 1.0.1 (`src/visualKit.ts`, a TypeScript port of the
  owner's Python kit producing the same HTML/CSS/JS).
- The previous dashboard numbers are kept in the report's "Run details" panel: execution time, requests, success rate,
  retries, rate limits, peak memory and CPU, the fetched → saved funnel, every store with its status, and the
  distributions by category, country, Trend Score, level, confidence and discount.

#### Changed

- Pricing (pay-per-event, set on the platform): $4.792 / $4.632 / $4.232 / $3.992 per 1,000 saved products on the
  Free / Bronze / Silver / Gold plans (Platinum and Diamond = Gold), plus $0.00004 per Actor start. README price table
  and examples updated (default run of 100 products ≈ $0.48 on Free; 1,000 products = $4.79 on Free, $3.99 on Gold).
  Products removed by filters are still never charged.
- Output tab: the "HTML dashboard" link is now "Visual report"; the "History & growth" dataset view shows the
  product image.
- Dataset fields, input and defaults are unchanged.

#### Fixed

- Polite pacing: the wait between two requests to the same store could end a few milliseconds early on some systems
  (985 ms measured); it now always waits at least the full 1 second (or the store's Crawl-delay).

### 1.0.4 – 2026-11-08

- Published on the Apify Store. README pricing section updated to the pay-per-event prices.

### 1.0.2 – 1.0.3 – 2026-11-08

- Private test builds: the REPORT content-type fix below, then the default `maxItems` lowered to 100.

### 1.0.1 – 2026-11-08 (private build, not published)

#### Fixed

- The HTML report (REPORT) was saved as `text/html; charset=utf-8`, which the Apify platform rejects against the
  key-value store schema (`text/html`), and that error failed the whole run. It is now saved as `text/html`, and a
  report error is only logged as a warning: your dataset is never lost because of the report.

#### Changed

- Default "Maximum products to save" (`maxItems`) is now 100 instead of 1,000, so a first try with default settings
  stays small and cheap. Raise it (or set 0 for no limit) for bigger runs.

### 1.0.0 – 2026-11-07 (not yet published)

#### Added

- Shopify storefront reader: robots.txt (RFC 9309 parser with `*`, `$`, longest match, query strings, Crawl-delay) checked for every URL and redirect; store detection via `/meta.json` or the `/products.json` shape; catalog pagination (`limit=250&page=N`) with stop conditions (short page, empty page, repeated page, per-store limit); curated collections (best-sellers, trending, featured, new arrivals, one seasonal) in merchant order; collection and product URLs.
- Polite HTTP client: ≤ 2 parallel requests and ≥ 1 s between requests per store, exponential backoff with jitter, timeouts, Retry-After on 429/503 with adaptive slow-down, challenge / password / login detection (never bypassed), honest user agent.
- Explainable Trend Score (8 signal groups, caps, single-group cap 49, 2-group cap 89, confidence, evidence per signal, seasonal flag) and cross-store matching (GTIN, SKU, image file, title similarity).
- History snapshots in a named key-value store: new products, variants sold out, price and rank changes, best-seller streaks; growth sort.
- Filters (keywords, categories, type, vendor, tags, price with ECB conversion, discount, stock, dates, store currency / country, minimum score), 7 sort orders, gift-card / shipping-protection exclusion.
- Self-contained HTML dashboard (REPORT), RUN_SUMMARY with phase timings, memory and CPU, FAILED_INPUTS, resume state for migrations.
- 79 curated stores in 10 categories, verified live on 2026-11-07.
- 101 offline tests (vitest, mocked fetch, real Shopify fixtures).
