Google Play Reviews Scraper avatar

Google Play Reviews Scraper

Pricing

from $0.04 / 1,000 reviews

Go to Apify Store
Google Play Reviews Scraper

Google Play Reviews Scraper

🔥 ~$0.04/1K reviews 🔥 Collect every Google Play review for any Android app in 76 languages: rating, full text, author, date, app version, helpful votes, and developer replies. Sort by newest or relevance, and filter by star rating, date, keywords, developer reply, app version, and helpful votes.

Pricing

from $0.04 / 1,000 reviews

Rating

0.0

(0)

Developer

Kai

Kai

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

Get every review of any Google Play app, in all 76 languages, with no limit.

Set maxReviews to 0, and the run reads reviews until Google Play has no more. Asana has more than 7,500 reviews in English, and this Actor reads all of them in under 30 seconds. Choose All languages, and you do not list the languages one by one.

What can you do with it?

  • Feedback monitoring: track the new reviews of your own app in each of your languages.
  • Bug research: collect the one-star and two-star reviews of an app, and find what users complain about.
  • Feature requests: find the reviews that ask for a feature, and leave out the bug reports.
  • Shared pain points: find the low-rated reviews that many users marked as helpful.
  • Praise and testimonials: find the most relevant five-star reviews.
  • Support follow-up: find the reviews that have no developer reply, and answer them.
  • Support analysis: see who replies to reviews, how fast, and with what text.
  • Release tracking: filter by appVersions to see how a release changed the ratings.
  • Competitor benchmarking: compare the reviews and the rating summaries of several apps.
  • Market research: compare how users in different languages rate the same app.
  • All languages: read one app in all 76 languages in one run.
  • Text and sentiment datasets: get the same number of reviews for each star rating, with the full text.
  • Full archive: download every review of an app in one language.

What data does it extract?

DataWhen you get it
Review ID, rating, text, date, and linkEvery run
Reviewer name and pictureEvery run
App version that the reviewer usedEvery run
Helpful votesEvery run
Developer reply with author, text, and dateEvery run
App ID, app name, and the review languageEvery run
App details: name, description, category, content rating, icon, and developerincludeAppDetails
Rating summary: average rating and number of ratingsincludeAppDetails
Price and currencyincludeAppDetails

A field without data is null.

Why this Actor?

Google Play Reviews Scraper
Languages76 review languages in one run
DepthMore than 15,000 reviews for each app and language
AppsAs many as you list, in one run
Sort orderNewest or most relevant
FiltersStars, dates, keywords, developer reply, app version, and helpful votes
Star filterAny mix of 1 to 5 stars, with its own limit for each star rating
Developer repliesAuthor, text, and date
DatesISO 8601 in UTC
App detailsA second Dataset, with no charge
RestartsA restarted run never saves or charges a review twice

Quick start

  1. Open the app on Google Play and copy the link.
  2. Paste it into Apps. Add more links or package names for more apps.
  3. Choose the Review Languages. The default is en. Choose All languages to read all 76 languages.
  4. Set Max Reviews. Use 0 to get all the reviews that match your filters.
  5. Click Start. Download the results as JSON, CSV, Excel, or HTML.

The same input as JSON:

{
"apps": ["https://play.google.com/store/apps/details?id=com.asana.app"],
"languages": ["en"],
"maxReviews": 100
}

Examples by use case

Feedback monitoring

Every review of your app since 1 October 2026, in four languages. A maxReviews of 0 sets no limit, and sinceDate stops the run as soon as it reaches older reviews. Schedule the run in Apify, for example every week, and keep the rows whose id you have not saved before:

{
"apps": ["https://play.google.com/store/apps/details?id=com.asana.app"],
"languages": ["en", "de", "pt", "ja"],
"sort": "newest",
"sinceDate": "2026-10-01",
"maxReviews": 0
}

Bug research

The one-star and two-star reviews that mention a crash, a freeze, or a bug. The limit applies to each star rating, so this input gives up to 500 one-star and 500 two-star reviews:

{
"apps": ["com.spotify.music"],
"ratings": ["1", "2"],
"keywords": ["crash", "freeze", "bug"],
"maxReviews": 500
}

Feature requests

The 200 newest reviews that ask for a feature and do not mention a crash or a bug. A review must have at least one of the keywords and none of the excludeKeywords:

{
"apps": ["com.spotify.music"],
"keywords": ["please add", "wish", "feature request"],
"excludeKeywords": ["crash", "bug"],
"maxReviews": 200
}

Shared pain points

The one-star and two-star reviews that have at least 20 helpful votes. The limit applies to each star rating:

{
"apps": ["com.spotify.music"],
"ratings": ["1", "2"],
"minHelpfulVotes": 20,
"maxReviews": 200
}

Praise and testimonials

The 50 most relevant five-star reviews:

{
"apps": ["com.spotify.music"],
"ratings": ["5"],
"sort": "relevant",
"maxReviews": 50
}

Support follow-up

The reviews of 2026 that have no developer reply:

{
"apps": ["com.asana.app"],
"sinceDate": "2026-01-01",
"untilDate": "2026-12-31",
"developerReply": "without",
"maxReviews": 0
}

Support analysis

The 500 most relevant reviews that have a developer reply. Read developerReply to see who answers, how fast, and with what text:

{
"apps": ["com.todoist"],
"sort": "relevant",
"developerReply": "with",
"maxReviews": 500
}

Release tracking

The reviews for two app versions:

{
"apps": ["com.asana.app"],
"appVersions": ["8.78.2", "8.75.7"],
"maxReviews": 0
}

Competitor benchmarking

The 100 newest reviews of each of three apps, with the app details of the UK store. The country sets the price and the currency. Compare rating and ratingCount in the apps Dataset:

{
"apps": ["com.instagram.android", "com.zhiliaoapp.musically", "com.snapchat.android"],
"country": "gb",
"maxReviews": 100,
"includeAppDetails": true
}

Market research

The 100 newest reviews of the same app in each of eight languages. Compare the average rating of the reviews for each language:

{
"apps": ["com.spotify.music"],
"languages": ["en", "de", "fr", "es", "pt", "ja", "ko", "it"],
"maxReviews": 100
}

All languages

The 100 newest reviews of one app in each of the 76 languages. The value all selects every language. The run takes longer than a run with one language:

{
"apps": ["com.spotify.music"],
"languages": ["all"],
"maxReviews": 100
}

Text and sentiment datasets

Up to 1,000 reviews for each star rating, so no rating dominates the dataset:

{
"apps": ["com.spotify.music"],
"languages": ["en"],
"ratings": ["1", "2", "3", "4", "5"],
"maxReviews": 1000
}

Full archive

Every review that Google Play gives for an app in one language:

{
"apps": ["com.asana.app"],
"languages": ["en"],
"maxReviews": 0
}

Choose the apps and languages

Give one link or one package name for each app. The Actor reads only the package name in the link, such as com.spotify.music in ...details?id=com.spotify.music.

  • maxReviews applies to each app, each language, and each chosen star rating.
  • Each app and each language is read once. Two entries for the same app give one set of reviews.
  • All languages is the value all in the API. It reads all 76 languages. The run takes longer, and maxReviews applies to each language.
  • An entry that is not a Google Play link or a package name stops the run before it starts. The status message names the entry.
  • Google Play shows the reviews that fit a language. A run with en and a run with de return different reviews for the same app.
  • Choose a language from the list in the input form. Use the base language, such as pt for Portuguese in Brazil and in Portugal. Use zh-TW for Traditional Chinese, including Hong Kong. The platform refuses a language that is not in the list before the run starts.
  • An app that Google Play does not offer gets a warning in the log. The run goes on with the other apps.

Sort order and filters

A review must pass every filter that you set. A filter that you leave empty keeps all reviews.

  • Sort. newest returns the newest reviews first. relevant returns the order that Google Play calls most relevant.
  • Star ratings. With ratings, the Actor reads each chosen rating on its own, and maxReviews applies to each one. The reviews then come grouped by rating, and each group keeps the chosen sort.
  • Dates. sinceDate and untilDate use UTC. A date such as 2026-01-31 covers the whole day. With the newest sort, the run stops soon after the reviews become older than sinceDate, so a recent range is fast.
  • Keywords. keywords keeps a review whose text has at least one of the words. excludeKeywords drops a review whose text has any of its words. Capital letters do not matter.
  • Developer reply. developerReply is with or without.
  • App versions. appVersions keeps the reviews for the versions that you list. Google Play shows the version for part of the reviews of an app, and a review without a version never matches.
  • Helpful votes. minHelpfulVotes keeps the reviews that have at least that number of helpful votes.

Input reference

FieldTypeDefaultBehavior
appsstring[]requiredGoogle Play links or package names. Each app is read once.
languagesstring[]["en"]Review languages from the list in the input form, or all for every language. The Actor reads every app in every language.
countrystringusCountry of the store. It sets the price and the currency of the app details. The newest sort returns the same reviews in every country. The relevant sort can return other reviews in another country.
maxReviewsinteger, 0 or greater100Maximum reviews for each app, language, and chosen star rating. Use 0 for every review that matches your filters.
sortnewest or relevantnewestOrder of the reviews, and so the reviews that fit inside the limit.
ratingsstring[][]Star ratings to keep, from "1" to "5". An empty list keeps all ratings.
sinceDatestringnoneKeep reviews written on or after this date.
untilDatestringnoneKeep reviews written on or before this date. The whole last day counts.
keywordsstring[][]Keep reviews whose text holds at least one of these words or phrases.
excludeKeywordsstring[][]Drop reviews whose text holds any of these words or phrases.
developerReplyany, with, or withoutanyKeep all reviews, only reviews with a developer reply, or only reviews without one.
appVersionsstring[][]Keep reviews for these app versions.
minHelpfulVotesinteger, 0 or greater0Keep reviews with at least this number of helpful votes.
includeAppDetailsbooleanfalseWrite one record for each app to the apps Dataset. App records have no charge.
proxyConfigurationobjectApify ProxyConnection settings. The default works for most runs.

A sinceDate that is later than untilDate stops the run before it starts.

Complete input example

This reference example covers every input field. It limits the result to 10 reviews for each app, language, and star rating.

Output

The run writes two Datasets with different shapes:

DatasetOne item for eachWhen
defaultReviewEvery run
appsAppincludeAppDetails: true

Through the API, read the ID of the apps Dataset from storageIds.datasets.apps in the run object.

Review fields by topic

  • Review. Review ID, rating from 1 to 5, text, date in ISO 8601 and UTC, and the link to the review.
  • Reviewer. Name, and the link to the picture. The picture is null when the reviewer has none.
  • Engagement. Helpful votes.
  • Developer reply. Author, text, and date. The whole object is null when the developer did not answer.
  • App. App ID, app name, the app version that the reviewer used, and the language that you asked for.

Review example

This is a complete review from a run on 25 October 2026.

Review field reference

PathType and nullability
id, appId, appName, languagestring
ratingnumber from 1 to 5
textstring
author.namestring
author.avatarUrlstring or null
datestring, ISO 8601 in UTC
appVersionstring or null
helpfulVotesnumber
developerReply{ author: string, text: string, date: string } or null
urlstring

A review is saved once for each app and language in a run.

App Dataset reference

When includeAppDetails is true, the apps Dataset receives one row for each app.

PathType and nullability
id, name, country, urlstring
description, category, iconUrl, contentRatingstring or null
developer.namestring
developer.urlstring or null
ratingnumber from 1 to 5, or null
ratingCountnumber or null
pricenumber or null
currencystring or null

Run status and completeness

  • The run finishes with SUCCEEDED when every app and language was read to the limit or to the last review that Google Play gives. An app that Google Play does not offer, and an app with no reviews in a language, do not fail the run.
  • The run finishes with FAILED when the connection failed on part of the work, even after retries. The status message starts with Incomplete results, gives the number of saved reviews, and lists the apps and languages that stopped. The reviews saved before the stop stay in the Dataset.
  • The Actor tries every app and language before it reports a failure.
  • When the run reaches the maximum cost that you set, it stops, keeps the saved reviews, and finishes with SUCCEEDED. The status message says so.
  • If the platform restarts the run, the Actor does not save or charge a review twice.

FAQ

How many reviews can I get?

There is no fixed limit. One run read 15,920 reviews of one app in one language, and Google Play had more. Popular apps have millions of reviews, so set maxReviews for them. With 0, the run goes on until Google Play has no more reviews or until the maximum cost that you set is spent.

What does a run cost?

Each saved review is one billed item. The price is on the Actor page. App records have no charge. Set a maximum cost for the run to cap the price. The Actor then stops at that cost and keeps the saved reviews.

Why did I get fewer reviews than maxReviews?

The app has fewer reviews in that language, or your filters leave fewer. A small app can have only a few reviews in a rare language. The log gives the number of reviews for each app and language.

How do I get only the new reviews?

Set sinceDate to the day of your last run and sort to newest. Keep the rows whose id you have not saved before. The run stops soon after the reviews become older than the date.

Why do some reviews have null for the version?

Google Play shows the app version for part of the reviews of an app. A review without a version never matches appVersions.

Can I get App Store reviews?

Use App Store Reviews Scraper.

A feature or field that I need is missing. What can I do?

Tell us in the Issues tab. Describe what you need and give an example app.

Where can I report a problem?

Open an issue in the Issues tab. Include the run ID and the input, so that we can reproduce it.