# App Store Scraper (`flipper_ai/app-store-scraper`) Actor

Scrape Apple App Store apps and customer reviews into structured data — metadata, ratings, pricing, and reviews. Official Apple endpoints, no API key.

- **URL**: https://apify.com/flipper\_ai/app-store-scraper.md
- **Developed by:** [Josh Baker](https://apify.com/flipper_ai) (community)
- **Categories:** E-commerce, Marketing
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$2.00 / 1,000 results

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## App Store Scraper 🍎

**Pull Apple App Store data — app metadata *and* customer reviews — into clean, structured data. No API key, no blocking.**

Give it a search term or an app ID and get back every app with **name, developer, category,
price, average rating, rating count, version, description, screenshots, and a direct link** —
plus **customer reviews** (star rating, title, text, author, app version, date) when you want them.

Runs on **Apple's own public endpoints**, so it's fast and reliable — no proxies fighting a
wall, no login, no key.

***

### ✅ Why people use it

- 🔎 **Find apps by keyword** or scrape specific apps by ID/URL
- ⭐ **Metadata + reviews** — ratings, pricing, versions, and full customer reviews
- 🌎 **Any storefront** — pick the country (us, gb, de, …); reviews are per-country
- 📤 **Export anywhere** — JSON / CSV / Excel download or API
- 🔁 **Schedule it** — track a competitor's rating and new reviews over time
- 🛡️ **Reliable** — official Apple endpoints, no API key required

***

### 🚀 Quick start (30 seconds)

1. Enter one or more **search terms** (e.g. `photo editor`) **or** **App IDs / URLs**
2. Pick a **country** and how many **reviews per app** you want
3. Click **Start**

***

### 📤 Example output

**App:**

```json
{
  "type": "app",
  "id": 389801252,
  "appName": "Instagram",
  "developer": "Instagram, Inc.",
  "primaryGenre": "Photo & Video",
  "price": 0,
  "averageRating": 4.69,
  "ratingCount": 29218424,
  "version": "300.0",
  "url": "https://apps.apple.com/us/app/instagram/id389801252"
}
```

**Review** (`type: "review"`):

```json
{
  "type": "review",
  "appId": 389801252,
  "rating": 5,
  "title": "Love it",
  "body": "Best way to keep up with friends...",
  "userName": "photofan_92",
  "appVersion": "300.0",
  "updated": "2026-06-30T12:00:00-07:00"
}
```

***

### 🎯 Perfect for

- **ASO & app marketers** — track ratings, mine reviews for keywords and complaints
- **Product teams** — competitor review analysis, feature requests, bug signals
- **Market researchers** — category pricing, rating distributions, release cadence
- **Developers** — a clean App Store feed without the official (gated) APIs

***

### 💡 FAQ

**Do I need an Apple developer account or API key?** No — it uses Apple's public endpoints.

**How many reviews can I get?** Apple exposes up to ~500 recent reviews per app per country
(10 pages × 50). Set **Max reviews per app** to whatever you need up to that.

**Are reviews guaranteed?** App **metadata is always complete** (name, developer, category,
price, rating average, rating count, version, description, screenshots, dates). **Reviews are
best-effort**: they come from Apple's public review feed, which is per-storefront and is
sometimes empty for a given app/country even when it has thousands of ratings. If reviews come
back empty, try a different `country` (e.g. `gb`) or re-run — Apple's feed is inconsistent. If
you only need app data and ratings, turn **Include reviews** off.

**Is this legal?** It reads publicly available data from Apple's endpoints. You're responsible
for how you use the data and for complying with applicable laws and terms.

***

### 🛠️ Input reference

| Field | Description |
|---|---|
| `searchTerms` | Keywords to find apps |
| `appIds` | Specific app IDs or App Store URLs |
| `country` | Two-letter storefront code (default `us`) |
| `maxAppsPerSearch` | Apps per search term (max 200) |
| `includeReviews` / `maxReviewsPerApp` | Also pull reviews, capped per app (max 500) |
| `reviewsSort` | Most recent or most helpful |
| `proxyConfiguration` | Optional — default Apify Proxy is plenty |

***

*Not affiliated with, endorsed by, or sponsored by Apple Inc. "App Store" and "Apple" are
trademarks of Apple Inc.*

# Actor input Schema

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

Keywords to search the App Store for apps. E.g. 'photo editor', 'budget tracker'.

## `appIds` (type: `array`):

Specific apps to scrape — numeric App Store IDs (e.g. 389801252) or full App Store URLs.

## `country` (type: `string`):

Two-letter App Store country code (us, gb, de, ca, au, ...). Reviews and availability are per-storefront.

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

How many apps to return per search term (Apple allows up to 200).

## `includeReviews` (type: `boolean`):

Also scrape each app's customer reviews (rating, title, text, author, version).

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

Cap reviews per app. Apple exposes up to ~500 recent reviews per storefront (10 pages of 50).

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

Sort reviews by most recent or most helpful.

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

Optional. Apple's public endpoints don't block, so the default Apify Proxy is plenty — no residential needed.

## Actor input object example

```json
{
  "searchTerms": [
    "habit tracker",
    "vpn"
  ],
  "appIds": [
    "389801252",
    "https://apps.apple.com/us/app/instagram/id389801252"
  ],
  "country": "us",
  "maxAppsPerSearch": 10,
  "includeReviews": true,
  "maxReviewsPerApp": 100,
  "reviewsSort": "mostrecent",
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# 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 = {
    "searchTerms": [
        "photo editor"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("flipper_ai/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 = {
    "searchTerms": ["photo editor"],
    "proxyConfiguration": { "useApifyProxy": True },
}

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

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

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

```

## CLI example

```bash
echo '{
  "searchTerms": [
    "photo editor"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call flipper_ai/app-store-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=flipper_ai/app-store-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/35TUZBoE58mSwygAn/builds/24x1BzyAmDPXomMYa/openapi.json
