App Store Rankings Scraper — Apple & Google Play Charts
Pricing
from $0.50 / 1,000 app rankings
App Store Rankings Scraper — Apple & Google Play Charts
Collect current Apple App Store and Google Play rankings by country, chart type, and category. Export chart positions and available app metadata to CSV/JSON. Optional details; no historical rankings.
Pricing
from $0.50 / 1,000 app rankings
Rating
0.0
(0)
Developer
Coor Yu
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
11 days ago
Last modified
Categories
Share
Scrape Apple App Store and Google Play rankings by country, chart type, and category into one export-ready dataset. Use ready-to-run defaults or compare Top Free, Top Paid, and Top Grossing charts where the storefront provides them. No Apple/Google account, storefront API key, browser, or proxy subscription is required; programmatic Apify calls still require Apify authentication.
Start with the defaults: request the current US Top Free chart, up to 20 apps per store — 40 ranking rows in total. At the current 256 MB allocation, 40 stored rankings incur $0.025 in Actor event fees, including one startup event. Store availability can produce fewer rows.
Quick start: no input required
- Click Try for free / Start.
- Keep the defaults, or choose countries, charts and categories from the named dropdowns.
- Run and download the App rankings dataset as JSON, CSV, Excel, or another Apify export format.
An API call with {} uses the same defaults as the form. No field is required.
Compare game charts in two markets
{"countries": ["us", "jp"],"categories": ["games"],"maxItemsPerChart": 50}
Apple and Google Play are both selected by default. Category IDs are mapped automatically. This example requests 4 charts and up to 200 rows. If all 200 rankings are stored at the current 256 MB allocation, Actor event fees are $0.105. This is not a guarantee that every selected chart returns its requested row count.
One country, one store, one category
{"stores": ["google_play"],"countries": ["de"],"chartTypes": ["top_paid"],"categories": ["business"],"maxItemsPerChart": 20}
The Google Play text language is chosen automatically from the country. You do not need to fill it in.
Pricing: simple, with platform usage included
| Charge | Price |
|---|---|
| One stored ranking row | $0.0005 — $0.50 per 1,000 rankings |
| Actor start | $0.005 per GB of allocated memory, minimum one event |
| Optional app details | Included, no extra event fee |
The run-start event is charged automatically even when no ranking is returned. Failed charts, skipped charts and diagnostic summaries are not charged as ranking results. Only actual ranking rows stored in the default dataset incur the result fee.
Startup billing is memory-based, not universally a fixed per-run fee. The current supported allocation is 256 MB, which incurs the minimum one startup event. At that allocation, the event-fee formula is $0.005 + stored ranking rows × $0.0005; the examples below use that setting.
| Stored rows in one run | Total event price |
|---|---|
| 1 | $0.0055 |
| 40 (default maximum) | $0.025 |
| 100 | $0.055 |
| 1,000 | $0.505 |
There are no paid upstream Actors, external data-provider API keys, or residential proxy requirements. Normal platform usage during the run is included in the event price. Apify may separately charge standard post-run dataset access or retention usage under your plan. The Apify Pricing tab is authoritative if prices change.
Use Apify's Maximum charge per run control to set a spending cap. The Actor checks the remaining budget before fetching more charts, reduces requested row counts to the affordable amount, and stops without deliberately writing an extra over-budget row. The minimum supported run cap is $0.0055, enough for the run start and one ranking.
Input: five everyday controls
| Field | What you choose | Default |
|---|---|---|
stores | Apple App Store, Google Play, or both | Both |
countries | Countries by name; multiple markets supported | United States |
chartTypes | Top Free, Top Paid, Top Grossing | Top Free |
categories | Named categories shared between both stores | Overall |
maxItemsPerChart | Apps per chart, 1–200 | 20 |
Additional options are in separate sections:
includeAppDetails: off by default. Enable to add richer metadata at the same event price. It is slower, especially for Google Play.language:autoby default. Choose a language only if you need to override local Google Play text. It does not change the ranking market.maxConcurrency: 2 by default; runtime is capped at 3 to keep requests and memory predictable. Legacy API values up to 10 remain accepted.
Category selection
Use named choices such as games, business, education, finance, shopping, entertainment, health_and_fitness, food_and_drink, travel, productivity, social, music, or game_puzzle. The form shows readable names instead of numeric or platform-specific codes.
Cross-store categories are comparable, not identical taxonomies:
- Overall maps to Apple's all-apps chart and Google Play's Apps chart. Android Games have a separate chart: select
gamesto include them. - Photography maps to Apple's Photo & Video category and Google's Photography category.
- Books, News, Utilities and other common categories map to the closest named store categories.
- Mainland China charts use Apple only. Google Play is unavailable there; the Actor does not relabel another country's or global Android chart as CN.
- A country or category may not have every chart. Unavailable charts are listed in the run summary, while successful charts remain available.
Existing API integrations
The original stores, countries, chartTypes, maxItemsPerChart, includeAppDetails, language, and maxConcurrency inputs remain supported. Explicit appleCategories and googleCategories arrays still work and override the common categories menu only for their own store. These legacy fields are hidden from the basic form.
{"stores": ["apple", "google_play"],"countries": ["us"],"chartTypes": ["top_free"],"appleCategories": ["ALL", "6014"],"googleCategories": ["APPLICATION", "GAME"],"maxItemsPerChart": 20}
The no-input default is 20 apps per chart, with automatic language selection. Set maxItemsPerChart and language explicitly if your integration requires different values.
Output: a real chart position, not an app estimate
Each row is one app's observed position in one store/country/chart/category snapshot. Useful fields include:
rank,store,country,chartType,chartCategory,chartKeyappId,bundleIdorpackageName,title,developer,url,icon- Available price, currency, rating and summary fields
scrapedAtand the publicsourceUrl- With enrichment: version, update/release dates, rating/review counts, description and Android install ranges, where exposed by the source
detailsIncluded: whether enrichment was actually returned, not merely requested
Ratings in basic Google Play charts may already be present; Apple's additional rating fields generally require app enrichment. Descriptions are limited to 10,000 characters. Android install ranges are store-published estimates, not exact download counts. Revenue is not inferred from the Top Grossing chart.
The same app can legitimately appear several times across countries or charts. It is billed once for each stored chart position, not once globally. Use chartKey and scrapedAt to group snapshots and appId to join the same app across charts.
Run summary and reliability
The Run summary output links to the OUTPUT record. It includes normalized settings, per-chart result counts, actual enrichment counts, errors, warnings and a stop reason when relevant.
- Transient chart requests get at most two attempts; permanent HTTP errors are not repeatedly retried.
- Detail lookups are best-effort. A failed enrichment request preserves the available ranking row with
detailsIncluded=false. - Mixed chart availability produces
OUTPUT.status=partialrather than discarding successful data. - If every chart fails with no results and no spending/time stop, the run fails with specific errors.
- Maximum 100 chart requests, 200 apps per chart, 256 MB memory, and two minutes of collection. Large inputs may finish partially; split them into smaller runs when this is reported.
- Ranking data is fetched live from public storefront endpoints. Store refresh delays, fewer-than-requested rows and future upstream format changes remain possible.
This Actor does not retrieve historical rankings, app reviews, private analytics, or exact downloads/revenue. It does not bypass authentication. All billed ranking results are available in the dataset; summaries are stored separately.
FAQ
Can I get historical App Store rankings? No. Each run captures the chart currently exposed by the storefront. Compare your own saved snapshots for rank changes over time.
Does Top Grossing provide app revenue? No. It provides a chart position where available, not sales, revenue, or exact download counts.
Why can one app appear multiple times? Each store, country, category, and chart is a separate observation and billable ranking row.
For related public-catalog research, see Shopify Products Scraper and WooCommerce Products Scraper. Use data in accordance with storefront terms and applicable laws.