Google Play Reviews Scraper avatar

Google Play Reviews Scraper

Pricing

from $0.08 / 1,000 reviews

Go to Apify Store
Google Play Reviews Scraper

Google Play Reviews Scraper

Reviews of any Google Play app by country and language, with developer replies: rating, text, version, date, helpful votes. Author data hashed, emails and phones redacted.

Pricing

from $0.08 / 1,000 reviews

Rating

0.0

(0)

Developer

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 hours ago

Last modified

Categories

Features

Limited permissions

Share

Google Play Reviews Scraper extracts user reviews from any Google Play app by country and language: star rating, review text, app version, publication date, helpful votes and the developer reply when there is one. Give it package names or Play Store URLs and get clean, deduplicated JSON, CSV or Excel. It is a fast Google Play reviews API alternative for sentiment analysis, customer support analytics, competitor tracking and ASO research, with no Google account and no login.

Author names are included and can be hidden with one switch for GDPR (hideAuthorNames). A keyed author_hash is always output; avatars, profile URLs and raw user ids never are. Developer replies are the developer's own text, as written. Emails and phone numbers typed into a review are redacted.

What is Google Play Reviews Scraper?

Google Play Reviews Scraper reads the same public review feed the Play Store web page uses and turns it into a flat, consistent dataset. Run it once for a snapshot, or schedule it daily with sort = recent and dateFrom to collect only new reviews. Pagination is handled for you, 40 reviews per request.

It shares one output contract with App Store Reviews Scraper, so you can ingest both stores with a single integration.

What data does Google Play Reviews Scraper extract?

FieldWhat it is
⭐ ratingStars, 1 to 5
📝 textReview body (emails and phones redacted). Google Play reviews have no title, so title is null
🕒 published_atPublication time, ISO 8601, UTC
💬 developer_reply, developer_reply_atThe developer's answer, exactly as written, and when it was posted, or null
📱 app_versionApp version the review refers to
👍 helpful_countHelpful votes
🌍 country, langStorefront country (gl) and review language (hl) you requested
🏷️ app_id, app_namePackage name and app name
🔑 review_idDurable review id, used to deduplicate
👤 author_nameAuthor display name. null if you enable Hide author names
🔒 author_hashKeyed HMAC-SHA256 pseudonym of the user id. Stable across runs while the salt is unchanged
🔗 source_url, scraped_atPublic store page for that country and language, and extraction time (UTC)
🚩 _quality_*Flags for missing text, rating or date. Flagged, never filtered

Fields the source does not provide are null, never invented.

How to scrape Google Play reviews with Google Play Reviews Scraper

  1. Open Google Play Reviews Scraper on Apify and click Try for free.
  2. In App IDs or URLs, add package names such as com.whatsapp or full Play Store URLs.
  3. In Countries and Languages, choose where and in which language you want the reviews, for example es and es. Each app x country x language is scraped as its own group.
  4. Set Max reviews and Sort: recent for newest first, helpful for the most helpful first.
  5. Optionally set Reviews since. With recent, the run stops as soon as it reaches older reviews.
  6. Click Start and download the results as JSON, CSV, Excel or XML, or read them through the API.

Input parameters

ParameterTypeDescription
appIdsarray, requiredPackage names or Play Store URLs
countriesarrayCountry codes (gl). Empty: the URL's, else us
languagesarrayReview language filter (hl). Empty: the URL's, else en
maxReviewsintegerMax per app x country x language. If empty, 100
sortrecent or helpfulIf empty, recent
dateFromdate YYYY-MM-DDOnly reviews published on or after this date (UTC)
hideAuthorNamesbooleanIf on, author_name is null in every row (GDPR). Default off

Example input

{
"appIds": ["com.whatsapp"],
"countries": ["es"],
"languages": ["es"],
"maxReviews": 200,
"sort": "recent"
}

Output example

{
"review_id": "00000000-0000-4000-8000-00000000a001",
"store": "google_play",
"app_id": "com.example.app",
"app_name": "Example App",
"country": "es",
"lang": "es",
"rating": 1,
"title": null,
"text": "The app crashes when I open the chat.",
"author_hash": "3f1c0c5a0a6d6b7e9d2b8f4c1a7e5d3b9c0f2a6e8d4b1c7a5e3f9d0b2c4a6e81",
"author_name": "Jane Example",
"app_version": "2.26.43.76",
"published_at": "2026-11-08T11:20:26Z",
"developer_reply": "Thanks for letting us know, please contact support so we can help.",
"developer_reply_at": "2026-11-09T04:53:20Z",
"helpful_count": 3,
"source_url": "https://play.google.com/store/apps/details?id=com.example.app&hl=es&gl=ES",
"scraped_at": "2026-11-09T10:00:00Z",
"ext_pii_redactions": 0,
"ext_sort": "recent",
"ext_author_hash_weak": false,
"_quality_missing_text": false,
"_quality_missing_rating": false,
"_quality_missing_published_at": false,
"_quality_missing_app_name": false,
"_quality_bad_number": false,
"_quality_pii_redacted": false
}

Every run also writes a SUMMARY record with, for each app, country and language: reviews scanned, emitted and dropped, pages read and the reason it stopped.

How much does it cost to use Google Play Reviews Scraper?

Google Play Reviews Scraper uses pay-per-event pricing: you pay per review delivered, plus a negligible amount of compute. Start with 10 reviews to see the exact bill, and set a maximum charge per run in the Apify Console to cap spending. Because every app x country x language is its own group, the cost of a run is simply the number of reviews you ask for.

Privacy & GDPR

  • Author name. author_name is the display name published with the review. If you want to minimise personal data, switch on Hide author names (hideAuthorNames): every row then has author_name = null.
  • Author hash. author_hash is a keyed pseudonym: HMAC-SHA256 of the author id, computed with the secret AUTHOR_HASH_SALT of the Actor. It is stable across runs (as long as the salt does not change), so you can count repeat reviewers, but it is pseudonymisation, not anonymisation: whoever holds the salt can recompute it, and if no salt is set the Actor flags every row with ext_author_hash_weak = true.
  • Never output. Avatars, profile URLs and raw author ids are never output, in either mode. Emails and phone numbers written inside the review text are redacted ([email], [phone]). Developer replies (developer_reply) are the developer's own text, exactly as written.
  • Your responsibility. Review text is free text and may contain personal information. You remain responsible for your lawful basis, retention and use of the data under GDPR and the store's terms.

Google Play Reviews Scraper only collects review data that is publicly visible on Google Play.

FAQ

Does Google Play Reviews Scraper return developer replies? Yes, in developer_reply and developer_reply_at, when the developer answered. Most reviews have no reply.

Why is title always null? Google Play reviews do not have a title.

What does the language filter do? hl filters the reviews by their language and gl selects the country. Checked live on 2026-11-09 for com.whatsapp with gl=ES: hl=es and hl=en returned 40 reviews each and shared none of them, the first set in Spanish and the second in English and other languages. Reviews that still match several groups are deduplicated by review_id, and a group that keeps returning only already-seen reviews stops after 3 pages.

What happens if Google blocks a request? The Actor retries with backoff and then switches to an Apify datacenter proxy. If one app, country or language keeps failing, the others still run. The run always ends cleanly with a SUMMARY record: completed, no_results, partial (some groups failed) or failed (all of them), with a stopped_reason per group.

How do I get only new reviews each day? Schedule the Actor with sort = recent and dateFrom set to yesterday.