SFOLN

Catalogue / App stores

Google Play Scraper – App Details & Reviews

sfoln/google-play-scraper · Ecommerce, Developer tools, Automation On request

Google Play app data by package name or URL: title, developer, installs, rating and histogram, price, version, update date, genre, content rating, screenshots, plus user reviews with rating, text, app version and developer replies. $1 per 1,000 apps, $0.10 per 1,000 reviews.

About

What it does

Get Google Play app data as clean JSON by package name or Play Store URL: title, developer and contact, installs, rating and rating histogram, price, version, update date, genre, content rating, screenshots and release notes, plus user reviews with star rating, text, date, app version, thumbs-up count and the developer's reply. For app-market research, ASO, competitor and review monitoring, and AI agents. $1 per 1,000 apps, $0.10 per 1,000 reviews, no start fee; unknown apps and errors are free.

Price

Price per delivered record

EventPricePer 1,000Charged for
Google Play app
app
$0.001$1 / 1,000One app record: the details of a Google Play app in the chosen country and language.
Google Play review
review
$0.0001$0.10 / 1,000One user review row (rating, text, date, app version, thumbs-up count, developer reply).

Apify free plan: up to 10 items per run. Paid plans have no per-run cap; set maxTotalChargeUsd to cap spend.

Run

Call it from code, an agent or the Console

This API is private on Apify for now. Email us and we will publish it for you, usually within two working days. The calls below work once it is public. contact@sfoln.com

curl · synchronous run, rows in the response
curl -X POST "https://api.apify.com/v2/actors/sfoln~google-play-scraper/run-sync-get-dataset-items" \
  -H "Authorization: Bearer $APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"apps":["com.whatsapp"]}'
mcp.json · hosted Apify MCP server
{
  "mcpServers": {
    "apify": {
      "type": "http",
      "url": "https://mcp.apify.com?tools=sfoln/google-play-scraper"
    }
  }
}
asynchronous run · for large batches
POST https://api.apify.com/v2/actors/sfoln~google-play-scraper/runs?maxTotalChargeUsd=1
GET  https://api.apify.com/v2/actor-runs/{runId}            # until status is SUCCEEDED
GET  https://api.apify.com/v2/datasets/{defaultDatasetId}/items?format=json

Authenticate with an Apify API token. MCP clients can instead sign in with OAuth when prompted. Example prompt for an agent: Get the Google Play rating, installs and latest version of com.whatsapp, and its 50 newest reviews.

Input

Input fields

List apps by package name or Google Play URL, then choose app details or reviews. Each app is one item with its own record.

FieldTypeDefaultMeaning
modestring"apps"Mode
apps: one record per app with its details (optionally with reviews). reviews: the app's user reviews. One of "apps", "reviews".
apps *arrayrequiredApps
Package names (com.whatsapp) or Google Play URLs (https://play.google.com/store/apps/details?id=com.whatsapp), one per line. Accounts on the Apify free plan can process up to 10 apps per run.
countrystring"us"Country
Two-letter country code of the store (us, gb, de, in…): prices, currency and availability follow it.
languagestring"en"Language
Language of texts and reviews (en, de, es, pt-BR…).
includeReviewsbooleanfalseInclude reviews (apps mode)
In the apps mode, also return each app's reviews (up to Max reviews per app, charged per review).
maxReviewsPerAppinteger100Max reviews per app
Reviews returned per app (1–10,000). Range 1–10000.
reviewSortstring"newest"Review order
newest first, most relevant first, or by rating. One of "newest", "relevant", "rating".
reviewRatinginteger0Only reviews with this rating
1–5: only reviews with that many stars. 0: all reviews. Range 0–5.
maxItemsinteger1000Max apps
Safety cap on apps processed in this run; the rest is reported as dropped. Range 1–10000.
concurrencyinteger—Concurrency
Apps processed in parallel (1–10). Default: 3 for app details, 2 for reviews. Google Play's pace limit applies to the whole run either way. Range 1–10.
includeRawbooleanfalseInclude raw upstream response
Attach Google Play's unmodified data arrays to each record under raw (larger output).
Example input
{
  "apps": [
    "com.whatsapp"
  ]
}

Output

One record per input item

Records land in the run's dataset; a synchronous call returns them directly. Each has a status (ok is charged; everything else is free) and a charged flag. The run's OUTPUT record totals items and charges.

FieldTypeMeaning
inputstring | objectInput
The input item this record belongs to (the app, keyword, chart, account or post, with its country or mode).
statusstringStatus
ok | not_found | error | skipped_invalid | skipped_budget | skipped_free_plan | skipped_unmetered e.g. "ok"
chargedbooleanCharged
Whether this record incurred a pay-per-event charge.
chargedEventstringCharged event
Pay-per-event event charged for this record (present only when charged).
chargedCountintegerEvents charged
Events actually charged when the charge came back short of the requested count (present only then; a warning explains it).
sourcestringSource
Upstream data source.
fetchedAtstringFetched at
ISO timestamp.
errorobjectError
{ code, message, provider?, status? } when status is not ok. Codes set by the runtime: budget_exhausted, free_plan_limit, unmetered, aborted, charge_failed, record_too_large, invalid_record, dataset_push_failed; upstream codes: auth, insufficient_credits, rate_limit, timeout, network, server, client, invalid_response, not_found.
warningsarrayWarnings
Notes about this record, e.g. a charge that came back short.
rawarray | objectRaw
Google Play's unmodified data: the app's details block or the review array (only with includeRaw).
recordTypestringRecord type
app, review, or summary (one per app in the reviews mode: what was delivered and why it stopped).
positionintegerPosition
Order of this row among the rows of its input (1-based).
appIdstring | nullPackage name
The app's package name, e.g. com.whatsapp.
urlstring | nullURL
Google Play link of the app (review rows: of the review).
countrystringCountry
Store country the data was fetched for.
languagestringLanguage
Language the texts and reviews were fetched in.
titlestring | nullTitle
App name.
summarystring | nullShort description
The one-line summary shown under the title.
descriptionstring | nullDescription
Full description as plain text.
developerstring | nullDeveloper
Developer name.
developerIdstring | nullDeveloper ID
Google Play developer ID (numeric or name).
developerUrlstring | nullDeveloper page
Google Play page of the developer.
developerEmailstring | nullDeveloper email
Support email the developer lists.
developerWebsitestring | nullDeveloper website
Website the developer lists.
developerAddressstring | nullDeveloper address
Postal address the developer lists, when shown.
privacyPolicyUrlstring | nullPrivacy policy
URL of the app's privacy policy.
genrestring | nullGenre
Main category, e.g. Communication, Arcade.
genreIdstring | nullGenre ID
Category ID, e.g. COMMUNICATION, GAME_ARCADE.
categoriesarrayTags
Further categories and tags Google Play shows.
iconUrlstring | nullIcon
App icon URL.
headerImageUrlstring | nullFeature graphic
Header (feature graphic) image URL.
screenshotUrlsarrayScreenshots
Screenshot URLs.
videoUrlstring | nullVideo
Promo video URL, when there is one.
installsstring | nullInstalls
Install bracket as shown, e.g. 5,000,000,000+.
minInstallsnumber | nullMin installs
Lower bound of the install bracket.
maxInstallsnumber | nullInstalls (estimate)
Google Play's finer install count behind the bracket.
ratingnumber | nullRating
App rows: average rating (1–5). Review rows: the review's stars (1–5).
ratingCountnumber | nullRatings
Number of ratings.
reviewCountnumber | nullReviews
Number of written reviews.
histogramobject | nullRating histogram
Ratings per star: { 1: n, 2: n, 3: n, 4: n, 5: n }.
pricenumber | nullPrice
Price in the store currency (0 = free).
currencystring | nullCurrency
ISO currency code of the price.
priceTextstring | nullPrice text
Price as shown, e.g. $6.99 (empty for free apps).
originalPricenumber | nullOriginal price
Price before a running discount.
isFreeboolean | nullFree
True when the price is 0.
offersInAppPurchasesbooleanIn-app purchases
True when the app sells in-app items.
inAppPurchaseRangestring | nullIn-app price range
In-app purchase price range as shown, e.g. $0.99 - $49.99 per item.
containsAdsbooleanContains ads
True when Google Play marks the app as containing ads.
contentRatingstring | nullContent rating
Age rating, e.g. Everyone, Teen.
contentRatingDescriptionstring | nullRating reasons
Content descriptors, e.g. Fantasy Violence.
releasedTextstring | nullReleased (as shown)
First release date as Google Play shows it in the chosen language.
releaseDatestring | nullReleased
First release date (YYYY-MM-DD) when the page is in English.
updatedAtstring | nullUpdated
ISO timestamp of the last update.
versionstring | nullVersion
Current version (null when it varies with the device).
minAndroidVersionstring | nullMin Android
Minimum Android version.
recentChangesstring | nullWhat's new
Release notes of the current version.
reviewsDeliveredintegerReviews delivered
Apps mode with includeReviews: review rows delivered for this app.
reviewsStopReasonstringReviews stop reason
Apps mode with includeReviews: why the reviews stopped (limit, end, free_plan, budget, error…).
reviewIdstringReview ID
Google Play review ID.
textstring | nullReview text
Body of the review.
authorNamestring | nullReviewer
Reviewer's public name.
authorImageUrlstring | nullReviewer avatar
Reviewer's avatar URL.
createdAtstring | nullReview date
ISO timestamp of the review.
thumbsUpCountintegerHelpful votes
Users who found the review helpful.
appVersionstring | nullApp version
App version the review was written for.
replyTextstring | nullDeveloper reply
The developer's reply, when there is one.
repliedAtstring | nullReplied at
ISO timestamp of the developer's reply.
criteriaarrayCriteria
Aspect ratings some apps ask for: { criterion, rating }.
sortstringReview order
newest, relevant or rating.
ratingFilterintegerRating filter
Summary rows: the star rating reviews were limited to.
resultsDeliveredintegerRows delivered
Summary rows: reviews delivered (and charged) for this app.
stopReasonstringStop reason
Summary rows: limit, end, free_plan, budget, aborted, deadline, empty_pages, max_pages or error.
Example record
Example record
{
  "input": {
    "mode": "apps",
    "app": "com.mojang.minecraftpe"
  },
  "recordType": "app",
  "appId": "com.mojang.minecraftpe",
  "url": "https://play.google.com/store/apps/details?id=com.mojang.minecraftpe",
  "country": "us",
  "language": "en",
  "title": "Minecraft: Dream it, Build it!",
  "summary": "Millions of crafters have smashed billions of blocks! Now you can join the fun!",
  "description": "Dive into an open world of building, crafting, and survival…",
  "developer": "Mojang",
  "developerId": "4772240228547998649",
  "developerUrl": "https://play.google.com/store/apps/dev?id=4772240228547998649",
  "developerEmail": "help@minecraft.net",
  "developerWebsite": "http://help.mojang.com",
  "developerAddress": null,
  "privacyPolicyUrl": "http://go.microsoft.com/fwlink/?LinkId=521839",
  "genre": "Arcade",
  "genreId": "GAME_ARCADE",
  "categories": [
    "Simulation",
    "Casual"
  ],
  "iconUrl": "https://play-lh.googleusercontent.com/tI4StRSPVhpGJH5R013naszLUawOjao1ya8FvyaNO7XY",
  "headerImageUrl": "https://play-lh.googleusercontent.com/S_Z7YSNVWWd3BNh3AwV0iVv0hNqJ8zvn",
  "screenshotUrls": [
    "https://play-lh.googleusercontent.com/ywPBuExmYGLE6oL7QENmI7wOxMPOU"
  ],
  "videoUrl": "https://play.google.com/video/lava/web/player/yt:movie:BLtLrFNRE-E?autoplay=1&embed=play",
  "installs": "50,000,000+",
  "minInstalls": 50000000,
  "maxInstalls": 99063691,
  "rating": 4.30527,
  "ratingCount": 5860068,
  "reviewCount": 635107,
  "histogram": {
    "1": 625087,
    "2": 178226,
    "3": 270413,
    "4": 495298,
    "5": 4291033
  },
  "price": 6.99,
  "currency": "USD",
  "priceText": "$6.99",
  "originalPrice": null,
  "isFree": false,
  "offersInAppPurchases": true,
  "inAppPurchaseRange": "$0.99 - $49.99 per item",
  "containsAds": false,
  "contentRating": "Everyone 10+",
  "contentRatingDescription": "Fantasy Violence",
  "releasedText": "Aug 15, 2011",
  "releaseDate": "2011-08-15",
  "updatedAt": "2026-09-25T17:26:28.000Z",
  "version": "1.26.52.3",
  "minAndroidVersion": "8.0",
  "recentChanges": "What's new in 26.52: Various bug fixes!",
  "status": "ok",
  "charged": true,
  "chargedEvent": "app",
  "source": "googleplay",
  "fetchedAt": "2026-10-14T22:20:00.000Z"
}

FAQ

Questions

What do I put in apps?
The app's package name (com.whatsapp) or its Google Play URL (https://play.google.com/store/apps/details?id=com.whatsapp). An unknown package, or an app not available in the chosen country, comes back as not_found and is not charged.
How many reviews can I get per app?
Up to 10,000 per app and run (200 per request), newest first, most relevant first, or by rating, optionally only one star rating. Reviews are those Google Play shows for the chosen language and country.
Does it need a browser or a proxy?
No. It reads the public Google Play pages and the reviews endpoint they use, so runs are fast and cheap.

Machine-readable

This page for agents