# Apple App Store Scraper: App Details and Search | $1/1K (`one_dollar_store/app-store-apps-scraper`) Actor

$1 per 1,000 results, platform usage included. Apple App Store apps by search term, app ID or developer: name, price, rating, rating count, genre, size, version, release dates, description and screenshots, for any country. Public iTunes Search API.

- **URL**: https://apify.com/one_dollar_store/app-store-apps-scraper.md
- **Developed by:** [One Dollar Store](https://apify.com/one_dollar_store) (community)
- **Categories:** Marketing, E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.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/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: App Details, Ratings, Prices and Search Results by Country

**$1 per 1,000 apps. Platform usage included. No rental, no minimum.**

Search the Apple App Store by keyword, fetch apps by ID or link, or list every app of a developer. Each row has the name, developer, price, average rating and rating count, genre, version, release and update dates, file size, description, release notes, languages and screenshots. Pick the country, and filter by genre, price and rating. Data comes from Apple's public iTunes Search API. No login and no API key.

[Open it in Apify Console](https://console.apify.com/actors/dnMhPaw8rsFCXAUX6/input)

### What it costs

| Apps | This actor |
|---|---|
| 1,000 | $1.00 |
| 10,000 | $10.00 |
| 100,000 | $100.00 |

Plus $0.001 per run. One flat price, platform usage included, so there is no separate compute or proxy bill. Only app rows are charged. An app that appears under two search terms is returned once. IDs the App Store does not know in your country, and searches with no match, cost nothing beyond the run fee. A daily run of 300 apps costs about $0.30, or about $9 a month.

### Why use it

- **One flat price.** The bill follows the number of apps and nothing else.
- **Three ways in.** Search terms, app IDs or links (looked up 100 per request), and developer IDs for a whole catalog.
- **55 country stores.** Prices, currency and which apps exist follow the country you choose.
- **Filters that save money.** Keep only a genre, only free or paid apps, a price range or a minimum rating, so rows you do not want are not charged.

### Quick start

1. Open the actor, type a search term, press **Start**.
2. Or paste this input:

```json
{ "searchTerms": ["photo editor"], "country": "us", "priceType": "free", "minRating": 4.5, "maxResultsPerSearch": 50 }
```

3. Download the results as JSON, CSV or Excel, or read them through the API.

### Use it from code

```bash
curl -X POST "https://api.apify.com/v2/acts/one_dollar_store~app-store-apps-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"searchTerms": ["photo editor"], "country": "us", "maxResultsPerSearch": 20}'
```

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("one_dollar_store/app-store-apps-scraper").call(
    run_input={"searchTerms": ["photo editor"], "country": "us", "maxResultsPerSearch": 20}
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["name"], item.get("rating"), item.get("ratingCount"), item["formattedPrice"])
```

### Use it from an AI assistant

Claude, ChatGPT, Cursor and other assistants can call this actor through Apify's MCP server. Add it with this server address:

```
https://mcp.apify.com?tools=one_dollar_store/app-store-apps-scraper
```

Then ask, for example: "Find the 30 best rated free meditation apps in the UK App Store and list their developers and rating counts."

### Switching from another App Store scraper

Search words go in `searchTerms`, app IDs or links in `appIds`, developers in `developerIds`. The country is `country` (two letters, for example `gb`). Limits are `maxResultsPerSearch` and `maxItems`. The core output fields are `appId`, `name`, `developer`, `price`, `rating`, `ratingCount`, `genre` and `url`. There are no reviews in this actor; it returns app details only.

### Input

| Field | Type | Default | What it does |
|---|---|---|---|
| `searchTerms` | list of text | none | Words to search for. Each returns up to `maxResultsPerSearch` apps in App Store order. |
| `appIds` | list of text | none | Numeric IDs or App Store links. Fetched 100 per request. |
| `developerIds` | list of text | none | Numeric developer IDs or developer links. Returns that developer's apps. |
| `country` | text | `us` | Which country's App Store to read (55 are offered). |
| `language` | text | `en_us` | `en_us` or `ja_jp`, the two Apple documents. |
| `device` | text | `software` | `software` (iPhone), `iPadSoftware` or `macSoftware`. Used for searches and developers. |
| `genres` | list of text | none | Keep only these genres, by name or ID. |
| `priceType` | text | `any` | `any`, `free` or `paid`. |
| `minPrice`, `maxPrice` | number | none | Price range in the currency of the chosen country. |
| `minRating` | number | none | Lowest average rating, 0 to 5. |
| `maxResultsPerSearch` | number | 50 | Most apps per search term or developer (up to 200). |
| `maxItems` | number | 500 | Most apps in the whole run. Minimum 10. |

Give at least one of `searchTerms`, `appIds` or `developerIds`.

### Output fields

| Field | Meaning |
|---|---|
| `appId`, `bundleId`, `name`, `url` | App Store ID, bundle ID, name and link. |
| `developer`, `developerId`, `developerUrl`, `developerWebsite` | Seller and its pages. |
| `price`, `formattedPrice`, `currency`, `isFree` | Price in the store's currency. In-app purchases are not included. |
| `rating`, `ratingCount` | Average rating and number of ratings, all versions. |
| `ratingCurrentVersion`, `ratingCountCurrentVersion` | The same for the current version, when Apple gives them. |
| `genre`, `genreId`, `genres` | Main genre and all genres. |
| `contentRating` | Age rating such as `4+` or `12+`. |
| `version`, `releaseDate`, `updatedAt`, `releaseNotes` | Current version, first release, latest update and its notes. |
| `description`, `fileSizeBytes`, `minimumOsVersion`, `languages` | Store text, size, lowest OS version, language codes. |
| `iconUrl`, `screenshots`, `ipadScreenshots` | Image links. |
| `supportsGameCenter`, `kind` | Game Center flag and the App Store kind. |
| `searchTerm`, `rank` | The search that found it and its position in the App Store results. |
| `country`, `scrapedAt` | Store country and read time. |

Empty fields are left out of a row. The long list of supported devices that Apple sends is not included.

### Sample results

Real rows from a test run on 9 October 2026 for the search "photo editor" in the US store. Long text and image lists are shortened, and a few fields (bundle ID, icon, release notes, languages and others) are left out here to save space.

```json
[
  {"appId": 587366035, "name": "Picsart AI Photo Editor, Video", "developer": "PicsArt, Inc.", "developerId": 587366038, "url": "https://apps.apple.com/us/app/picsart-ai-photo-editor-video/id587366035", "price": 0, "currency": "USD", "isFree": true, "rating": 4.66526, "ratingCount": 1195842, "genre": "Photo & Video", "contentRating": "12+", "version": "30.9.2", "releaseDate": "2013-01-02T22:14:40Z", "updatedAt": "2026-10-06T04:02:28Z", "description": "Ignite your creative potential with Picsart...", "fileSizeBytes": 270485504, "screenshots": ["https://is1-ssl.mzstatic.com/image/thumb/PurpleSource221/v4/18/66/70/1866705a-8f24-0fe8-78e5-99cf0a4490cd/1.AI_Try-on.jpg/320x480bb.jpg", "..."], "rank": 1, "country": "us"},
  {"appId": 878783582, "name": "Lightroom: AI Photo Editor", "developer": "Adobe Inc.", "developerId": 331646274, "url": "https://apps.apple.com/us/app/lightroom-ai-photo-editor/id878783582", "price": 0, "currency": "USD", "isFree": true, "rating": 4.77477, "ratingCount": 336930, "genre": "Photo & Video", "contentRating": "12+", "version": "11.6.1", "releaseDate": "2014-06-22T04:35:34Z", "updatedAt": "2026-09-30T10:57:17Z", "description": "Ever wish your photos could really show what makes a moment special? Adobe Lightroom is a...", "fileSizeBytes": 366776320, "screenshots": ["https://is1-ssl.mzstatic.com/image/thumb/PurpleSource211/v4/fc/92/37/fc9237ee-7993-0d79-b062-862201be95a9/lightroom-ios-phone-March-Madness-1320x2868-splash-V3.jpg/320x480bb.jpg", "..."], "rank": 3, "country": "us"},
  {"appId": 1149994032, "name": "Facetune: Photo & Video Editor", "developer": "Lightricks Ltd.", "developerId": 606310584, "url": "https://apps.apple.com/us/app/facetune-photo-video-editor/id1149994032", "price": 0, "currency": "USD", "isFree": true, "rating": 4.61895, "ratingCount": 378902, "genre": "Photo & Video", "contentRating": "12+", "version": "26.32", "releaseDate": "2016-11-24T23:31:38Z", "updatedAt": "2026-10-07T07:21:33Z", "description": "Welcome to Facetune, where every photo hits.\nYour camera captures the moment. Facetune mak...", "fileSizeBytes": 591106048, "screenshots": ["https://is1-ssl.mzstatic.com/image/thumb/PurpleSource221/v4/81/e1/25/81e125c3-0cff-38ab-c643-3cc8ebd60281/FT-250819-ASO-Baseline-5.5-01.jpg/392x696bb.jpg", "..."], "rank": 6, "country": "us"}
]
```

### Limits

- **What Apple's public API gives.** The iTunes Search API returns app details. It has no reviews, no chart or top list positions, no download counts and no in-app purchase prices, so this actor has none either.
- **Up to 200 apps per search, often fewer.** Apple returns at most 200 results for one search term and offers no paging. It can also return fewer than you ask for: in our test a limit of 50 gave 41 apps. For a broader sweep, use several related terms; an app found twice is charged once.
- **Filters run after the answer.** Genre, price and rating filters are applied to what Apple returned, so a filtered search can give fewer apps than `maxResultsPerSearch`.
- **Slow pace on purpose.** Apple allows about 20 calls a minute. The actor makes one call every 3.2 seconds and waits longer after an HTTP 403 or 429 answer. A run with 100 search terms takes about 5 to 6 minutes. App IDs are looked up 100 per call, so they are quick.
- **Rating counts depend on the country.** `rating` and `ratingCount` are those of the chosen country's store. New apps may have none.
- **Language.** Apple documents `en_us` and `ja_jp`. Descriptions and names follow the app's own translations for the chosen country.
- **Missing IDs.** An ID that the chosen country's store does not list is skipped and shown under `notFound` in the run summary.
- **No screenshots download.** Image fields are links to Apple's servers, not files.

### FAQ

**How much does it cost to scrape 10,000 App Store apps?**
$10, plus $0.001 for each run.

**Do I pay for compute or proxy on top?**
No. Platform usage is included in the $1 per 1,000 price.

**Does it return reviews?**
No. Apple's public search API does not include reviews. This actor returns app details, ratings and prices.

**How do I get every app of one developer?**
Put the developer ID in `developerIds`. It is the number after `id` in the developer link on apps.apple.com.

**How do I find an app ID?**
It is the number after `id` in the app's App Store link, for example 284882215 in `https://apps.apple.com/us/app/facebook/id284882215`. You can also paste the whole link.

**Is it legal?**
The actor uses Apple's public iTunes Search API, which Apple documents for anyone to call, and returns public store data. How you use it is up to you: follow Apple's terms for that API and the law where you live. App descriptions and images belong to their owners.

**Is this an official Apple product?**
No. It is an independent tool and is not affiliated with or endorsed by Apple Inc.

**Do I need an Apify account?**
Yes. Actors run from an Apify account, and a free account is enough to start: it includes $5 of platform usage every month. You can [sign up here](https://www.apify.com?fpr=ymnoit). This is a referral link and it costs you nothing.

**Is there a limit on the free plan?**
Yes. A run started from a free plan account delivers the first 10 results, then ends with a message and a link to the plans. Any paid plan returns everything you ask for, up to your own limit. The price per result is the same on every plan.

### More from The One Dollar Store

Every actor here costs $1 per 1,000 results, platform usage included. See the whole store: https://apify.com/one_dollar_store

**Domains and apps**

- [DNS Records Lookup](https://apify.com/one_dollar_store/dns-records-lookup): DNS records for any list of domains.
- [Domain WHOIS Lookup](https://apify.com/one_dollar_store/domain-whois-rdap-lookup): Registrar, dates and name servers for any domain.
- [Subdomain Finder](https://apify.com/one_dollar_store/subdomain-finder-crtsh): Subdomains found in certificate logs.
- [Shopify App Store Scraper](https://apify.com/one_dollar_store/shopify-app-store-scraper): Shopify apps with ratings and pricing.
- [Hugging Face Scraper](https://apify.com/one_dollar_store/hugging-face-models-scraper): Models and datasets with downloads and tags.

### Changelog

- October 2026: first release.

# Actor input Schema

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

Words to search for in the App Store, one per line. Each term returns up to the number set under results per search, in the order the App Store ranks them.

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

Apps to fetch directly: a numeric ID (284882215) or an App Store link such as https://apps.apple.com/us/app/facebook/id284882215. Many IDs are fetched in batches.

## `developerIds` (type: `array`):

Returns every app of a developer. Use the numeric ID (389801252) or a developer link such as https://apps.apple.com/us/developer/instagram-inc/id389801252.

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

Which country's App Store to read. It sets prices, currency, rankings and which apps exist.

## `language` (type: `string`):

Language of the text the App Store sends back, where an app has translations. Apple documents English and Japanese.

## `device` (type: `string`):

iPhone apps, iPad apps or Mac apps. Applies to search terms and developer IDs.

## `genres` (type: `array`):

Optional. Keep only apps in these genres, by name (Games, Productivity, Photo & Video, Finance, Health & Fitness) or by genre ID (6014). An app matches on its main genre or any of its genres.

## `priceType` (type: `string`):

Optional. Keep only free apps or only paid apps. A paid app is one with a price above zero; in-app purchases are not counted.

## `minPrice` (type: `number`):

Optional. Keep apps priced at or above this amount, in the currency of the chosen country.

## `maxPrice` (type: `number`):

Optional. Keep apps priced at or below this amount, in the currency of the chosen country.

## `minRating` (type: `number`):

Optional. Keep apps whose average user rating is at least this value (0 to 5). Apps with no rating yet are dropped when this is set.

## `maxResultsPerSearch` (type: `integer`):

The most apps to take for each search term or developer (the App Store gives at most 200). Filters are applied after the App Store answers, so a filtered search can return fewer.

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

The run stops after this many apps in total. Minimum 10.

## Actor input object example

```json
{
  "searchTerms": [
    "photo editor"
  ],
  "appIds": [],
  "developerIds": [],
  "country": "us",
  "language": "en_us",
  "device": "software",
  "genres": [],
  "priceType": "any",
  "maxResultsPerSearch": 50,
  "maxItems": 50
}
```

# Actor output Schema

## `results` (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 = {
    "searchTerms": [
        "photo editor"
    ],
    "appIds": [],
    "developerIds": [],
    "country": "us",
    "language": "en_us",
    "device": "software",
    "genres": [],
    "priceType": "any",
    "maxResultsPerSearch": 50,
    "maxItems": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("one_dollar_store/app-store-apps-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"],
    "appIds": [],
    "developerIds": [],
    "country": "us",
    "language": "en_us",
    "device": "software",
    "genres": [],
    "priceType": "any",
    "maxResultsPerSearch": 50,
    "maxItems": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("one_dollar_store/app-store-apps-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 '{
  "searchTerms": [
    "photo editor"
  ],
  "appIds": [],
  "developerIds": [],
  "country": "us",
  "language": "en_us",
  "device": "software",
  "genres": [],
  "priceType": "any",
  "maxResultsPerSearch": 50,
  "maxItems": 50
}' |
apify call one_dollar_store/app-store-apps-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,one_dollar_store/app-store-apps-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/dnMhPaw8rsFCXAUX6/builds/u7L4dypahmtdBVaPK/openapi.json
