App Store Reviews Scraper & Google Play Reviews API avatar

App Store Reviews Scraper & Google Play Reviews API

Pricing

from $0.04 / 1,000 results

Go to Apify Store
App Store Reviews Scraper & Google Play Reviews API

App Store Reviews Scraper & Google Play Reviews API

App Store reviews scraper and Google Play reviews scraper in one: iOS and Android app reviews by URL or ID, any country, one table. Rating, title, text, date, version, reviewer, developer reply, app info. Star and date filters for daily monitoring. $0.04 per 1,000 reviews. No login.

Pricing

from $0.04 / 1,000 results

Rating

0.0

(0)

Developer

Giovanni Rich

Giovanni Rich

Maintained by Community

Actor stats

0

Bookmarked

4

Total users

0

Monthly active users

a day ago

Last modified

Features

Limited permissions

Share

App Store reviews scraper and Google Play reviews scraper in one actor: pull iOS app reviews and Android app reviews with star rating, title, full text, date, app version, reviewer name, helpful votes and the developer's reply, plus the app's metadata (average rating, rating count, version, genre, installs, icon) on every row. Use it as a pay-per-result app reviews API: paste app URLs or IDs from either store and get one unified table back as JSON, CSV or Excel.

It reads the stores' own public web data over plain HTTP, with no headless browser and no login. That keeps it fast (20,000 reviews in 27 seconds in a local test in September 2026) and cheap: $0.04 per 1,000 reviews, both stores in one run.

What you get

  • The review: star rating (1-5), title (App Store), full text, date, reviewer name, reviewer avatar (Google Play), app version the review was written on (Google Play), helpful votes, and whether it was edited (App Store).
  • The developer's reply: reply text and reply date, on both stores, whenever the developer answered.
  • App metadata on every row: app name, developer, bundle ID / package name, average rating, total ratings, total reviews (Google Play), current version, genre, price and currency, installs (Google Play), content rating, release and last-update date, icon and store URL.
  • Deep history: pages through as many reviews as the store serves, not just the first 500. Set maxReviewsPerApp to 0 for everything.
  • Any country: 150+ App Store storefronts and every Google Play country, plus the Google Play review language.
  • Filters that save you money: only 1-2 star complaints, only reviews since a date (great for daily monitoring), and 4 sort orders. You only pay for reviews that pass your filters.

Sample output

Real rows from a run on 24 Sep 2026 (sample-output.json):

storeappNameratingtitletextreviewDateversion
appStoreSpotify: Music and Podcasts3AdsTo many ads2026-09-23T02:37:47.000Znull
googlePlaySpotify: Music and Podcasts5nullThe app has has gotten better with music suggestions, but recently podcast video episodes have trouble playing.2026-09-23T05:14:13.000Z9.1.82.2161
appStoreSpotify: Music and Podcasts4Great MusicLove the music2026-09-23T02:43:29.000Znull

Use cases

  • App reputation monitoring: schedule a daily run with reviewsSince and push new 1-2 star reviews to Slack, email or your helpdesk.
  • Competitor research: pull thousands of reviews for competing apps and see what users love and hate.
  • App store optimization (ASO): find the words and features users mention most in high and low ratings.
  • Product feedback and bug triage: find complaints tied to a specific app version (Google Play).
  • Sentiment analysis, LLM and NLP datasets: clean text with ratings and dates in JSON, CSV or Excel.
  • Customer support audits: measure how often, and how fast, a developer replies to reviews.

Pricing

$0.04 per 1,000 reviews (pay per result; failed requests are never charged). Reviews dropped by your star or date filters are free. Other review scrapers on the Store (free-plan prices per 1,000 reviews, live Apify Store search on 10 Nov 2026): thewolves $0.10 (App Store and Google Play are two separate actors, 674 and 508 users in 30 days), neatrat $0.15 (Google Play only, 416 users), theagents $0.10 (one store per actor), wulfcare $0.10 (App Store), scrapersdelight $0.10 (App Store), thequietstack $0.09 + start (Google Play only), garje $0.12 (both stores), apihq $0.08 (one store per actor), lergassy $0.05 to $0.08 + $1.00 per 1,000 apps (one store per actor), cirkit $0.07 + start (one store per actor), cleanscrape $0.20 + $0.01 per run (both stores), code-node-tools $0.50 + start (both stores), johnvc $0.90 per 1,000 reviews + $0.0175 setup. Three small paid sellers charge less per review, each one store per actor: x.com's Google Play actor $0.01 + start (4 users), forgedata's App Store actor $0.01 + start (1 user) and apivault_labs $0.02 (2 users on each store's actor). kaix charges the same $0.04 + start (1 user per store, one store per actor). Free actors also exist (bikram07 2 users, scraper-forge 1, intelscrape 1 per store, convertfleetdotonline 1).

You scrapeYou pay
100 reviews$0.004
1,000 reviews$0.04
10,000 reviews$0.40
100,000 reviews$4.00

Plus a $0.00005 start fee per run. The Apify free plan's $5 monthly credit covers about 125,000 reviews. The prefilled input (Spotify on both stores, 20 reviews each) returns 40 reviews and costs about $0.0017; it took 4 seconds in a local test on 4 Nov 2026 (no proxy, so cloud start-up time is not included).

Why this one

  • Lowest paid price we found for both stores in one actor on 10 Nov 2026: $0.04 per 1,000, under the $0.08-$0.15 the most-used single-store actors charge. The cheaper actors named above each cover one store.
  • Both stores, one run, one table: the three most-used alternatives on the Store each cover only the App Store or only Google Play.
  • Developer replies, app version, helpful votes and app metadata on every row, not just the review text.
  • Daily monitoring costs only the new reviews: sort: newest + reviewsSince stops at the first older review.
  • Deep history: pages as far as the store serves, more than 500,000 reviews deep on Spotify's App Store listing in a September 2026 build test.

FAQ

Is it legal to scrape App Store and Google Play reviews? The actor only collects reviews that both stores publicly show to any visitor, without logging in. Scraping public data is generally allowed, but you are responsible for how you use it: follow the stores' terms of service and privacy laws such as GDPR and CCPA, especially for reviewer names and avatars. This is not legal advice; ask a lawyer if you are unsure.

Is there an official App Store or Google Play reviews API? Only for your own apps. Apple's App Store Connect API returns customer reviews for apps in your developer account, and the Google Play Developer API returns reviews of your own apps (recent ones only). Neither lets you read competitors' reviews; this actor reads the public review data both stores show to any visitor.

What does a typical run cost? A 5,000-review competitor pull (5 apps x 1,000) costs $0.20. A daily monitor of 10 apps with about 50 new reviews each (sort: newest + reviewsSince) is about 15,000 reviews, $0.60 a month.

Do I need an Apple or Google account? No. The actor reads what both stores show to any visitor, without logging in.

How fast is it, and how many reviews can I get? 20,000 reviews took 27 seconds in a local test (September 2026, no proxy, so cloud start-up is not included), paged 200 per request. You get as many as the store will page through (maxReviewsPerApp: 0): the App Store went more than 500,000 reviews deep on Spotify, and Google Play keeps returning pages until the history ends.

Can I monitor new reviews every day or call it via API? Yes. Use sort: newest with reviewsSince set to yesterday's date; the run stops as soon as it reaches older reviews, so a daily run costs only the new reviews. Schedule it in Apify, or start it from the Apify API, Make, Zapier, n8n or the Apify MCP server.

Do I need proxies? How does it avoid blocks? The default Apify datacenter proxy works for both stores. It sends realistic Chrome desktop headers, retires any session that gets HTTP 403/429/503 or an unexpected page, and retries each request up to 6 times on a fresh IP with jittered backoff. If the log still shows repeated blocks, switch the proxy to the RESIDENTIAL group.

How do I find an app's ID, and why is an app "not found"? Copy the store URL: App Store IDs are the number after id (id324684580), Google Play IDs are the id= parameter (com.spotify.music). "Not found" means the ID is wrong or the app isn't available in the chosen country; it's listed in RUN_SUMMARY and doesn't stop the other apps.

How to use

  1. Enter your apps: paste App Store or Google Play URLs (or IDs like 324684580 / com.spotify.music), then pick a country, sort order and how many reviews per app.
  2. Click Start: the run pages through each app's reviews and saves one row per review.
  3. Download the results as JSON, CSV, Excel or HTML from the Output tab, or fetch them with the Apify API.

Input

FieldDefaultDescription
appsSpotify on both storesApp Store or Google Play apps, one per line. App Store: https://apps.apple.com/us/app/spotify-music-and-podcasts/id324684580 or 324684580. Google Play: https://play.google.com/store/apps/details?id=com.spotify.music or com.spotify.music. Mix both stores freely.
countryus2-letter store country (us, gb, de, fr, jp, br, in ...). Each country has its own reviews. Overrides any country in the URLs.
languageenGoogle Play only: the review language (en, de, es, ja ...). The App Store returns the country's reviews in whatever language they were written.
sortnewestnewest, mostHelpful, mostFavorable or mostCritical.
maxReviewsPerApp100Stop each app after this many reviews. 0 = everything the store will page through.
starsalle.g. [1, 2] to keep only complaints.
reviewsSince-YYYY-MM-DD. With sort = newest the run stops as soon as it reaches older reviews.
maxConcurrency5Parallel requests (apps run in parallel, each app pages one request at a time).
maxRequestRetries6Retries per request, each on a fresh session / proxy IP.
proxyConfigurationApify ProxyThe default datacenter proxy works for both stores.

Input example

{
"apps": [
"https://apps.apple.com/us/app/spotify-music-and-podcasts/id324684580",
"com.spotify.music"
],
"country": "us",
"language": "en",
"sort": "newest",
"maxReviewsPerApp": 500,
"stars": [1, 2],
"reviewsSince": "2026-09-01"
}

Output example

One row per review. Both stores use the same field names, so you can merge them straight away. Fields a store does not have are null (see the fill rates below). These are real rows from sample-output.json (a 24 Sep 2026 run), with a few app fields left out:

App Store (no developer reply on this one; when the developer answered, developerReply and developerReplyDate are filled, about 7% of rows in the fill-rate run below):

{
"store": "appStore",
"appId": "324684580",
"appName": "Spotify: Music and Podcasts",
"country": "us",
"reviewId": "14582369278",
"rating": 3,
"title": "Ads",
"text": "To many ads",
"reviewDate": "2026-09-23T02:37:47.000Z",
"reviewerName": "Angie_snoops",
"version": null,
"thumbsUp": 0,
"voteCount": 0,
"isEdited": false,
"developerReply": null,
"developerReplyDate": null,
"reviewUrl": "https://apps.apple.com/us/app/spotify-music-and-podcasts/id324684580",
"appDeveloper": "Spotify",
"appBundleId": "com.spotify.client",
"appRating": 4.77,
"appRatingCount": 42231119,
"appVersion": "9.1.84",
"appGenre": "Music",
"appPrice": 0,
"appCurrency": "USD",
"appContentRating": "12+",
"appUpdated": "2026-09-18T06:25:38.000Z",
"appIcon": "https://is1-ssl.mzstatic.com/image/thumb/Purple211/v4/97/1a/25/971a25f3-2f18-8d3f-892a-ab5eea139e78/AppIcon-0-0-1x_U007epad-0-1-0-0-sRGB-85-220.png/512x512bb.jpg",
"appUrl": "https://apps.apple.com/us/app/spotify-music-and-podcasts/id324684580",
"sort": "newest",
"position": 12,
"scrapedAt": "2026-09-24T05:38:20.004Z"
}

Google Play (with the app version and a developer reply):

{
"store": "googlePlay",
"appId": "com.spotify.music",
"appName": "Spotify: Music and Podcasts",
"country": "us",
"language": "en",
"reviewId": "1e96015e-4577-4274-b4de-f71e0a4eae8e",
"rating": 5,
"title": null,
"text": "The app has has gotten better with music suggestions, but recently podcast video episodes have trouble playing.",
"reviewDate": "2026-09-23T05:14:13.000Z",
"reviewerName": "Hennessy",
"reviewerImage": "https://play-lh.googleusercontent.com/a-/ALV-UjV2jiGX3V1M63itQyJfTVNvah6dJDx4WRMU-tm_2TZVNaVnUc0",
"version": "9.1.82.2161",
"thumbsUp": 4,
"developerReply": "Hi there! Have you tried a quick reinstall? If that doesn't help, we'd recommend reaching out to our Customer Service at http://support.spotify.com. ...",
"developerReplyDate": "2024-01-03T12:49:34.000Z",
"reviewUrl": "https://play.google.com/store/apps/details?id=com.spotify.music&hl=en&gl=us&reviewId=1e96015e-4577-4274-b4de-f71e0a4eae8e",
"appDeveloper": "Spotify AB",
"appRating": 4.35,
"appRatingCount": 36360224,
"appReviewCount": 1853519,
"appVersion": "Varies with device",
"appGenre": "Music & Audio",
"appInstalls": "1,000,000,000+",
"appContentRating": "Teen",
"appReleased": "May 27, 2014",
"appUpdated": "2026-09-18T07:51:07.000Z",
"appUrl": "https://play.google.com/store/apps/details?id=com.spotify.music&hl=en&gl=us",
"sort": "newest",
"position": 16,
"scrapedAt": "2026-09-24T05:38:21.182Z"
}

The dataset has two views: Overview (the review table) and App metadata. A RUN_SUMMARY record in the key-value store lists, per app: reviews saved, reviews filtered out, requests used and why it stopped (maxReviewsPerApp reached, no more reviews from the store, app not found, ...).

Field fill rates (local test run, September 2026: 20,000 reviews, Spotify and Uber on both stores, 5,000 each)

FieldApp StoreGoogle Play
rating, text, reviewDate, reviewerName, reviewId100%100%
title100%n/a (Play reviews have no title)
version (per review)n/a (not public on the App Store)84%
reviewerImagen/a100%
thumbsUp (helpful votes)100%100%
developerReply / developerReplyDate7% (only reviews the developer answered)5%
app metadata (name, developer, rating, rating count, version, genre, icon, URL, updated)100%100%
appInstalls, appReviewCountn/a100%

0 failed requests and 0 duplicate reviews across all local and cloud test runs of the September 2026 build.

API example

Python (pip install apify-client):

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("rel8ble/app-reviews-scraper").call(run_input={"apps": ["https://apps.apple.com/us/app/spotify-music-and-podcasts/id324684580", "com.spotify.music"], "maxReviewsPerApp": 100, "stars": [1, 2]})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["store"], item["rating"], item["text"])

One HTTP call that runs the actor and returns the rows (curl):

curl -X POST "https://api.apify.com/v2/acts/rel8ble~app-reviews-scraper/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN>" \
-H "Content-Type: application/json" \
-d '{"apps": ["https://apps.apple.com/us/app/spotify-music-and-podcasts/id324684580", "com.spotify.music"], "maxReviewsPerApp": 100, "stars": [1, 2]}'

Integrations

  • Apify API: start runs and read results over REST, or with the official JavaScript and Python clients.
  • Make, Zapier and n8n: trigger a run and send new reviews to any app in your workflow.
  • Google Sheets: export the dataset straight to a spreadsheet.
  • Webhooks: get notified when a run finishes and pull the new reviews automatically.
  • Schedules: run daily or weekly with reviewsSince to track only new reviews.
  • MCP for AI agents: through the Apify MCP server (https://mcp.apify.com), Claude, ChatGPT, Cursor and other agents can call this actor and read app reviews directly.

Limits (read before large runs)

  • App Store reviews have no app version. Apple's public review data doesn't include it, so version is null for App Store rows. Google Play rows have it (84% of reviews in the fill-rate run).
  • Google Play shows reviews in one language per run (language). To collect German and English Play reviews, run twice. The App Store has no language filter.
  • Star filters on Google Play go one star at a time. With stars: [1, 2] you get the newest 1-star reviews first, then 2-star.
  • Reviews are per country. The same app has different reviews in us and gb. Run each country separately (or schedule one task per country).
  • Google Play's "most critical" order doesn't exist, so the actor walks 1-star, then 2-star and so on, newest first within each star.
  • Reviewer names and avatars are personal data in many jurisdictions (GDPR, CCPA). Make sure you have a lawful basis before storing them.

How it works (for developers)

  • App Store: app metadata from Apple's public iTunes lookup API; reviews from the public review-list endpoint the App Store uses, paged 200 at a time for the requested storefront.
  • Google Play: app metadata from the data embedded in the public app page; reviews from the public reviews call the Play website makes when you scroll, paged 200 at a time with continuation tokens.
  • Crawlee BasicCrawler with got-scraping (real browser header sets), a session pool with retire-on-block, jittered exponential backoff, up to 6 retries per request, and deduplication by review ID. State persists across migrations. Charging uses Actor.pushData(item, 'result') and stops cleanly at your spending limit.

Python and Node examples

Step-by-step tutorial with runnable Python code (MIT): https://github.com/Rel8ble/app-reviews-scraper-python

Need a custom scraper or a ready dataset? Hire me on Fiverr: https://www.fiverr.com/rel8ble