App Store & Google Play Metadata & ASO Scraper
Pricing
from $1.00 / 1,000 app scrapeds
App Store & Google Play Metadata & ASO Scraper
Scrape app metadata from Apple App Store and Google Play in one unified schema. Get title, ratings, screenshots, version history, pricing, and more. Monitor mode alerts you when competitors update their apps. No API key needed.
Pricing
from $1.00 / 1,000 app scrapeds
Rating
0.0
(0)
Developer
DSH
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
20 days ago
Last modified
Categories
Share
Scrape app metadata from the Apple App Store and Google Play Store in one unified format — title, description, ratings, screenshots, pricing, version history, developer info, and category — for app store optimization (ASO), competitive intelligence, and market research. Look up apps by ID, bundle ID, store URL, or keyword search, pull many apps in one run, and switch on monitor mode to get alerted when a competitor ships a new version, changes their price, or their rating shifts. API/HTTP-only, no browser, no API key.
This is the metadata half of app intelligence. For reviews and AI sentiment analysis, pair it with our App Review Scraper & Monitor — same unified two-store approach, for the reviews side.
What you get
Every app — Apple or Google — comes back in the same unified schema:
| Field | Description |
|---|---|
store | apple or google |
appId | Apple numeric ID or Google package name |
bundleId | Apple bundle ID (e.g. net.whatsapp.WhatsApp); null for Google |
title, subtitle | App name; subtitle/short description (Google summary; Apple null) |
developer, developerUrl, developerEmail | Publisher name, site, and email (email: Google only) |
description | Full description text (when includeDescription) |
iconUrl, screenshotUrls | Icon and screenshot URLs (screenshots when includeScreenshots) |
averageRating, ratingCount, reviewCount | Rating average, ratings count, written-review count (reviews: Google) |
ratingsHistogram | Star distribution {1..5} (Google only) |
price, currency, free | Price, currency, free flag |
containsAds, offersInAppPurchases | Monetization flags (Google) |
primaryCategory, categories, contentRating | Category, all categories, age/content rating |
currentVersion, releaseDate, lastUpdated, releaseNotes | Version + release metadata |
minimumOsVersion, size, installs | Min OS, app size, install count (installs: Google) |
versionHistory | Current version's release notes as an entry (Apple only, when requested) |
storeUrl | Direct link to the app on the store |
changes, hasChanges | Populated in monitor mode: what metadata changed since the last run |
scrapedAt | ISO 8601 timestamp |
Two stores, one schema
Both stores map into the same fields, but each exposes different data:
- Apple only:
bundleId, iPad screenshots (merged intoscreenshotUrls),versionHistory(current version's notes). - Google only:
ratingsHistogram,reviewCount,installs,developerEmail,containsAds,offersInAppPurchases. - Where they differ: Apple has no install counts, no ratings histogram, no developer email, and no App Store subtitle via the public API; Google Play has no version history. Fields that a store doesn't provide come back
null, never as errors.
Monitor mode — track competitor apps over time
Set mode: "monitor" and attach an Apify Schedule (daily/weekly):
- First run stores a baseline snapshot of each app's tracked fields.
- Later runs compare current metadata against the baseline and populate
changes+hasChanges: truefor any app that moved. Tracked fields:currentVersion,price,averageRating(±0.1 threshold),ratingCount(+5% threshold),releaseNotes,primaryCategory,contentRating. - Every app is still output on every run — only the changed ones carry a
changesarray.
Example: "Get alerted when your competitor releases a new version or changes their price." State is keyed per app (state-{store}-{appId}-{country}) in a named Key-Value Store, so it survives across scheduled runs.
Input
Look up a single app by ID (zero-config prefill uses WhatsApp on both stores):
{ "apps": ["https://apps.apple.com/us/app/whatsapp-messenger/id310633997"] }
Bulk, mixed identifiers, both stores:
{"apps": ["310633997","com.whatsapp","com.google.Maps",{ "store": "google", "appId": "com.spotify.music", "country": "gb" }],"includeScreenshots": false}
Keyword search (searches both stores when the store is auto-detected):
{ "apps": ["weather"], "maxApps": 20 }
Monitor competitors for changes:
{"apps": ["com.whatsapp", "com.instagram.android"],"mode": "monitor"}
| Input | Description |
|---|---|
apps | Array of URLs, IDs, bundle IDs, package names, keywords, or { store, appId, country } objects |
mode | snapshot (default) or monitor (change detection) |
includeScreenshots | Include screenshot URLs (default true) |
includeDescription | Include full description text (default true) |
includeVersionHistory | Apple: include current version's notes (default false) |
maxApps | Cap on total apps per run (default 100, max 1000) |
language | ISO 2-letter language for Google Play (default en) |
Auto-detect: numeric ID → Apple; lowercase reverse-DNS (com.whatsapp) → Google package; mixed-case reverse-DNS (com.google.Maps) → Apple bundle ID; anything else → keyword search. Set store explicitly to remove ambiguity.
Output examples
Apple app:
{"store": "apple","appId": "310633997","bundleId": "net.whatsapp.WhatsApp","title": "WhatsApp Messenger","subtitle": null,"developer": "WhatsApp Inc.","developerUrl": "https://www.whatsapp.com/","developerEmail": null,"iconUrl": "https://is1-ssl.mzstatic.com/.../512x512.png","screenshotUrls": ["https://.../1.png", "https://.../2.png"],"averageRating": 4.7,"ratingCount": 15234891,"reviewCount": null,"ratingsHistogram": null,"price": 0,"currency": "USD","free": true,"primaryCategory": "Social Networking","categories": ["Social Networking", "Utilities"],"contentRating": "12+","currentVersion": "24.5.0","releaseDate": "2009-05-03T07:00:00Z","lastUpdated": "2026-06-15T09:31:00Z","releaseNotes": "Bug fixes and performance improvements.","minimumOsVersion": "12.0","size": "238 MB","installs": null,"versionHistory": null,"storeUrl": "https://apps.apple.com/us/app/id310633997","changes": null,"hasChanges": null,"scrapedAt": "2026-07-01T12:00:00.000Z"}
Google Play app (monitor run that detected a version bump):
{"store": "google","appId": "com.whatsapp","bundleId": null,"title": "WhatsApp Messenger","subtitle": "Simple. Reliable. Private.","developer": "WhatsApp LLC","developerUrl": "https://www.whatsapp.com/","developerEmail": "android_support@support.whatsapp.com","iconUrl": "https://play-lh.googleusercontent.com/....png","screenshotUrls": ["https://.../1.png", "https://.../2.png"],"averageRating": 4.3,"ratingCount": 190482233,"reviewCount": 8123456,"ratingsHistogram": { "1": 9000000, "2": 3000000, "3": 8000000, "4": 20000000, "5": 150000000 },"price": 0,"currency": "USD","free": true,"containsAds": false,"offersInAppPurchases": true,"primaryCategory": "Communication","categories": ["Communication"],"contentRating": "Everyone","currentVersion": "2.26.1.0","releaseDate": "Oct 18, 2010","lastUpdated": "2026-06-20T00:00:00.000Z","releaseNotes": "Now you can pin more chats.","minimumOsVersion": "5.0","size": "Varies with device","installs": "5,000,000,000+","versionHistory": null,"storeUrl": "https://play.google.com/store/apps/details?id=com.whatsapp","changes": [{ "field": "currentVersion", "oldValue": "2.26.0.0", "newValue": "2.26.1.0" },{ "field": "releaseNotes", "oldValue": "Bug fixes.", "newValue": "Now you can pin more chats." }],"hasChanges": true,"scrapedAt": "2026-07-01T12:00:00.000Z"}
Use cases
- ASO teams tracking competitor metadata, keywords, and store-listing changes.
- Product managers monitoring when competitors ship new versions.
- Market researchers comparing categories, pricing, and ratings across countries.
- App agencies auditing client apps' store presence across both platforms.
- Investors tracking app ratings and install trends over time.
- Developers benchmarking their app against competitors.
- Data teams building an app-intelligence database from a unified schema.
Pair with our review scraper
For app reviews, ratings over time, and AI sentiment/theme tagging, use our App Review Scraper & Monitor. This Actor covers the metadata; that one covers the reviews — together they give you the full App Store & Google Play intelligence picture.
Limitations
- Apple rate limit (~20 requests/min on the iTunes API). Batch/bulk runs are throttled with backoff.
- Apple gaps: no install counts, no ratings histogram, no developer email, no App Store subtitle, and version history limited to the current version's notes (deeper history needs Apple's token-gated private API).
- Google Play metadata comes via the community
google-play-scraper(HTTPbatchexecute, no browser) — occasionally needs a parser update when Google changes markup; Apple runs are unaffected. - No historical database — monitor mode tracks changes from your first run onward, not retroactively.
- Region-specific apps may not exist in every
country; those are skipped with a warning, never a crash.
Pricing (Pay-Per-Event)
Pay only for what you pull, from ~$1.50 per 1,000 apps:
| Event | When charged |
|---|---|
| Actor run start | Once per run |
| App metadata scraped | Per app fetched and output (both stores; every app checked in monitor mode) |
| App changes detected | Per app where monitor mode found a metadata change (the actionable-intelligence event) |
No subscription, no rental.
Use it from an AI agent (MCP)
This Actor is MCP-ready: run it as a tool from Claude, Cursor, or ChatGPT via Apify's MCP integration to give your agent live app metadata from the Apple App Store and Google Play on demand.
FAQ
Do I need an API key? No. Both the iTunes Search API and Google Play are public — no key, no account.
How does keyword search work? If an entry isn't an ID/bundle ID/URL, it's treated as a search term. With store auto-detected, it searches both stores and returns full metadata for the top hits (capped by maxApps).
Which countries/languages? Set country per app (affects pricing, availability, ratings) and language for Google Play text.
What does monitor mode detect? Changes to version, price, average rating (±0.1), rating count (+5%), release notes, category, and content rating — since your previous run.
Does it scrape reviews? No — this Actor is metadata only. For reviews and AI sentiment, use our App Review Scraper & Monitor.
Does it use a browser? No — iTunes Search API + HTTP-based google-play-scraper, which keeps runs fast and cheap.