# Changelog of Google Play Scraper — Apps, Reviews & ASO Data (Pay-Per-Event) (`prodiger/google-play-scraper`) Actor

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

## Changelog

All notable changes to this actor will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).

### \[0.1] — 2026-07-26

#### Added

- Initial release. Pay-per-event Google Play Store scraper — HTTP-only, no API key, no headless browser.
- Three modes:
  - **search** — find apps by keyword (one pass per term).
  - **details** — full 50+-field listing for specific package IDs.
  - **reviews** — user reviews for specific package IDs, with the developer's public reply, automatic pagination via Google's continuation token, `reviewSort` (newest / rating / relevant), and an optional exact-star `reviewScore` filter.
- `appIds` accepts bare package names (`com.whatsapp`) or full Play Store URLs (package ID extracted from `?id=`).
- Reference-shaped output: `updated` (ms) normalized to ISO `updatedAt`, ratings histogram flattened to `histogram1star`–`histogram5star`, `containsAds` derived from `adSupported`, `searchTerm` provenance stamped in search mode, and `scrapedAt` on every row. Unknown library fields pass through verbatim.
- Run-level de-duplication: apps by `appId` across overlapping search terms, reviews by `reviewId` across pages — no double-emitting or double-billing.
- PPE events: `actor-start`, `app-detail`, `review`. Charges fire only after a successful dataset write and honor the run's max-charge ceiling.
- Per-item error capture to a sidecar key-value store record; a bad ID or transient failure does not abort the run.
- Apify Proxy support with per-retry session rotation; bounded retries with exponential backoff.
- Optional `customMapFunction` to transform each row before it is saved.
- TypeScript strict, Vitest unit tests, Zod input validation.
