Google Play Store Review Scraper
Pricing
from $0.20 / 1,000 results
Google Play Store Review Scraper
Reading Google Play reviews one by one hides why users leave. Scrape reviews for any Android app: stars, text, date, app version, helpful votes and developer replies, with star, date, language and device filters plus topics like crashes and ads.
Pricing
from $0.20 / 1,000 results
Rating
0.0
(0)
Developer
Crawl Craft
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
12 hours ago
Last modified
Categories
Security
Limited permissionsShare
🚀 What is Google Play Store Review Scraper?
Google Play Store Review Scraper is an Apify Actor that collects public reviews for any Android app on Google Play. Every review arrives with its stars, text, date, app version, helpful votes and developer reply, plus app details such as category and install count, as structured data you can download or pass on to your own tools.
Reading reviews one by one hides why users leave, so this Actor turns them into rows you can sort, filter and compare. A Google Play reviews scraper like this one is useful for product teams, app marketers and analysts who need the raw feedback rather than a dashboard summary.
- ⭐ Star, date and device filters: keep only the star ratings you choose, set a start date and pick phone, tablet, Chromebook, watch, TV or car reviews.
- 🌍 Language and country choice: read the review set of each language you pick, from the store country you select.
- 💬 Developer replies: reply text, reply date and the hours until the reply sit next to each review, with their own table.
- 📊 App details: rating, rating count, installs and category are added to every review, and one summary row per app and language is saved.
- 🧩 Topic tags: reviews written in English carry keyword topics such as ads, which helps when you sort complaints.
Click Try for free, paste an app link and press Start. No Google account or login is asked for in the input.

📊 What data can you extract from Google Play reviews?
The main table holds one row per review. Field names below match the output schema, and the examples are the example values from that schema.
| Field | Description | Example |
|---|---|---|
id | Unique ID of the review | e76d3ab9-b18b-4e8b-86aa-0553edd0ea0a |
appId | Package name of the app | com.spotify.music |
appTitle | Name of the app on Google Play | Spotify: Music and Podcasts |
language | Review language feed | en |
country | Store country used | us |
device | Device type the review was written for | phone |
userId | Stable ID of the reviewer | 101137149062416713420 |
userName | Display name of the reviewer | allen TEXAS |
userImage | Reviewer profile picture link | https://play-lh.googleusercontent.com/a-/example |
date | Review date (UTC) | 2026-10-21T18:24:12Z |
timestamp | Review time as unix seconds | 1792607052 |
score | Star rating from 1 to 5 | 5 |
scoreText | Label Google Play shows for the stars | Loved it |
url | Link to the review on Google Play | https://play.google.com/store/apps/details?id=com.spotify.music&hl=en&reviewId=e76d3ab9 |
text | Text of the review | absolutely works! |
textLength | Number of characters in the review | 17 |
thumbsUp | Number of helpful votes | 0 |
version | App version the reviewer used | 9.1.92.3058 |
isLatestVersion | True when the review is for the current app version | true |
replyText | Reply from the developer | Thanks for the feedback! |
replyDate | Date of the developer reply (UTC) | 2026-10-22T09:00:00Z |
replyAuthor | Who wrote the reply | Spotify AB |
replyLatencyHours | Hours between review and reply | 12.5 |
editedAfterReply | True when the review was rewritten after the developer replied | false |
criterias | Per-topic ratings given with the review | [{"criteria": "vaf_phase1_streaming_music", "label": "streaming music", "rating": 3}] |
topics | Keyword topics found in English reviews (null for other languages) | ["ads"] |
developer | App developer | Spotify AB |
genre | App category | Music & Audio |
appScore | Average rating of the app | 4.349 |
appRatingsCount | Total number of ratings of the app | 36522573 |
appReviewsCount | Total number of written reviews of the app | 1856904 |
appInstalls | Install count shown on Google Play | 1000000000 |
appCurrentVersion | Current app version when Google Play shows one | 9.1.92.3058 |
appUpdated | Last app update (UTC) | 2026-10-21T13:18:12Z |
position | Position of the review in this run for the app and language | 1 |
scrapedAt | When the review was collected (UTC) | 2026-10-22T18:26:09Z |
input | Failed input (only on error rows) | com.unknown.app |
error | Why the input failed (only on error rows) | app not found on Google Play (404) - check the package name |
Three more tables are filled in the same run: developer replies, rating details and an app summary. A short run summary record is saved as well. The Output section below shows each one.
💡 Use cases for Google Play review data
- Monitor app reviews after a release: set
sinceto the release date and keepreviewsSorton newest, then readscore,textandversionfor the first days of feedback. You can monitor app reviews this way for any Android app you add tourls. - Track reviews after an app update: compare
isLatestVersionandversionto see whether reviews for the newest build are better or worse than before. - Compare reviews across app versions: group rows by
versionand look at averagescoreandthumbsUpper release. - Run an app review competitor analysis: add your app and its rivals to
urlsin one run, then compareappScore,appRatingsCountand the stars inscoreside by side. - Collect competitor app reviews: filter
starsto 1 and 2 on a rival app to see what its users complain about, usingtextandtopics. - Find app crashes from user reviews: keep low stars and read the English
topicstags and thetextof each row to spot problems such as crashes and ads. - Start a low star review analysis: pick
stars1 and 2 only, then rank the rows bythumbsUpto see which complaints other users agree with. - Track developer replies to reviews: use
replyText,replyDateand the separate developer replies table to see which reviews get answered. - Measure developer response time:
replyLatencyHoursper review andmedianReplyLatencyHoursin the app summary show how fast a team answers. - Prepare Google Play reviews sentiment analysis: export
text,scoreandlanguageand feed them to the sentiment tool you already use. The Actor does not score sentiment itself. - Run a play store app review analysis in a spreadsheet: download the table as CSV or Excel and filter by
score,deviceanddate. - Do user feedback analysis for a roadmap: combine
text,topicsand the per-topiccriteriasratings to decide what to fix first. - Support customer feedback analysis for Android apps: collect several languages in one run and compare what each market says.
- Build a Google Play reviews dataset: save large sets of rows with unique
idvalues, app details and review dates for later study. - Do app market research:
genre,appInstallsandappRatingsCountgive context for each app next to its reviews.
🧩 What do people call a Google Play reviews scraper?
The same job goes by many names. This table maps each name to what Google Play Store Review Scraper does.
| Name people use | What it does here |
|---|---|
| Google Play store reviews scraper | Reads public reviews for each app you list, one row per review. |
| Google Play review scraper | Handles many apps in one run, and every row carries appId and appTitle. |
| Play Store reviews scraper | Accepts package names such as com.whatsapp as well as app links. |
| Google Play app review scraper | Keeps each language as its own list, labelled in language. |
| Android app review scraper | Covers phone, tablet, Chromebook, watch, TV and car device types. |
| Google Play review extractor | Returns the full field set from the table above for each review. |
| Google Play reviews extractor | Adds app details such as genre and appInstalls to every row. |
| Play Store review extractor | Turns pages you would read by eye into rows you can sort. |
| Google Play review downloader | Applies your filters first, so you download only the rows you need. |
| Google Play reviews downloader | Saves results to a dataset you can download as JSON, CSV or Excel. |
| Google Play reviews exporter | Hands finished runs to other tools through the API, webhooks and integrations. |
| Google Play review collector | Collects reviews for many apps and languages in one run. |
| Google Play review crawler | Starts from the Console or the API, so you do not write or host one yourself. |
| Google Play reviews tool | Asks for no Google account or login in its input. |
| Google Play review data | Includes stars, text, dates, app versions and developer replies. |
| Play Store review scraper tool | Saves a short run summary with counts and timing after each run. |
🛠️ How to scrape Google Play reviews step by step
- Create a free Apify account and open Google Play Store Review Scraper.
- Add your apps under Apps to scrape, one per line. Use Google Play links or package names such as
com.whatsapp. - Set Max reviews per app. The form starts at 10, and 0 means all available reviews.
- Optionally pick star ratings, a start date, review languages, a store country and device types.
- Click Start and wait for the run to finish.
- Open the Output tab to export Google Play reviews as JSON, CSV or Excel.
To scrape Play Store reviews for several apps at once, put every app on its own line in step 2. Each language you pick is read as its own review list for each app.
💰 How much does it cost to scrape Google Play reviews?
Google Play Store Review Scraper uses tiered pay-per-event pricing: $0.5 per 1,000 results on the Free plan, and less on paid plans. Each saved review is one result, billed as the main_result event that the Console shows as Results.
| Apify plan | Price per 1,000 results |
|---|---|
| Free | $0.5 |
| Bronze | $0.4 |
| Silver | $0.3 |
| Gold / Platinum / Diamond | $0.2 |
A small Actor Start event of $0.00005 is also charged for each run start. On the Free plan, a run that saves 1,000 reviews therefore costs $0.5 for the results plus the start event.
The developer replies, rating details and app summary tables come from the same reviews and are not billed as extra results. If you set a maximum spend for a run, the Actor stops cleanly when that limit is reached. See the Pricing tab for current rates.
⬇️ Input
The only required field is Apps to scrape (urls), which needs at least one entry. Every other field has a default. Open the Input tab to see all options with their descriptions.
| Field | Type | What it does | Default |
|---|---|---|---|
urls | array | Google Play app links or package names, one per line. Duplicates are removed | prefilled with the WhatsApp link |
maxReviewsPerApp | integer | Reviews to collect for each app and language. 0 means all available, up to 10,000,000 | 10 |
reviewsSort | string | newest, most_relevant or rating. A date limit always uses newest first | newest |
stars | array | Keep only these star ratings ("1" to "5"). Empty keeps all | empty |
since | string | Only reviews posted on or after this date are kept | no date limit |
languages | array | Review languages, each collected separately. 66 language codes are offered | ["en"] |
country | string | Store country. One of 97 country codes | us |
devices | array | phone, tablet, chromebook, watch, tv or car | ["phone"] |
proxyConfiguration | object | Optional proxy settings | proxy off |
Example input (schema defaults and prefill, plus a star filter):
{"urls": ["https://play.google.com/store/apps/details?id=com.whatsapp"],"maxReviewsPerApp": 10,"reviewsSort": "newest","stars": ["1", "2"],"languages": ["en"],"country": "us","devices": ["phone"]}
How to download Google Play reviews for one app
Paste one link into urls, leave stars empty and raise maxReviewsPerApp. The Actor saves each review as a row, so you can download Google Play store reviews as a spreadsheet once the run ends.
How to see Google Play reviews in other languages
Add language codes to languages, for example de and fr. Google Play serves a different set of reviews per language, so each code is collected as its own list and every row carries its language.
How to keep only complaints
Set stars to ["1", "2"] and reviewsSort to newest. Add since to ignore older feedback.
How to read only reviews from one device type
Set devices to ["tablet"] or any other device type from the list. Each device type has its own reviews, and device in the output tells you which one a row came from.
⬆️ Output
Results are stored in the run's dataset. Open the Output or Storage tab to browse them; the table view does not show every field, so download the data for the full set. Export formats include JSON, CSV, Excel, XML and HTML. Pick a Google Play reviews CSV for spreadsheets. Choose a Google Play reviews JSON export when the data goes into code.

Several views are available on the main dataset: Reviews, All fields, App context and Problems. Runs on different days can be merged into one Google Play store reviews dataset by joining on id. Below is an example of one review row. The values are the schema example values, not a captured run.
{"id": "e76d3ab9-b18b-4e8b-86aa-0553edd0ea0a","appId": "com.spotify.music","appTitle": "Spotify: Music and Podcasts","language": "en","country": "us","device": "phone","userId": "101137149062416713420","userName": "allen TEXAS","userImage": "https://play-lh.googleusercontent.com/a-/example","date": "2026-10-21T18:24:12Z","timestamp": 1792607052,"score": 5,"scoreText": "Loved it","url": "https://play.google.com/store/apps/details?id=com.spotify.music&hl=en&reviewId=e76d3ab9","text": "absolutely works!","textLength": 17,"thumbsUp": 0,"version": "9.1.92.3058","isLatestVersion": true,"replyText": "Thanks for the feedback!","replyDate": "2026-10-22T09:00:00Z","replyAuthor": "Spotify AB","replyLatencyHours": 12.5,"editedAfterReply": false,"criterias": [{"criteria": "vaf_phase1_streaming_music","label": "streaming music","rating": 3}],"topics": ["ads"],"developer": "Spotify AB","genre": "Music & Audio","appScore": 4.349,"appRatingsCount": 36522573,"appReviewsCount": 1856904,"appInstalls": 1000000000,"appCurrentVersion": "9.1.92.3058","appUpdated": "2026-10-21T13:18:12Z","position": 1,"scrapedAt": "2026-10-22T18:26:09Z"}
Developer replies output
Reviews that received a developer reply are also saved in their own table, with the review text next to the reply. Example values from the schema:
{"reviewId": "e76d3ab9","appId": "com.spotify.music","appTitle": "Spotify: Music and Podcasts","userName": "allen TEXAS","score": 2,"reviewText": "Keeps crashing","reviewDate": "2026-10-21T18:24:12Z","replyText": "Sorry to hear that.","replyDate": "2026-10-22T09:00:00Z","replyAuthor": "Spotify AB","replyLatencyHours": 12.5,"editedAfterReply": false,"url": "https://play.google.com/store/apps/details?id=com.spotify.music&reviewId=e76d3ab9"}
Rating details output
The rating details table has one row per topic rating that a reviewer gave, so one review can produce several rows. Example values from the schema:
{"reviewId": "f444ca6e","appId": "com.spotify.music","appTitle": "Spotify: Music and Podcasts","userName": "Johnny Reyes","reviewDate": "2026-10-21T18:24:08Z","criteria": "vaf_app_quality_ads_intrusiveness","label": "ads intrusiveness","rating": 2}
App summary output
The app summary table has one row per app and language, with app details and statistics of the reviews collected in the run. Example values from the schema:
{"appId": "com.spotify.music","appTitle": "Spotify: Music and Podcasts","language": "en","developer": "Spotify AB","genre": "Music & Audio","appScore": 4.349,"appRatingsCount": 36522573,"appReviewsCount": 1856904,"appInstalls": 1000000000,"appCurrentVersion": "9.1.92.3058","appUpdated": "2026-10-21T13:18:12Z","reviewsCollected": 300,"avgScoreCollected": 4.1,"developerReplyRate": 0.12,"medianReplyLatencyHours": 18.4,"topComplaintTopics": {"ads": 12},"devices": {"phone": 300}}
Error rows output
An input that cannot be read becomes one error row with appId, language, input and error, so nothing fails silently. Example values from the schema:
{"appId": "com.unknown.app","language": "en","input": "com.unknown.app","error": "app not found on Google Play (404) - check the package name"}
⚠️ Limitations and error handling
- Only public reviews are collected. Private data is not available.
- Google Play publishes reviews with about one day of delay, so a very recent
sincedate can return nothing. - The number of reviews you get depends on what Google Play shows for each app, language and device type. If fewer exist than your limit, you receive fewer.
topicsare only filled for English reviews and are null for other languages.appCurrentVersionis filled only when Google Play shows a current version, soisLatestVersioncan be empty for some apps.- Duplicate reviews are removed within each app and language list.
- The developer replies table only contains reviews that have a reply.
- If an input fails, the Actor saves an error row for it and continues with the other apps. Error rows are not billed as results.
Messages you may see in the error field:
| Message | What to do |
|---|---|
app not found on Google Play (404) - check the package name | Check the link or package name and run again |
could not open the app page: ... | Run again later; the text after the colon says what went wrong |
the app page could not be loaded | Run again later |
review data could not be read | Run again later |
unexpected problem while reading this app | Rows collected before the problem are kept; run again |
If you run out of budget, a run with a maximum spend set stops cleanly and keeps everything saved so far. If no valid app is given, the run stops with the message asking for at least one Google Play app link or package name.
🔌 Integrations and API
Every run can be started, scheduled and read through the Apify API, and the API tab shows ready-made snippets for JavaScript, Python and the command line. That makes the Actor usable as a Google Play review API for your own scripts and dashboards.
A Google Play store reviews API style feed is just the dataset items of the latest run. A Google Play app review API request can be an Actor run started with your own input.
Scrape Google Play store reviews Python example
Start the Actor with the Apify Python client, pass an input like the one in the Input section and read the dataset items as JSON. The API tab has the exact snippet for your Actor.
Connect finished runs to Make, Zapier, Google Sheets, Slack or your own endpoint through webhooks and integrations. See the Apify documentation for integrations, schedules and webhooks.
How to run it on a schedule
Save your input as a Task, add a schedule in Apify, and each run collects reviews again. This Actor has no mode that remembers earlier runs, so a repeated run returns reviews it has returned before. Use the stable id to remove duplicates in your own storage, and pass a newer since date through the API or Task input for each run to keep the results small.
🔗 Other app review scrapers by crawl_craft
Two Actors from the same Apify account read reviews of iPhone apps from the Apple App Store, while this Actor reads Android apps from Google Play.
| Actor | What it extracts | When to use it |
|---|---|---|
| Apple App Store Review Scraper | App Store reviews with stars, text, app version, helpful votes and developer replies, filtered by rating, date or keyword. | When your apps are on iOS. Its input also lists keywords and an incremental option for returning only newer reviews on repeated runs, which this Actor's input does not list. |
| App Store Reviews Scraper API | Public App Store reviews for any iPhone app in any country, with rating, title, text, author, app version, votes and developer replies. | When you need iOS reviews with star and date filters. Pair it with this Actor for a cross-platform comparison of the same product. |
⚖️ Is it legal to scrape Google Play reviews?
Google Play Store Review Scraper reads only reviews that people have posted publicly on Google Play. It does not collect private data. The results can still hold personal data, such as reviewer display names, reviewer IDs and profile picture links. Have a legitimate reason before you collect it, think about the GDPR (Regulation (EU) 2016/679) and Google Play's terms, and ask a lawyer if you are unsure. Apify's guides on the legality of web scraping and ethical web scraping are a good starting point.
❓ FAQ
How much does it cost to run Google Play Store Review Scraper?
It uses pay-per-event pricing at $0.5 per 1,000 results in the Free row of the table above, with lower rates in the other rows, plus a $0.00005 Actor Start event per run. See the Pricing tab for current rates.
Do I need a Google account or an API key?
No. The input asks only for the apps and your filters. You need an Apify account to run the Actor.
How many reviews can I get?
Set maxReviewsPerApp between 1 and 10,000,000, or 0 for all available reviews. The limit applies to each app and language. The real number depends on what Google Play shows for that app.
Can I get reviews in several languages at once?
Yes. Add several codes to languages and each one is collected as its own list. The store country is a single value per run, set with country.
Can I use it with Python?
Yes. See the Python example in the Integrations section: start the Actor with the Apify Python client and read the dataset items.
Can I scrape private data?
No. Only public reviews and public app details are collected.
Do I need proxies?
No. The proxy field is optional and is off by default.
Can I filter by star rating or date?
Yes. Use stars to keep chosen star ratings and since to keep reviews posted on or after a date.
💬 Your feedback
Found a bug or missing a feature? Open an issue in the Issues tab of this Actor. For custom solutions, email hello.crawlcraft@gmail.com.