# App Store Reviews Scraper API & App Data – $0.06/1K, No Login (`k-data-lab/app-store-scraper`) Actor

Apple App Store scraper and iOS app reviews API, no login. Reviews past the 500 RSS cap (stars, text, version, developer reply), app details with rating histogram, privacy labels, in-app purchases, version history and similar apps, plus search ranks and top charts in 72 countries. $0.06/1K reviews.

- **URL**: https://apify.com/k-data-lab/app-store-scraper.md
- **Developed by:** [K-Data Lab](https://apify.com/k-data-lab) (community)
- **Categories:** Developer tools, SEO tools, AI
- **Features:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.04 / 1,000 reviews

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Apple App Store Scraper & Reviews API – iOS, $0.06/1K, No Login

**An Apple App Store reviews API and app scraper. Paste an App Store link, an app id or a bundle id, click Start, and you get the app's store data and its reviews as a table.** The actor reads the public **Apple App Store** the way a logged-out visitor sees it. For reviews you get stars, title, text, date, the app version the reviewer used and **the developer's public reply**. It goes **past the 500-review limit of Apple's RSS feed** (we tested 100,000 reviews deep on one app). For apps you get the rating, a **1★–5★ histogram**, price, **App Privacy labels**, **in-app purchases with prices**, the **last 25 versions with release notes**, Apple's **similar apps**, search ranks and top charts in **72 countries**.

- ✅ **No login, no API key, no Apple developer account.** Paste `https://apps.apple.com/us/app/spotify-music-and-podcasts/id324684580` and run.
- 📚 **The full review history, not a sample.** Feed-based scrapers stop at 500 reviews per app and country. This actor pages through the whole written-review list, newest first, most helpful, most favorable or most critical.
- 🆓 **Your first runs are free.** The prefilled input (Spotify, 20 reviews) finishes in seconds and costs nothing, and every month you get 100 app records and 1,000 reviews free.
- 🔒 **Privacy labels, in-app purchases, version history, similar apps** for every app you list, from the same page as the histogram, at no extra charge.
- 💰 After that, **$0.06 per 1,000 reviews** and **$0.20 per 1,000 app records** (cheaper on higher Apify plans).
- 🔔 **Built for monitoring.** Use "only reviews since 1 day", "only 1★ and 2★", "only reviews with a developer reply" and newest-first sort, then schedule it daily.
- 🔌 **Use it as an API**: one HTTP call returns JSON, CSV or Excel. It works with n8n, Make, Zapier and AI agents (MCP).

Example rows (real data, 2026-11-08):

| type | country | appId | score | appVersion | text / title | developerReply / extras |
|---|---|---|---|---|---|---|
| app | us | 324684580 | 4.77 (43,001,080 ratings) | 9.1.94 | Spotify: Music and Podcasts | tracksUser: true, 25 versions, 10 similar apps |
| app | us | 570060128 | 4.72 | 7.147.1 | Duolingo: Learn Languages | 10 in-app purchases (Super Duolingo $9.99 …) |
| review | us | 324684580 | 3 | (older than the newest 500) | "To many adds…" | "Hey! We hear you and we'll pass your feedback along to the Ads team…" |

> Independent tool by K-Data Lab. It is not affiliated with, endorsed or sponsored by Apple. It reads only public App Store data
> without logging in and returns only what Apple shows there. App Store is a trademark of Apple Inc.

#### 🔍 What does App Store Scraper do?

- **Reviews of any iOS, iPadOS or Mac app.** Sort by newest, most helpful, most favorable or most critical. Filter by stars, by date ("since 7 days") or to reviews with a developer reply. You can pull thousands per app and country.
- **App details** by App Store link, numeric id (`324684580`) or bundle id (`com.spotify.client`): rating, ratings count, current-version rating, **star histogram**, price, category, age rating, version, release notes, release dates, size, languages, developer, website, icon and screenshots. For apps you list, also the **App Privacy labels** (data used to track you, linked to you, not linked, with purposes), **in-app purchases** with local prices, the **version history** (newest 25 versions, dates, release notes) and **similar apps** ("You Might Also Like").
- **Keyword search**: the apps Apple returns for a search term (up to 200) with their **rank**, for ASO keyword tracking.
- **Top charts**: top free, top paid and top grossing for iPhone and iPad, plus top free for Mac. You can pick all categories or one, such as Games, Finance or Health & Fitness (up to 100 ranks).
- **Developer catalogue**: every app of a developer, from a developer link or id.
- **72 countries in one run**: every app is scraped in each country you pick, and each row says which country it came from. Reviews are written per country (WhatsApp's US and German reviews are different people), so more countries means more reviews.

#### 💡 Why choose this actor?

| | This actor | Typical RSS-based review scrapers |
|---|---|---|
| Reviews per app and country | **No 500 cap** (tested 100,000 deep) | 500 maximum |
| Review sorts | Newest, most helpful, most favorable, most critical | Newest or most helpful |
| Developer reply + edited flag | ✅ in every review row | ❌ |
| App version on reviews | ✅ newest/most helpful 500 | ✅ |
| App details, histogram, search, charts, developer apps | ✅ same actor | separate actors |
| Privacy labels, in-app purchases, version history, similar apps | ✅ included, no extra event | rarely |
| Price per 1,000 reviews | **$0.06** (Free plan), $0.04 (Gold) | from $0.08–$0.10 |
| Free every month | **1,000 reviews + 100 apps** | usually none |

- ⚡ **Fast and light**: plain HTTP, 256 MB, 200 reviews per request. In our tests 5,000 reviews took 21 s and 2,177 reviews across 3 countries took 5 s, with 0 retries.
- 🛡️ **You are not charged for misses or repeats.** An app that doesn't exist costs nothing, and a review is never returned twice.
- 🧭 **Clear errors**: an id that isn't sold in a country, a typo or an unknown developer gets a status in `RUN_SUMMARY`, and the other inputs keep going.

#### 📥 Input example

```json
{
  "apps": ["https://apps.apple.com/us/app/spotify-music-and-podcasts/id324684580", "310633997", "com.duolingo.DuolingoMobile"],
  "countries": ["us", "gb", "de"],
  "maxReviewsPerApp": 1000,
  "reviewsSort": "newest",
  "reviewStars": ["1", "2"],
  "reviewsSince": "30 days",
  "searchTerms": ["budget planner"],
  "charts": ["top-grossing-iphone"],
  "chartCategory": "6014",
  "maxAppsPerList": 25
}
```

#### 🧪 Ready-made inputs

| Goal | Input |
|---|---|
| Newest reviews of one app | `{"apps": ["324684580"], "maxReviewsPerApp": 500}` |
| Daily complaint monitor | `{"apps": ["324684580"], "reviewStars": ["1","2"], "reviewsSince": "1 day", "onlyReviews": true}` |
| How a competitor answers reviews | `{"apps": ["932493382"], "onlyWithDeveloperReply": true, "maxReviewsPerApp": 300}` |
| Reviews in 5 markets | `{"apps": ["310633997"], "countries": ["us","gb","de","jp","br"], "maxReviewsPerApp": 1000}` |
| Keyword rank tracking | `{"searchTerms": ["vpn", "habit tracker"], "maxAppsPerList": 50, "maxReviewsPerApp": 0}` |
| Top grossing games, US + Japan | `{"charts": ["top-grossing-iphone"], "chartCategory": "6014", "countries": ["us","jp"], "maxAppsPerList": 100}` |
| A developer's whole catalogue | `{"developers": ["https://apps.apple.com/us/developer/spotify/id324684583"], "maxReviewsPerApp": 0}` |

#### 📤 Output example

Each row is either an app record (`"type": "app"`) or a review (`"type": "review"`). The dataset has two views, **Apps** and **Reviews**.

Review row:

```json
{
  "type": "review",
  "appId": "324684580",
  "appTitle": "Spotify: Music and Podcasts",
  "country": "us",
  "reviewId": "14711336065",
  "score": 3,
  "title": "Ads",
  "text": "To many adds👿👿👿👿",
  "date": "2026-10-25T22:02:33Z",
  "isEdited": false,
  "userName": "Cjtehe",
  "helpfulVotes": 0,
  "totalVotes": 0,
  "appVersion": null,
  "developerReply": "Hey! We hear you and we'll pass your feedback along to the Ads team. For an ad-free experience, we'd recommend checking out our Premium plans…",
  "developerReplyDate": "2026-10-27T13:37:43Z",
  "position": 5032,
  "reviewsSort": "newest",
  "appUrl": "https://apps.apple.com/us/app/id324684580",
  "scrapedAt": "2026-11-08T12:11:30Z"
}
```

App row (shortened):

```json
{
  "type": "app",
  "appId": "324684580",
  "bundleId": "com.spotify.client",
  "title": "Spotify: Music and Podcasts",
  "country": "us",
  "developer": "Spotify",
  "developerId": "324684583",
  "score": 4.76956,
  "ratingsCount": 43001080,
  "histogram": {"1": 957417, "2": 380396, "3": 960656, "4": 3017139, "5": 37685472},
  "price": 0,
  "currency": "USD",
  "priceText": "Free",
  "genre": "Music",
  "contentRating": "12+",
  "version": "9.1.94",
  "currentVersionReleaseDate": "2026-10-23T17:59:53Z",
  "releaseDate": "2011-07-14T11:22:37Z",
  "minimumOsVersion": "16.1",
  "sizeBytes": 325112832,
  "platforms": ["iPad", "iPhone"],
  "icon": "https://is1-ssl.mzstatic.com/image/thumb/…/512x512bb.jpg",
  "url": "https://apps.apple.com/us/app/id324684580",
  "tracksUser": true,
  "privacyTypes": ["DATA_USED_TO_TRACK_YOU", "DATA_LINKED_TO_YOU"],
  "privacyLabels": [{"type": "DATA_USED_TO_TRACK_YOU", "title": "Data Used to Track You",
    "categories": [{"category": "Contact Info", "categoryId": "CONTACT_INFO", "dataTypes": ["Email Address", "Phone Number"]}, …], "purposes": []}, …],
  "privacyPolicyUrl": "http://www.spotify.com/legal/privacy-policy/",
  "hasInAppPurchases": false,
  "inAppPurchases": [],
  "versionHistory": [{"version": "9.1.94", "date": "2026-10-23T17:59:53Z", "releaseNotes": "We're always making changes and improvements to Spotify…"}, …],
  "similarApps": [{"appId": "…", "title": "SoundCloud: Discover New Music", "developer": "SoundCloud", "score": 4.7}, …],
  "searchTerm": null, "searchRank": null, "chart": null, "chartRank": null
}
```

Apps found by search also carry `searchTerm` + `searchRank`, by chart `chart` + `chartCategory` + `chartRank`, by developer `developerQuery`. Every run also writes a `RUN_SUMMARY` record with a status per input (OK, NOT_FOUND, NO_RESULTS, INVALID_INPUT, ERROR), counts and the free quota left.

#### 💰 How much does it cost to scrape App Store reviews?

| Event | Free plan | Bronze | Silver | Gold+ |
|---|---|---|---|---|
| Review | $0.00006 | $0.00005 | $0.000045 | $0.00004 |
| App record | $0.0002 | $0.00018 | $0.00016 | $0.00015 |
| Actor start | $0.005 | $0.005 | $0.005 | $0.005 |

- **Free every month:** the first 100 app records and 1,000 reviews (per Apify account, calendar month, UTC).
- 10,000 reviews of one app ≈ **$0.61** on the Free plan, about $0.41 on Gold.
- A daily "new 1★–2★ reviews since yesterday" run for 5 apps usually costs about $0.005–0.01 a day.
- Set **Maximum cost per run** in the run options. The actor stops cleanly at that amount and tells you so in the status message.

#### 🚀 How to scrape App Store reviews (step by step)

1. Open the App Store page of the app (apps.apple.com) and copy the link, or just the digits after `id`.
2. Paste it into **Apps**, pick the **countries**, and set **Max reviews per app**.
3. Optional: choose the sort, star filter, "only reviews since" or "only with developer reply".
4. Click **Start**. Download JSON, CSV or Excel, or open the **Reviews** / **Apps** views.
5. Schedule it (daily or hourly) with `reviewsSince` to monitor new reviews.

#### 📊 Popular use cases

- **Review monitoring**: new 1–2★ reviews every morning into Slack, a Google Sheet or a ticket queue.
- **Competitor research**: complaints, feature requests and praise for rival apps, grouped by app version.
- **Support benchmarking**: which reviews a competitor answers, how fast (`developerReplyDate` − `date`) and in what tone.
- **ASO**: keyword ranks per country, top-chart positions per category, ratings and histograms over time.
- **LLM and sentiment pipelines**: large, clean review sets in many languages with stars as labels.
- **Market maps**: every app of a developer or chart, with price, category, size and release dates.

#### 🔌 Integrations & API

```bash
curl -X POST "https://api.apify.com/v2/acts/k-data-lab~app-store-scraper/run-sync-get-dataset-items?token=<YOUR_TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{"apps": ["324684580"], "maxReviewsPerApp": 200, "reviewsSince": "7 days", "onlyReviews": true}'
```

- **Python / JavaScript**: use the `apify-client` package, for example `client.actor("k-data-lab/app-store-scraper").call(run_input=...)`.
- **No-code**: Make, Zapier, n8n and Google Sheets integrations. Webhooks can post new reviews to Slack or email.

#### 🤖 Use it from AI agents (MCP)

Give Claude, ChatGPT, Cursor, VS Code or n8n a ready-made `app-store-scraper` tool through [Apify's MCP server](https://mcp.apify.com):

- This actor only: `https://mcp.apify.com?tools=actors,docs,k-data-lab/app-store-scraper`
- Both app stores (App Store + Google Play): `https://mcp.apify.com?tools=actors,docs,k-data-lab/app-store-scraper,k-data-lab/google-play-scraper`

```bash
claude mcp add --transport http apify "https://mcp.apify.com?tools=actors,docs,k-data-lab/app-store-scraper"
```

Claude Desktop: Settings → Connectors → Add custom connector, then paste the same URL. In Cursor or VS Code, add it as an HTTP MCP server with the header `Authorization: Bearer <YOUR_APIFY_TOKEN>`.

**Try asking**

- "Get the 200 most critical App Store reviews of Duolingo in the US and the UK and group the complaints by topic."
- "Which of the top 50 grossing iPhone games in Japan were updated this month?"
- "Every morning, fetch yesterday's 1-star App Store reviews of app 324684580 and summarise them."

#### 💡 Tips

- **Countries matter.** Each country has its own reviews, so a small app may have 0 written reviews in some countries. That is an `OK` status with `reviews: 0`, not an error.
- `ratingsCount` counts star ratings. Most people rate without writing, so the number of written reviews is much smaller.
- `appVersion` is filled for the newest (or most helpful) 500 reviews per app and country, because Apple only publishes it for those. Older reviews have `appVersion: null`, and the most favorable/critical sorts have none.
- With star, reply or date filters on a sort other than newest, the actor reads up to 20,000 reviews per app and country to find matches. You pay only for matches. For "since" monitoring, keep the newest sort: it stops at the first older review.
- With "Most critical" sort, 1★ reviews come first, so `reviewStars: ["1"]` plus critical sort is the fastest way to collect complaints.
- Search, developer and chart rows have no histogram, privacy labels, in-app purchases, version history or similar apps (that needs one extra page per app). Put the apps in **Apps** if you need them.
- Privacy label and in-app purchase titles come in the store's language (German store → German titles); `type`, `categoryId` and `purposeId` are always the same English codes, so filter on those.

#### ❓ FAQ

**Is there a limit of 500 reviews?** Not here. Apple's customer-review RSS feed stops at 10 pages of 50. This actor reads the review list the App Store pages through, 200 at a time, as deep as the app's history goes.

**Do I need an Apple account or API key?** No. Everything is public data a logged-out visitor can see.

**Which countries are supported?** 72 storefronts. We tested each one to make sure it returns that country's reviews: us, gb, ca, au, nz, ie, in, sg, de, fr, it, es, nl, be, lu, at, ch, pt, se, no, dk, fi, pl, cz, sk, hu, ro, bg, gr, hr, si, ee, lv, lt, ua, ru, kz, tr, il, sa, ae, qa, kw, eg, ma, ng, ke, za, jp, kr, cn, tw, hk, my, th, id, ph, vn, pk, lk, br, mx, ar, cl, co, pe, ve, ec, uy, cr, gt, do.

**Does it return reviewer profiles or emails?** No. You get the public nickname shown on the review and nothing else about the reviewer.

**Is "most helpful" sorted by helpfulVotes?** It is Apple's own "Most Helpful" order, which weighs more than the vote count. Sort by `helpfulVotes` yourself if you need that.

**Can I get in-app purchase lists or privacy labels?** Yes. Every app you put in **Apps** gets `inAppPurchases` (name + local price, as Apple lists them on the page, usually the top 10), `privacyLabels`, `privacyTypes`, `tracksUser` and `privacyPolicyUrl`. Turn off "Add star histogram, privacy labels …" if you don't need them.

**Can I get the full version history?** The store page shows the newest 25 versions with dates and release notes; that is what `versionHistory` holds.

**Is it legal?** The actor collects public, non-personal app data and public reviews. You are responsible for how you use the data under Apple's terms and your local law (for example GDPR for reviewer nicknames). Please don't republish full review texts as your own content.

#### 🧰 More from K-Data Lab

**App stores and ads**

- [Google Play Scraper](https://apify.com/k-data-lab/google-play-scraper): the same for Android: reviews, exact installs, histogram, search and developers
- [Google Ad Library Scraper](https://apify.com/k-data-lab/google-ad-library-scraper): every Google ad a competitor runs (Ads Transparency Center)

**Amazon**

- [Amazon ASIN Rating Scraper](https://apify.com/k-data-lab/amazon-asin-rating-scraper): rating, review count and star split per ASIN
- [Amazon Seller Central Review Scraper](https://apify.com/k-data-lab/amazon-seller-central-review-scraper): your own brand's reviews from Seller Central

**Social and video**

- [YouTube Scraper](https://apify.com/k-data-lab/youtube-scraper) · [YouTube Comments Scraper](https://apify.com/k-data-lab/youtube-comments-scraper) · [TikTok Scraper](https://apify.com/k-data-lab/tiktok-scraper) · [X Tweet Scraper](https://apify.com/k-data-lab/x-tweet-scraper) · [Telegram Channel Scraper](https://apify.com/k-data-lab/telegram-channel-scraper)

**Local, travel and food**

- [Google Maps Scraper](https://apify.com/k-data-lab/google-maps-scraper) · [Agoda Scraper](https://apify.com/k-data-lab/agoda-scraper) · [Airline Award Seat Scraper](https://apify.com/k-data-lab/airline-award-seat-scraper) · [Uber Eats & Deliveroo Scraper](https://apify.com/k-data-lab/uber-eats-deliveroo-scraper)

**Korea**

- Music charts: [Melon](https://apify.com/k-data-lab/melon-scraper) · [Genie](https://apify.com/k-data-lab/genie-scraper) · [Bugs](https://apify.com/k-data-lab/bugs-scraper) · [FLO](https://apify.com/k-data-lab/flo-scraper) · [VIBE](https://apify.com/k-data-lab/vibe-scraper) · [all five in one](https://apify.com/k-data-lab/korean-music-chart-scraper)
- Real estate: [KB부동산](https://apify.com/k-data-lab/kbland-scraper) · [부동산114](https://apify.com/k-data-lab/r114-scraper)

#### 💬 Feedback

Missing a field or found a wrong value? Open an issue on the actor's **Issues** tab. We answer the same day.

Tags: apple app store scraper, app store reviews api, app privacy labels, in-app purchases, app version history, similar apps, app store reviews scraper, ios app reviews, apple app store scraper, itunes reviews, app store scraper, iphone app reviews, app store api, aso, app store optimization, app review monitoring, top charts, app store search ranking, developer replies

# Changelog

This Actor's version history is a separate document: https://apify.com/k-data-lab/app-store-scraper/changelog.md

# Actor input Schema

## `apps` (type: `array`):

Apps to scrape, one per item: an App Store link, the numeric app id from the link (the digits after "id"), or the bundle id. Each returns the app record (rating, star histogram, price, version, privacy labels, in-app purchases, version history …) plus its reviews. Example: \["https://apps.apple.com/us/app/spotify-music-and-podcasts/id324684580", "310633997", "com.duolingo.DuolingoMobile"]. Use this, search terms, developers or charts (at least one).

## `countries` (type: `array`):

App Store countries to scrape (two-letter codes). Reviews, prices and charts differ per country, so every app is scraped in every country you pick and each row says which country it came from. Example: \["us", "gb", "de"]. Default: us.

## `searchTerms` (type: `array`):

Keywords to search the App Store for, like a visitor typing in the search box. Each term returns its top apps with their rank (Apple returns up to 200 per term), so you can track keyword positions. Example: \["vpn", "budget planner"].

## `developers` (type: `array`):

Developer page links or numeric developer ids. Returns every app the developer publishes in that country. Example: \["https://apps.apple.com/us/developer/spotify/id324684583", "284882218"].

## `charts` (type: `array`):

Apple's top charts to read (up to 100 ranked apps each, per country): top free / paid / grossing for iPhone and iPad, and top free for Mac. Example: \["top-free-iphone", "top-grossing-iphone"].

## `chartCategory` (type: `string`):

Category for iPhone and iPad charts. Mac charts always use all categories. Example: "6014" for Games.

## `maxAppsPerList` (type: `integer`):

Upper limit of apps for each search term, developer or chart, per country (1–200). Apple returns up to 200 apps per search term and 100 per chart. Example: 10.

## `reviewsForListedApps` (type: `boolean`):

Off: searches, developers and charts return app records only (cheap ranking data). On: each listed app also gets up to "Max reviews per app" reviews.

## `maxReviewsPerApp` (type: `integer`):

How many reviews to return for each app in each country. Reviews are read deep into the history (not capped at 500). 0 = app records only, no reviews. Example: 1000 for a large sample, 0 for app metadata only.

## `reviewsSort` (type: `string`):

Review order: newest first (best for monitoring), most helpful, most favorable (high stars first) or most critical (low stars first). Example: "newest".

## `reviewStars` (type: `array`):

Return only reviews with these star ratings, as strings "1"–"5". Example: \["1", "2"] for complaints. Leave empty for all ratings. Tip: combine 1–2 stars with "Most critical" sort to find them fastest.

## `reviewsSince` (type: `string`):

Return only reviews posted on or after this date: a date (2026-10-01) or a period back from now ("7 days", "2 weeks", "12 hours"). With newest-first sort the run stops as soon as it reaches older reviews, so daily monitoring runs are fast and cheap. Example: "7 days".

## `onlyWithDeveloperReply` (type: `boolean`):

Return only reviews the app's developer publicly answered (the reply text and date are in every review row anyway).

## `includeAppVersion` (type: `boolean`):

Fills appVersion for the newest (or most helpful) 500 reviews per app and country, from Apple's review RSS feed. Apple publishes no version for older reviews (null). Free, a few extra requests.

## `onlyReviews` (type: `boolean`):

Return review rows only, no app record rows, for apps you listed above. App records found by search/developer/chart are still returned.

## `includeHistogram` (type: `boolean`):

Reads each app's public App Store page (one extra request per app and country) and fills: histogram (ratings per star 1–5), privacyLabels / privacyTypes / tracksUser / privacyPolicyUrl (Apple's App Privacy labels), inAppPurchases + hasInAppPurchases (name and local price), versionHistory (newest 25 versions with date and release notes) and similarApps (Apple's "You Might Also Like"). Only for the apps you list in Apps, not for apps found by search, developer or chart. Turn off for the cheapest, fastest app records.

## `proxyConfiguration` (type: `object`):

Apple answers fine without a proxy; the actor starts direct and switches to Apify Proxy only if Apple starts refusing. Leave the default.

## Actor input object example

```json
{
  "apps": [
    "https://apps.apple.com/us/app/spotify-music-and-podcasts/id324684580",
    "310633997",
    "com.duolingo.DuolingoMobile"
  ],
  "countries": [
    "us"
  ],
  "searchTerms": [
    "vpn",
    "budget planner"
  ],
  "developers": [
    "https://apps.apple.com/us/developer/spotify/id324684583",
    "284882218"
  ],
  "chartCategory": "",
  "maxAppsPerList": 10,
  "reviewsForListedApps": false,
  "maxReviewsPerApp": 20,
  "reviewsSort": "newest",
  "reviewsSince": "7 days",
  "onlyWithDeveloperReply": false,
  "includeAppVersion": true,
  "onlyReviews": false,
  "includeHistogram": true,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `apps` (type: `string`):

No description

## `reviews` (type: `string`):

No description

## `summary` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "apps": [
        "https://apps.apple.com/us/app/spotify-music-and-podcasts/id324684580"
    ],
    "countries": [
        "us"
    ],
    "maxAppsPerList": 10,
    "maxReviewsPerApp": 20,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("k-data-lab/app-store-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "apps": ["https://apps.apple.com/us/app/spotify-music-and-podcasts/id324684580"],
    "countries": ["us"],
    "maxAppsPerList": 10,
    "maxReviewsPerApp": 20,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("k-data-lab/app-store-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "apps": [
    "https://apps.apple.com/us/app/spotify-music-and-podcasts/id324684580"
  ],
  "countries": [
    "us"
  ],
  "maxAppsPerList": 10,
  "maxReviewsPerApp": 20,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call k-data-lab/app-store-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,k-data-lab/app-store-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/h3b1ZC2dyWJo502MK/builds/05vN3NmLrdbRFVuhd/openapi.json
