# Apple App Store Scraper (Keyword or App ID) (`exuberant_volley/app-store-apps-scraper`) Actor

For ASO, competitor research, and founders sizing a category before building. Search by keyword or app ID, any country → name, ratings, price, developer, version, size, languages. Official-API speed. Free to run.

- **URL**: https://apify.com/exuberant\_volley/app-store-apps-scraper.md
- **Developed by:** [ScrapeForge](https://apify.com/exuberant_volley) (community)
- **Categories:** Automation, Developer tools, AI
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## 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 — Apps, Ratings & ASO Data by Keyword

**Launch pricing: this actor currently adds no fee — run it on your Apify free-plan credits. Try it, bookmark it, wire it into your stack.**

An **App Store scraper** for keyword and app-ID lookups: this **Apple App Store scraper** lets you **scrape App Store apps** — names, developers, categories, ratings, rating counts, prices, versions and update dates — from any country storefront. As an **iTunes Search API scraper** it runs on Apple's own public endpoint, so results are fast, accurate and never blocked — perfect for building **App Store ASO data** sets.

> Official-API data in seconds: hundreds of apps per keyword, deduplicated by app ID, from any storefront on the planet.

### Who uses this

- **ASO consultants & app marketers** — track competitors' ratings, `ratingCount` velocity, pricing and update cadence per keyword.
- **Indie developers** — scan a niche before building; see who ranks for your target search terms.
- **Analysts & VCs** — build app datasets per category or keyword across country storefronts.
- **AI pipelines** — clean JSON per app, ready for LLM analysis (works via MCP).

Tracking where new products launch and get discussed? The [Hacker News Scraper](https://apify.com/exuberant_volley/hackernews-scraper) captures the tech zeitgeist the same clean-JSON way.

### How it works

The actor calls Apple's public iTunes Search API — `search` for keywords, `lookup` for explicit app IDs (batched 200 per request) — maps each result to a flat record, and deduplicates by `appId` across all terms in the run. A run that would produce zero apps **fails loudly instead of succeeding empty**.

### Output

One record per app:

```json
{
  "appId": 337472899,
  "name": "Insight Timer: Meditate, Sleep",
  "bundleId": "com.spotlightsix.zentimer",
  "developer": "Insight Network Inc",
  "developerId": 983080487,
  "category": "Health & Fitness",
  "categories": ["Health & Fitness", "Lifestyle"],
  "price": 0,
  "currency": "USD",
  "free": true,
  "rating": 4.89,
  "ratingCount": 442695,
  "version": "20.25.0",
  "minimumOsVersion": "15.0",
  "contentRating": "12+",
  "sizeBytes": 247634944,
  "releaseDate": "2009-11-05T18:55:12Z",
  "lastUpdated": "2026-07-10T08:24:11Z",
  "url": "https://apps.apple.com/us/app/insight-timer-meditate-sleep/id337472899",
  "country": "US",
  "scrapedAt": "2026-07-15T09:34:33.234Z"
}
```

*(each record also carries `description`, `releaseNotes`, `icon`, `screenshots` count and `languages` — trimmed here for brevity)*

### Input

| Field | Default | Description |
|---|---|---|
| `search` | `meditation` | Keyword to search apps for |
| `searchTerms` | — | More keywords in one run |
| `appIds` | — | Numeric App Store IDs to look up directly |
| `country` | `us` | Storefront country code — affects price, currency, availability |
| `maxItems` | `200` | Stop after this many apps |

**The default run needs no configuration** — an empty input searches `meditation` on the US storefront.

### Reliability & limits

- The iTunes Search API returns **at most ~200 results per keyword** — use several `searchTerms` to widen coverage.
- Data freshness follows Apple's API (typically minutes-to-hours behind the live store page).
- Prices and availability are storefront-specific; run per `country` for international pricing matrices.
- Zero results (dead keyword, API hiccup) fail the run loudly — schedules never rot silently.

### Paste this output into…

- **Google Sheets** — `=IMPORTDATA("https://api.apify.com/v2/acts/exuberant_volley~app-store-apps-scraper/runs/last/dataset/items?format=csv&clean=1&token=YOUR_TOKEN&fields=name,developer,category,rating,ratingCount,price,version,lastUpdated,url")` for a live keyword-tracking sheet.
- **Make / n8n** — schedule weekly per keyword, fetch `.../runs/last/dataset/items`, and diff `version`/`lastUpdated` to catch competitor releases.
- **ASO delta tracker (consultants)** — store `rating` and `ratingCount` per `appId` each week; the week-over-week `ratingCount` delta is a direct download-velocity proxy for client reports.

### ScrapeForge free data suite

One publisher, fourteen plug-and-play datasets — all currently free to run:

| Actor | What it delivers | |
|---|---|---|
| [Executive Changes Tracker](https://apify.com/exuberant_volley/executive-changes-scraper) | New CEO/CFO/board moves from SEC 8-Ks + official newswires — source-cited B2B trigger leads | [run it next →](https://apify.com/exuberant_volley/executive-changes-scraper) |
| [IKEA Product Scraper](https://apify.com/exuberant_volley/ikea-product-scraper) | Names, prices, ratings and images from any IKEA search or category page | [run it next →](https://apify.com/exuberant_volley/ikea-product-scraper) |
| [Shopify Store Scraper](https://apify.com/exuberant_volley/shopify-store-scraper) | Any Shopify store's full catalog — variants, SKUs, prices — via products.json | [run it next →](https://apify.com/exuberant_volley/shopify-store-scraper) |
| [App Store Apps Scraper](https://apify.com/exuberant_volley/app-store-apps-scraper) | App rankings, ratings, prices and metadata by keyword, any country | [run it next →](https://apify.com/exuberant_volley/app-store-apps-scraper) |
| [Remote Jobs Scraper](https://apify.com/exuberant_volley/remote-jobs-scraper) | Live remote listings from RemoteOK + Remotive, keyword-filtered | [run it next →](https://apify.com/exuberant_volley/remote-jobs-scraper) |
| [CoinGecko Market Scraper](https://apify.com/exuberant_volley/coingecko-market-scraper) | Top-coin prices, market caps and 24h moves — keyless | [run it next →](https://apify.com/exuberant_volley/coingecko-market-scraper) |
| [GitHub Repositories Scraper](https://apify.com/exuberant_volley/github-repos-scraper) | Repo search with stars, forks, topics and licenses | [run it next →](https://apify.com/exuberant_volley/github-repos-scraper) |
| [Hacker News Scraper](https://apify.com/exuberant_volley/hackernews-scraper) | Top/New/Best HN stories with scores and comment counts | [run it next →](https://apify.com/exuberant_volley/hackernews-scraper) |
| [Wikipedia Scraper](https://apify.com/exuberant_volley/wikipedia-scraper) | Article summaries, images and URLs in any language — RAG-ready | [run it next →](https://apify.com/exuberant_volley/wikipedia-scraper) |
| [SEC EDGAR Filings Scraper](https://apify.com/exuberant_volley/sec-edgar-filings-scraper) | Any US public company's filing history by ticker | [run it next →](https://apify.com/exuberant_volley/sec-edgar-filings-scraper) |
| [Open-Meteo Weather Scraper](https://apify.com/exuberant_volley/open-meteo-weather-scraper) | 16-day daily forecast for any coordinates — temps, rain, wind — keyless | [run it next →](https://apify.com/exuberant_volley/open-meteo-weather-scraper) |
| [arXiv Papers Scraper](https://apify.com/exuberant_volley/arxiv-papers-scraper) | Research papers by topic — abstracts, categories, PDF links, newest-first sort | [run it next →](https://apify.com/exuberant_volley/arxiv-papers-scraper) |
| [NVD CVE Scraper](https://apify.com/exuberant_volley/nvd-cve-scraper) | Fresh CVEs with CVSS severity, CWE ids and CISA known-exploited flags | [run it next →](https://apify.com/exuberant_volley/nvd-cve-scraper) |
| [npm Registry Scraper](https://apify.com/exuberant_volley/npm-registry-scraper) | npm package vitals — latest version, license, weekly downloads, dependency count | [run it next →](https://apify.com/exuberant_volley/npm-registry-scraper) |

### Compliance

- **No personal data** — app catalog data only, GDPR-safe.
- **Official API underneath** — Apple's public iTunes Search API; no HTML parsing, no logins.
- Records live only in your run's dataset; the actor keeps nothing beyond it.

# Actor input Schema

## `search` (type: `string`):

Keyword to search apps for, e.g. "budget tracker".

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

Scrape multiple keywords in one run.

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

Numeric App Store track IDs to look up directly (e.g. 310633997 for WhatsApp).

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

Two-letter storefront country code (us, gb, de, lt, ...). Affects price, currency and availability.

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

Stop after this many apps.

## Actor input object example

```json
{
  "search": "meditation",
  "country": "us",
  "maxItems": 200
}
```

# 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 = {
    "search": "meditation"
};

// Run the Actor and wait for it to finish
const run = await client.actor("exuberant_volley/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 = { "search": "meditation" }

# Run the Actor and wait for it to finish
run = client.actor("exuberant_volley/app-store-apps-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 '{
  "search": "meditation"
}' |
apify call exuberant_volley/app-store-apps-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/USnlxDrHsSwQyWt8F/builds/reYUXtyV58Biu8VQy/openapi.json
