# App Store Scraper - In-App Purchases, Ratings & Competitors (`suerte_enero/app-store-iap-competitors-scraper`) Actor

Apple App Store scraper & API: app details, 1-5 star ratings histogram, in-app purchase prices, privacy labels, app events, similar apps and developer apps for any country. Find competitors automatically, monitor version & price changes.

- **URL**: https://apify.com/suerte_enero/app-store-iap-competitors-scraper.md
- **Developed by:** [Eduard Kalyta](https://apify.com/suerte_enero) (community)
- **Categories:** Marketing, Developer tools, SEO tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$0.50 / 1,000 apps

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## App Store Scraper & API — in-app purchases, ratings breakdown & competitors

**App Store Scraper** extracts complete **Apple App Store app data** for any app and any country: app details, the **1-5 star ratings breakdown**, **in-app purchase names and prices**, **App Store privacy labels** ("Data Used to Track You", "Data Linked to You"), **app events**, "What's New", **similar apps** and the developer's other apps. Use it as an **App Store API** from your code, Zapier, Make or n8n, export the **App Store dataset** to CSV / Excel, or run it on a schedule to **monitor competitor apps** for new versions and price changes.

Give it App Store URLs, app ids or bundle ids — or just a keyword or a developer — and turn on **Find competitors** to build a full **App Store competitor analysis** from a single app.

### What you get for every app

- **App details**: name, subtitle, developer, seller, website, category and genres, price, content and age rating, size, minimum iOS version, languages, release date, current version, release notes, description, icon and screenshots.
- **Ratings**: average rating, rating count, rating for the current version and the **ratings histogram** (how many 5★, 4★, 3★, 2★, 1★) — per country.
- **In-app purchases**: every in-app purchase Apple lists with its local price, plus a numeric `priceValue` for sorting (`"Super Duolingo" · 89,99 € → 89.99`).
- **Privacy labels**: which data types are used to track you and which are linked to you.
- **App events**: live and upcoming in-app events with start and end dates.
- **Competitors**: "You might also like" apps and more apps by the same developer.
- **Monitoring**: with *Only new or changed apps* the next runs return only apps whose **version, price, name or in-app purchase prices changed**, with a list of exactly what changed.

### Why this App Store scraper

| | |
|---|---|
| Ratings breakdown | The 1-5 star histogram per country, not only the average |
| In-app purchase prices | Names and prices of the top in-app purchases, in every country you choose — compare IAP pricing across markets |
| Competitor discovery | One input app → its similar apps and developer apps scraped in the same run |
| Any country | 100 App Store countries (`"all"` for every one), localized prices and currencies, English field labels everywhere |
| Change alerts | Version, price and IAP price changes delivered as `recordType: "updated"` with before → after |
| Official sources only | Apple's public iTunes lookup / search API and the public app page. No login, no API key, no proxies to configure |
| Fair billing | You pay per app record saved. Apps not available in a country, failed requests and retries are free |

### Quick start

```json
{
  "apps": ["https://apps.apple.com/us/app/candy-crush-saga/id553834731", "com.duolingo.DuolingoMobile"],
  "countries": ["us", "de", "jp"],
  "expandCompetitors": true
}
```

Other ways to choose apps:

- `"searchTerms": ["budget planner", "habit tracker"]` — scrape App Store search results (up to 200 apps per term).
- `"developers": ["https://apps.apple.com/us/developer/king/id526656015"]` — all apps of a developer.

### Output example

```json
{
  "appId": "553834731",
  "bundleId": "com.midasplayer.apps.candycrushsaga",
  "name": "Candy Crush Saga",
  "country": "de",
  "url": "https://apps.apple.com/de/app/candy-crush-saga/id553834731",
  "developer": "King",
  "price": 0,
  "currency": "EUR",
  "primaryGenre": "Games",
  "rating": 4.58,
  "ratingCount": 271482,
  "ratingHistogram": { "5": 202712, "4": 42375, "3": 14624, "2": 4092, "1": 7679 },
  "version": "1.339.0.2",
  "currentVersionReleaseDate": "2026-10-21T05:04:55Z",
  "hasInAppPurchases": true,
  "inAppPurchases": [{ "name": "XS Gold Bars Pack", "price": "1,99 €", "priceValue": 1.99 }],
  "privacy": [{ "type": "DATA_USED_TO_TRACK_YOU", "title": "Data Used to Track You", "categories": ["Purchases", "Location", "Contact Info", "User Content", "Identifiers"] }],
  "appEvents": [{ "title": "Spooky Season", "kind": "MAJOR UPDATE", "startDate": "2026-10-12T07:00:00.000Z", "endDate": "2026-11-07T23:00:00.000Z" }],
  "similarApps": [{ "appId": "727296976", "name": "Cookie Jam: Match 3 Games", "rating": 4.7 }],
  "moreByDeveloper": [{ "appId": "1095254858", "name": "Bubble Witch 3 Saga" }],
  "foundVia": "input"
}
```

Set *Output format* to **Flat** for spreadsheet columns (`ratings5Star` … `ratings1Star`, `inAppPurchases` as text, and so on).

### Use cases

- **App Store competitor analysis**: start from your app, get every similar app with ratings, IAP prices and privacy labels in one table.
- **In-app purchase pricing research**: compare subscription and IAP prices of an app across the US, Europe, Japan, Brazil, India…
- **Market research & app store data for investors**: build an App Store database for a category or a developer portfolio.
- **Privacy & compliance audits**: which apps track users and which data they link to identity.
- **Lead generation**: developer names, seller names and websites for any category or keyword.
- **App monitoring**: daily alerts when a competitor ships a new version, changes the price or reprices in-app purchases.

### Schedule it, get alerts, use it as an API

- **Schedule**: in Apify Console open *Schedules*, pick this Actor and run it daily (or hourly). Every run is compared with the previous one automatically.
- **Slack alerts**: paste a Slack incoming webhook into *Webhook URL* and choose *Slack message*. You get a readable digest at the end of each run.
- **Zapier, Make, n8n, your backend**: choose *JSON* webhook format, or call the Actor through the [Apify API](https://docs.apify.com/api/v2) and read the dataset.
- **Google Sheets / Excel**: set *Output format* to *Flat* and export the dataset as CSV or XLSX, or connect the Google Sheets integration.
- **AI agents (MCP)**: the Actor works as a tool in Apify's MCP server; the output schema is stable and every record carries `schemaVersion`.
- **Run summary**: each run stores `RUN_SUMMARY` in the key-value store (saved, charged, requests, warnings).

### Pricing

**$0.50 per 1,000 apps** (one record = one app in one country, with all page data). Not charged: apps unavailable in a country, failed requests, retries. Monitoring runs charge only for new and changed apps.

### FAQ

**Is there an official App Store API for app data?** Apple's App Store Connect API only covers your own apps. For any public app this Actor combines Apple's public iTunes lookup / search API and the public App Store page.

**Can I scrape App Store reviews with this?** This Actor focuses on app data and the ratings breakdown. For rating trends over time use the App Store Ratings Tracker below.

**How do I get the ratings breakdown (5 stars, 4 stars…)?** Keep *Ratings histogram, in-app purchases & privacy* on. It is in `ratingHistogram` per country.

**Does it show in-app purchase prices for other countries?** Yes. Add the countries; every record has local prices and the currency.

**Can I scrape all apps of a developer?** Yes, put the developer URL or id into *Developers*.

**How do I find competitors of an app?** Turn on *Find competitors*. Similar apps and the developer's other apps are added automatically (`foundVia: "competitor-of:<appId>"`).

**Do I need proxies, an API key or an Apple account?** No.

**How often should I run it?** Daily is enough for version and price monitoring. Apple refreshes rating counts about once a day.

**Python or JavaScript?** Call it through the Apify API or the `apify-client` package for Python / JavaScript; results come back as JSON.

### App Store toolkit

Seven Actors on one engine, same input style and output conventions, made to be scheduled together:

| Actor | What it answers |
|---|---|
| [App Store Scraper](https://apify.com/suerte_enero/app-store-iap-competitors-scraper) | Everything about an app: details, 1-5 star ratings histogram, in-app purchase prices, privacy labels, app events, competitors |
| [App Store In-App Purchases Scraper](https://apify.com/suerte_enero/app-store-in-app-purchases-scraper) | In-app purchase and subscription prices in 100 countries side by side, in USD |
| [App Store Competitor Finder](https://apify.com/suerte_enero/app-store-competitor-finder) | The full competitor set of an app, compared field by field |
| [App Store Privacy Labels Scraper](https://apify.com/suerte_enero/app-store-privacy-labels-scraper) | What apps track and collect, for apps, searches and whole top charts |
| [App Store Top Charts](https://apify.com/suerte_enero/app-store-top-charts) | Who is in top free / paid / grossing per country and category, and who moved since yesterday |
| [App Store Keyword Rank Tracker](https://apify.com/suerte_enero/app-store-keyword-rank-tracker) | Where your app ranks for each keyword, keyword difficulty, Apple search suggestions |
| [App Store Ratings Tracker](https://apify.com/suerte_enero/app-store-ratings-tracker) | How people rate your app right now: new ratings per day and their average, 1-2 star share, version impact |

**Also for Android:** [Google Play Download Count](https://apify.com/suerte_enero/google-play-download-count-app-data) (exact installs) · [Google Play In-App Purchases & Price Tracker](https://apify.com/suerte_enero/google-play-in-app-purchases-price-tracker) · [Google Play Similar Apps & Competitors](https://apify.com/suerte_enero/google-play-similar-apps-competitors) · [Google Play Data Safety Scraper](https://apify.com/suerte_enero/google-play-data-safety-scraper) · [Google Play Developer Email & Contacts](https://apify.com/suerte_enero/google-play-developer-email-leads)

### Changelog

- **1.0 (Oct 2026)** — App details, ratings histogram, in-app purchases with numeric prices, privacy labels, app events, competitor discovery, search and developer input, version / price change monitoring, Slack and JSON webhooks.

# Actor input Schema

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

App Store URLs, app ids (284882215) or bundle ids (com.facebook.Facebook).

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

Find apps by keyword, e.g. "budget planner". Up to 200 apps per term.

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

Developer URLs or ids (apps.apple.com/us/developer/king/id526656015) — returns all their apps.

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

App Store countries as 2-letter codes (us, gb, de, jp, br…) or "all" for 100 storefronts.

## `maxAppsPerSearch` (type: `integer`):

How many search results to take per term.

## `expandCompetitors` (type: `boolean`):

Also scrape the apps Apple lists as similar ("You might also like") and the developer's other apps for every input app.

## `includePageData` (type: `boolean`):

Add the 1-5 star ratings breakdown, in-app purchase names and prices, privacy labels, app events, similar apps and 'What's New'.

## `maxConcurrency` (type: `integer`):

App pages loaded in parallel.

## `maxItems` (type: `integer`):

Stop after saving this many records. You are charged only for saved records.

## `onlyNew` (type: `boolean`):

Remember apps this feed already returned; next runs save only new apps and apps whose version, price, name or in-app purchase prices changed (recordType "updated" with a list of changes).

## `includeUpdated` (type: `boolean`):

In monitoring mode, also save known records whose important fields changed (date, price, sold out, venue…). They come with recordType "updated" and a list of changes.

## `monitorId` (type: `string`):

Optional name for the monitoring feed, e.g. "sf-ai-events". Runs with the same name share memory. Leave empty to derive it from the search settings.

## `memoryDays` (type: `integer`):

Monitoring memory forgets records not seen for this many days.

## `outputFormat` (type: `string`):

"full" keeps nested objects (best for JSON / API). "flat" turns them into plain columns for Excel and Google Sheets.

## `webhookUrl` (type: `string`):

Optional. At the end of the run, POST the saved records (up to 200) to this URL: Slack incoming webhook, Zapier, Make, n8n or your own endpoint. Not sent when nothing was saved.

## `webhookFormat` (type: `string`):

"slack" sends a readable message, "json" sends the records and run summary.

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

Not needed in most cases. If the site starts throttling, the Actor switches to Apify Proxy by itself.

## Actor input object example

```json
{
  "apps": [
    "https://apps.apple.com/us/app/candy-crush-saga/id553834731"
  ],
  "countries": [
    "us"
  ],
  "maxAppsPerSearch": 50,
  "expandCompetitors": false,
  "includePageData": true,
  "maxConcurrency": 4,
  "maxItems": 1000,
  "onlyNew": false,
  "includeUpdated": true,
  "memoryDays": 90,
  "outputFormat": "full",
  "webhookFormat": "json",
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `results` (type: `string`):

No description

## `allFields` (type: `string`):

No description

## `runSummary` (type: `string`):

Saved, charged, new / updated / known records, requests and warnings.

# 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/candy-crush-saga/id553834731"
    ],
    "countries": [
        "us"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("suerte_enero/app-store-iap-competitors-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/candy-crush-saga/id553834731"],
    "countries": ["us"],
}

# Run the Actor and wait for it to finish
run = client.actor("suerte_enero/app-store-iap-competitors-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/candy-crush-saga/id553834731"
  ],
  "countries": [
    "us"
  ]
}' |
apify call suerte_enero/app-store-iap-competitors-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,suerte_enero/app-store-iap-competitors-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/GcAWSq0IKPCv3HRwO/builds/mfY5wn6yZWSy7r65c/openapi.json
