πŸ”₯ Apple Store Api avatar

πŸ”₯ Apple Store Api

Pricing

from $0.20 / 1,000 app results

Go to Apify Store
πŸ”₯ Apple Store Api

πŸ”₯ Apple Store Api

πŸš€ Discover the "Apple Store API" by Bebity! Unlock the power of the Apple Store and unleash its vast potential with ease and efficiency! 🌟 Whether you are an app developer πŸ› οΈ, a data analyst πŸ“Š, or a marketer πŸš€, this versatile tool is your ultimate companion for all your Apple Store data needs.

Pricing

from $0.20 / 1,000 app results

Rating

5.0

(1)

Developer

Bebity

Bebity

Maintained by Community

Actor stats

4

Bookmarked

93

Total users

1

Monthly active users

25 minutes ago

Last modified

Share

header

Apple App Store Scraper β€” apps, charts, reviews, in-app purchases & version history

Brought to you by Bebity

Apple App Store Scraper turns the App Store into clean datasets: app details, search results, top charts, developer catalogues, similar apps, ratings histograms, privacy labels, in-app purchases, version history β€” and user reviews with developer replies, far beyond Apple's usual 500. Paste App Store URLs, app IDs, bundle IDs, search terms or developer names; pick what you want; get JSON, CSV or Excel. iPhone, iPad, Mac, Apple TV, Apple Watch and Vision Pro, in 115 countries.

πŸš€ Version 2 β€” a full rebuild

A ground-up rewrite of the engine, the input and the pricing. Reviews now go past the 500-review wall with developer replies and 4 sort orders; in-app purchases and version history are new; privacy labels work again; every failure is a visible row, never a silent empty run. Priced per result β€” see the changelog.


What does Apple App Store Scraper do?

The App Store has no public API for this data. Apple's official App Store Connect API only covers your own apps; the iTunes Search API returns thin rows and no reviews, charts, privacy or purchases. This actor is the missing App Store API: one input, four actions, three add-on boxes, two datasets.

What you get
πŸ”Ž Search apps Β· actionApps for a keyword, a top chart (free, paid, grossing, new) or a developer β€” by ID or by name
πŸ“± App details Β· actionThe full listing: description, release notes, price, genres, size, languages, devices, screenshots, developer
🧭 Similar apps · actionThe App Store's "You might also like" apps, each as an app row
πŸ’¬ App reviews Β· actionRating, title, text, date, votes, developer reply β€” up to 100,000 per app
πŸͺ App Store page Β· boxPrivacy nutrition labels, in-app purchases with local prices, the 25 latest versions, the app's chart rank and its ratings histogram
⭐ Ratings Β· boxTotal ratings and the 5β˜… β†’ 1β˜… histogram

Who is it for?

  • App marketers & ASO teams β€” track rankings, competitors' listings, pricing and release cadence.
  • Product managers β€” mine thousands of reviews and developer replies for bugs and feature requests.
  • Market researchers & analysts β€” build category or country datasets from charts and search.
  • Investors & agencies β€” monitor portfolios by developer, ratings trends and monetisation (in-app purchases).
  • Privacy researchers β€” compare privacy labels across an entire category.
  • Developers & AI agents β€” call it from the Apify API or MCP and get typed JSON back.

How to scrape App Store data β€” quick start

  1. Click Try for free.
  2. Pick one Action: Search apps, App details, Similar apps or App reviews.
  3. Fill its source β€” Apps for the last three (https://apps.apple.com/us/app/id324684580, 324684580 or com.spotify.client, one per line), Search terms, Chart or Developers for Search apps β€” and tick the extra info you want on each app.
  4. Click Start. Apps land in the default dataset, reviews in the Reviews dataset. Export as JSON, CSV, Excel, XML or HTML, or read them from the API.

Example input

Everything about one app β€” full details, privacy, in-app purchases, version history, chart rank and ratings histogram:

{
"action": "appDetails",
"appIdsOrUrls": ["https://apps.apple.com/us/app/calm-sleep-meditation/id571800810"],
"includeAppStorePage": true
}

A search and a chart in one run β€” Health & Fitness apps only, with their ratings histogram:

{
"action": "searchApps",
"searchTerms": ["meditation"],
"chart": "top-free",
"genre": "6013",
"includeRatings": true,
"maxItems": 100
}

The 700 latest reviews of one app, developer replies included:

{ "action": "appReviews", "appIdsOrUrls": ["571800810"], "maxReviewsPerApp": 700, "maxItems": 1000 }

Example output

One app row from the first input (long strings and arrays shortened):

{
"id": 571800810,
"appId": "com.calm.calmapp",
"title": "Calm",
"url": "https://apps.apple.com/us/app/calm/id571800810?uo=4",
"sourceType": "direct",
"position": 1,
"platform": "iphone",
"description": "Calm is the #1 app for sleep, meditation, and relaxation…",
"genres": ["Health & Fitness", "Lifestyle"],
"contentRating": "4+",
"version": "7.0.7",
"updated": "2026-09-04T13:22:28Z",
"price": 0,
"currency": "USD",
"free": true,
"developer": "Calm.com",
"developerId": 571800813,
"developerWebsite": "https://www.calm.com",
"score": 4.77259,
"reviews": 1980663,
"ratings": { "total": 1980663, "histogram": { "1": 32757, "2": 16467, "3": 52378, "4": 165234, "5": 1713827 } },
"privacy": [
{ "identifier": "DATA_USED_TO_TRACK_YOU", "title": "Data Used to Track You",
"categories": [{ "identifier": "PURCHASES", "title": "Purchases" }, { "identifier": "IDENTIFIERS", "title": "Identifiers" }] }
],
"inAppPurchases": [{ "name": "Calm Premium", "price": "$79.99" }, { "name": "Calm Premium", "price": "$16.99" }],
"versionHistory": [{ "version": "7.0.7", "date": "2026-09-04T13:22:28.000Z", "releaseNotes": "Thanks for using Calm…" }],
"chartRank": { "position": 55, "chart": "top-free", "genre": "Health & Fitness", "genreId": "6013" },
"scrapedAt": "2026-09-13T14:17:52.188Z"
}

Two review rows (reviewer names anonymised):

[
{
"id": "14540620822", "appId": 571800810, "userName": "reviewer_1", "score": 1,
"title": "Stopped working", "text": "I have used this app for many years…",
"updated": "2026-09-12T11:26:30Z", "voteCount": 0, "voteSum": 0, "isEdited": false,
"developerResponse": null, "version": null, "url": null, "position": 1
},
{
"id": "14531645258", "appId": 571800810, "userName": "reviewer_2", "score": 1,
"title": "Latest update in Sept 2026 ruined the app", "text": "Latest update ruined the app…",
"updated": "2026-09-10T03:40:30Z", "voteCount": 0, "voteSum": 0, "isEdited": false,
"developerResponse": { "id": "66163001", "body": "Sorry about this β€” try deleting and reinstalling the app first…", "modified": "2026-09-11T06:37:10Z" },
"version": null, "url": null, "position": 15
}
]

Input parameters

ParameterTypeDefaultWhat it does
πŸ”¨ actionselect, requiredβ€”searchApps Β· appDetails Β· similarApps Β· appReviews β€” one per run
βž• includeAppFullDetailscheckboxonThe app's full details. Always on for appDetails; unticked, a search or similar apps give short rows (see below)
βž• includeAppStorePagecheckboxoffPrivacy, in-app purchases, version history, chart rank and ratings histogram, from the app's App Store page
βž• includeRatingscheckboxoffRatings total and histogram only β€” already in the previous box when it is ticked
πŸ”— appIdsOrUrlslistβ€”Read by appDetails, similarApps and appReviews: one app per line β€” numeric ID, bundle ID or App Store URL
πŸ‘€ developerslistβ€”Read by searchApps: numeric developer ID or name (Supercell). Alone: the developer's whole catalogue. With searchTerms: filters the search results
πŸ”Ž searchTermslistβ€”Read by searchApps: one keyword per line; each term is its own source
πŸ“Š chartselectnoneRead by searchApps: top-free Β· top-paid Β· top-grossing Β· new Β· new-free Β· new-paid
🏷️ genreselectallApple's official list: 27 genres and 61 sub-genres, e.g. 6014 Games, 7012 Puzzle
πŸ’¬ maxReviewsPerAppinteger50Read by appReviews: 1 to 100,000
πŸ’¬ reviewsSortselectrecentRead by appReviews: recent Β· helpful Β· favorable (5β˜… first) Β· critical (1β˜… first)
🌍 platformselectiphoneiphone Β· ipad Β· mac Β· tv Β· watch Β· vision β€” applies to search and charts
🌍 countrytextusTwo-letter store code β€” catalogue, prices and currency. Empty via the API: the country of the first App Store URL
🌍 langtextenMetadata language when the app is localised in that store (49 codes). Reviews are never translated
βš™οΈ maxItemsinteger200Hard cap on rows for the whole run, apps and reviews together

The boxes apply to every app row the action produces β€” found apps, targeted apps or similar apps. appReviews produces reviews only, so the boxes have no effect there. On a source without full rows (iPhone, Apple TV, Watch or Vision search, a chart, similar apps), ticking ratings or filtering by developer or genre adds the full details automatically: they are needed to read ratings and filter reliably.

What data does it extract?

App rows β€” default dataset

GroupFields
Identityid, appId (bundle ID), title, url, icon
Listingdescription, releaseNotes, version, released, updated, genres, genreIds, primaryGenre, contentRating, advisories, languages, size, requiredOsVersion, supportedDevices, features, screenshots, ipadScreenshots, appletvScreenshots
Priceprice, currency, free, formattedPrice
Developerdeveloper, developerId, developerUrl, developerWebsite, sellerName, developerConfidence (when resolved from a name)
Ratingsscore, reviews (rating count), currentVersionScore, currentVersionReviews, ratings { total, histogram }
Enrichmentsprivacy, inAppPurchases [{ name, price }], versionHistory [{ version, date, releaseNotes }], chartRank { position, chart, genre, genreId }
ProvenancesourceType (search Β· chart Β· developer Β· direct Β· similar), sourceAppId, searchTerm, position, platform, scrapedAt

Short rows. With includeAppFullDetails unticked, a row carries what the source itself gives: a chart gives name, icon, description, price, developer, genre and release date; an Apple TV, Watch or Vision search gives name, developer, rating, age rating and price type; an iPhone search or similar apps give the app ID and store URL only. Every field is still there β€” null when the source doesn't have it. An iPad or Mac search and a developer catalogue always give full rows.

An enrichment you did not ask for is absent from the row; one Apple does not publish is empty ([], or histogram: {}).

Review rows β€” Reviews dataset

id, appId, userName, userUrl, score, title, text, updated, voteCount, voteSum, isEdited, developerResponse { id, body, modified }, position, scrapedAt β€” plus version and url, which Apple does not publish with deep reviews (null).

Failed rows

A request that fails for good becomes a row: { "failed": true, "reason", "inputUrl", "error", "scrapedAt" }, with reason one of not-found Β· parse-error Β· rate-limited Β· timeout Β· chart-unavailable Β· developer-unresolved Β· upstream-empty. Both datasets have a Failed items view. Failed rows are never charged.

How much does it cost to scrape the App Store?

Pay per result β€” no subscription, no platform usage costs. You pay for the rows delivered, plus $0.00005 when a run starts.

EventFree planBronze Β· SilverGold and aboveCharged for
scraped-app$0.20 / 1,000$0.20 / 1,000$0.20 / 1,000each app row β€” search, chart, developer catalogue, app details, similar apps
app-full-details+$0.30 / 1,000+$0.30 / 1,000+$0.20 / 1,000each app row with full details β€” always with App details, and when ratings or a filter add them automatically
app-public-store-details+$0.30 / 1,000+$0.30 / 1,000+$0.20 / 1,000each App Store page read β€” privacy, in-app purchases, versions, chart rank and histogram, one charge however much it gives
app-ratings+$0.20 / 1,000+$0.20 / 1,000+$0.20 / 1,000each ratings histogram read on its own β€” never when the App Store page is ticked
app-review$0.50 / 1,000$0.40 / 1,000$0.40 / 1,000each review
apify-actor-start$0.00005$0.00005$0.00005once per run β€” Apify's start event, at the actor's fixed 1 GB
RunCost on the Free plan
200 apps for one search term, full details$0.10
The top-free chart (100 apps), short rows$0.02
50 apps with full details and their App Store page$0.04
100 apps for a keyword with ratings$0.07
5,000 critical reviews of one app$2.50 β€” $2.00 from Bronze

With the $5 of monthly credit on Apify's free plan, that is about 10,000 apps with full details or 10,000 reviews. Set a maximum cost per run in the run options, and maxItems, to cap any run. A box that brings nothing is not charged β€” a histogram Apple does not publish, or an App Store page that failed.

Modes at a glance

ActionYou fill…You get
searchAppssearchTermsup to ~200 apps per term
searchAppschart (+ genre, platform)up to 100 ranked apps
searchAppsdevelopersthe developer's catalogue, up to 200 apps
searchAppssearchTerms + developersthe search results from those developers only
appDetailsappIdsOrUrlsone row per app, full details included
similarAppsappIdsOrUrlsone row per similar app, linked by sourceAppId
appReviewsappIdsOrUrlsreviews only, in the Reviews dataset

Limitations

  • One action per run. Reviews of the apps a search finds take two runs: the search, then appReviews on their IDs.
  • Short rows: without full details, an iPhone search or similar apps give the app ID and URL only.
  • Search: about 200 apps per term, no pagination beyond. Apple TV, Watch and Vision searches return 12 apps per term. A Mac search also returns iPad apps that run on the Mac.
  • Developers: 200 apps per developer. Charts: 100 apps. iPad has no new charts, Mac only top free, Apple TV top free/paid/grossing, Watch and Vision none. Apple ignores genre on new charts: the actor filters them after the fact, so fewer than 100 apps can come back.
  • Reviews: up to 100,000 per app, one store per run. Deep reviews carry no app version and no review URL. Many apps have far fewer reviews β€” the run stops by itself.
  • In-app purchases: the purchases the store page lists β€” 10 at most β€” with prices as the store prints them (5,99 €). Version history: the 25 latest versions.
  • Mac apps: Apple publishes no ratings and no similar apps for the Mac App Store β€” ratings is null and similar apps come back as a failed row explaining why.
  • Stores and languages: 115 country stores and 49 language codes; any other code is refused before a single request. The Stickers genre returns nothing on charts.
  • Ratings, privacy, purchases and versions come from the App Store web page and can lag behind an Apple redesign β€” reported as a parse-error row, never as silent empty data.

Tips

  • One box for all the store extras. Privacy, in-app purchases, version history, chart rank and the ratings histogram come from the same App Store page β€” one app-public-store-details per app. Tick ratings alone when the histogram is all you need: its page is 10Γ— lighter.
  • Untick full details to list a chart or collect app IDs at $0.20 per 1,000.
  • Paste URLs as they are. The country of the first URL becomes the run's store when you leave country empty via the API.
  • Developer names are resolved for you; each app row carries a developerConfidence. Use the numeric ID when you need certainty.
  • Target the extremes of the review history with critical or favorable β€” they reach the 1β˜… or 5β˜… reviews first, however old.
  • Raise maxItems for review-heavy runs: it caps apps and reviews together.
  • Schedule the actor to track ranks, prices or new reviews over time, and connect it to Google Sheets, Slack, Make or Zapier from the Integrations tab.

FAQ

Is there an official App Store API? Apple's App Store Connect API only exposes your own apps. The iTunes Search API returns basic listings without reviews, charts, privacy labels or purchases. This actor reads Apple's public App Store pages and feeds and returns them as one structured API.

Is it legal to scrape the App Store? The actor only collects publicly visible data. Reviews contain reviewer pseudonyms: if you store them, handle them under the privacy law that applies to you (GDPR, CCPA). This is not legal advice.

How many reviews can I get? Up to 100,000 per app, per country store β€” Apple serves the full history (over 200,000 reviews measured on Spotify). The run stops by itself when an app has no more.

Why is version empty on reviews? Apple does not publish the reviewed app version with deep review history. Every other field β€” including the developer's reply β€” is there.

Which platforms are supported? iPhone, iPad, Mac, Apple TV, Apple Watch and Vision Pro, through platform. Details, reviews and privacy labels work for any app ID, whatever its platform.

Why did my run return fewer rows than expected? Check the Failed items view of each dataset: every failure has a reason. The other usual causes are maxItems and Apple's own caps listed in Limitations.

What happens if my input is invalid? The run stops before sending any request and nothing is charged: the log explains in red what to fix, and the run ends as succeeded. Values the input form itself forbids are refused by Apify before the run starts.

Can I call it from code or an AI agent? Yes β€” from the Apify API, the Python and JavaScript clients, or Apify's MCP server.

Something broke, or I need a field you don't have? Open an issue in the Issues tab β€” we read them. For a custom build, contact us at bebity.io.

More from Bebity

Changelog

Full history in CHANGELOG.md.

2.0.2 β€” 2026-09-15

Pay-per-event is live. App rows $0.20 / 1,000; full details and the App Store page +$0.30 / 1,000 (+$0.20 from Gold); ratings +$0.20 / 1,000; reviews $0.50 / 1,000 ($0.40 from Bronze); $0.00005 per run start.

2.0.1 β€” 2026-09-15

An invalid input no longer fails the run: the log explains what to fix, nothing is requested or charged, and the run ends as succeeded. Memory is fixed at 1 GB.

2.0.0 β€” 2026-09-15 Β· full rewrite

Breaking β€” input. One action per run: action is now searchApps, appDetails, similarApps or appReviews, and the extras are checkboxes β€” includeAppFullDetails (replaces fullDetail, on by default), includeAppStorePage, includeRatings. appIdOrUrl β†’ appIdsOrUrls, devIdOrUrl β†’ developers, search β†’ searchTerms (all lists); collection / category β†’ chart / genre; num β†’ maxItems and maxReviewsPerApp. A v1 input is refused with a message that maps it to the new fields.

Breaking β€” output. App rows keep the 33 historical fields and their types (id and developerId stay numbers). Reviews moved to their own Reviews dataset. Failures are failed: true rows instead of empty runs.

New. Pay-per-event pricing Β· iPad, Mac, Apple TV, Watch and Vision Β· Apple TV charts Β· developer lookup by name Β· in-app purchases Β· version history Β· chart rank Β· reviews up to 100,000 per app with developer replies, isEdited and favorable / critical sorts Β· ratings histogram with its total Β· provenance fields (sourceType, searchTerm, position, sourceAppId).

Fixed. Privacy labels (dead since Apple removed the page token) Β· numeric app IDs sent as bundle IDs (0 rows) Β· App Store URLs never parsed Β· reviews capped at 50 Β· developer catalogues capped at 50 Β· rating counts truncated (42,036,572 read as 42).

0.0.18 β€” 2023-07

Legacy actor: a wrapper around the app-store-scraper library, on a monthly subscription.