# Changelog of Google Search Scraper (`searchapi/google-search-scraper`) Actor

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

## Changelog

### Unreleased

#### Added

- Extracted cited Google AI Overviews into typed dataset records with answer text and source links.
- Restored the ESLint 9 flat configuration so the documented lint command runs.

#### Fixed

- Aligned `maxItems` schema/runtime limits at 1–500 and rejected invalid values instead of silently clamping them.
- Added configurable concurrency, retry, navigation-timeout, and handler-timeout controls.
- Added browser response status/content-type validation and fail-fast CAPTCHA handling.
- Propagated extraction failures and fail closed on incomplete crawls rather than silently reporting success.
- Added safe status/content-type and malformed-payload handling for proxy JSON responses.
- Pinned patched transitive releases for `brace-expansion`, `ip-address`, and `nanoid`.
- Added the missing ESLint 9 flat configuration so the documented lint command runs again.
- Updated organic extraction for current compact Google layouts and Google redirect-style result links.
- Prevented PAA and related-search aggregates from masking a missing primary result set.
- Added confirmed no-results handling, source-domain recovery, and type-specific PAA/related-search output fields.
- Switched cloud builds to deterministic `npm ci` and removed verbose dependency-tree output.

All notable changes to the Google Search Scraper are documented here.

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

#### Added

- **Schema expanded** from 31 to **46 fields**.
- **New fields**: `resultType`, `titleHtml`, `url`, `displayUrl`, `host`, `description`, `imageUrl`, `reviewCount`, `dateRaw`, `category`, `tags`, `isAd`, `isSponsored`, `query`, `market`.
- **New view**: `fullDetails` — all 46 fields.
- **INPUT.json** added at project root for local validation.

### \[2.0.0] - 2026-06-12 (Google refactor)

#### Added

- **Identity & metadata**: `position`, `page`, `type`.
- **URLs**: `link`, `displayedUrl`, `domain`, `favicon`.
- **Snippet**: `snippet`, `snippetHtml`, `emphasis`, `sitelinks`, `breadcrumbs`.
- **Media**: `thumbnail`.
- **Ratings & price**: `rating`, `ratingCount`, `price`, `priceNumeric`, `currency`.
- **Dates**: `date`, `publishedAt`, `publishedAtRaw`, `relativeTime`.
- **Rich result**: `richResultType`, `additionalInfo`, `cacheLink`.
- **Run context**: `searchUrl`, `searchMetadata`, `searchQuery`, `country`, `language`, `scrapedAt`.
- **Shared validator/normalizer** wired to `_canonical/`.

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

#### Added

- Initial production release of the Google Search Scraper.
- `PlaywrightCrawler`-based architecture using Chrome (`apify/actor-node-playwright-chrome`).
- Modular project structure with parsers for organic, featured snippet, PAA, related searches, top stories, knowledge panel, image pack, videos.
- `validate-datasets.js` for local dataset output validation.
- `Dockerfile` using `apify/actor-node-playwright-chrome` image.
- `README.md` with full Apify usage guide.
