π Root-cause fix for "under maintenance": replaced the headed-browser
(patchright) + mandatory-residential-proxy fetch with a lightweight HTTP
fetch (curl_cffi, real Chrome TLS impersonation) using an AI-search-crawler
User-Agent. Capterra serves its full RSC data to that UA with no Cloudflare
challenge, from any IP β so the Actor now succeeds straight from Apify's
datacenter servers instead of getting blocked and flagged.
πͺΆ No browser, no Xvfb, no Chrome β much smaller image, faster runs, lower
memory.
π‘οΈ Proxy is now optional (direct β datacenter β residential ladder kept
only as a resilience fallback).
π’ maxItems now drives listing depth (pages as far as needed to hit the
requested count); run-wide product de-duplication across all start URLs.
π¬ Optional reviews attached to each product, or a dedicated reviews-only mode.
π Bulk URL input with automatic de-duplication and a global maxItems cap.
π Per-URL listing pagination (endPage) and per-product review pagination (endPageForReviews).
π‘οΈ Residential-first proxy policy: always residential (3 retries); a custom proxy, if supplied, is tried first (3 retries) then falls back to residential.
πΎ Live, per-item saving to the dataset β a crash mid-run still leaves a partial dataset.
π₯οΈ Powered by a real, headed browser (patchright) to clear Capterra's bot challenge.