Google Play App Search, Lookup & Reviews Scraper avatar

Google Play App Search, Lookup & Reviews Scraper

Pricing

from $0.49 / 1,000 results

Go to Apify Store
Google Play App Search, Lookup & Reviews Scraper

Google Play App Search, Lookup & Reviews Scraper

Search Google Play by keyword or look up apps directly by package ID, with ratings, installs, pricing, developer contact details, and optional user reviews across dozens of countries and languages.

Pricing

from $0.49 / 1,000 results

Rating

0.0

(0)

Developer

Nimbryxo-studio

Nimbryxo-studio

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Features

Limited permissionsSingle-tenantServer interface

Share

Google Play App Intelligence Scraper - Details, Reviews & Safety Labels

Collect public Google Play data in one run: keyword search results, full app records, long review histories, developer catalogs, similar apps, permission lists, and data safety labels. Everything is read from public Play pages and RPC endpoints, so no Google account, cookie, or API key is needed.

Modes

ModeWhat it returns
searchApps matching a keyword, with search rank and an exact-match marker. Add full details, permissions, data safety, or reviews with the toggles.
detailsOne full app record per package name or Play URL.
reviewsOne flat record per review, with author, rating, text, date, helpful votes, app version, and developer replies.
developerThe app catalog for a numeric developer ID or a display name.
similarOne record per seed app, with a similarApps array of related apps.
permissionsOne record per app with grouped and flat permission lists.
dataSafetyOne record per app with shared data, collected data, security practices, and the privacy policy URL.

What you can collect

App records

  • Identity: id, packageName, name, developer, developerId, developerUrl, url, sourceUrl
  • Ratings: rating, ratingCount, scoreText, reviewCount, histogram
  • Reach and pricing: installs, minInstalls, maxInstalls, price, currency, priceText, free, offersIAP, IAPRange
  • Store metadata: genre, genreId, categories, contentRating, version, updated, released, androidVersion, recentChanges, size when Google publishes it
  • Creative and copy: description, descriptionHTML, summary, icon, headerImage, screenshots, video
  • Developer contact: developerEmail, developerWebsite, developerAddress, developerLegalName, developerLegalEmail, developerLegalAddress, developerLegalPhone, privacyPolicy
  • Search context: searchQuery, rank, isExactMatch
  • Optional trust data: permissions, permissionGroups, dataSafety
  • Optional related data: similarApps, nested reviews
  • Run metadata: recordType, language, country, scrapedAt

Review records

  • id, reviewId, appId, appTitle
  • author, userName, userImage
  • rating, score, text, content, date
  • helpfulCount, thumbsUpCount
  • version, appVersion, criterias
  • developerReply with reply text and date; replyContent and repliedAt are kept for existing integrations
  • reviewUrl, language, storeCountry, sort, recordType, scrapedAt

Permission records

permissions is a flat list of {permission, group, type} objects. permissionGroups keeps Google Play's grouping. Permission names are localised by language.

Data safety records

dataSafety contains sharedData, collectedData, securityPractices, and privacyPolicyUrl. Each shared or collected entry has type, data, optional, and purpose when Google provides them.

Input

FieldDefaultNotes
modesearchOne of the seven modes above.
searchQuerycalculatorKeyword for search mode.
appIds–Package names or Play URLs.
packageNames–Package names or Play URLs for details, reviews, similar, permissions, or data safety.
startUrls–Full Play app URLs; the id parameter is extracted.
developerId–Numeric developer ID or developer page URL.
developerName–Display name such as Google LLC.
countryusStorefront for search results, pricing, and availability.
languageenLanguage for app pages and the review bucket. Google Play selects reviews by language, not country.
maxItems100Hard row cap, 1–10,000. Search returns at most 250 apps per query. In similar mode one seed app is one row.
maxReviewsPerApp100Review cap per app, 1–50,000. Requests use up to 4,500 reviews per page.
reviewSortnewestnewest, rating, or helpfulness.
includeDetailsfalseFetch the full app page for search and developer results, and include app metadata in permissions/dataSafety output.
includePermissionsfalseAdd permissions to app records in search, details, developer, and similar modes.
includeDataSafetyfalseAdd data safety labels to app records.
proxyConfiguration–Optional. The actor works without a proxy.

Use at least one of searchQuery, appIds, packageNames, startUrls, or a developer field, depending on the mode.

Examples

Search with full details and permissions:

{
"mode": "search",
"searchQuery": "photo editor",
"country": "us",
"language": "en",
"maxItems": 10,
"includeDetails": true,
"includePermissions": true
}

Deep reviews for two apps:

{
"mode": "reviews",
"packageNames": ["com.whatsapp", "com.instagram.android"],
"language": "en",
"maxReviewsPerApp": 5000,
"reviewSort": "newest",
"maxItems": 10000
}

Developer catalog:

{
"mode": "developer",
"developerName": "Google LLC",
"country": "us",
"language": "en",
"maxItems": 200
}

Data safety labels:

{
"mode": "dataSafety",
"packageNames": ["com.whatsapp", "com.spotify.music"],
"language": "en",
"includeDetails": true
}

Output behaviour

  • Records are omit-empty at every depth. A field Google Play does not publish for an app is left out, never set to null, "", 0, or [].
  • Existing field names from earlier versions (appId, title, score, ratings, lastUpdated, reviewId, content, thumbsUpCount, replyContent, repliedAt, appVersion) are still emitted beside the newer names so saved integrations keep working.
  • Old input keys are mapped in code: searchTerms to searchQuery, maxResults to maxItems, reviewCount to maxReviewsPerApp, and includeReviews to nested reviews on app records.
  • A run that produces zero records fails with a clear status message instead of returning an empty dataset. If some apps fail and others succeed, the dataset is kept and the run ends with a warning summary.
  • RUN_SUMMARY in the key-value store records counts, caps, warnings, errors, and whether any request was blocked.

Limits and honest caps

  • Search: most keywords return 15–50 apps. A minority expose a continuation token; the actor follows it up to 250 apps per query. To collect more, run several queries.
  • Reviews: Google Play serves up to 4,500 reviews per page. maxReviewsPerApp is capped at 50,000 and pagination stops when Google runs out of tokens or returns no new review IDs.
  • Similar apps: up to 150 related apps per seed. Similarity is broad; "similar" means related, not necessarily a direct competitor.
  • Version history: Google Play no longer exposes a version-history page or working RPC. Only the latest version, updated, and recentChanges are returned, and they are absent when Google does not publish them.
  • App size: Google Play's web pages do not expose a download size for most apps. size is emitted only when the source includes it.
  • Developer catalogs: pagination follows the continuation token. A very large publisher can still have more apps than the selected maxItems.
  • Permissions and data safety: these are separate Play endpoints. If one app has no declaration, the record still includes its identity and omits the empty section with a warning.

FAQ

Do I need a Google account, cookie, or API key? No. All seven modes use public Play pages and RPCs that work without authentication.

Does country change reviews? No. country controls the storefront, pricing, search result set, and availability. Reviews are selected by language; this is why the actor keeps the two inputs separate.

Why is a package missing from a search run? Google Play's search covers a limited result set per keyword, and some terms return fewer than 20 apps. Try a broader keyword or add the package directly in packageNames.

What happens when Google blocks a request? The actor retries with bounded exponential backoff. If every request is blocked, the run fails loudly with a blocked-request message. A proxy can be supplied, but it is never required.

Can I mix apps and search in one run? Use details or search with includeDetails, or run separate tasks. Keeping modes separate makes row counts and output shapes predictable.

Is this affiliated with Google? No. This is an independent third-party actor that reads public Google Play pages.

Use it as an API (server mode)

Need one answer right away instead of a batch job? Send the input as an HTTP request and the results come back in the response. There's no run to start and poll.

curl -H "Authorization: Bearer $APIFY_TOKEN" \
"https://vcknmnj5f5o6x56ho.apify.actor/?mode=search&searchQuery=calculator&maxItems=3"

Or POST the same input as JSON:

curl -X POST -H "Authorization: Bearer $APIFY_TOKEN" -H "Content-Type: application/json" \
-d '{"mode": "search", "searchQuery": "calculator", "maxItems": 3}' \
"https://vcknmnj5f5o6x56ho.apify.actor/"
  • The fields are the same as in the input above. With GET, repeat a parameter once for each value in a list.
  • You get back a JSON array with the same records a normal run saves. They're saved to the run's dataset too.
  • Each request is capped at 100 results and 4 minutes. For bigger jobs, start a normal run.
  • The request runs in your own Apify account at the Actor's normal price (a start fee plus a price per result). The server shuts down after a minute with no requests.
  • The Server tab on this page lists every parameter and lets you try a request from your browser.