# App Store Metadata — Apps, Pricing, Ratings & Reviews (`vhsgreed/appstore-metadata`) Actor

App Store app records straight from the official keyless iTunes Search API: search by keyword or look up apps by Apple ID in any storefront. Get name, seller, price, ratings, version, release notes, genres and store URL — plus recent customer reviews via the official RSS feed. No API key, no login.

- **URL**: https://apify.com/vhsgreed/appstore-metadata.md
- **Developed by:** [Karl Sundström](https://apify.com/vhsgreed) (community)
- **Categories:**
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.01 / 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?

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 Metadata — App Data, Pricing, Ratings & Reviews

> Independent tool for public App Store data. Not affiliated with Apple Inc. App Store and iTunes are trademarks of Apple Inc.

Extract App Store app records straight from the official keyless iTunes Search API. Search by keyword or look up apps by Apple ID in any of 175+ storefronts, and get name, seller, price, average rating, rating count, current version, release notes, genres and the store URL — flat one-record-per-app output ready for CRM or spreadsheet import. No API key, no login, no browser; exports to CSV/Excel/JSON.

### Why App Store Metadata?

- 🎯 **Official source, zero friction** — data comes from Apple's own iTunes Search and RSS endpoints; no scraping, no key, no login.
- 🌍 **Any storefront** — pass `country: de`, `gb`, `se` and see localized pricing, rankings and reviews per market.
- 💬 **Recent customer reviews** — opt-in per-app reviews from the official `customerreviews` RSS feed, newest first.
- 📊 **Competitor tracking** — watch prices, ratings and release notes for rival apps on a schedule.
- 🧾 **Flat output** — one row per app with stable fields, built for spreadsheets and enrichment pipelines.

### Use cases

- **Market research** — map who sells what in a category, at what price, in which countries.
- **Competitive intelligence** — track competitor version releases and release notes; new versions are your trigger to review their changelog.
- **ASO & lead gen** — build lists of apps by keyword with seller contacts surfaced in the `seller` field.
- **Review monitoring** — pull the latest customer reviews for your own or competitor apps into a dashboard.
- **App enrichment** — take a list of Apple app IDs and hydrate it with price, rating and genre data.

### What data you get

| Field | Description |
| --- | --- |
| 🆔 `appId` | Numeric Apple app ID |
| 📦 `bundleId` | Bundle identifier (e.g. `com.spotify.client`) |
| 🏷️ `name` | App display name |
| 🏢 `seller` | Seller / publisher name |
| 💰 `price` | Formatted storefront price (e.g. `$5.99`, `Free`) |
| ⭐ `rating` | Average user rating (0–5) |
| 🔢 `ratingCount` | Number of ratings |
| 🧩 `version` | Current version string |
| 📝 `releaseNotes` | What's new in the current version, if provided |
| 🗂️ `genres` | App Store genre list |
| 🔗 `url` | App Store web URL |

With `includeReviews`, each app additionally yields review records: `reviewId`, `author`, `rating`, `title`, `content`, `version`, `updated`.

### How to use

1. Create a free Apify account and open the actor.
2. Enter a `searchTerm` (e.g. `budgeting`) and/or a list of Apple `appIds` (e.g. `324684580`).
3. Set `country` to the storefront you want (default `us`) and `maxResults` to cap the bill.
4. Flip `includeReviews` if you also want recent customer reviews per app.
5. Run and export results to CSV, Excel or JSON.

### Input

```json
{
  "searchTerm": "budgeting",
  "appIds": ["324684580"],
  "country": "us",
  "maxResults": 50,
  "includeReviews": false
}
```

| Field | Type | Default | Description |
| --- | --- | --- | --- |
| `searchTerm` | string | — | Keyword searched in the App Store |
| `appIds` | array | `[]` | Direct Apple app IDs to look up |
| `country` | string | `us` | Two-letter iTunes storefront code |
| `maxResults` | integer | `50` | Cap on app records (max 200, the API's page size) |
| `includeReviews` | boolean | `false` | Also fetch most-recent reviews per app |

### Output

```json
{
  "appId": 324684580,
  "bundleId": "com.spotify.client",
  "name": "Spotify - Music and Podcasts",
  "seller": "Spotify",
  "price": "Free",
  "rating": 4.4,
  "ratingCount": 2854621,
  "version": "9.1.78",
  "releaseNotes": "We're always making improvements...",
  "genres": ["Music", "Entertainment"],
  "url": "https://apps.apple.com/us/app/spotify-music-and-podcasts/id324684580",
  "country": "us"
}
```

### Support

Open an issue in the repository or message the maintainer via Apify Console.

# Actor input Schema

## `searchTerm` (type: `string`):

Keyword searched in the App Store, e.g. 'fitness tracker' or 'budgeting'

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

Direct list of numeric Apple app IDs, e.g. 324684580 (Spotify)

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

Two-letter iTunes storefront code, e.g. us, gb, de, se

## `maxResults` (type: `integer`):

Cap on app records returned (default 50, max 200)

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

Also fetch the most-recent customer reviews per app from the official RSS feed (adds one request per app)

## Actor input object example

```json
{
  "country": "us",
  "maxResults": 50,
  "includeReviews": false
}
```

# Actor output Schema

## `records` (type: `string`):

Dataset of app records (one per app, reviews interleaved with type=review).

## `recordsJson` (type: `string`):

Full dataset items as raw JSON.

## `runView` (type: `string`):

Inspect this run, its logs and storages in Apify Console.

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("vhsgreed/appstore-metadata").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("vhsgreed/appstore-metadata").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 '{}' |
apify call vhsgreed/appstore-metadata --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,vhsgreed/appstore-metadata"
        }
    }
}

```

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/jQ0XjDKT62IV7ly02/builds/oxmTjXFODL2vxlAUd/openapi.json
