Apple App Store Scraper: App Details, Ratings and Top Charts avatar

Apple App Store Scraper: App Details, Ratings and Top Charts

Pricing

from $1.62 / 1,000 apps

Go to Apify Store
Apple App Store Scraper: App Details, Ratings and Top Charts

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

The Mine Works

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

20 App Store apps with in-app purchases, star histogram and privacy labels in 34 seconds

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_position or chart_position telling 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.

Run it on Apify

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 when country is us.
  • In-app purchases with prices. has_in_app_purchases is true or false for every app with the page opened, and in_app_purchases lists 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_histogram with 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

ParameterTypeDefaultWhat it does
searchQueriesarray of stringsemptySearch terms, one search each, for example meditation. Up to 100.
appIdsarray of stringsemptyApp ids, App Store links or bundle ids. Up to 5,000.
chartsarray of stringsemptyAny of topfree, toppaid, topgrossing, topfreeipad, toppaidipad, topgrossingipad.
chartCategorystringallApp Store genre id for the charts, for example 6014 Games or 6015 Finance.
countrystringusTwo letter storefront code.
maxItemsinteger50Most apps per search term and per chart, 1 to 200. App ids are always all returned.
includePageDetailsbooleantrueOpens each app's App Store page for the fields the API lacks.

Give searchQueries, appIds, charts or any mix.

What data do you get?

GroupFields
Appapp_id, bundle_id, name, subtitle, app_url, icon, icon_small, screenshots, ipad_screenshots, appletv_screenshots, description, release_notes
Developerdeveloper_name, developer_id, developer_url, seller_name, developer_website, copyright, privacy_policy_url
Priceprice, currency, formatted_price, is_free, has_in_app_purchases, in_app_purchases, in_app_purchases_listed
Ratingsrating, rating_count, rating_current_version, rating_count_current_version, rating_histogram
Versionversion, release_date, last_updated, size_bytes, size_mb, minimum_os_version, platforms, features, supported_devices_count
Category and rankprimary_genre, primary_genre_id, genres, genre_ids, chart_rank, chart_rank_category, editors_choice, similar_app_ids
Audiencecontent_rating, age_rating, advisories, languages, languages_full
Privacyprivacy_data_used_to_track, privacy_data_linked_to_you, privacy_data_not_linked_to_you, privacy_data_not_collected
Where it came fromcountry, 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:

FieldWhat it is
app_idThe key to store and join on
bundle_idBundle id
nameApp name
developer_nameDeveloper
pricePrice, 0 when free
currencyCurrency code
ratingAverage rating
rating_countNumber of ratings
versionCurrent version
last_updatedDate of the current version
size_bytesDownload size
primary_genreMain category
content_ratingContent rating
app_urlApp Store link
has_in_app_purchasesSells in-app purchases (pages on)
rating_histogramRatings per star (pages on)
countryStorefront
sourcesearch, 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.

EventWhen it is chargedFree planBronze (Starter)Silver (Scale)Gold (Business)
app-scrapedOnce 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-startOnce 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

  1. Open the actor in Apify Console, set your input and click Save as a new task.
  2. In the task, open Schedules, click Add schedule and pick how often (every day, every Monday at 08:00 and so on).
  3. Compare runs on app_id with chart_position, rating_count, version and price to see rank moves, rating growth, new releases and price changes.
  4. 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"

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

Social media and video

Leads and business directories

LinkedIn

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.