App Store & Google Play Reviews Scraper avatar

App Store & Google Play Reviews Scraper

Pricing

from $0.25 / 1,000 results

Go to Apify Store
App Store & Google Play Reviews Scraper

App Store & Google Play Reviews Scraper

Use this to get app reviews from the Apple App Store and Google Play. Input: app URLs, App Store IDs or Play package names, country, sort, max reviews. One result = one review: rating, title, text, date, app version, reviewer, helpful votes, developer reply, app info. $0.25 per 1,000 reviews.

Pricing

from $0.25 / 1,000 results

Rating

0.0

(0)

Developer

Giovanni Rich

Giovanni Rich

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

21 hours ago

Last modified

Categories

Share

App Store & Google Play Reviews Scraper (App Reviews API)

This App Store reviews scraper and Google Play reviews scraper pulls iOS app reviews and Android app reviews in one run: star rating, title, full text, date, app version, reviewer name, helpful votes and the developer's reply, with 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 clean, 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 under 30 seconds in testing) and cheap: $0.25 per 1,000 reviews.

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.

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.

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.

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 a test run, trimmed slightly:

App Store (with a developer reply):

{
"store": "appStore",
"appId": "324684580",
"appName": "Spotify: Music and Podcasts",
"country": "us",
"reviewId": "14581732970",
"rating": 1,
"title": "Ads",
"text": "screw you",
"reviewDate": "2026-09-22T22:36:00.000Z",
"reviewerName": "My Review On Apps And Games",
"version": null,
"thumbsUp": 0,
"voteCount": 0,
"isEdited": true,
"developerReply": "Hey! We hear you and we'll pass your feedback along to the Ads team. For an ad-free experience, we'd recommend checking out our Premium plans at spotify.com/premium. ...",
"developerReplyDate": "2026-09-16T13:55:16.000Z",
"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": 113,
"scrapedAt": "2026-09-24T05:38:30.377Z"
}

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 (real test run: 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.

Pricing

Pay per result: $0.25 per 1,000 reviews. You pay only for reviews saved to the dataset. Reviews dropped by your stars or reviewsSince filters are free, and so are apps that turn out not to exist. There is no start fee.

  • 1,000 reviews = $0.25
  • 10,000 reviews = $2.50
  • 100,000 reviews = $25

The Apify free plan includes $5 of monthly credit, enough to try the actor on real apps.

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 (about 85% of reviews).
  • 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.

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.

How does it avoid blocks? It sends plain HTTP requests with realistic Chrome desktop headers through Apify Proxy, rotates sessions from a session pool (a session that gets HTTP 403/429/503 or an unexpected page is retired and the request moves to a fresh IP), and retries each request up to 6 times with jittered exponential backoff. If the log still shows repeated blocks, switch the proxy to the RESIDENTIAL group.

What are the limits? Up to as many reviews as each store will page through (maxReviewsPerApp: 0), paged 200 per request. One country and, on Google Play, one language per run. App Store rows have no per-review app version. Concurrency is capped at 20 parallel requests. See the Limits section above for details.

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

How many reviews can I get? As many as the store will page through. In testing the App Store went more than 500,000 reviews deep on Spotify, and Google Play keeps returning pages until the history ends.

How do I find an app's ID? Open the app in the store and copy the URL. App Store IDs are the number after id (id324684580). Google Play IDs are the id= parameter (com.spotify.music).

Can I monitor new reviews every day? Yes. Use sort: newest with reviewsSince set to yesterday's date (or schedule the actor and filter by reviewDate). The run stops as soon as it reaches older reviews, so a daily run costs only the new reviews.

Why is an app "not found"? 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 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.