# Changelog of Google Search Results Scraper — Cheaper SERP API (`prodiger/google-search-scraper`) Actor

- **URL**: https://apify.com/prodiger/google-search-scraper/changelog.md
- **Full Actor documentation**: https://apify.com/prodiger/google-search-scraper.md

## Changelog

### 0.1.7 (2026-09-29)

Fixes runs that returned `organicResults: []` for every page, and that were sometimes charged for pages that were really the Google homepage.

- **Default proxy.** If `proxyConfiguration` is omitted, the actor now uses Apify RESIDENTIAL proxies (country from `countryCode`), falling back to GOOGLE\_SERP and then to no proxy. The input prefill is now RESIDENTIAL.
- **Fetching (residential, datacenter, custom or no proxy).** Requests now go to `https://.../search?...&gbv=1` with a basic-HTML user agent and a fresh proxy session on each attempt. Google redirects plain `http://www.google.com/search` to the homepage, and it serves modern browsers a page that needs JavaScript.
- **Fetching (GOOGLE\_SERP).** A normal results page is no longer mistaken for a block. Script strings such as `/sorry/index` and the `<noscript>` enablejs refresh had been triggering that. The actor also no longer falls back to an unproxied headless browser, which Google always CAPTCHAs. Google's opaque `/goto?url=...` result links are now resolved to the real target URLs.
- **Query handling.** An explicit `start=0` is no longer sent. When Google returns results that ignore part of the query (such as `site:` queries answered with off-site results), the page is retried in verbatim mode (`tbs=li:1`). GOOGLE\_SERP requests and pages 2+ use verbatim mode from the start.
- **Charging.** Only real results pages are charged. Homepage, consent, CAPTCHA, JavaScript interstitial, HTTP error, empty parse and off-query pages are retried, and if they still fail they become uncharged `#error` records.
- **Parser.** Supports the current desktop markup (`/goto` links, `data-pcu` ad URLs, `data-q` People Also Ask) and the basic HTML markup. Related searches no longer include tab and filter links, "Read more" links are no longer counted as sitelinks, and AI Overview detection no longer matches the whole page.
- **Pagination.** Page N now requests `start=(N-1)*10`, because Google ignores `num`. Before this, pages were skipped when `resultsPerPage` was above 10.
- **Defaults and dependencies.** `requestRetries` now defaults to 3. `renderJavascriptOnBlock` is deprecated and ignored. Playwright was removed and the image is now `apify/actor-node:22`.

### 0.1.0

- Initial Google Search SERP scraper actor.
- Added query and Google Search URL inputs, pagination, country/language controls, advanced query filters, static SERP parsing, optional HTML snapshots, and pay-per-event charging.
