# Changelog of Home Depot Scraper - Product Prices, Discounts & Ratings (`haketa/home-depot-product-scraper`) Actor

- **URL**: https://apify.com/haketa/home-depot-product-scraper/changelog.md
- **Full Actor documentation**: https://apify.com/haketa/home-depot-product-scraper.md

## Changelog

### 1.1.0 — 2026-11-01

- **Fixed a hard block that returned 0 results.** Home Depot tightened its Akamai bot
  defense so the search (`/s/`) and product (`/p/`) pages now serve a `sec-cpt` JavaScript
  sensor challenge that the previous HTTP-only, mobile-Safari fingerprint path could not
  pass (every request returned HTTP 403). Page requests are now routed through Apify's
  **Unblocker proxy**, which solves the Akamai challenge and returns the real HTML
  containing the `__APOLLO_STATE__` payload and the search `navParam`.
- **Kept pagination fast and cheap.** The internal `searchModel` **GraphQL** endpoint is
  paginated over fresh **US residential** sessions (a new session per attempt, with
  retries) rather than the heavier Unblocker, so deep result sets stay affordable.
- **Verified in production:** a fresh run returned **400 unique Home Depot products with
  0 duplicates** for a single keyword via automatic pagination, with core-field coverage of
  itemId/title/productUrl/productType/imageUrl/rating **100%**, brand/modelNumber/reviewCount
  **99%**, storeSkuNumber **97%** and price **96%**. Promotion fields (`originalPrice`,
  `savings`, `percentageOff`) populate for on-sale items only (~19%). No value bugs: correct
  numeric types, absolute URLs, no `[object Object]`.
- **Robustness:** HTML fetches now retry up to 8 times (Unblocker occasionally returns a
  transient 502 on the first solve) and GraphQL pagination retries up to 6 times with
  session rotation.
- **Docs:** refreshed the README to the current output schema and sample, documented the
  Unblocker-based anti-block handling, and added this changelog.

### 1.0.0 — 2026-08-17

- Initial release: Home Depot product scraper by keyword, search URL, product URL or
  item ID. Extracts title, brand, model number, store SKU, price, original price, discount,
  rating, review count, image and store-localized pricing. Automatic pagination via the
  `searchModel` GraphQL endpoint; de-duplication by `itemId`; export to JSON/CSV/Excel/API.
