Play Store Reviews Scraper | Translation & All Countries avatar
Play Store Reviews Scraper | Translation & All Countries

Pricing

Pay per event

Go to Apify Store
Play Store Reviews Scraper | Translation & All Countries

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

Fatih Tahta

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

8 days ago

Last modified

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 lingoKey is 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 optional content_en
  • If lingoKey is 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.

ParameterTypeDescriptionDefault
appsstring[]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).
languagestringReview 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__
sortBystringSorting mode: newest or rating.newest
limitintegerMaximum reviews to save per app. Minimum: 1.50000
translationbooleanWhen enabled, adds language detection and translated review content.false
translateTostringTarget 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
lingoKeystringOptional 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, and reply_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:

  1. Per output saved Charged once per dataset item saved.

  2. 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 lingoKey is 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.