At a glance
What the App Store & Google Play Scraper does
- Stores
- Apple App Store and Google Play, one schema (
storefield) - Start from
- App URLs, App Store IDs, package names, developer pages, App Store top charts
- Reviews
- App Store: up to 500 per app and country; Google Play: the ~20 the app page shows
- Countries
- Any store country, several per run (e.g. us, gb, de)
- Output
- 50 app fields, 19 review fields; JSON, CSV, Excel, API
- Automate
- Only-new-reviews mode, schedules, Slack/webhook digest, Zapier, Make, n8n, MCP
Who it is for
- Product and growth teams tracking their own app's new reviews every day, both stores in one sheet
- Competitor research: ratings, installs, prices, update cadence and what users complain about
- App Store Optimization: top-chart ranks by category and country, with full app details
- Market sizing: every app of a publisher, with ratings and Google Play install brackets
- Feeding review text to an LLM for sentiment, feature requests and bug themes
Output
What you get
- Every row: type (app or review), store (app_store or google_play), app_id, country, url, source_url, scraped_at in ISO 8601 UTC
- App rows: title, bundle_id, developer, developer_id, developer_url, developer_website, summary, description, genre, genre_id, genres
- App rows: price, currency, is_free, in_app_purchases, contains_ads, rating, ratings_count, reviews_count, rating_histogram (Google Play), rating_current_version (App Store)
- App rows: installs, installs_min, installs_count (Google Play), content_rating, version, min_os_version, size_bytes, languages, released_at, updated_at, release_notes, icon_url, screenshots, privacy_policy_url
- App rows from charts and developer pages: chart, chart_genre, chart_rank, chart_ranks (every chart and rank the app holds in this run), found_via
- Review rows: app_title, review_id, reviewer_name, reviewer_url (App Store), reviewer_avatar_url (Google Play), rating, review_title, text, date, app_version, helpful_votes, total_votes, developer_reply, developer_reply_at
Example
Input and output
Input
{
"apps": [
"https://apps.apple.com/us/app/spotify-music-and-podcasts/id324684580",
"com.spotify.music"
],
"maxReviewsPerApp": 100,
"countries": [
"us",
"gb"
]
}One output record
{
"type": "app",
"store": "app_store",
"app_id": "6448311069",
"bundle_id": "com.openai.chat",
"title": "ChatGPT",
"url": "https://apps.apple.com/us/app/chatgpt/id6448311069",
"developer": "OpenAI OpCo, LLC",
"developer_id": "1684349733",
"developer_url": "https://apps.apple.com/us/developer/openai-opco-llc/id1684349733",
"developer_website": "https://openai.com/chatgpt",
"summary": null,
"description": "Introducing ChatGPT for iOS: OpenAI’s latest advancements at your fingertips.\n\nThis official app is free, syncs your history across devices, and brings you…",
"genre": "Productivity",
"genre_id": "6007",
"genres": [
"Productivity",
"Utilities"
],
"price": 0,
"currency": "USD",
"is_free": true,
"in_app_purchases": null,
"contains_ads": null,
"rating": 4.82,
"ratings_count": 11924418,
"reviews_count": null,
"rating_histogram": null,
"rating_current_version": 4.82,
"ratings_count_current_version": 11924418,
"installs": null,
"installs_min": null,
"installs_count": null,
"content_rating": "12+",
"version": "1.2026.300",
"min_os_version": "18.0",
"size_bytes": 305684480,
"languages": [
"SQ",
"AM",
"AR",
"… 57 more"
],
"released_at": "2023-05-18T07:00:00Z",
"updated_at": "2026-11-03T18:55:49Z",
"release_notes": "Bug fixes and small improvements.",
"icon_url": "https://is1-ssl.mzstatic.com/image/thumb/Purple221/v4/5c/9c/84/5c9c8431-bd39-08fa-cba4-8bb6561f9877/AppIcon-0-0-1x_U007epad-0-0-0-1-0-85-220.png/512x512bb.jpg",
"header_image_url": null,
"screenshots": [
"https://is1-ssl.mzstatic.com/image/thumb/PurpleSource221/v4/a1/39/1d/a1391d37-04ea-8ead-62eb-d925b773ed4a/1_iPhone.jpg/320x480bb.jpg",
"https://is1-ssl.mzstatic.com/image/thumb/PurpleSource211/v4/24/88/47/248847d2-af10-20a9-cfd7-42d071b3dd61/2_iPhone.jpg/320x480bb.jpg",
"https://is1-ssl.mzstatic.com/image/thumb/PurpleSource221/v4/ad/c7/1f/adc71f08-c935-fd79-c6c8-e5ba2d690bea/3_iPhone.jpg/320x480bb.jpg",
"… 13 more"
],
"privacy_policy_url": null,
"chart": "top-free",
"chart_genre": "iTunes Store: Top Free Apps",
"chart_rank": 5,
"chart_ranks": [
{
"chart": "top-free",
"chart_genre": "iTunes Store: Top Free Apps",
"rank": 5
},
{
"chart": "top-grossing",
"chart_genre": "iTunes Store: Top Grossing Apps",
"rank": 1
}
],
"found_via": "chart",
"country": "us",
"language": null,
"source_url": "https://apps.apple.com/us/app/chatgpt/id6448311069",
"scraped_at": "2026-11-05T08:23:39Z"
}From a real run of this tool; long text and lists shortened here.
How to use it
Three steps
- Paste apps into 'Apps': App Store or Google Play URLs, App Store IDs like 324684580, or package names like com.spotify.music. Or add a developer page, or pick App Store top charts.
- Set 'Reviews per app' (0 = app details only) and the store countries, e.g. us and gb; turn on 'Only new reviews' for daily tracking.
- Click Start, or schedule it daily. Download JSON, CSV or Excel, or send results to Google Sheets, Slack, Zapier, Make or n8n.
API
Call it from Python
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("aurelix/app-store-google-play-scraper").call(run_input={'apps': ['https://apps.apple.com/us/app/spotify-music-and-podcasts/id324684580',
'com.spotify.music'],
'maxReviewsPerApp': 100,
'countries': ['us', 'gb']})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)pip install apify-client. The same input works from the Apify console, a schedule, Make, n8n, Zapier or an AI agent through the Apify MCP server.
Pricing
Pay per result
| Per 1,000 apps, free plan | $0.18 |
| Per 1,000 apps, paid plans | $0.15 |
| Review result, per 1,000, free plan | $0.03 |
| Start fee per run | $0.005 |
Live prices from the Apify Store; no subscription and no platform usage billed on top. See the Store page.
Honest limits
What it does not do
- No keyword search on either store and no Google Play charts: those paths are disallowed by the stores' robots.txt.
- App Store reviews: at most 500 per app and country (Apple's public feed). Google Play reviews: about 20 per app and language (what the public page shows).
- App Store top charts go to rank 100; Google Play developer pages list what the page shows (all apps for most developers, a first set for very large ones).
- Google Play shows 'Varies with device' for many apps, so version and minimum Android version are often empty.
- Apple's public review feed sometimes answers with no reviews for a while; such apps are named in the run status as not read (status 'Partial') instead of looking review-free.
- App IDs or package names the stores do not know are skipped without charge; after 5 unknown apps in a row the run stops and says so, so check the IDs (package names are case-sensitive).
- If a store refuses 2 requests in a row even after retries, the run stops asking that store and names it in the status; the other store is still read.
- Ratings, ranks and prices change constantly; a run is a snapshot of when it ran.
- If a store keeps throttling after retries, results already read are kept and the run status starts with 'Partial'.
- Reviewer fields are what each store shows: Apple's feed gives a display name and profile link, Google Play a display name and picture; neither shows emails or real-name verification.
FAQ
Questions buyers ask
How much does the App Store & Google Play Scraper cost?
$0.18 per 1,000 apps ($0.15 on paid Apify plans), billed through your Apify account; you pay only for results. Apify's free plan includes $5 of credit a month, enough for about 27,777 apps.
Which data comes from which store?
Both stores fill the same fields where both publish them. Google Play adds installs, the star histogram, written-review count, in-app purchase range, ads label, feature graphic and privacy-policy link. The App Store adds size, minimum iOS version, supported languages, the current version's rating and review titles and total votes. A field a store does not publish is null.
How many reviews can I get?
App Store: up to 500 per app and country, which is Apple's public feed limit (50 per page, 10 pages), sorted by most recent or most helpful. Add more countries to get more: each has its own 500. Google Play: the reviews its public app page shows, about 20 per app and language; change 'Google Play language' to get another language's set.
Why does it return about 20 Google Play reviews per app?
This Actor only reads pages play.google.com/robots.txt allows, so it returns the reviews on the public app page, about 20 per app and language. This tool doesn't cover thousands of Play reviews per app.
Can I search the App Store or Google Play by keyword?
No. Both stores' robots.txt files disallow their search paths (itunes.apple.com/search and play.google.com/store/search), so this Actor does not use them. Start from app URLs, developer pages or App Store top charts instead.
Does it cover Google Play top charts?
No. Google Play loads its charts through an endpoint robots.txt disallows. App Store top free, top paid and top grossing charts are supported, overall or by category, up to rank 100.
Does it return reviewer names?
Yes, as the stores show them publicly: the reviewer's display name on every review, the public iTunes profile link on App Store reviews and the profile picture URL on Google Play reviews. Review text and developer replies are returned unchanged. Nothing behind a login is read. Data is returned as shown publicly on the source; people can ask for removal by opening an issue on this Actor's Issues tab.
How does 'Only new reviews' work?
The Actor remembers the review IDs it returned per app (and Google Play language) across all countries, for 180 days; adding a country later never returns a review you already received. The next run returns only reviews it has not returned before, so a daily schedule gives you each day's new reviews and charges only for those.
Does it need a proxy?
The default Apify Proxy datacenter group works for both stores; nothing extra to buy. The Actor waits between requests and switches proxy session when a store throttles.
Is it legal to scrape the App Store and Google Play?
It reads only public data any logged-out visitor can see: app store listings, ratings and public reviews from Apple's public feeds and Google Play app pages, on paths the stores' robots.txt allows. It never logs in and never solves CAPTCHAs; reviewer display names and public profile links are returned as the stores show them. Apple's and Google's terms discourage automated access; keep your use to analysis of public data. Data is returned as shown publicly on the source; people can ask for removal by opening an issue on this Actor's Issues tab; if Apple or Google formally asks us to stop, this Actor will stop. You are responsible for using the data lawfully, incl. privacy laws; this is not legal advice.
Related
Related tools
Facebook Ad Library Search & API
Facebook and Instagram business ads from the Meta Ad Library: copy, creatives, landing pages, dates, optional EU reach.
Competitor Watch
One report per competitor with only what is new: Meta and TikTok ads, page changes, Shopify products and prices, jobs.
Amazon Sponsored Products & Search Results Scraper
Scrape Amazon search results for any keyword at $0.10 per 1,000 products: position, ASIN, title, price, list price, rating, review count, Prime, sponsored flag and badges, up to 20 pages per search, on amazon.com and amazon.ca. No login; only-new-products mode.
Try the App Store & Google Play Scraper
Open it on the Apify Store, paste the example input above and click Start. Results download as CSV, Excel or JSON.