Apple App Store Scraper: App Details, Ratings and Top Charts
Pricing
from $1.62 / 1,000 apps
Apple App Store Scraper: App Details, Ratings and Top Charts
Search the Apple App Store, look up apps by id, link or bundle id, or read top free, paid and grossing charts by category. One row per app: price, rating, star histogram, version, size, in-app purchases with prices, privacy labels, screenshots, developer. No login.
Pricing
from $1.62 / 1,000 apps
Rating
0.0
(0)
Developer
The Mine Works
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
From The Mine Works, makers of App Store Reviews Scraper and Google Play Reviews Scraper, with over 140,000 runs across 170+ public actors.
Updated 21 Oct 2026: first release. Search by keyword, look up apps by id, link or bundle id, and read the top free, paid and grossing charts by category, one flat row per app. Bookmark this Actor on its Store page so it is one click away next time.
Why choose this actor?
- What the API leaves out, in columns. Apple's public API gives price, rating, version and size. This actor also opens each app's App Store page and adds the subtitle, whether the app sells in-app purchases and the list of them with prices, the star histogram (how many 1 to 5 star ratings), its current chart rank in its category, Editors' Choice, the age rating, the privacy labels and the privacy policy link. In our test runs on 21 Oct 2026 every one of 346 rows had the histogram and the in-app purchase flag.
- Three ways in, one schema. Search terms, a list of app ids or links, and the top charts (free, paid, grossing, iPhone or iPad, overall or per category) all return the same row, with
source,search_positionorchart_positiontelling you where each app came from. - Pay per app, nothing for errors. Ids Apple does not sell in your storefront, bad links, duplicates found twice in one run and the summary row are never charged. No Apple account, cookies or API key.
Part of The Mine Works Marketing, SEO and reviews family: Facebook Ad Library Scraper, Google Ads Transparency Scraper, Similarweb Scraper, Google News Scraper, Trustpilot Reviews Scraper, Google Trends Scraper.
Try it in one minute
Paste this into the input (JSON view) and press Start. It returns the first 20 apps for "meditation" in the US App Store with their App Store pages opened. It took 34 seconds in our test run:
{"searchQueries": ["meditation"],"country": "us","maxItems": 20}
Put several terms on separate lines to run several searches at once, add app ids to appIds, or pick charts in charts. An app that two of your sources find is delivered once.
Apify's free plan includes $5 of credit every month, which covers about 1,600 apps at this actor's price.
Copy to your AI assistant
themineworks/apple-app-store-scraper on Apify. Reads Apple App Store app metadata by search term, app id or top chart and returns one flat row per app, with no login. Call ApifyClient("TOKEN").actor("themineworks/apple-app-store-scraper").call(run_input={"searchQueries": ["meditation"], "country": "us", "maxItems": 50}), then client.dataset(run["defaultDatasetId"]).list_items().items. Give searchQueries (list of terms, up to 200 apps each), appIds (numeric ids, id389801252, apps.apple.com links or bundle ids such as com.burbn.instagram, up to 5000), charts (any of topfree, toppaid, topgrossing, topfreeipad, toppaidipad, topgrossingipad; up to 100 apps each) or any mix. Optional: chartCategory (App Store genre id such as 6013 Health & Fitness or 6014 Games, empty for all), country (two letter storefront, default us), maxItems (default 50, 1 to 200, per search and per chart), includePageDetails (default true; opens each app page for subtitle, has_in_app_purchases, in_app_purchases, rating_histogram, chart_rank, editors_choice, age_rating, privacy labels, copyright, privacy_policy_url, platforms, similar_app_ids). App rows have no _type field and carry app_id, bundle_id, name, subtitle, developer_name, developer_id, developer_url, seller_name, developer_website, price, currency, formatted_price, is_free, rating, rating_count, rating_current_version, rating_count_current_version, rating_histogram, version, release_date, last_updated, size_bytes, size_mb, minimum_os_version, languages, languages_full, primary_genre, primary_genre_id, genres, genre_ids, content_rating, age_rating, advisories, description, release_notes, screenshots, ipad_screenshots, appletv_screenshots, icon, icon_small, app_url, features, supported_devices_count, is_game_center_enabled, has_in_app_purchases, in_app_purchases (name, price), in_app_purchases_listed, editors_choice, chart_rank, chart_rank_category, supports_game_controller, privacy_data_used_to_track, privacy_data_linked_to_you, privacy_data_not_linked_to_you, privacy_data_not_collected, privacy_policy_url, copyright, platforms, similar_app_ids, country, source, search_term, search_position, chart, chart_category, chart_position, input, page_details_scraped, page_error, scraped_at. Each run also writes one row with _type "summary", one with _type "info" when apps were delivered, and a row with _type "error" for each input that could not be read; none of these is charged. Full spec: GET https://api.apify.com/v2/acts/themineworks~apple-app-store-scraper/builds/default (Bearer TOKEN), which returns inputSchema and readme. Token: https://console.apify.com/account/integrations?fpr=ymnoit&utm_source=apify-readme&utm_medium=referral
Key features
- Search like the App Store. Each term returns up to 200 apps in Apple's own order, with
search_position, so you can track where an app ranks for a keyword over time. - Top charts by category. Top Free, Top Paid and Top Grossing for iPhone or iPad, overall or for one category such as Games, Finance or Health & Fitness, up to 100 apps each with
chart_position. - Direct lookups. Paste app ids, App Store links or bundle ids. A link keeps its own storefront, so
https://apps.apple.com/gb/app/...is read in the UK store even whencountryis us. - In-app purchases with prices.
has_in_app_purchasesis true or false for every app with the page opened, andin_app_purchaseslists the purchases the App Store shows (up to 10) with their local price, for example Premium yearly at $59.99. - Ratings in depth. Average rating and count for all versions and the current version, plus
rating_histogramwith the number of 1, 2, 3, 4 and 5 star ratings. - Privacy labels. Data used to track you, data linked to you and data not linked to you, by category (Location, Purchases, Identifiers and so on), as the developer declared them.
- Any storefront. 174 countries. Prices, currency, ratings, ranks and availability are those of the storefront you pick.
- Stops cleanly. Six failed API requests in a row end the run; pages that keep failing are paused and the API rows still go out; the run stops before its time limit and keeps every row. The summary row says why.
How to use it
Keyword research: who ranks for a term
{"searchQueries": ["budget planner", "expense tracker", "money manager"],"country": "us","maxItems": 100}
Each term is its own search, labelled in search_term, with search_position. Sort by rating_count to see the established apps and by release_date to find the new ones.
Category charts: top grossing games
{"charts": ["topgrossing", "topfree"],"chartCategory": "6014","country": "us","maxItems": 100}
chart_position is the rank in the chart you asked for. has_in_app_purchases, in_app_purchases and price show how each app makes money.
Competitor tracking: a fixed list of apps
{"appIds": ["389801252","https://apps.apple.com/gb/app/whatsapp-messenger/id310633997","com.spotlightsix.zentimer"],"country": "us"}
Every app listed is returned. Run it on a schedule and compare version, last_updated, rating, rating_count, chart_rank and price between runs.
Market entry: the same chart in several countries
Run one task per storefront (for example us, gb, de, in, jp) with the same chart and category. Join on app_id to see which apps lead everywhere and which only lead at home.
Fast API only export
{"searchQueries": ["vpn"],"maxItems": 200,"includePageDetails": false}
Rows come from Apple's API only: price, rating, version, size, languages, genres, description, release notes, screenshots and the developer. 200 apps take a few seconds this way. Same price per app.
Input parameters
| Parameter | Type | Default | What it does |
|---|---|---|---|
searchQueries | array of strings | empty | Search terms, one search each, for example meditation. Up to 100. |
appIds | array of strings | empty | App ids, App Store links or bundle ids. Up to 5,000. |
charts | array of strings | empty | Any of topfree, toppaid, topgrossing, topfreeipad, toppaidipad, topgrossingipad. |
chartCategory | string | all | App Store genre id for the charts, for example 6014 Games or 6015 Finance. |
country | string | us | Two letter storefront code. |
maxItems | integer | 50 | Most apps per search term and per chart, 1 to 200. App ids are always all returned. |
includePageDetails | boolean | true | Opens each app's App Store page for the fields the API lacks. |
Give searchQueries, appIds, charts or any mix.
What data do you get?
| Group | Fields |
|---|---|
| App | app_id, bundle_id, name, subtitle, app_url, icon, icon_small, screenshots, ipad_screenshots, appletv_screenshots, description, release_notes |
| Developer | developer_name, developer_id, developer_url, seller_name, developer_website, copyright, privacy_policy_url |
| Price | price, currency, formatted_price, is_free, has_in_app_purchases, in_app_purchases, in_app_purchases_listed |
| Ratings | rating, rating_count, rating_current_version, rating_count_current_version, rating_histogram |
| Version | version, release_date, last_updated, size_bytes, size_mb, minimum_os_version, platforms, features, supported_devices_count |
| Category and rank | primary_genre, primary_genre_id, genres, genre_ids, chart_rank, chart_rank_category, editors_choice, similar_app_ids |
| Audience | content_rating, age_rating, advisories, languages, languages_full |
| Privacy | privacy_data_used_to_track, privacy_data_linked_to_you, privacy_data_not_linked_to_you, privacy_data_not_collected |
| Where it came from | country, source, search_term, search_position, chart, chart_category, chart_position, input, page_details_scraped, scraped_at |
Stable fields for automations
These were present in every app row of our test runs (346 rows from searches, charts and id lookups in the us, de and gb stores, pages on), and their names will not change:
| Field | What it is |
|---|---|
app_id | The key to store and join on |
bundle_id | Bundle id |
name | App name |
developer_name | Developer |
price | Price, 0 when free |
currency | Currency code |
rating | Average rating |
rating_count | Number of ratings |
version | Current version |
last_updated | Date of the current version |
size_bytes | Download size |
primary_genre | Main category |
content_rating | Content rating |
app_url | App Store link |
has_in_app_purchases | Sells in-app purchases (pages on) |
rating_histogram | Ratings per star (pages on) |
country | Storefront |
source | search, chart or app_id |
Optional, present only when Apple shows a value: in_app_purchases (256 of 346 test rows: the apps that sell them), developer_website (303 of 346), chart_rank (165 of 346: only apps currently in their category chart), privacy label lists (empty lists are left out), advisories, ipad_screenshots (apps without an iPad version have none), editors_choice true (11 of 346).
Output examples
One app from the "meditation" search with its page opened (test run, 21 Oct 2026, long texts and lists trimmed):
{"app_id": "571800810","bundle_id": "com.calm.calmapp","name": "Calm","subtitle": "Sleep, Meditation, Relaxation","developer_name": "Calm.com","developer_id": "571800813","seller_name": "Calm.com, Inc.","developer_website": "https://www.calm.com","price": 0,"currency": "USD","formatted_price": "Free","is_free": true,"rating": 4.77,"rating_count": 1989059,"rating_histogram": { "1": 33046, "2": 16605, "3": 52631, "4": 165948, "5": 1720829 },"version": "7.3","release_date": "2013-02-22T20:09:23Z","last_updated": "2026-10-08T20:43:45Z","size_bytes": 178897920,"size_mb": 178.9,"minimum_os_version": "18.0","primary_genre": "Health & Fitness","genres": ["Health & Fitness", "Lifestyle"],"content_rating": "4+","age_rating": "9+","has_in_app_purchases": true,"in_app_purchases": [{ "name": "Calm Premium", "price": "$79.99" },{ "name": "Calm Premium", "price": "$16.99" }],"in_app_purchases_listed": 10,"editors_choice": true,"chart_rank": 52,"chart_rank_category": "Health & Fitness","privacy_data_used_to_track": ["Purchases", "Identifiers", "Usage Data"],"privacy_data_linked_to_you": ["Health & Fitness", "Purchases", "Contact Info", "Search History", "Identifiers", "Usage Data", "Diagnostics"],"privacy_policy_url": "http://www.calm.com/privacy","copyright": "© Calm.com, Inc.","platforms": ["tv", "watch", "phone", "pad"],"app_url": "https://apps.apple.com/us/app/calm/id571800810","icon": "https://is1-ssl.mzstatic.com/image/thumb/Purple221/v4/84/9f/5f/849f5ff1-ceb7-d05d-00f8-7877b02544b8/AppIcon-0-0-1x_U007emarketing-0-11-0-85-220.png/512x512bb.jpg","country": "us","source": "search","search_term": "meditation","search_position": 3,"page_details_scraped": true,"scraped_at": "2026-10-21T07:11:27.765Z"}
An id that Apple does not sell in the storefront you picked gets a free error row:
{ "_type": "error", "error_type": "not_found", "identifier": "999999999", "country": "jp", "reason": "Apple has no app with this id in the jp storefront. It may be removed or not sold there; try another country." }
Pricing
Pay per event: you pay for the apps you receive, plus a flat $0.003 per run, whatever memory you choose. Opening App Store pages costs nothing extra.
| Event | When it is charged | Free plan | Bronze (Starter) | Silver (Scale) | Gold (Business) |
|---|---|---|---|---|---|
app-scraped | Once per app row stored in your dataset | $3.10 per 1,000 | $2.80 per 1,000 | $2.25 per 1,000 | $1.62 per 1,000 |
run-start | Once per run, after the first source returned apps | $0.003 | $0.003 | $0.003 | $0.003 |
The price of one app is the price per 1,000 divided by 1,000.
Never charged:
- ids, links or bundle ids Apple does not sell in the storefront, and inputs that are not App Store ids (each gets an error row);
- an app that a second source of the same run finds again;
- apps past your
maxItems; - the summary, info and error rows;
- a run with no valid input, or one whose sources return no apps: the start fee is charged only once a source has returned apps;
- anything past your "Max cost per run". The actor checks the budget before each batch of rows and stops while the total is still below your limit, so the run ends SUCCEEDED with a partial result and a status message saying so.
Run it on a schedule
- Open the actor in Apify Console, set your input and click Save as a new task.
- In the task, open Schedules, click Add schedule and pick how often (every day, every Monday at 08:00 and so on).
- Compare runs on
app_idwithchart_position,rating_count,versionandpriceto see rank moves, rating growth, new releases and price changes. - Optional: add an integration (Google Sheets, Slack, a webhook) so each run lands where your team works.
FAQ
What does this actor read?
Apple's public iTunes Search and Lookup APIs, the public App Store chart feeds, and, with includePageDetails on, each app's public page on apps.apple.com, as anyone sees them without signing in. It does not sign in, download apps or read anything behind an Apple account.
How many apps can I get?
Up to 200 per search term (Apple's own limit for its search API), up to 100 per chart, and up to 5,000 listed app ids per run. For more apps on a topic, add more search terms or category charts; each app is delivered once per run.
Why does a search return slightly fewer apps than maxItems?
Apple's search answers a few apps fewer than asked for. The actor asks for 10 more than maxItems and cuts to maxItems, so a short result means Apple had no more apps for that term.
What is the difference between includePageDetails on and off?
Off: rows come from Apple's API only, which is quicker. On (the default): each app's App Store page is opened as well for the subtitle, in-app purchases, star histogram, chart rank, Editors' Choice, age rating, privacy labels, copyright, developer links, platforms and similar apps. Same price either way.
Why is chart_rank empty for some apps?
chart_rank is the position the App Store page shows for the app in its own category chart. Apps that are not currently in that chart have none. chart_position is different: it is the rank in the chart you asked for in charts.
Are the in-app purchase prices in my currency?
They are in the currency of the storefront you picked, written the way the App Store writes them there, for example $59.99 in the US or 7,99 € in Germany. The App Store page lists up to 10 in-app purchases per app; in_app_purchases_listed says how many it listed.
Can I get reviews too?
This actor returns app metadata. For the review texts use App Store Reviews Scraper, and for Android apps Google Play Reviews Scraper.
Do I need an account, cookies or a proxy?
No. The actor reads public pages over Apify Proxy, which is included. Nothing to set up.
Which formats can I download?
JSON, CSV, Excel, XML, RSS and HTML from the run's Storage tab or through the API. The dataset has three ready views: Apps, Charts and search ranks, and Price, in-app purchases and privacy. In CSV and Excel, lists and objects such as in_app_purchases and rating_histogram are flattened into columns such as in_app_purchases/0/price and rating_histogram/5.
Can I use it from Claude, ChatGPT or Cursor (MCP)?
Yes, through Apify's MCP server. Connector URL: https://mcp.apify.com/?tools=themineworks/apple-app-store-scraper
- Claude: Settings > Connectors > Add custom connector, paste the URL, sign in with Apify.
- ChatGPT: turn on developer mode, add an MCP connector with the URL, sign in with Apify.
- Cursor or VS Code: add it as an HTTP MCP server with that URL.
- Claude Code:
claude mcp add -t http apple-app-store-scraper "https://mcp.apify.com/?tools=themineworks/apple-app-store-scraper"
Is it legal to scrape the App Store?
The actor reads only public app listings that anyone can see without signing in, published by developers so their apps are found, mostly through Apple's own public APIs. You are responsible for how you use the data, including Apple's terms and data protection law such as GDPR and CCPA. This is general information, not legal advice.
Integrations
- Google Sheets: send each run's apps to a sheet with Apify's Google Sheets integration; one row per app fits a sheet as is.
- Make, Zapier and n8n: start a run and read its dataset with the Apify apps and nodes, for example "new apps in the top grossing finance chart every Monday to Slack".
- Webhooks: have Apify call your URL when a run succeeds, then fetch the dataset.
- API and SDKs: run it from Python or JavaScript with the Apify client, or with a plain HTTP call (see "Copy to your AI assistant" above).
- MCP clients: Claude, ChatGPT, Cursor and VS Code can run it as a tool through the connector URL in the FAQ.
More from The Mine Works
Marketing, SEO and reviews
- Facebook Ad Library Scraper
- Google Ads Transparency Scraper
- Similarweb Scraper
- Google News Scraper
- Trustpilot Reviews Scraper
- Google Trends Scraper
- Semrush Scraper
- App Reviews Scraper
- Trustpilot Business Search
- TripAdvisor Reviews Scraper
- Username Checker
- Backlink Building Agent
Social media and video
Leads and business directories
Real estate
Science, health and government data
Jobs and hiring
Company and business data
E-commerce and marketplaces
Food and local services
Developer and AI tools
More tools
Support
Found an app that comes back with a field empty, or a chart that looks different from the App Store? Open an issue in the Issues tab with the input and the run ID, and we will look at it. For a field you need or a new source, email dmineworks@gmail.com.
Search the Apple App Store, look up apps or read the top charts and get every app back as one row, with price, ratings and star histogram, version, size, in-app purchases with prices, privacy labels and screenshots, no login.

