Google Play Reviews Scraper avatar

Google Play Reviews Scraper

Pricing

from $0.15 / 1,000 review results

Go to Apify Store
Google Play Reviews Scraper

Google Play Reviews Scraper

Scrape Google Play reviews by app URL, package ID, or search query. Extract review text, ratings, dates, app versions, developer replies, helpful votes, reviewer data, app metadata, countries, and review languages.

Pricing

from $0.15 / 1,000 review results

Rating

0.0

(0)

Developer

Blynx

Blynx

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

๐Ÿ“ฑ Google Play Reviews Scraper

Scrape Google Play reviews by package ID, Google Play URL, or search query. Collect review text, ratings, dates, app versions, helpful votes, developer replies, reviewer names, reviewer images, app icons, app metadata, countries, and review languages.

The Actor runs on requests and is built for app review monitoring, sentiment analysis, competitor tracking, support QA, localization research, and product feedback workflows.

โœจ What You Can Collect

  • ๐Ÿ“ Review text, rating, review ID, publish date, reviewer name, and reviewer image
  • ๐Ÿ–ผ๏ธ App icon, app title, package ID, Google Play URL, version, genre, installs, score, ratings count, and reviews count
  • ๐Ÿ‘ Helpful vote count (thumbsUpCount)
  • ๐Ÿท๏ธ App version / review-created version when Google Play provides it
  • ๐Ÿ’ฌ Developer reply text and reply date
  • ๐Ÿ—ฃ๏ธ Detected review language (detectedLanguage) with strict language filtering
  • ๐ŸŒ Multiple countries and multiple review languages in the same run
  • ๐Ÿ”Ž Apps discovered from Google Play search queries

๐Ÿงญ How It Works

flowchart LR
A["Package IDs, app URLs, or search queries"] --> B["Discover Google Play app IDs"]
B --> C["Fetch app metadata"]
C --> D["Fetch review pages"]
D --> E["Detect review text language"]
E --> F["Apply language, rating, keyword, date, reply, and version filters"]
F --> G["Save reviews, apps, errors, and summary datasets"]

๐Ÿš€ Quick Start

๐Ÿ“ฑ Scrape Reviews From One App

{
"appIdsOrUrls": ["com.supercell.brawlstars"],
"countries": ["us"],
"reviewLanguages": ["en"],
"maxReviewsPerApp": 100,
"sort": "newest"
}

๐Ÿ”— Scrape Reviews From a Google Play URL

{
"appIdsOrUrls": [
"https://play.google.com/store/apps/details?id=com.spotify.music"
],
"countries": ["us"],
"reviewLanguages": ["en"],
"maxReviewsPerApp": 50
}

๐Ÿ”Ž Find Apps by Search Query

{
"searchQueries": ["fitness app", "habit tracker"],
"maxAppsPerSearch": 5,
"countries": ["us"],
"reviewLanguages": ["en"],
"maxReviewsPerApp": 50
}

๐Ÿ—ฃ๏ธ Scrape Several Review Languages

{
"appIdsOrUrls": ["com.whatsapp"],
"countries": ["us"],
"reviewLanguages": ["en", "ru", "es", "de", "fr"],
"customReviewLanguages": ["sv"],
"strictReviewLanguage": true,
"maxReviewsPerApp": 100
}

โญ Monitor Negative Reviews

{
"appIdsOrUrls": ["com.supercell.brawlstars"],
"countries": ["us", "gb"],
"reviewLanguages": ["en"],
"ratings": ["1", "2"],
"recentDays": 30,
"maxReviewsPerApp": 200,
"sort": "newest"
}

๐Ÿž Find Reviews About Bugs or Subscriptions

{
"appIdsOrUrls": ["com.spotify.music"],
"countries": ["us"],
"reviewLanguages": ["en"],
"keywords": ["bug", "crash", "subscription", "payment"],
"maxReviewsPerApp": 100
}

๐Ÿงฉ Collect App Details Only

{
"searchQueries": ["budget planner"],
"maxAppsPerSearch": 10,
"countries": ["us"],
"reviewLanguages": ["en"],
"maxReviewsPerApp": 0,
"outputMode": "apps"
}

โš™๏ธ Input Schema

FieldTypeDescription
appIdsOrUrlsarrayGoogle Play package IDs or full app URLs. Use this for exact app targets.
searchQueriesarrayGoogle Play search terms used to discover app IDs before scraping reviews.
maxAppsPerSearchintegerNumber of apps to take from each search query.
countriesarrayGoogle Play country codes such as us, gb, de, fr, br, jp.
reviewLanguagesarrayReview text languages to collect, such as en, ru, es, de, fr, pt-BR.
customReviewLanguagesarrayExtra Google Play language codes not shown in the dropdown.
strictReviewLanguagebooleanDetects review text language and skips reviews written in other languages. Enabled by default.
maxReviewsPerAppintegerMaximum matching reviews per app, country, and review language. Use 0 for app details only.
sortstringReview order: newest, relevant, or rating.
ratingsarrayKeep only selected star ratings. Leave empty for all ratings.
keywordsarrayKeep reviews containing at least one word or phrase. Case-insensitive.
excludeKeywordsarraySkip reviews containing any listed word or phrase. Case-insensitive.
dateFrom / dateTostringKeep reviews inside a date range. Format: YYYY-MM-DD.
recentDaysintegerKeep only reviews from the last N days. Use 0 to disable.
onlyWithDeveloperReplybooleanKeep only reviews with a developer reply.
onlyWithoutDeveloperReplybooleanKeep only reviews without a developer reply.
appVersionsarrayKeep reviews from exact app versions.
outputModestringDefault dataset content: reviews, apps, or both.
includeAppDetailsbooleanAdds app title, icon, score, installs, developer, genre, version, and URL.
dedupebooleanRemoves duplicate reviews across repeated app/country/language combinations.
fetchPageSizeintegerNumber of reviews requested per page before local filters are applied.
maxPagesPerAppintegerPagination safety limit for strict filters.
maxConcurrencyintegerNumber of app/country/language jobs running in parallel.
requestDelayMsintegerOptional delay between review page requests.

๐Ÿ“ฆ Output Schema

๐Ÿ“ Review Item

{
"itemType": "review",
"reviewId": "fae2f69e-3186-4248-b322-01a24f56c1d1",
"appId": "com.supercell.brawlstars",
"appTitle": "Brawl Stars",
"appUrl": "https://play.google.com/store/apps/details?id=com.supercell.brawlstars&hl=en&gl=us",
"appIcon": "https://play-lh.googleusercontent.com/...",
"country": "US",
"language": "en",
"detectedLanguage": "en",
"rating": 5,
"text": "Great game...",
"publishedAt": "2026-07-01T11:26:12+00:00",
"timestamp": 1782905172,
"appVersion": "68.250",
"reviewCreatedVersion": "68.250",
"thumbsUpCount": 0,
"developerReplyText": "Thanks for your feedback!",
"developerReplyDate": "2026-07-01T13:10:00+00:00",
"reviewerName": "Alex",
"reviewerImage": "https://play-lh.googleusercontent.com/...",
"position": 1,
"crawledAt": "2026-07-02T09:00:00+00:00"
}

๐Ÿ“ฑ App Item

{
"itemType": "app",
"appId": "com.spotify.music",
"appTitle": "Spotify: Music and Podcasts",
"appUrl": "https://play.google.com/store/apps/details?id=com.spotify.music&hl=en&gl=us",
"appIcon": "https://play-lh.googleusercontent.com/...",
"developer": "Spotify AB",
"genre": "Music & Audio",
"score": 4.3,
"ratingsCount": 32500000,
"reviewsCount": 1200000,
"installs": "1,000,000,000+",
"version": "Varies with device",
"country": "US",
"language": "en"
}

๐Ÿ—‚๏ธ Datasets

flowchart TD
A["Default dataset"] --> B["Reviews only"]
A --> C["Apps only"]
A --> D["Apps and reviews"]
E["apps dataset"] --> F["App metadata"]
G["errors dataset"] --> H["Invalid inputs or failed app/language jobs"]
I["summary dataset"] --> J["Counters, filters, runtime, duplicates, empty locales"]
  • ๐Ÿ“‹ Default dataset: controlled by outputMode
  • ๐Ÿ“ฑ apps: app-level metadata
  • โš ๏ธ errors: invalid inputs or failed app/country/language jobs
  • ๐Ÿ“Š summary: run counters, filters, runtime, duplicate count, and empty locale count

๐Ÿ’ก Notes

Google Play may return ratings without written text. This Actor saves written reviews returned by Google Play. Reviewer images are shown when Google Play provides them; sometimes Google returns a default profile image instead of a personal avatar.

Strict review language filtering is enabled by default. The Actor requests a Google Play locale and also checks the detected language of each review text before saving it.

๐Ÿ™‹ Feature Requests and Bug Reports

If you need a new field, filter, export format, language, country setup, or workflow, message me on Apify or open an issue on the Actor page.

If you find a bug, please include:

  • ๐Ÿ“ฑ App package ID or Google Play URL
  • ๐ŸŒ Country and review language
  • โš™๏ธ Input settings
  • ๐Ÿงพ Run ID
  • โœ… What you expected to get
  • โŒ What you received instead

I use this information to reproduce issues faster and ship fixes cleanly.