App Store & Google Play Reviews Scraper: Only New Reviews avatar

App Store & Google Play Reviews Scraper: Only New Reviews

Pricing

from $0.10 / 1,000 reviews

Go to Apify Store
App Store & Google Play Reviews Scraper: Only New Reviews

App Store & Google Play Reviews Scraper: Only New Reviews

App Store reviews and Google Play reviews scraper in one run, no login: ratings, text, dates, developer replies, countries. Only-new monitoring, star and date filters, app search. $0.10 per 1,000 reviews. Export data, run via API, schedule and monitor runs, or integrate with other tools.

Pricing

from $0.10 / 1,000 reviews

Rating

0.0

(0)

Developer

Mohamed Bahaa

Mohamed Bahaa

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

What does App Store & Google Play Reviews Scraper do?

App Store reviews scraper, Google Play reviews scraper and app reviews API in one run. One schema for both stores, only new reviews on scheduled runs, and App Store history past Apple's 500-review cap.

App Reviews Scraper output table: App Store and Google Play reviews with stars, title, text, date, version and developer reply

What you can extractFeatures & integrations
⭐ Star rating: 1 to 5 stars per reviewBoth stores, one run: App Store and Google Play together
📝 Review title & text: the full reviewSearch by app name: or paste app URLs and IDs
📅 Date & country: when and where it was postedFilters: countries, language, star range, date from
💬 Developer reply: the reply text when there is oneOnly new reviews: per app, store and country
👤 Reviewer name: as shown in the storeScheduling: run it hourly, daily or weekly with Apify schedules
📱 App version & thumbs-up: Google Play reviewsExport anywhere: JSON, CSV, Excel, XML or HTML from the dataset
🏪 Store & app name: App Store or Google Play in one schemaAPI & SDKs: Apify REST API plus JavaScript and Python clients
🔗 Review URL: link back to the reviewAI agents (MCP): call it from Claude or other agents via Apify's MCP server

Try it free in 1 click: open this ready-made example and press Start. Apify's free plan includes $5 of usage every month, no credit card needed. The Input example below returned 40 records and costs about $0.004 at list price.

Google Play reviews scraper and App Store reviews scraper in one run and one normalized schema. Paste app URLs or IDs from either store (or search by app name), pick countries, and get star rating, title, review text, date, country and the developer's reply as clean JSON, CSV or Excel. No login, no browser, no API key. Only public reviews. Pay per review.

  • App Store reviews scraper + Google Play reviews scraper in one run. Both stores land in the same dataset with the same fields; store tells them apart. Compare your iOS and Android reviews (or a competitor's) side by side.
  • Only new reviews since the last run (app review monitoring). Turn on onlyNewReviews and the Actor remembers what it already returned, per app, store and country, in a named key-value store in your account. Test: run 1 saved 100 Duolingo reviews (50 per store); a run a minute later returned only the 2 reviews that had appeared since and skipped the 100 it had already returned.
  • App Store reviews past the 500-review cap. It pages Apple's web reviews feed instead of the RSS feed that stops at 500; one test run pulled 3,140 App Store reviews for a single app and country.
  • An App Store and Google Play reviews API alternative. Apple's App Store Connect API and the Google Play Developer API return reviews only for your own apps and need a developer account. This Actor reads the public reviews of any app, yours or a competitor's, with no developer account and no login.
  • Search apps by name. Type "spotify" or "habit tracker"; the top match on each store is scraped. No URL hunting.
  • Filter reviews by stars and date. Star rating range (e.g. only 1–2★ complaints), "reviews since" date (2026-01-01 or 7 days), newest-first or most-relevant sort.
  • Multi-country App Store reviews. App Store reviews are per storefront: scrape us, gb, de, jp… in one run, each row tagged with its country.
  • Developer replies included with their date, on both stores. Google Play reviews also include the app version (when the store shows one) and the thumbs-up count.
  • No duplicate rows. The same app pasted twice (URL and ID) is scraped once, and Google Play, which shows the same reviews in every country, isn't repeated per country.
  • Respects your spending limit and stops cleanly when it is reached. If Apple rate-limits a long run, it slows down and waits instead of giving up.
  • Lightweight: plain HTTP, 256 MB memory, fast and cheap to run.

What data can App Store & Google Play Reviews Scraper extract?

FieldWhat it is
🏪storeappStore or googlePlay
🆔appIdApp Store numeric ID or Google Play package name
📱appNameApp name
🔑reviewIdThe store's review ID
👤userNameReviewer name as shown in the store
🖼️userImageReviewer avatar URL (Google Play)
⭐ratingStar rating, 1 to 5
🏷️titleReview title (App Store)
📝textReview text
📅dateReview date (ISO 8601)
✏️isEditedWhether the review was edited (App Store)
🔢appVersionApp version the review was written on (Google Play, when shown)
👍thumbsUpHelpful votes (Google Play)
💬developerReplyThe developer's reply, if any
🗓️developerReplyDateWhen the developer replied
🌍countryStorefront country
🗣️languageReview language (Google Play)
🔗reviewUrlLink to the review (Google Play) or the app's reviews page (App Store)
🌐appUrlApp page URL
🔍searchTermThe search term that found the app (when you used search)
⏱️scrapedAtWhen the row was scraped

Store differences (good to know)

FieldApp StoreGoogle Play
title✅— (Google Play reviews have no title)
appVersion— (not exposed publicly by Apple)✅
thumbsUp—✅
userImage—✅
isEdited✅—
developerReply + date✅✅
Per-country reviews✅ separate per storefrontmostly global; filtered by language

reviewUrl on Google Play links to the single review; on the App Store it links to the app's reviews page (Apple has no public per-review link).

How to use App Store & Google Play Reviews Scraper in 5 steps

  1. Create a free Apify account.
  2. Open App Store & Google Play Reviews Scraper.
  3. Add your input: App Store or Google Play app URLs or IDs (you can mix both stores), or app names under Search apps by name; then pick countries, a star-rating range and how many reviews per app you want.
  4. Click Start.
  5. Download the reviews as JSON, CSV or Excel, or get them through the API. To watch an app, turn on Only new reviews since the last run and schedule it daily.

Input

FieldWhat it does
appsApp Store URLs (https://apps.apple.com/us/app/whatsapp-messenger/id310633997) or IDs (id310633997, 310633997); Google Play URLs (https://play.google.com/store/apps/details?id=com.whatsapp) or package names (com.whatsapp). Mix both.
searchTermsApp names or keywords, e.g. ["spotify"]. Searched in the first country (App Store via Apple's iTunes Search API, Google Play via its search page).
searchResultsPerTermTop results to scrape per term, per store (1–10). Default 1.
searchStoreboth (default), appStore or googlePlay.
countriesTwo-letter codes, e.g. ["us","gb"]. Empty = the country in the App Store URL, else us.
languageGoogle Play review language (en, de, es…). Default en.
sortnewest (default) or mostRelevant.
maxReviewsPerAppPer app, per country. Default 100. 0 = no limit (your spending limit still applies).
minRating / maxRatingStar range, 1–5. Set both to 1 for 1-star reviews only.
dateFromOnly reviews on/after a date: 2026-01-01, or relative 7 days, 2 weeks, 3 months.
onlyNewReviewstrue = return only reviews not returned by an earlier run (per app and country). Forces newest-first sort.
stateStoreNameName of the key-value store that remembers seen reviews. Default app-reviews-state; use one name per monitoring task.
dedupeReviewsDefault true: scrape Google Play once instead of once per country (same reviews everywhere for a language).

Example input

This exact input was run on Oct 19 2026 (Spotify on both stores, 20 reviews per store). Paste it into the Input tab (switch to JSON view) and click Start:

{
"apps": [
"https://apps.apple.com/us/app/spotify-music-and-podcasts/id324684580",
"https://play.google.com/store/apps/details?id=com.spotify.music"
],
"countries": ["us"],
"maxReviewsPerApp": 20
}

More tested inputs

Every example below was test-run and works as is.

1. Find 1-2 star complaints about an app on both stores

{
"apps": [
"https://apps.apple.com/us/app/spotify-music-and-podcasts/id324684580",
"https://play.google.com/store/apps/details?id=com.spotify.music"
],
"maxRating": 2,
"maxReviewsPerApp": 100
}

2. Compare iOS vs Android reviews, by app name (no URLs needed)

{
"searchTerms": [
"whatsapp"
],
"countries": [
"us"
],
"maxReviewsPerApp": 100
}

The top App Store and Google Play match for each term is scraped; every row carries searchTerm and appName so you can check what was matched.

3. Monitor new reviews daily across several countries (only new ones)

{
"apps": [
"https://apps.apple.com/us/app/duolingo-language-lessons/id570060128",
"com.duolingo"
],
"countries": [
"us",
"gb",
"de"
],
"onlyNewReviews": true,
"stateStoreName": "duolingo-monitor",
"maxReviewsPerApp": 500
}

Schedule this daily. The first run saves up to 500 newest reviews per app and country; every later run returns only reviews it hasn't returned before and stops paging as soon as it reaches them. App Store reviews are collected per country; Google Play is collected once (it shows the same reviews in every country for a language).

Output

One row per review, with the same fields for both stores. Real records from the example input above (one per store, Oct 19 2026):

[
{
"store": "appStore",
"appId": "324684580",
"appName": "Spotify: Music and Podcasts",
"reviewId": "14682519213",
"userName": "Evan_qp",
"userImage": null,
"rating": 5,
"title": "good",
"text": "great but too much ads / too frequently",
"date": "2026-10-18T17:53:02Z",
"isEdited": false,
"appVersion": null,
"thumbsUp": null,
"developerReply": null,
"developerReplyDate": null,
"country": "us",
"language": null,
"reviewUrl": "https://apps.apple.com/us/app/id324684580?see-all=reviews",
"appUrl": "https://apps.apple.com/us/app/spotify-music-and-podcasts/id324684580",
"searchTerm": null,
"scrapedAt": "2026-10-20T01:40:37.547Z"
},
{
"store": "googlePlay",
"appId": "com.spotify.music",
"appName": "Spotify: Music and Podcasts",
"reviewId": "5e9a9c64-5e03-4be7-a08d-cd2d84b1f1e8",
"userName": "Aryan Verma",
"userImage": "https://play-lh.googleusercontent.com/a/ACg8ocKURBeWBwwLv6LS4iYm8amJ_xVACx-14wC7EcaBwvcgLN9fcg=mo",
"rating": 1,
"title": null,
"text": "to much add",
"date": "2026-10-19T01:36:46.832Z",
"isEdited": null,
"appVersion": null,
"thumbsUp": 0,
"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. If you've never had Premium before, you should be eligible for our trial.",
"developerReplyDate": "2026-10-19T16:09:03.268Z",
"country": "us",
"language": "en",
"reviewUrl": "https://play.google.com/store/apps/details?id=com.spotify.music&reviewId=5e9a9c64-5e03-4be7-a08d-cd2d84b1f1e8&hl=en&gl=us",
"appUrl": "https://play.google.com/store/apps/details?id=com.spotify.music&hl=en&gl=us",
"searchTerm": null,
"scrapedAt": "2026-10-20T01:40:38.019Z"
}
]

You can download the dataset as JSON, CSV, Excel, XML or HTML. A RUN_SUMMARY record in the run's key-value store gives counts per app, which apps each search term matched, and how many duplicate / already-seen reviews were skipped.

How can I use the data?

  • App review monitoring and alerts: schedule it daily with onlyNewReviews: true and send new reviews to Slack or email.
  • Competitor analysis and feature-request mining across iOS and Android.
  • Sentiment analysis, topic modeling, and LLM / AI agent pipelines.
  • ASO (App Store Optimization) research and release QA ("what broke in version X?").
  • Customer support: find unanswered 1★ reviews (developerReply is null).

Ready-made example tasks: Find negative Spotify reviews on App Store and Google Play and Monitor new app reviews since the last run.

More Actors from the same developer

ActorWhat it does
Telegram Channel ScraperPublic Telegram channel posts with a keyword monitor and only-new mode
Substack ScraperSubstack newsletters to clean Markdown, plus podcast transcripts
Greenhouse & Workday Jobs ScraperJobs from 8 career-site platforms with visa sponsorship and clearance flags
Website to Markdown CrawlerAny website to Markdown for RAG, with incremental sync and llms.txt
Government Bids & RFP ScraperOpen bids and RFPs from 500+ US city and county portals on OpenGov
State Bids ScraperOpen bids from COMMBUYS, BidBuy, NJSTART, OregonBuys and NevadaEPro
PERM Green Card SponsorsCompanies that sponsor green cards, from official DOL PERM data

Error items

An input that can't be scraped becomes one error row in the dataset instead of a silent gap:

{"type": "error", "input": "com.notreal.app", "error": "APP_NOT_FOUND", "errorMessage": "...", "store": "googlePlay", "appId": "com.notreal.app", "country": "us", "scrapedAt": "..."}
errorWhen
UNSUPPORTED_URLThe input is not an App Store or Google Play app URL or ID
APP_NOT_FOUNDThe app doesn't exist, or isn't available in the requested App Store storefront(s)
NO_SEARCH_RESULTSA search term matched no apps (input is search: <term>)
FETCH_FAILEDThe store kept refusing after retries, or an unexpected error; the message says how many reviews were saved before the failure

store, appId and country are included when the app is known (not on UNSUPPORTED_URL or NO_SEARCH_RESULTS rows). Error rows count as one item each. Not reported as rows: invalid country codes (anything that isn't two letters is dropped), an invalid dateFrom (ignored, with a warning in the log), and duplicate inputs for the same app (scraped once, noted in the log). When your spending limit is reached the run stops cleanly and says so in the log.

FAQ

How much does it cost? Pay per event: about $0.10 per 1,000 reviews ($0.0001 per review saved; error rows count as one item) plus a tiny start fee ($0.00005 per run at the default 256 MB memory). No platform usage is passed on to you on top. Set a maximum cost per run in Apify and the Actor stops exactly there. See the Pricing tab.

How many reviews can I get? Thousands per app and country. In our tests one run returned 5,500 Google Play reviews and about 3,000–3,900 App Store reviews for Spotify (US). Set maxReviewsPerApp to 0 for everything (watch your spending limit). Apple rate-limits very long App Store runs: the scraper then slows down and waits up to a few minutes; if Apple keeps refusing, it keeps every review already saved and adds a FETCH_FAILED row saying how many it got. For ongoing tracking, onlyNewReviews avoids re-downloading history.

Why do I get Google Play reviews for only one country? Google Play shows the identical review list in every country for a given language (we checked us/gb/in/ng and sa/eg: 150 of 150 the same). So by default each Google Play app is scraped once, in your first country. Use language to get reviews in another language, or set dedupeReviews to false to repeat them per country.

How does "only new reviews" work? After each app and country, the scraper stores the newest review date plus the IDs of the last 48 hours of reviews in a named key-value store (stateStoreName) in your Apify account. The next run reads newest-first, skips IDs it has already returned, and stops once it is 24 hours older than the previous newest review (the overlap catches late-published reviews). Delete that store, or use a new name, to start over. If a run hits your spending limit, its memory for that app isn't updated, so the next run picks up the rest.

What if search finds the wrong app? Search takes the store's own top result. Check appName and searchTerm in the output, raise searchResultsPerTerm, or paste the exact URL instead.

Can I connect it to Make, Zapier, Google Sheets or Slack? Yes. Use Apify's integrations for Make, Zapier, n8n, Google Sheets and Slack, or a webhook that fires when a run finishes. Combine it with an Apify Schedule for daily review alerts.

Can I use it through the API? Yes. Use the Apify REST API or the official clients. Node.js (npm install apify-client):

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('chimey_forearm/app-reviews-scraper').call({
apps: ['com.spotify.music'],
maxReviewsPerApp: 100,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python (pip install apify-client):

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("chimey_forearm/app-reviews-scraper").call(run_input={
"apps": ["com.spotify.music"],
"maxReviewsPerApp": 100,
})
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(items)

Can AI agents use it (MCP)? Yes. Connect Claude, Cursor or another MCP client to the Apify MCP server (https://mcp.apify.com) and add chimey_forearm/app-reviews-scraper as a tool. Input and output are simple JSON.

Is it legal to scrape App Store and Google Play reviews? It collects only publicly visible reviews, without logging in. Our Actors are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what the user has chosen to share publicly. However, your results could contain personal data, which is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers. Reviewer names (userName) and avatars (userImage) are personal data under the GDPR, so drop them if you don't need them.

Found a bug or need a field? Open an issue in the Issues tab and I'll usually reply within a day.

If it saved you time, a quick review on the Store helps a solo developer keep improving it. Bugs or ideas? Open an Issue.