App Store & Google Play Metadata & ASO Scraper avatar

App Store & Google Play Metadata & ASO Scraper

Pricing

from $1.00 / 1,000 app scrapeds

Go to Apify Store
App Store & Google Play Metadata & ASO Scraper

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

DSH

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

20 days ago

Last modified

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:

FieldDescription
storeapple or google
appIdApple numeric ID or Google package name
bundleIdApple bundle ID (e.g. net.whatsapp.WhatsApp); null for Google
title, subtitleApp name; subtitle/short description (Google summary; Apple null)
developer, developerUrl, developerEmailPublisher name, site, and email (email: Google only)
descriptionFull description text (when includeDescription)
iconUrl, screenshotUrlsIcon and screenshot URLs (screenshots when includeScreenshots)
averageRating, ratingCount, reviewCountRating average, ratings count, written-review count (reviews: Google)
ratingsHistogramStar distribution {1..5} (Google only)
price, currency, freePrice, currency, free flag
containsAds, offersInAppPurchasesMonetization flags (Google)
primaryCategory, categories, contentRatingCategory, all categories, age/content rating
currentVersion, releaseDate, lastUpdated, releaseNotesVersion + release metadata
minimumOsVersion, size, installsMin OS, app size, install count (installs: Google)
versionHistoryCurrent version's release notes as an entry (Apple only, when requested)
storeUrlDirect link to the app on the store
changes, hasChangesPopulated in monitor mode: what metadata changed since the last run
scrapedAtISO 8601 timestamp

Two stores, one schema

Both stores map into the same fields, but each exposes different data:

  • Apple only: bundleId, iPad screenshots (merged into screenshotUrls), 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: true for 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 changes array.

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"
}
InputDescription
appsArray of URLs, IDs, bundle IDs, package names, keywords, or { store, appId, country } objects
modesnapshot (default) or monitor (change detection)
includeScreenshotsInclude screenshot URLs (default true)
includeDescriptionInclude full description text (default true)
includeVersionHistoryApple: include current version's notes (default false)
maxAppsCap on total apps per run (default 100, max 1000)
languageISO 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 (HTTP batchexecute, 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:

EventWhen charged
Actor run startOnce per run
App metadata scrapedPer app fetched and output (both stores; every app checked in monitor mode)
App changes detectedPer 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.