Google Play App Reviews & Ratings Scraper avatar

Google Play App Reviews & Ratings Scraper

Pricing

from $6.15 / 1,000 results

Go to Apify Store
Google Play App Reviews & Ratings Scraper

Google Play App Reviews & Ratings Scraper

Scrape user reviews for any Android app on the Google Play Store by package name. Extract star rating, review text, helpful votes, date, app version and developer replies across 100+ country stores. Export to JSON, CSV or Excel.

Pricing

from $6.15 / 1,000 results

Rating

0.0

(0)

Developer

Scrapers Lat

Scrapers Lat

Maintained by Community

Actor stats

0

Bookmarked

4

Total users

1

Monthly active users

20 hours ago

Last modified

Share

Google Play App Reviews & Ratings Scraper

Google Play App Reviews & Ratings Scraper

Here is one real result, with every field the actor returns:

{
"userImage": "https://play-lh.googleusercontent.com/a-/ALV-UjUp1ULx5a-VcWxpTlyBOrjfuQx3OR5Ey88Z5JgSxeNadMGh3rc",
"userName": "Marjorie Nimfa Manto Cordova",
"rating": 5,
"text": "I love this app because I relax my mind to using",
"thumbsUp": 0,
"reviewCreatedAt": "2026-08-13T08:14:51.000Z",
"appVersion": "6.92.4",
"replyText": null,
"replyAt": null,
"appId": "com.duolingo",
"reviewId": "a8270e8c-1079-4dba-be10-92ceac12e297",
"url": "https://play.google.com/store/apps/details?id=com.duolingo&hl=en&gl=US",
"observedAt": "2026-08-14T08:15:48.664Z",
"error": null,
"aiSentiment": "positive",
"aiSentimentScore": 0.9,
"aiTopics": ["relaxation", "user experience", "mindfulness"]
}

The most complete Google Play reviews scraper available. It returns every field a review exposes (reviewer, star rating, full text, thumbs-up count, app version and developer reply), lets you filter by star rating and date and sort by newest, rating or helpfulness, and adds optional AI sentiment and topic tags, so you can analyze app feedback without extra parsing.

📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples

Apify Coverage Output Billing

Table of contents

What it does

The actor collects reviews for each Android app you list (by package name or Google Play URL) in the store region and language you set, applies your star-rating and date filters, sorts by newest, rating or helpfulness, and writes one normalized record per review to the run's dataset. Each record carries the reviewer, rating, full text, thumbs-up count, the app version reviewed, and the developer's reply when present. Missing source values are returned as null, never invented.

Two optional AI add-ons run only on paid Apify plans and only charge when they produce output: aiSentiment classifies each review with a score, and aiTopics extracts the concrete aspects the review is about (crashes, pricing, ads, UI, support).

Quickstart

Open the actor, paste this into the input, and press Run. It returns the 5 newest Duolingo reviews with AI sentiment and topics.

{
"appIds": ["com.duolingo"],
"maxReviews": 5,
"sort": "newest",
"country": "US",
"language": "en",
"withAiSentiment": true,
"withAiTopics": true
}

Pass several package names in appIds, or paste full Google Play URLs into appUrls. Add ratings (for example ["1","2"]) to keep only certain star levels.

Input reference

FieldTypeRequiredDefaultDescription
appIdsstring[]no["com.whatsapp","com.spotify.music"]Android package names to scrape, for example com.duolingo. Reviews are collected for each app up to maxReviews.
appUrlsstring[]no(empty)Full Google Play app URLs. The package name is extracted automatically and merged with appIds.
maxReviewsintegerno10Maximum reviews to collect per app.
ratingsstring[]no(all)Keep only reviews with these star ratings, 1 to 5. Leave empty for all.
reviewsFromDatestringno(empty)Only reviews on or after this date (YYYY-MM-DD). With Newest sort, pagination stops early once older reviews are reached.
reviewsToDatestringno(empty)Only reviews on or before this date (YYYY-MM-DD).
sortenumnonewestOrder of reviews. One of newest, rating (highest first), helpfulness (most upvoted first).
countrystringnoUSTwo-letter store region code (gl). Affects which reviews are returned.
languagestringnoenTwo-letter language code (hl) for the store region and review interface.
withAiSentimentbooleannofalsePaid add-on. Classify each review positive, neutral or negative with a score. Requires a paid plan.
withAiTopicsbooleannofalsePaid add-on. Extract the concrete topics or aspects each review is about. Requires a paid plan.

Output reference

One dataset item per review. Types: string, number, string[], or null when the source value is absent.

FieldTypeDescription
userImagestringReviewer avatar image URL.
userNamestringReviewer display name.
ratingnumberStar rating this reviewer gave, 1 to 5.
textstringFull review text, or null if none.
thumbsUpnumberNumber of thumbs-up (helpful) votes on the review.
reviewCreatedAtstringISO 8601 timestamp when the review was posted.
appVersionstringApp version the review was written against, or null.
replyTextstringDeveloper reply text, or null if none.
replyAtstringISO 8601 timestamp of the developer reply, or null.
appIdstringAndroid package name of the app.
reviewIdstringStable unique ID of the review.
urlstringGoogle Play URL of the app for this store region.
aiSentimentstringAI sentiment positive, neutral or negative (add-on), else absent.
aiSentimentScorenumberAI sentiment score (add-on), else absent.
aiTopicsstring[]AI-extracted topics or aspects (add-on), else absent.
observedAtstringISO 8601 timestamp of when the record was collected.
errorstringnull on success. On a failed run, a single item with a populated error field is written instead.

Example output record

Real record from a live run (input {"appIds":["com.duolingo"],"maxReviews":5,"sort":"newest","withAiSentiment":true,"withAiTopics":true}):

{
"userImage": "https://play-lh.googleusercontent.com/a-/ALV-UjUp1ULx5a-VcWxpTlyBOrjfuQx3OR5Ey88Z5JgSxeNadMGh3rc",
"userName": "Marjorie Nimfa Manto Cordova",
"rating": 5,
"text": "I love this app because I relax my mind to using",
"thumbsUp": 0,
"reviewCreatedAt": "2026-08-13T08:14:51.000Z",
"appVersion": "6.92.4",
"replyText": null,
"replyAt": null,
"appId": "com.duolingo",
"reviewId": "a8270e8c-1079-4dba-be10-92ceac12e297",
"url": "https://play.google.com/store/apps/details?id=com.duolingo&hl=en&gl=US",
"aiSentiment": "positive",
"aiSentimentScore": 0.9,
"aiTopics": ["relaxation", "user experience", "mindfulness"],
"observedAt": "2026-08-14T08:15:48.664Z",
"error": null
}

Run via API and CLI

Start a run and wait for it to finish, then read the dataset. Replace <TOKEN> with your Apify API token.

Run synchronously and get dataset items in one call:

curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~google-play-reviews-scraper/run-sync-get-dataset-items?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"appIds":["com.duolingo"],"maxReviews":25,"sort":"newest"}'

Start a run asynchronously:

curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~google-play-reviews-scraper/runs?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"appIds":["com.whatsapp","com.spotify.music"],"maxReviews":200,"ratings":["1","2"]}'

Apify CLI:

apify call scrapers_lat/google-play-reviews-scraper \
--input '{"appUrls":["https://play.google.com/store/apps/details?id=com.duolingo"],"maxReviews":50}'

Fetch results

Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:

# JSON
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"
# CSV
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"
# Paginate large datasets
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"

<DATASET_ID> is returned as defaultDatasetId in the run object. Use offset and limit to page through large result sets. clean=true drops empty and internal fields.

Billing and limits

  • Pay per result. You are charged per review returned (result event). See the pricing tab for the current per-result price.
  • Add-ons. The AI sentiment and AI topics add-ons are priced separately and charge only when they produce output on a review that has text.
  • No charge on failure. If a run errors, the actor writes a single item with a populated error field and does not charge for it. Empty runs cost nothing.
  • Spend cap respected. Set maxTotalChargeUsd on the run; once reached, the actor stops emitting and charging further billable results.
  • Free Apify plans are capped at 10 reviews per app per run. Upgrade for higher maxReviews.

FAQ and troubleshooting

A run returned 0 reviews. Why? The package name or URL was wrong, or filters matched nothing in that store region. Check appIds, loosen ratings and the date range, or change country and language. Zero-result runs are not charged.

How do I collect only negative reviews? Set ratings to ["1","2"]. Combine with sort: "newest" to track recent complaints.

Why is replyText null? The developer has not replied to that review. Replies are included when present; missing values stay null.

Can I limit to reviews since a date? Yes. Set reviewsFromDate (and optionally reviewsToDate). With Newest sort, pagination stops early once older reviews are reached.

Why did the AI fields not appear? The AI add-ons require a paid Apify plan and are off by default. Enable withAiSentiment or withAiTopics on a paid plan. They charge only when output is produced.

Is this an official Google tool? No. This actor is independent and not affiliated with Google or Google Play. It reads only publicly available app reviews.

More scrapers at scrapers.lat

Built and maintained by scrapers.lat, where we publish scrapers for US and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.


Independent tool, not affiliated with Google or Google Play. Accesses only publicly available app reviews.