ActorsComparePricingFAQAboutBrowse actors on Apify
App Store & Google Play Scraper icon

Shops, reviews and apps

App Store and Google Play Scraper: Reviews, Apps, Charts

App Store & Google Play Scraper is an Apify actor (API) by CheapAPI Labs. Apps, reviews, ratings and top charts from the App Store and Google Play in 249 countries. It costs $0.09 per 1,000 reviews on every Apify plan, billed through your Apify account with no API key.

Compared with the most used Google Play reviews actor (about 2,800 users): 1,000 reviews of one app costs $0.09 on every plan here and $0.15 on Free and $0.10 on Gold there (Apify Store listing prices, checked September 2026). Apify platform usage is billed on top here. Against the most used App Store reviews actor ($0.10) the difference on Gold is only $0.01; this actor covers both stores in one run.

Our prices updated 30 October 2026; competitor prices as checked in the comparison. 2 Apify users have run this actor (Apify Store count, 30 October 2026).

Free plan$0.09per 1,000 reviews
Gold plan$0.09per 1,000 reviews
API keyNot neededbilled by Apify

What does App Store & Google Play Scraper return?

Get app reviews, full app details, keyword search rankings and top charts from Google Play and the Apple App Store in one Actor. Paste store links or app IDs and the store is detected automatically. No login, no browser, no proxies. Every row has a stable id, so repeated runs are easy to de duplicate.

Typical cost: 1,000 reviews of one app ≈ $0.09, plus a small Apify platform usage charge (usually under $0.01 for a run like that), on every Apify plan.

One example row from a real run, shortened:

{
  "id": "b7b80a3cc3dd2f59",
  "store": "googlePlay",
  "storeName": "Google Play",
  "appId": "org.telegram.messenger",
  "appTitle": "Telegram",
  "appRating": 3.8,
  "appRatingsCount": 17260048,
  "appUrl": "https://play.google.com/store/apps/details?id=org.telegram.messenger&hl=en&gl=us",
  "reviewId": "592d5883-48fa-4228-814d-be853329f163",
  "position": 1,
  "rating": 5,
  "title": null,
  "text": "I downloaded this app onto my Kindle Fire to get updates and communicate more easily",
  "userName": null,
  "userImageUrl": null,
  "publishedAt": "2026-09-17T15:57:06.000Z",
  "appVersion": "12.10.1",
  "helpfulCount": 2,
  "developerReply": null,
  "developerReplyAt": null,
  "developerReplyAuthor": null,
  "sortedBy": "newest",
  "ratingFilter": null,
  "inputApp": "https://play.google.com/store/apps/details?id=org.telegram.messenger",
  "country": "US",
  "language": "en",
  "scrapedAt": "2026-09-28T09:00:00.000Z"
}

Which fields do you get?

The What to get option (mode) picks one of four outputs. You get one dataset row per review, app, search result or chart position.

Reviews (mode: "reviews")

Field Type Example
id string b7b80a3cc3dd2f59: stable row id; the same review always gets the same id
store / storeName string googlePlay / Google Play
appId string org.telegram.messenger
appTitle string Telegram
appRating number 3.8
appRatingsCount number 17260048
appUrl string https://play.google.com/store/apps/details?id=org.telegram.messenger&hl=en&gl=us
reviewId string 592d5883-48fa-4228-814d-be853329f163
position number 1
rating number 5
title string ‘Scrolling in view’ (App Store only)
text string I downloaded this app onto my Kindle Fire…
publishedAt string (ISO date) 2026-09-17T15:57:06.000Z
appVersion string 12.10.1
helpfulCount number 2 (Google Play)
developerReply / developerReplyAt / developerReplyAuthor string reply text / ISO date / Telegram FZ-LLC
userName / userImageUrl string null by default; filled only with includeReviewerDetails: true
sortedBy / ratingFilter string / number newest / null
inputApp, country, language, scrapedAt string the app exactly as you entered it, US, en, collection time 2026-09-28T09:00:00.000Z

Meaning of the less obvious fields: position is the review's place in the store's list for the chosen order; appRating / appRatingsCount describe the whole app (not the review); appVersion is the app version the reviewer used; sortedBy and ratingFilter repeat the options used for the run.

App details (mode: "appDetails")

Field Type Example
appId, title, subtitle, url, iconUrl string 835599320, TikTok - Videos, Shop & LIVE, Watch, discover and stream!
description string full store description
rating, ratingsCount, reviewsCount number 4.7, 18373452
installs, installsCount string, number 1,000,000,000+, 2981239566 (Google Play)
isFree, price, currency, priceText boolean, number, string true, 0, USD
category, categories, tags, contentRating, languages string / array Communication, ["13+"] (category and tags come from Google Play; App Store listings usually have none)
developer, developerId, developerUrl, developerWebsite, developerEmail, developerAddress string TikTok Ltd., support@telegram.org
version, minimumOsVersion, size string 47.0.0, Requires iOS 14.0 or later., 1 GB
releasedAt, updatedAt, updateNotes string 2026-09-22T02:34:27.000Z, release notes
screenshots, videos array image / video URLs
similarApps, moreAppsByDeveloper array of {appId, title, url} [{ "appId": "1338605092", "title": "Kwai…" }]
id string stable id per app, country and language
store, storeName, inputApp, country, language, scrapedAt string as in review rows
extra object store fields we do not map to a column yet (only present when there are any)

ratingsCount counts star ratings, reviewsCount counts written reviews; installs is the public range and installsCount the exact number (Google Play); contentRating is the age rating; minimumOsVersion is the store's text.

Search results and top charts (mode: "search" / "charts")

Field Type Example
type string search or chart
keyword / chart / category string vpn / topFree / games
rank number 1
appId, title, url, iconUrl, developer, developerUrl string 632064380, Vinted: Pre-loved marketplace, developer Proton AG (Google Play; null in App Store charts)
rating, ratingsCount number 4.86, 339202
isFree, price, currency, priceText boolean, number, string true, 0, USD
totalResults number total results for the keyword (search only; null when the store does not report it)
id string stable id per app in the same keyword or chart, category, country and language: join runs on it to track rank changes
store, storeName, country, language, scrapedAt string appStore, App Store, US, en, collection time

The dataset has three table views (Reviews, App details, Search results & charts). A RUN_SUMMARY record in the key value store lists how many results were saved, which inputs returned nothing and why.

How much does App Store & Google Play Scraper cost?

You pay per event, through your Apify account. Main price: $0.09 per 1,000 reviews on every Apify plan. Every event and plan:

Price per event in USD by Apify plan. Platinum and Diamond pay the Gold price. Apify platform usage: billed separately by Apify.
EventFreeBronzeSilverGold
ReviewOne app review (Google Play or App Store) saved to the dataset, with rating, text, author, date, app version and developer reply.$0.00009$0.00009$0.00009$0.00009
App detailsOne full app store listing: description, rating, installs, price, developer contacts, version, screenshots, similar apps and more.$0.003$0.003$0.003$0.003
Search resultOne ranked app from a keyword search in Google Play or the App Store.$0.00015$0.00015$0.00015$0.00015
Top chart entryOne ranked app from a Google Play or App Store top chart.$0.0001$0.0001$0.0001$0.0001
Minimum per request (top up)Charged in $0.0005 steps only when a request delivers less than its minimum: an app that does not exist in the chosen country, an app with few or no reviews, or a search or chart with few results. Normal requests are fully paid by their results and never trigger it.$0.0005$0.0005$0.0005$0.0005

How do I call App Store & Google Play Scraper API from code?

Every run is one HTTP request to the Apify API with your Apify token; the input below is the actor's own example. The synchronous endpoint returns the rows in the response for runs up to 300 seconds; for longer runs start a run and fetch its dataset.

curl -X POST "https://api.apify.com/v2/acts/cheapapi~app-store-google-play-scraper/run-sync-get-dataset-items" \
  -H "Authorization: Bearer $APIFY_TOKEN" -H "Content-Type: application/json" \
  -d '{"mode":"reviews","apps":["https://play.google.com/store/apps/details?id=org.telegram.messenger","https://apps.apple.com/us/app/telegram-messenger/id686449807"],"keywords":["vpn"],"maxResults":100,"country":"US","language":"en"}'

With the JavaScript client:

import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('cheapapi/app-store-google-play-scraper').call({
  "mode": "reviews",
  "apps": [
    "https://play.google.com/store/apps/details?id=org.telegram.messenger",
    "https://apps.apple.com/us/app/telegram-messenger/id686449807"
  ],
  "keywords": [
    "vpn"
  ],
  "maxResults": 100,
  "country": "US",
  "language": "en"
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();

How does App Store & Google Play Scraper compare with alternatives?

Typical run: 1,000 reviews of one app. Prices are per run, taken from the public Apify Store listings (event fees only). Platform usage terms differ between Actors and are not shown in this table; check each listing for how its compute is billed. For this Actor, Apify platform usage is billed separately by Apify on top of the prices shown ("+ usage"; at the default 256 MB a small run typically uses about $0.001 to $0.005, more when a standard speed run waits several minutes).

Option Users Price on Free plan Price on Gold plan Google Play App Store App details, keyword ranks, top charts
Most used Google Play reviews Actor ~2,800 $0.15 $0.10 ✓ ✗ ✗ (reviews only)
Most used App Store reviews Actor ~2,300 $0.10 $0.10 ✗ ✓ ✗ (reviews only)
Most used general Google Play scraper ~2,700 $0.30 $0.30 ✓ ✗ Google Play app details and app lists; no App Store
Dual store reviews Actor ~150 $0.50 $0.30 ✓ ✓ ✗ (reviews only)
This Actor new $0.09 + usage $0.09 + usage ✓ ✓ ✓

Prices from public Apify Store listings, checked September 2026. Honest reading: on the Gold plan our review fee is only $0.01 below the two single store leaders ($0.09 vs $0.10), and once our platform usage is added a single store run there can cost about the same or less; the bigger differences are on the Free plan (vs. the Google Play reviews leader), against the general Google Play scraper ($0.30 per 1,000 rows on every plan), against the dual store option, and that one run covers both stores plus app details, keyword rankings and top charts. Competitor prices can change at any time; check their listing before you decide.

What is it used for?

  • Review monitoring and customer feedback: track new 1-star reviews of your app (or a competitor's) every day and route them to Slack or a support tool.
  • Sentiment analysis and AI training data: export thousands of reviews with rating, text, date and app version for NLP or LLM analysis.
  • App Store Optimization (ASO): check where your app ranks for target keywords in each country and store.
  • Market and competitor research: read the Top grossing / Top free charts per category and country, and pull full app details (installs, price, update cadence).
  • Lead generation: collect developer names, websites and support emails from the details of apps in a category.
  • Release tracking: watch version, updatedAt and updateNotes of competitor apps.

What is not included?

Not included Why Alternative
In app purchase lists and prices Not part of the store data we read App details give price, isFree and priceText of the app itself
Historical rank charts Each run is a snapshot of today's ranks Schedule a search or chart run daily and join rows on id (see Monitoring)
More than 500 App Store reviews per app, country and sort order App Store limit Run more countries or both sort orders
Keyword search volume / difficulty for app stores Not available from the stores For web search keywords use our Keyword Research Tool
Web search rankings of an app's website Different data source Google SERP Scraper and Domain SEO Analyzer
Mentions of your app in AI assistants (ChatGPT, Perplexity, Gemini) Different data source AI Search Visibility Tracker
YouTube reviews and comments about an app Different platform YouTube Comments Scraper
Automatic "only new reviews since the last run" filter Every run is priced per row returned; see the recipe below Monitoring recipe

What are the limits?

  • App Store: at most 500 reviews per app, country and sort order; the star rating filter is Google Play only; App Store reviews have no helpful vote count and no developer reply field.
  • Requests are collected in batches: the minimum is 50 reviews per app, 30 search results per keyword and 50 positions per chart. App Store charts have up to 100 positions, Google Play charts up to 200.
  • Some fields are store specific (installs only on Google Play; subtitle and content rating only on the App Store) and are null or empty for the other store.
  • Ranks reflect the storefront of the chosen country at the time of the run and can differ slightly from what a signed in user sees on their device.
  • The standard processing speed can take several minutes for large runs.
  • Not included: in app purchase lists, historical rank charts, and apps that are not available in the chosen country.

Questions about App Store & Google Play Scraper

Is Apify platform usage included, and is there a Free plan limit?

Platform usage (compute) is billed separately by Apify on top of the event fees; at the default 256 MB a small run typically uses about $0.001 to $0.005, and standard speed runs (always used for App Store reviews) wait for results and can use more. On the Apify Free plan you can use up to $0.25 of this Actor's results per calendar month (Apify pays developers nothing for Free plan usage while our data costs are real). Runs that reach the allowance stop cleanly and keep everything collected so far; it resets on the 1st of the month. Any paid Apify plan has no limit.

Why was I charged for more rows than I asked for, or for minimum-top-up?

Requests are collected in batches of at least 50 reviews per app, 30 search results per keyword and 50 chart positions, so a smaller Max results is raised to that (the run log warns at the start; 50 reviews = $0.0045). minimum-top-up is charged only when a request delivers less than its minimum (see Pricing): typically an app not available in the chosen country, an app with few or no reviews (or few with your star filter), or a search or chart with few results. Only the difference is charged, in $0.0005 steps; RUN_SUMMARY shows minimumTopUps.

Is it legal to scrape app reviews and store listings?

The Actor collects only publicly visible store data. Reviews can contain personal data, which is why reviewer names and avatars are off by default. If you turn them on, make sure you have a lawful basis (for example under GDPR or CCPA). This is not legal advice.

How fresh is the data, and why are App Store reviews slower?

Every run reads the stores live at run time; scrapedAt shows when each row was collected. App Store reviews always use the standard processing speed and usually arrive within a few minutes; everything else runs in fast mode for small runs.

How many reviews can I get?

Google Play: up to 100,000 per app and run. App Store: up to 500 per app, country and sort order; for more, run other countries (each storefront has its own reviews) or both sort orders.

Why did I get fewer results than I asked for?

The app has fewer reviews in that country or language, the star filter removed some, the App Store 500-review cap applied, or your maximum cost per run was reached. The RUN_SUMMARY record tells you which.

How do I control my budget?

Set Maximum cost per run. The Actor never charges more than that, and in review mode it splits the budget fairly between your apps.

Can I monitor new reviews or rank changes?

Yes, see Monitoring. There is no built in "only new reviews" switch; you drop repeats on your side using the stable id.

Can I mix Google Play and App Store apps in one run?

Yes. Each app is sent to its own store automatically (force one with a google: or apple: prefix). If one app fails, the others are still delivered and the failure is listed in RUN_SUMMARY.

A field or feature is missing. Where do I get support?

Open an issue on the Actor's Issues tab and describe what you need.

Run App Store & Google Play Scraper on Apify

The form opens with a working example. Free Apify accounts get a small monthly allowance.

Open on Apify