Play Store Reviews Scraper | Translation & All Countries
Pricing
Pay per event
Play Store Reviews Scraper | Translation & All Countries
Pull Google Play reviews across 30+ regions with auto-translation. Get ratings, review text, author, timestamps, helpful votes, app/version info, and developer replies in clean JSON/CSV. Perfect for sentiment tracking, localization QA, and competitor monitoring.
Pricing
Pay per event
Rating
5.0
(1)
Developer

Fatih Tahta
Actor stats
1
Bookmarked
2
Total users
1
Monthly active users
8 days ago
Last modified
Categories
Share
Play Store Reviews Scraper | Translation & Global Languages
Slug: fatihtahta/play-store-global-reviews-scraper
Overview
Play Store Reviews Scraper collects customer review records from Google Play app listings, including ratings, review text, author details, timestamps, helpful counts, app metadata, and developer replies. The actor targets review data across multiple languages so you can compare sentiment and quality signals by locale. Reviews come from https://play.google.com, the official Google Play Store website, which makes this data valuable for product feedback, localization insights, and competitive analysis. Runs are automated and consistent, saving time versus manual collection and cleanup.
Translation behavior
When translation = true:
- The actor automatically detects the review language and translates content to your selected
translateTo. - If
lingoKeyis provided, the actor uses that key for translation. Otherwise, it uses the actor’s default translation credentials. - Translations are stored in:
content_translated- along with
source_locale,target_locale,translation_skipped, and optionalcontent_en
- If
lingoKeyis provided, translated-word charges do not apply.
Cost-saving skips
Translation is automatically skipped when it would be a no-op — for example, when the detected source language already matches the target language. In those cases:
translation_skipped = true- translated fields may be omitted or equal to the original text, but no translation work is performed.
Translation provider
Translation uses Lingo.dev: https://lingo.dev/
Deduplication
The actor deduplicates reviews so the same review isn’t saved repeatedly (even across multiple languages or overlapping runs).
For downstream systems, you can treat review_id as the stable unique identifier (with review_url as a secondary identifier).
Where You Can Use This Actor
- Market research / analytics: Benchmark ratings and review trends across languages to identify regional opportunities and risks.
- Product & content teams: Track feedback themes, localization quality, and version-specific issues for release planning.
- Developers / data engineering pipelines: Feed structured review data into dashboards, warehouses, and alerting workflows.
- Lead gen / enrichment: Enrich company or app profiles with recent review sentiment and market presence signals.
- Monitoring / competitive tracking: Compare review velocity and sentiment changes across competitor apps.
Input Parameters
Provide any combination of URLs and package IDs.
| Parameter | Type | Description | Default |
|---|---|---|---|
apps | string[] | Google Play app URLs or package IDs (e.g., https://play.google.com/store/apps/details?id=com.fugo.wowguru, market://details?id=com.fugo.wowguru, com.fugo.wowguru). | – |
language | string | Review language to request. Allowed values: __all__ (all supported languages), or any of: en, es, pt, fr, de, it, nl, ru, tr, pl, cs, sk, hu, ro, bg, uk, el, sv, nb, da, fi, is, et, lv, lt, sl, hr, sr, he, ar, fa, ur, hi, bn, ta, te, kn, ml, mr, gu, pa, id, ms, th, vi, fil, zh, ja, ko, sw, am, af, ca, gl, eu. | __all__ |
sortBy | string | Sorting mode: newest or rating. | newest |
limit | integer | Maximum reviews to save per app. Minimum: 1. | 50000 |
translation | boolean | When enabled, adds language detection and translated review content. | false |
translateTo | string | Target locale for translations. Allowed values: en-US, en-GB, en-CA, en-AU, en-NZ, en-IE, en-ZA, es-ES, es-419, es-MX, es-AR, es-CO, es-CL, es-PE, pt-BR, pt-PT, fr-FR, fr-CA, fr-BE, fr-CH, de-DE, de-AT, de-CH, zh-Hans, zh-Hant, zh-CN, zh-TW, zh-HK, ar, ar-SA, ar-EG, ar-AE, it-IT, nl-NL, sv-SE, no-NO, da-DK, fi-FI, pl-PL, cs-CZ, sk-SK, hu-HU, ro-RO, el-GR, bg-BG, hr-HR, sl-SI, sr, uk-UA, ru-RU, lt-LT, lv-LV, et-EE, tr-TR, he-IL, fa-IR, hi-IN, bn-BD, ta-IN, te-IN, mr-IN, ur-PK, id-ID, ms-MY, th-TH, vi-VN, fil-PH, ja-JP, ko-KR, sw-KE, sw-TZ, am-ET, ha-NG, yo-NG, ig-NG, zu-ZA, af-ZA. | en-US |
lingoKey | string | Optional secret Lingo.dev API key used for translation. If provided, translated-word charges do not apply. | – |
Example Input
{"apps": ["https://play.google.com/store/apps/details?id=com.spotify.music&hl=en-US", "com.twitter.android"],"language": "en","sortBy": "newest","limit": 2500,"translation": true,"translateTo": "en-GB"}
Output
6.1 Output destination
The actor writes results to an Apify dataset as JSON records. The dataset is designed for direct consumption by analytics tools, ETL pipelines, and downstream APIs without post-processing.
6.2 Record envelope (all items)
Every record includes the following stable identifiers:
- type (string, required)
- id (string, required)
- url (string, required)
Recommended idempotency key: type + ":" + id
Use this key to deduplicate or upsert records when multiple runs overlap.
6.3 Examples
Example: review (type = "review")
{"type": "review","id": "ee08c58c-a337-43f6-8ee7-347ed18abd14","url": "https://play.google.com/store/apps/details?id=com.fugo.wowguru&hl=en&gl=US","review_id": "ee08c58c-a337-43f6-8ee7-347ed18abd14","review_url": "https://play.google.com/store/apps/details?id=com.fugo.wowguru&hl=en&gl=US&reviewId=ee08c58c-a337-43f6-8ee7-347ed18abd14","app_id": "com.fugo.wowguru","author_name": "Erik Pitman","author_avatar": "https://play-lh.googleusercontent.com/a/ACg8ocLLF4o96WnLFTS-VBPFVpXGJWSrkc4jlliR_UqdUD0qWddpAZWD=mo","rating": 2,"content": "This version of this game sets itself apart by forcing the user solve the words in a particular order...","updated": "2025-11-12T19:13:31+00:00","helpful_count": 9,"version": "2.1.12","developer_reply": {"developer_name": "Fugo Games","reply_text": "Hello! We appreciate your feedback...","reply_updated": "2025-11-12T19:26:34+00:00"},"input_type": "url","input_value": "https://play.google.com/store/apps/details?id=com.fugo.wowguru&hl=en","app_url": "https://play.google.com/store/apps/details?id=com.fugo.wowguru&hl=en","language": "en","fetched_at": "2025-11-12T19:40:00+00:00","app_title": "Word Hunt","app_rating": "4.8","app_reviews_count": "269K reviews","source_locale": "en","translation_provider": "lingo.dev","content_translated": "This version of this game sets itself apart by forcing the user solve the words in a particular order...","target_locale": "en-GB","content_en": "This version of this game sets itself apart by forcing the user solve the words in a particular order...","translation_skipped": true}
Example: review (type = "review")
{"type": "review","id": "4d317db5-1a07-43d0-9a7e-59ef0f98ea86","url": "https://play.google.com/store/apps/details?id=com.spotify.music&hl=es","review_id": "4d317db5-1a07-43d0-9a7e-59ef0f98ea86","review_url": "https://play.google.com/store/apps/details?id=com.spotify.music&hl=es&reviewId=4d317db5-1a07-43d0-9a7e-59ef0f98ea86","app_id": "com.spotify.music","author_name": "Juan Perez","rating": 1,"content": "No funciona","updated": "2025-11-14T15:18:03+00:00","helpful_count": 0,"input_type": "url","input_value": "https://play.google.com/store/apps/details?id=com.spotify.music&hl=es","app_url": "https://play.google.com/store/apps/details?id=com.spotify.music&hl=es","language": "es","fetched_at": "2025-11-14T15:20:19+00:00","app_title": "Spotify","app_rating": "4.4","app_reviews_count": "30M reviews","source_locale": "es","translation_provider": "lingo.dev","content_translated": "Doesn't work","target_locale": "en-US","content_en": "Doesn't work","translation_skipped": false}
Field reference
Review fields (type = "review")
- type (string, required): Record type identifier.
- id (string, required): Stable review identifier.
- url (string, required): Canonical app URL used for discovery.
- review_id (string, required): Review identifier.
- review_url (string, required): Direct link to the review.
- app_id (string, required): App package name.
- author_name (string, optional): Reviewer display name.
- author_avatar (string, optional): Reviewer avatar URL.
- rating (number, required): Star rating value.
- content (string, optional): Review body text.
- updated (string, optional): Review update timestamp (ISO).
- helpful_count (number, optional): Helpful vote count as provided.
- version (string, optional): App version associated with the review.
- developer_reply (object, optional): Developer response with
developer_name,reply_text, andreply_updated. - input_type (string, optional): Input origin type (e.g., URL or package).
- input_value (string, optional): Original input value.
- app_url (string, optional): App URL built for the requested language.
- language (string, optional): Requested review language.
- fetched_at (string, required): ISO timestamp of extraction.
- app_title (string, optional): App title as shown on Google Play.
- app_rating (string, optional): App rating summary.
- app_reviews_count (string, optional): Review count summary.
- source_locale (string, optional): Detected source language.
- translation_provider (string, optional): Translation provider name.
- content_translated (string, optional): Translated review body.
- target_locale (string, optional): Translation target locale.
- content_en (string, optional): English translation of content when available.
- translation_skipped (boolean, optional): Indicates if translation was skipped.
- translation_error (string, optional): Translation error message (if any).
Data guarantees & handling
- Best-effort extraction: fields may vary by locale or availability/UI experiments.
- Optional fields: null-check in downstream code.
- Deduplication: recommend
type + ":" + id.
Pricing
This actor uses pay-per-event pricing with two billable events:
-
Per output saved Charged once per dataset item saved.
-
Per translated word Charged once per source word successfully translated (only when
translation = true).
Notes:
- If translation is disabled, there is no translated-word charge.
- If translation is skipped because source and target languages match, there is no translated-word charge.
- If a translation attempt fails and no translation is produced, translated-word charging should not apply for that text.
- If
lingoKeyis provided, translated-word charging does not apply (only output-record charging applies).
Notes & Limitations
- Respect Google’s terms of service and applicable laws.
- Avoid excessive request frequency to maintain normal site usage.
- Metadata fields (ratings/review counts) can vary by locale, time, or session.
- Validate data for compliance with internal policies and local regulations.
Support
For help, open an issue on the actor’s Issues tab or reach out via the actor page. Include the input used (redacted as needed), the run ID, expected vs actual behavior, and an optional small output sample.