App Stores Scraper - Apple App Store & Google Play ASO avatar

App Stores Scraper - Apple App Store & Google Play ASO

Pricing

from $0.25 / 1,000 app / listing / rank rows

Go to Apify Store
App Stores Scraper - Apple App Store & Google Play ASO

App Stores Scraper - Apple App Store & Google Play ASO

Scrape Apple App Store and Google Play in one run: app details, reviews, keyword search, top charts, ASO keyword ranks, developer catalogs, and monitors. Cross-store app pairs, multi-country. Fast HTTP — no browser.

Pricing

from $0.25 / 1,000 app / listing / rank rows

Rating

0.0

(0)

Developer

Andrej Kiva

Andrej Kiva

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

13 hours ago

Last modified

Categories

Share

App Stores Scraper — Apple App Store & Google Play ASO

Unofficial tool for publicly accessible Apple App Store / iTunes and Google Play Store data. Apple, App Store, Google Play, and related trademarks belong to their respective owners. Not affiliated with, sponsored by, or endorsed by Apple Inc. or Google LLC. Provided for informational use only; users must comply with applicable terms and laws.

App Stores Scraper ◄── you are here

ActorPlatform
App Stores Scraper ◄── you are hereApple App Store + Google Play (combo)
Apple App Store ScraperiOS / App Store only
Google Play Store ScraperAndroid / Google Play only

App Store and Google Play scraper for Apify — one Actor for cross-platform ASO: app metadata, customer reviews, keyword search, top charts, ASO keyword ranks, developer catalogs, and listing monitors. Scrape Apple App Store and Google Play in a single run, or either store alone. Map the same product with app pairs (pairKey on every row). Fast HTTP — no browser.

Use it for dual-store competitor research, ASO rank tracking, review mining, release / price / rating monitors, and agency reporting when you need iOS + Android without two Actor jobs. For deepest single-store options, use the sibling Actors above.

When to use this Actor

  • Track the same app on iOS + Android (details, ranks, reviews) with appPairs
  • ASO keyword ranks across both stores and countries / locales
  • Competitor cards: version, price, ratings, App Privacy / Data safety
  • Top charts + keyword discovery for App Store and Google Play in one job
  • Review intelligence from both marketplaces
  • Scheduled monitor for version / price / rating / listing deltas
  • One Actor ID in automations instead of separate Apple and Play pipelines

Modes

ModeApple App StoreGoogle Play
app_detailsiTunes lookup (+ optional HTML enrich)Full metadata (+ similar / permissions / data safety)
reviewsCustomer reviews RSS (~500/country)Paginated reviews (sort / stars / after-date)
searchKeyword searchKeyword search
top_chartsTop Free / Paid / Grossing / NewTop free / paid / grossing (+ category)
search_and_chartsSearch + chartsSearch + charts
developer_appsArtist / developer catalogDeveloper page listings
keyword_ranksSERP position + KV history + RANK_CHANGESERP position + KV history
monitorVersion / price / rating / privacy / IAP deltasVersion / price / rating / listing + review watch + webhook

Key features

  • Both stores, one runstores: ["apple","google"] (default) or either alone
  • App pairs for ASOappPairs: [{ name, appleId, googleId }] stamps pairKey for joins
  • ASO keyword ranks — track App Store IDs and Play packages across keywords × countries
  • Fair maxItems split — when both stores run, the global cap is split evenly (balanceStoreLimits); optional maxItemsPerStore
  • Parallel pipelinesrunStoresInParallel (default true)
  • Apple HTML enrich — privacy nutrition labels, IAP, rating histogram
  • Play extras — similar apps, permissions, Data safety, monitor webhooks
  • Typed rows — every item has store plus itemType / native fields
  • Monitor state — separate KV namespaces per store under monitorStoreName

Input parameters

ParameterDescription
modeSee modes table
storesapple, google, or both (default both)
appPairsCross-store ASO pairs (name / appleId / googleId)
startUrlsApp Store or Play URLs (store auto-detected)
appleAppIds / googleAppIdsExplicit track IDs / package names
searchTerms / searchTermKeywords for search and keyword ranks
trackAppleAppIds / trackGoogleAppIdsApps to locate in SERP (keyword_ranks)
country / countries / useAllCountriesStorefronts (Apple majors preset supported)
language / languagesPlay hl (+ multi-locale matrix with countries)
appleChartType / googleChartType / chartLimitTop charts
appleGenreId / googleCategoryCategory / genre filters
enrichFromHtml / enrichChartDetailsApple HTML / chart enrich
includeSimilarApps / includePermissions / includeDataSafetyPlay detail extras
enrichListings / enrichDeveloperApps / maxSearchPagesPlay listing enrich
maxReviewsPerApp / appleReviewSort / googleReviewSortReviews
reviewScoreFilter / reviewAfterDatePlay review filters
maxItemsGlobal row cap (auto-split across stores when both run)
maxItemsPerStoreOptional hard cap per store
balanceStoreLimitsEven split of maxItems (default true)
monitorStoreName / monitorBaselineOnly / resetMonitorStateMonitor / rank KV
webhookUrl / notifyOn*Play monitor alerts
concurrency / maxRequestsPerSecondParallelism and Apple RPS
runStoresInParallelScrape Apple and Google concurrently
proxyConfigurationResidential recommended for Google Play

Example — dual-store app details (ASO competitor pack)

{
"mode": "app_details",
"stores": ["apple", "google"],
"appPairs": [
{
"name": "WhatsApp",
"appleId": "310633997",
"googleId": "com.whatsapp"
}
],
"countries": ["us", "de"],
"enrichFromHtml": true,
"includeDataSafety": true,
"includeSimilarApps": true,
"maxItems": 50
}

Example — ASO keyword ranks (both stores)

{
"mode": "keyword_ranks",
"stores": ["apple", "google"],
"searchTerms": ["vpn", "secure vpn", "proxy"],
"appPairs": [
{
"name": "CompetitorA",
"appleId": "123456789",
"googleId": "com.example.vpn"
}
],
"countries": ["us", "gb", "de"],
"languages": ["en"],
"monitorStoreName": "my-aso-ranks",
"maxItems": 200
}

Example — reviews from App Store + Google Play

{
"mode": "reviews",
"stores": ["apple", "google"],
"appPairs": [
{
"name": "WhatsApp",
"appleId": "310633997",
"googleId": "com.whatsapp"
}
],
"maxReviewsPerApp": 100,
"countries": ["us"],
"appleReviewSort": "mostRecent",
"googleReviewSort": "NEWEST",
"maxItems": 400
}

Example — top charts both stores

{
"mode": "top_charts",
"stores": ["apple", "google"],
"countries": ["us"],
"languages": ["en"],
"appleChartType": "top_free",
"appleGenreId": 6014,
"googleChartType": "topselling_free",
"googleCategory": "GAME",
"chartLimit": 100,
"maxItems": 200
}

Example — monitor (baseline then schedule)

{
"mode": "monitor",
"stores": ["apple", "google"],
"appPairs": [
{
"name": "Spotify",
"appleId": "324684580",
"googleId": "com.spotify.music"
}
],
"countries": ["us"],
"monitorStoreName": "app-stores-aso-monitor",
"monitorBaselineOnly": true,
"enrichFromHtml": true,
"maxItems": 100
}

After the baseline run, set monitorBaselineOnly to false (or omit it) so later runs push only change events.

Output

FieldDescription
storeapple or google
itemType / recordTypeapp, review, keyword_rank, chart_entry, search_result, monitor_event, …
pairKeyCross-store pair name when provided in appPairs
appIdApple track ID or Google package name
title / developerNameListing title and publisher
score / ratingAverage rating (mirrored for cross-store tables)
price / currency / versionCommercial / version metadata
keyword / rank / foundASO SERP / chart position
country / languageStorefront / Play locale
eventType / changeTypeMonitor deltas
urlStore listing URL when present
scrapedAtUTC collection time

Use cases

Use caseWhat you get
Cross-store ASOSame product on iOS + Android via appPairs / pairKey
Dual-store keyword ranksSERP positions across App Store and Google Play
Competitor packsMetadata, privacy / Data safety, charts in one job
Review intelligenceReviews from both marketplaces with shared caps
Listing monitorsVersion / price / rating deltas per store under one Actor
AI / MCP workflowsRun via Apify API, clients, or MCP and summarize dual-store data

Integration examples

Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('crawloop/app-stores-scraper').call({
mode: 'app_details',
stores: ['apple', 'google'],
appPairs: [
{ name: 'WhatsApp', appleId: '310633997', googleId: 'com.whatsapp' },
],
countries: ['us'],
enrichFromHtml: true,
includeDataSafety: true,
maxItems: 50,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.slice(0, 5));

Python

from apify_client import ApifyClient
client = ApifyClient(token)
run = client.actor("crawloop/app-stores-scraper").call(
run_input={
"mode": "keyword_ranks",
"stores": ["apple", "google"],
"searchTerms": ["vpn", "secure vpn"],
"appPairs": [
{
"name": "CompetitorA",
"appleId": "123456789",
"googleId": "com.example.vpn",
}
],
"countries": ["us", "gb", "de"],
"languages": ["en"],
"monitorStoreName": "my-aso-ranks",
"maxItems": 200,
}
)
items = list(client.dataset(run["defaultDatasetId"]).iterate_items())
print(len(items), items[:3])

cURL

curl "https://api.apify.com/v2/acts/crawloop~app-stores-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"mode": "reviews",
"stores": ["apple", "google"],
"appPairs": [
{"name": "WhatsApp", "appleId": "310633997", "googleId": "com.whatsapp"}
],
"maxReviewsPerApp": 50,
"countries": ["us"],
"maxItems": 200
}'

MCP and AI assistants

Use this Actor from AI tools via Apify MCP. Connect your Apify account, then call crawloop/app-stores-scraper.

Example prompts:

  • "Run App Stores Scraper for WhatsApp on Apple and Google Play and return paired ratings, versions, and pairKey"
  • "Track ASO keyword ranks for vpn on both stores across us, gb, de and summarize rank gaps"
  • "Chain App Stores Scraper monitor baseline for Spotify, then tell me how to schedule incremental runs"

Suite next step

For deepest single-store options, use Apple App Store Scraper or Google Play Store Scraper on their own.

Limitations

  • Apple reviews RSS is a recent window (~500 per country per sort), not full history.
  • Apple keyword ranks / search stop at the top 200 per term per country.
  • Google Play developer pages and chart RPCs can return fewer apps than your store quota — total rows may be below maxItems.
  • With both stores and balanceStoreLimits, maxItems is split evenly; one store cannot consume the whole cap.
  • Play version may be missing (Varies with device); monitor prefers update timestamps when present.
  • Residential proxy is recommended for non-US Play locales and larger review volumes.

Workflow tips

  1. Validate IDs with app_details + appPairs (check pairKey in the dataset).
  2. Seed ASO with keyword_ranks + a dedicated monitorStoreName, then schedule daily.
  3. Run monitor once with monitorBaselineOnly: true, then schedule deltas.
  4. Cap cost with maxItems while testing (auto-splits across stores; or set maxItemsPerStore).
  5. Prefer Residential proxy for Google Play; Apple iTunes JSON often works without proxy.
ActorWhat it covers
App Stores Scraper ◄── you are hereApple App Store + Google Play combo ASO suite
Apple App Store ScraperiOS apps, games, reviews, ASO ranks, charts, monitor
Google Play Store ScraperAndroid apps, reviews, ASO ranks, monitor + webhooks