Google Play Reviews Scraper
Pricing
from $3.99 / 1,000 results
Google Play Reviews Scraper
Effortlessly scrape and analyze user reviews from any Google Play Store application. Get valuable insights into user feedback, ratings, and sentiment with support for multiple languages. Perfect for app developers and market researchers.
Pricing
from $3.99 / 1,000 results
Rating
0.0
(0)
Developer
Coding Frontned
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
15 days ago
Last modified
Categories
Share
Collect public reviews and app metadata from Google Play. The Actor preserves complete source-provided review text and developer replies, review criteria, helpfulness, review-specific app versions, and detailed app/developer metadata. Missing source fields are omitted.
Required target and input compatibility
Provide either appIds (one to twenty Android package IDs) or legacy appId (one package). They remain mutually exclusive. The form shows Google Maps as a visible example; it is not a runtime default. Missing package IDs fail honestly before any source request.
All original production input fields retain their meanings and bounds:
language:en;country:ussort:newest,rating, orhelpfulnessmaxReviews: 1–5000 per app, default 100fingerprintProfile,proxySessionId, and optionalproxyConfigurationremain supported
Existing request controls remain available: requestTimeoutMs, requestDelayMs, maxRequestRetries, maxResponseBytes, and includeDiagnostics. The byte budget rejects an oversized response before parsing; it is not a streaming download-memory guarantee. Direct public requests are the default.
Bounded two-page example
{"appIds": ["com.google.android.apps.maps"],"language": "en","country": "us","sort": "newest","maxReviews": 200,"requestDelayMs": 1000,"maxRequestRetries": 0,"includeDiagnostics": true,"proxyConfiguration": { "useApifyProxy": false }}
The same input is in test/enriched-multipage-input.json. The cap is a maximum, not a guarantee that that many public reviews exist in a storefront.
Enriched dataset
The default Reviews and developer replies view exposes 25 useful columns, compared with the previous nine. App and developer metadata exposes 44 columns; Review identity and source exposes 18. JSON exports retain every available declared field.
Review data includes:
- Public reviewer display name/avatar, score, full text, date, helpfulness and review-specific app version
- Complete disclosed developer reply and reply date
- Typed review criteria and ratings where supplied
- Word/character counts and reply/criteria presence derived from the emitted source data
App data includes:
- Name, summary, full description/HTML, version, recent changes and update timestamp
- Installs, aggregate rating/counts/histogram, price/currency and disclosed purchase/availability fields
- Genre/categories, Android compatibility, content-rating information
- All disclosed screenshots, without the former 20-image cap, plus available icon/header/video fields
- Public developer contact/profile information and four newly retained registered-developer fields: legal name, legal email, legal address and legal phone number
Developer legal details come only from the public app page; no private contact endpoint or account lookup is used. App metadata is fetched once per app and repeated across its reviews for convenient export. Repetition does not represent additional independent apps or developers.
Full review/reply/app text is no longer arbitrarily cut at 5,000/30,000 characters. Source line breaks are retained. Counts match the emitted text. The source may itself limit text; the Actor does not invent or reconstruct withheld content.
See SOURCE_FIELDS.md for source paths and missing-field semantics.
Pagination and terminal status
Every review call explicitly requests one fixed 150-review source page with paginate: true, including the first page. This prevents hidden library recursion and preserves real page ranks. The final output is capped after deduplication, so overlapping pages do not reduce the unique-review target. Pagination uses returned tokens; repeated tokens, duplicate-only continuation pages and malformed pages fail rather than loop or report empty success.
Valid rows are saved as they are collected. A later page/app failure retains those rows, records PARTIAL in both summaries, and exits nonzero. A run with no usable reviews records FAILED and exits nonzero. Exhausting available source reviews below the requested cap can still succeed.
Only transient failures are retried. Access denials, rate limits, consent/access challenges, parser failures and oversized responses are not retried. Access restrictions stop the collection; the Actor does not change identity, proxy, app target or route to bypass them.
Diagnostics contain only url, error, errorCode, and scrapedAt. Set includeDiagnostics: false to omit these rows; errors and nonzero terminal status remain. Normal rows keep the existing app/review identities, source and ranking fields. Operational counters belong in summaries.
Summaries
OUTPUT and OUTPUT_SUMMARY remain identical compatibility records under strict schemas. They report status, app/review counts, data availability, diagnostics/errors, actual request attempts, successful requests, pages, duplicate/drop counts, locale, proxy use and completion time. scrapedApps counts apps with saved rows; completedApps counts apps whose bounded collection completed without failure.
Validation scope
On 2026-09-30, one ordinary public Maps app-page request and two review-page requests returned HTTP 200. The two fixed-size pages contained 300 unique reviews, including 57 developer replies, 94 populated criteria collections and 291 review-version values. The app page exposed 30 screenshots and all four registered-developer fields.
The actual SDK entrypoint replayed those captured raw responses through the installed source parser and produced valid 200-row and 300-row datasets, including both strict summaries. This is source capture plus local replay validation; it does not by itself claim cloud deployment or validation of other apps/locales. No sampled review exceeded the old text cap (sample maximum 499 characters); longer-text preservation is covered by synthetic regression tests.
Development
npm cinpm run checknpm run validate -- /path/to/datasets/defaultnpm run validate -- /path/to/review-array.json
npm run check runs lint and tests. The standalone validator fails for a missing/empty dataset, invalid nested records, bad metrics, duplicate identities, rank gaps or inconsistent local summaries. JSON-array validation checks records only; dataset-directory validation also requires both summaries.
Deterministic local QA accepts fixtureJson or a relative fixtureFile under test/fixtures or .actor/fixtures. Fixtures disable network access and accept an object with apps and reviews maps. Fixture controls remain outside the public production form.
Respect source terms, access restrictions, privacy and rate limits. Public review content is untrusted source text. Do not infer private or sensitive personal characteristics from reviewer names or comments.