# Changelog of Google AI Overview Scraper (`searchapi/google-ai-overview-scraper`) Actor

- **URL**: https://apify.com/searchapi/google-ai-overview-scraper/changelog.md
- **Full Actor documentation**: https://apify.com/searchapi/google-ai-overview-scraper.md

## Changelog

### \[3.1.0] - 2026-09-22

- Added explicit Google market, provenance, retrieval method, and synchronized nested search metadata.

### \[3.0.0] - 2026-08-29

- Added an HTTP-only `GOOGLE_SERP` transport instead of attempting the unsupported HTTPS Playwright tunnel through that proxy group.
- Added bounded parallel query fetching, response status/content-type/challenge validation, safe `/goto` and `/url` source-redirect normalization, and the existing typed dataset normalizer on the new transport.
- Kept the country-aligned Playwright/Residential path as a fallback for non-`GOOGLE_SERP` configurations.
- Made `GOOGLE_SERP` the default cloud proxy group and aligned package, lockfile, schema metadata, tests, linting, and security overrides for version 3.0.

All notable changes to the Google AI Overview Scraper are documented here.

### \[2.5.2] - 2026-08-28

#### Changed

- Residential proxy sessions now default to the country matching `gl`, and generated browser fingerprints use a locale matching `hl` plus that country.
- Reduced per-session usage to limit ordinary cross-query rate accumulation.
- Explicit Google challenge pages now set an actionable `TARGET_BLOCKED` status while remaining non-retryable and excluded from datasets.

#### Diagnosed

- The successful build `2.5.6` and blocked build `2.5.7` runs used identical inputs and Residential settings; the later failure was a target-side session challenge, not missing input or selector drift.
- Apify's `GOOGLE_SERP` group does not support the HTTPS Playwright tunnel for this Actor (`ERR_TUNNEL_CONNECTION_FAILED`), so Residential remains the supported browser proxy path.

### \[2.5.1] - 2026-08-28

#### Changed

- Replaced the custom credential-reading static proxy fallback with Crawlee's supported proxy and session configuration.
- Switched all Google navigation to HTTPS and added response status/content-type validation plus fail-closed CAPTCHA handling.
- Added single-query mode, deduplicated multi-query mode, concurrency/retry/timeout controls, and stable query IDs.
- Published a typed 39-field dataset schema with nested citation, organic-result, and metadata contracts.
- Added bounded citation-redirect resolution so opaque Google `/goto` tokens are never stored, and narrowed related-question extraction to question-shaped text.
- Aligned Apify, Crawlee, Playwright, and Docker versions and patched all production dependency advisories.

#### Verified

- Six unit/DOM extraction tests pass and the production dependency audit reports zero vulnerabilities.
- Local `apify run` launches Playwright, identifies the current local-IP CAPTCHA without retries, stores no challenge data, and exits in about 11 seconds.

### \[2.0.0] - 2026-06-12

#### Added

- **Schema expanded** from 22 to **35 fields**.
- **New fields**: `type`, `resultType`, `query`, `aiSummaryHtml`, `aiSummaryLength`, `aiSummaryTokens`, `model`, `modelProvider`, `inlineReferencesCount`, `followupQuestionsCount`, `relatedQuestionsCount`, `organicResultsCount`, `firstOrganicResult`, `summaryTitle`, `summarySubtitle`, `matchedSelector`, `errorType`, `language`, `country`.
- **New view**: `fullDetails` — all 35 fields.
- **INPUT.json** added at project root for local validation.

### \[1.0.0] - 2025-05-20

#### Added

- Initial production release of the Google AI Overview Scraper.
- `PlaywrightCrawler`-based architecture using Chrome.
- Modular project structure.
- `validate-datasets.js` for local dataset output validation.
- `Dockerfile` using `apify/actor-node-playwright-chrome` image.
- `README.md` with full Apify usage guide.
