# Changelog of Product Hunt Scraper (with Emails) (`parsebird/product-hunt-scraper`) Actor

- **URL**: https://apify.com/parsebird/product-hunt-scraper/changelog.md
- **Full Actor documentation**: https://apify.com/parsebird/product-hunt-scraper.md

## Changelog

### v1.4 — 2026-10-01

- The run log no longer prints the proxy connection URL (which contained proxy credentials); it now just notes that Apify Proxy is in use

### v1.3 — 2026-08-02

- Fixed every run failing with "Rate limited (429)" until retries were exhausted: the account lost access to the `SHADER` datacenter proxy group the actor defaulted to, and Product Hunt's Cloudflare rate-limits are per-IP rather than per-request, so retries kept hammering the same blocked exit node. Switched the default proxy to residential and added proxy session rotation on 429/403/Cloudflare-challenge responses.
- Fixed `maxNbItemsToScrape` being silently capped at whatever the first daily-leaderboard page happened to render server-side (as few as 6 items early in the day, misleadingly logged as a "Product Hunt SSR limit"). The page actually exposes `pageInfo.hasNextPage`/`endCursor` that was never used. Reverse-engineered Product Hunt's own "load more" GraphQL request (`/frontend/graphql`, `homefeedItems` query) and wired in real cursor-based pagination for the daily leaderboard, so requesting more items now actually fetches more pages instead of stopping after page one. Added dedup at the SSR/GraphQL page boundary. (Weekly/monthly/yearly leaderboards and category/topic pages still return a single page for now — they use a different, not-yet-reverse-engineered query shape.)
- Fixed proxy rotation silently never triggering: on-platform, `ProxyConfiguration.new_url()` with no `session_id` returns the same run-scoped credential string every call, so the "did the URL change" check always failed and every 429/403 fell through to plain backoff-and-retry on the same blocked IP. Now passes a fresh random `session_id` on each rotation, which actually forces a new exit IP.

### v1.0 — 2026-06-20

- Initial release
- Scrape daily, weekly, monthly, and yearly Product Hunt leaderboards
- Scrape Product Hunt category and topic pages
- Direct Product Hunt page URL input support
- Optional comments, reviews, built-with, launch history enrichments
- Optional website enrichment with email extraction
- Pay-per-event pricing: product-scraped and email-enrichment events
- Input validation: single target section per run, rejected unsupported URLs
- Defaults to today's California-time daily leaderboard when all targets are empty
