App Store & Google Play Reviews Scraper
Pricing
from $0.16 / 1,000 results
App Store & Google Play Reviews Scraper
Export App Store and Google Play reviews for iOS and Android feedback analysis. Get ratings, text, dates, app versions and developer replies in CSV or JSON, filtered by stars or date. $0.20 per 1,000 reviews plus a memory-based start fee. Maintained by CleanScrape.
Pricing
from $0.16 / 1,000 results
Rating
5.0
(1)
Developer
CleanScrape
Maintained by CommunityActor stats
0
Bookmarked
18
Total users
14
Monthly active users
8 hours ago
Last modified
Categories
Share
Collect public reviews from the Apple App Store and Google Play in one consistent dataset. Each row has the review text, rating, date, app version and store, so you can compare iPhone and Android feedback in one spreadsheet.
Use one app per store and one country per run. No store login, cookies or proxy setup is needed. Reviews come from what each store shows publicly, so coverage depends on the store.
Start with a small run
- The form opens with Strava's Google Play and App Store links. Keep them to try the Actor, or paste the apps you want to research. You can also type just the app's name, such as
Duolingo. - Choose Store: Both, Google Play or App Store.
- Pick a Country and, for Google Play, a Language.
- Set Reviews per store. The form starts at 20. With Both, the limit applies to each store, so 20 can return up to 40 reviews.
- Start the run, open Reviews, and export CSV, Excel or JSON.
More options holds the Google Play order and two optional filters: Star ratings (for example only 1 and 2 stars) and Reviews since (a start date). You do not need them for a first run.
At the default 1 GB memory, 40 delivered reviews cost $0.018: $0.01 at startup plus $0.008 for the reviews. Prices are base prices before tier discounts. The startup fee applies even if no reviews are returned.
Example: compare Strava reviews on iPhone and Android
Say you want to know what runners and cyclists complain about in Strava, and whether iPhone and Android users raise the same issues. Open the Strava example. It collects up to 20 recent US reviews from each store.
To read only the complaints, select 1 star and 2 stars under Star ratings, or filter the export in your spreadsheet. Keep the store column to compare iPhone and Android side by side. The Actor does not do sentiment analysis.
Three rows from a run on 1 October 2026:
| Store | Rating | Review | Date (UTC) | App version |
|---|---|---|---|---|
| google_play | 1 | does not work offline | 2026-10-01 13:50:30 | 482.12 |
| app_store | 1 | Connection issue: Strava keeps disconnecting from my apple watch | 2026-10-01 00:06:13 | 483.0.0 |
| app_store | 4 | Great: Great just some of the numbers change slightly between apple workout and Strava when importing recordings | 2026-09-30 00:09:16 | 482.0.0 |
Your rows will differ because reviews keep coming in. For Apple, the review title is a separate column; it is shown before the colon here.
Watch the walkthrough
Let's use Strava as an example: the newest one and two star reviews from both stores, for the United States. The video shows the app links, the star filter, the review table with app versions, and the spreadsheet export. The steps are the same for any app.
The video checks 100 reviews per store and keeps 1 and 2 star reviews (Star ratings under More options). For a ready-made run, open the Spotify example. For a written walkthrough with inputs, sample output and costs, read Export App Store and Google Play reviews into one spreadsheet.
Only need one store? Export Duolingo Google Play reviews.
Choose a store
| You want | What to enter |
|---|---|
| Google Play reviews | Select Google Play and fill in Google Play app. |
| App Store reviews | Select App Store and fill in App Store app. |
| Both stores | Select Both and fill in both fields, or type the app's name once. |
Each field takes a store link, an ID or a name:
| You enter | Read as |
|---|---|
play.google.com/store/apps/details?id=com.strava or com.strava | That Google Play app |
apps.apple.com/us/app/strava-run-bike-walk/id426826309, id426826309 or 426826309 | That App Store app |
Strava | The app whose store name starts with the words you typed (spaces are ignored, so tik tok finds TikTok). The run summary shows which app was used |
A link pasted into the other store's field is still used for its own store. If no app's name matches the words you typed, the run says so instead of guessing; paste the link in that case. The selected Country decides which store country is read, even if an App Store link contains another country. Choose the country by name in the form. For API requests, use a two-letter code such as us, gb or de; uk is read as gb. Reviews are not translated.
For an Apple-only API request:
{"store": "app_store","appStoreId": "https://apps.apple.com/us/app/strava-run-bike-walk/id426826309","country": "us","maxReviews": 5}
For Google Play only:
{"store": "google_play","googlePlayAppId": "https://play.google.com/store/apps/details?id=com.strava","country": "us","language": "en","maxReviews": 5}
In API requests, maxReviews defaults to 200 per store when you leave it out. The form's value of 20 only applies in Apify Console.
Input reference
| Field | API default | Meaning |
|---|---|---|
store | both | both, google_play or app_store |
googlePlayAppId | None | Google Play link, package name or app name |
appStoreId | None | App Store link, app number or app name |
country | us | Storefront country for both stores |
language | en | Google Play language parameter |
maxReviews | 200 | Upper limit per selected store |
sort | newest | Google Play: newest, rating or helpfulness (shown as Most relevant) |
ratings | all five | Star ratings to keep, for example ["1", "2"] |
reviewsSince | None | Keep reviews dated on or after this day, YYYY-MM-DD (UTC) |
The rating and date filters apply to the reviews collected within maxReviews per store, so a filtered run can return fewer rows. Reviews without a date are left out when reviewsSince is set. The run's message and report say how many of the checked reviews matched; raise maxReviews to check more. Most relevant uses Google Play's own relevance order, not a ranking by helpful votes. Apple always uses its most-recent feed. With both, a store without an app is marked skipped. A run with no app at all fails with a message explaining what to fix.
Output reference
One dataset item is one review. Both stores use the same fields; values a store does not provide stay null.
| Field | Meaning |
|---|---|
source | google_play or app_store |
appId | Resolved app identifier, also when you entered an app-page URL |
reviewId | Source review identifier, when available |
userName | Public reviewer display name |
rating | Star rating, usually 1-5 |
title | Apple review title; null for Google Play |
text | Review text |
date | UTC time: Google Play review time, or Apple's review update time |
thumbsUp | Helpful votes shown by the source |
appVersion | App version the review was written for |
developerReply | Google Play reply text when available; null for Apple |
developerReplyDate | Google Play reply time in UTC; null for Apple |
country | Requested storefront, not the reviewer's verified location |
language | Requested Google Play language, not the detected text language; null for Apple |
url | App listing URL, not a link to the review |
Google Play does not provide review titles through this source. Apple's public feed does not include developer replies or a review language. Apple's update time is not guaranteed to be the original posting date. The run report records when the data was collected.
Illustrative Apple record with made-up review content:
{"source": "app_store","appId": "426826309","reviewId": "example-review-id","userName": "Example reviewer","rating": 4,"title": "Useful app","text": "Illustrative feedback, not an actual customer review.","date": "2026-09-13T13:25:48+00:00","thumbsUp": 0,"appVersion": "1.0","developerReply": null,"developerReplyDate": null,"country": "us","language": null,"url": "https://apps.apple.com/us/app/id426826309"}
Run report and limits
Open Run summary in the Output tab for a readable status of each store. The same information is in RUN_REPORT in the run's key-value store, which suits automation. Each selected store is marked:
ok: reviews were returned without a detected errorempty: no reviews and no detected request errorpartial: some reviews, then a request or paging problemfailed: a request error and no reviewsskipped: no app was given for that store
ok means the bounded collection finished without an error. It does not mean every historical review was collected. Results from a working store are kept when the other store fails. If every attempted store fails, the run fails.
Apple's feed covers about the 500 most recent reviews per app and country (ten pages). Google Play can go further back, but complete history is not guaranteed. Reviews can be edited or removed between runs.
When Apple returns an empty feed, the Actor checks Apple's alternative feed for the same app, country and page, then Apple's app record. An app that is not sold in that country gets a plain error; an app with fewer than 50 ratings there is reported as returning no written reviews from that feed (Apple's feed holds written reviews only); for a popular app the run says the reviews could not be confirmed and suggests trying again. It does not switch countries. When Google Play returns nothing, the Actor checks that the app exists and tells you if the link, ID or country looks wrong. Retry waits requested by the store are respected.
Pricing
$0.20 per 1,000 delivered reviews ($0.0002 each), plus a startup fee of $0.01 per GB of memory, at least one per run. The default memory is 1 GB, so most runs pay one startup fee. Selecting more memory raises the startup fee, not the per-review price.
| Billable unit | Base / Free tier | Bronze (-10%) | Silver (-15%) | Gold, Platinum, Diamond (-20%) |
|---|---|---|---|---|
| Startup, per GB of memory | $0.01 | $0.009 | $0.0085 | $0.008 |
| 1,000 reviews | $0.20 | $0.18 | $0.17 | $0.16 |
Apify applies your tier's price automatically; the Pricing tab shows your rate. Base-price examples:
| One run | At the 1 GB default | With 4 GB memory |
|---|---|---|
| 40 reviews | $0.018 | $0.048 |
| 400 reviews | $0.09 | $0.12 |
| 1,000 reviews | $0.21 | $0.24 |
Reviews left out by the rating or date filters are not charged. Maximum cost per run covers both the startup fee and the reviews. If the next review would go over it, the Actor stops and says so in the run summary, so you may get fewer reviews than requested.
If a run is restarted, reviews already saved are kept and are not exported or charged again. Apify may charge another startup fee for the restart. To collect more, start a new run.
API and recurring exports
Use the API tab for ready-made code examples. Keep your API token in an environment variable or secrets manager. To collect regularly, save a task, add a schedule, and fetch each run's dataset through the API or your automation tool.
For recurring imports, (source, appId, country, reviewId) works as a key when reviewId exists. Update edited reviews rather than appending duplicates. The Actor does not keep history between runs or send notifications.
Public reviews can contain personal information. Check the source terms and your own obligations before sharing the data, and limit who can access it.
Ready-to-run examples
Each example opens with its input filled in. Change the input and run it.
| Example | What it does |
|---|---|
| Export ChatGPT app reviews from iPhone and Android | The latest 100 ChatGPT reviews from the App Store and 100 from Google Play in one table, with ratings, text, dates and app versions. |
| Find 1- and 2-star reviews of a banking app | The newest 1- and 2-star Google Play reviews of Revolut, to see what frustrates customers. |
| Find Google Play complaints about TikTok | The 1- and 2-star reviews among the 500 newest Google Play reviews of TikTok, with text, date, app version and thumbs up. |
| Build an App Store reviews dataset for sentiment analysis | Up to 500 recent App Store reviews of Instagram with rating, title, text, date and version: a ready dataset for sentiment analysis. |
Use it from an AI agent
This Actor works as a tool in Claude, Cursor and other AI assistants that support MCP, through Apify's MCP server. Add this server and sign in with your Apify account when asked:
https://mcp.apify.com?tools=cleanscrape/app-store-reviews-scraper
Then ask in plain words, for example: "Get the 200 newest 1-star reviews of Duolingo from the App Store and Google Play and summarise the main complaints." The assistant runs the Actor in your Apify account and reads the results. The price per result is the same as in Console.
Common questions
Is there an API for App Store and Google Play reviews?
Apple and Google only give app owners access to reviews of their own apps. This Actor reads the public reviews of any app and returns the same columns for both stores. You can run it from the Apify API, Python or JavaScript, or on a schedule.
Is this an app-store-scraper replacement?
Yes. The Python library app-store-scraper was archived in 2021. app-store-reviews keeps its AppStore class and review fields, plus a reviews() function shaped like google-play-scraper's, and runs on this Actor. Change the import to from app_store_reviews import AppStore and set APIFY_TOKEN.
How do I export Google Play or App Store reviews to Excel or CSV?
Paste the app's store link, run the Actor, then use Export to download CSV, Excel or JSON. With Both, iPhone and Android reviews end up in one table with a store column.
How much does it cost to scrape app reviews?
$0.20 per 1,000 reviews at the base price, plus a small start fee ($0.01 at 1 GB of memory). 40 reviews cost about $0.02. See Pricing above for the details.
How many reviews can I get?
Apple's public feed covers about the 500 most recent reviews per app and country. Google Play can go further back, but the full history is not guaranteed.
Can I get only 1-star reviews, or only recent ones?
Yes. Choose the star ratings you want and set Reviews since to a date. The filters apply to the reviews collected, so a filtered run can return fewer rows.
Support
CleanScrape maintains this Actor for one-off exports and recurring workflows. We investigate reported errors, update the Actor when the stores change, and test changes against existing inputs and output formats.
If you get fewer reviews than expected, check the run summary first: the store limits above are the most common reason. If something looks wrong, open an issue or email contact.cleanscrape@gmail.com with the run ID, the app links, the country and the review limit. Never include API tokens or private data.
What worked well, and what could be better? Share your experience in Reviews. Honest feedback is welcome, including anything that fell short. Leaving feedback is optional and does not affect access, pricing or support.
Disclaimer
This Actor is an independent tool developed by CleanScrape. It is not affiliated with, endorsed by, or sponsored by Apple, Google, or the developers of the apps used in its examples. Apple, App Store, Google Play and all other trademarks are the property of their respective owners. Brand names are used only to identify supported sources and illustrate usage.
More tools from CleanScrape
- Casino bonus checker: the casino bonus each affiliate and review site shows, with promo codes, 18+ notices and affiliate IDs
- Kick Sponsor Tracker: which brands Kick streamers promote, with promo codes, affiliate links and broadcast hours
- Google Jobs Scraper: job listings with salaries, descriptions and apply links from Google Jobs
- Google Trends Scraper API: search interest over time, by region, related queries and trending searches
- Map Your Show Exhibitor Scraper API: trade show exhibitor lists and booth changes
- Shopify Product Reviews Scraper API: Judge.me and Okendo reviews from Shopify product links
- Google News Scraper API: headlines from Google News and publisher feeds
- Pinterest Scraper API: keyword search, public pin links and board previews; search results may lack a pin link
- Google Hotels Scraper API: hotel prices and booking offers for your dates
- TikTok Shop Product Scraper: US TikTok Shop prices, sellers and ratings
- Whatnot Seller Tracker: top Whatnot sellers per category, items sold, sales per day and followers over time
- Whatnot Scraper: Whatnot listings with prices and live shows by keyword or category
- Threads Scraper API: public Threads posts from accounts or post links
- Likee Scraper API: Likee videos and comments
- Flashscore Tennis Scraper API: tennis results, statistics, point-by-point and head-to-head
- Bilibili Scraper: Bilibili videos, danmaku, top comments and creators, no login