# App Store App Details & Metadata (`appsigma/app-store-app-details`) Actor

Fetch full iOS App Store metadata for any app by ID — description, ratings, pricing, in-app purchases, chart positions, screenshots/videos, and more.

- **URL**: https://apify.com/appsigma/app-store-app-details.md
- **Developed by:** [AppSigma.io](https://apify.com/appsigma) (community)
- **Categories:** Developer tools, SEO tools, Other
- **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/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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/integrations/mcp.md).

If your project is in a different language, use 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 App Details & Metadata 📱

**Get the full App Store listing for any iOS app — in one clean row.** Give this Actor
a list of Apple App Store IDs and it returns everything Apple shows on the app's page:
description, ratings, pricing, in-app purchases, chart positions, screenshots, videos,
and all the technical metadata (bundle ID, minimum OS, content rating, file size, and
more).

No scraping, no proxies, no HTML parsing. Powered by the
[AppSigma App Store API](https://appsigma.io), served straight from Apple's data.

---

### What it does

For every **App Store ID** you provide, the Actor fetches the app's complete listing
and records it as a single flat row — ready to export to CSV, Excel, JSON, or push into
your own pipeline.

- ✅ **Full listing snapshot** — description, developer, category, rating breakdown,
  price, in-app purchases, chart positions, and more
- ✅ **Rich media** — screenshots and preview videos per device, kept as structured data
- ✅ **Spreadsheet-friendly** — scalar fields pre-unwrapped into flat columns; only the
  genuinely nested data (screenshots, videos, IAPs, chart positions) stays as JSON
- ✅ **Fast & reliable** — parallel lookups, automatic retries, no proxies to configure
- ✅ **Bulk-friendly** — pass as many app IDs as you need in one run

### Use cases

- **Metadata enrichment** — pull full app details into your own database or BI tool
  from just a list of App Store IDs.
- **Catalog building** — assemble a structured catalog of apps for a directory,
  comparison site, or research dataset.
- **Competitor monitoring** — track a competitor's description, pricing, ratings, and
  in-app purchases over time by re-running on a schedule.
- **ASO listing audits** — review exactly what's live on the App Store (title, subtitle,
  description, screenshots) for your own apps or a set of comps.

---

### Input

Configure it from the visual input form or pass JSON:

| Field | Type | Default | Description |
|-------|------|---------|--------------|
| **`appIds`** *(required)* | array of strings | — | Apple App Store track IDs (the numeric ID from the app's App Store URL) |
| `iconWidth` | integer 16–2048 | `512` | Pixel width for the ready-to-use `icon` image URL |
| `concurrency` | integer 1–20 | `5` | How many app lookups to run in parallel |

#### Example input

```json
{
  "appIds": ["544007664", "284882215"],
  "iconWidth": 512
}
````

#### Finding an App Store ID

It's the number in the app's App Store URL, e.g. for
`https://apps.apple.com/us/app/youtube-watch-listen-stream/id544007664`, the ID is
`544007664`.

***

### Output

Each row is one app's full listing. Nested objects (developer, rating, price, genre)
are flattened into plain columns so most of the data drops straight into a spreadsheet;
genuinely list-shaped data (screenshots, videos, in-app purchases, chart positions)
stays as nested JSON so nothing is lost.

#### Example row *(trimmed)*

```json
{
  "appId": 544007664,
  "name": "YouTube: Watch, Listen, Stream",
  "shortName": "YouTube",
  "subtitle": "Videos, music, and live TV",
  "description": "Get the official YouTube app on iPhones and iPads...",
  "developerId": 281956209,
  "developerName": "Google LLC",
  "primaryGenre": "Entertainment",
  "primaryGenreId": 6016,
  "icon": "https://is1-ssl.mzstatic.com/image/thumb/.../512x0w.png",
  "ratingScore": 4.7,
  "ratingCount": 48142765,
  "ratingCurrentVersionScore": 4.7,
  "ratingCurrentVersionCount": 12345,
  "releaseDate": "2012-09-11T07:00:00.000Z",
  "priceFormatted": "Free",
  "priceAmountMinor": 0,
  "priceCurrency": "USD",
  "priceDiscount": false,
  "hasInAppPurchases": true,
  "supportsArcade": false,
  "hasAds": true,
  "hasAchievements": false,
  "deletedInStoreAt": null,
  "bundleId": "com.google.ios.youtube",
  "minimumOsVersion": "15.0",
  "contentRating": "17+",
  "fileSizeBytes": "123456789",
  "genreNames": ["Entertainment", "Photo & Video"],
  "supportedDevices": ["iphone", "ipad", "ipod", "mac"],
  "languageCodes": ["EN", "FR", "DE"],
  "advisories": ["Infrequent/Mild Mature/Suggestive Themes"],
  "inAppPurchases": [{ "name": "Premium", "price": "$9.99" }],
  "chartPositions": [{ "country": "us", "category": "overall", "position": 3 }],
  "screenshots": { "iphone": [{ "url": "https://...", "width": 1284, "height": 2778 }] },
  "videos": { "iphone": [{ "url": "https://..." }] },
  "_fetchedAt": "2026-07-25T00:00:00.000Z"
}
```

#### Fields

| Field | Description |
|-------|--------------|
| `appId`, `name`, `shortName`, `subtitle`, `description` | App identity and listing copy |
| `developerId`, `developerName` | Publisher |
| `primaryGenre`, `primaryGenreId`, `genreNames` | Apple category (primary + all assigned genres) |
| `icon` | Ready-to-use icon image URL, sized to `iconWidth` (default 512px) |
| `ratingScore`, `ratingCount` | Aggregate all-time star rating and number of ratings |
| `ratingCurrentVersionScore`, `ratingCurrentVersionCount` | Rating for the current version only |
| `releaseDate`, `deletedInStoreAt` | First-release date; set if the app has since been pulled from the store |
| `priceFormatted`, `priceAmountMinor`, `priceCurrency`, `priceDiscount` | Pricing (`priceAmountMinor` is in minor units, e.g. cents) |
| `hasInAppPurchases`, `supportsArcade`, `hasAds`, `hasAchievements` | Store flags |
| `bundleId`, `minimumOsVersion`, `contentRating`, `fileSizeBytes` | Technical / compliance metadata |
| `supportedDevices`, `languageCodes`, `advisories` | Device support, localizations, content advisories |
| `inAppPurchases` | Full list of in-app purchase items and prices |
| `chartPositions` | Current top-chart standings, per country/category |
| `screenshots`, `videos` | Media assets, keyed by device (iphone, ipad, mac, watch, appletv, ...) |
| `_fetchedAt` | When the row was captured (ISO 8601) |

Apps that no longer exist on the App Store (a bad or delisted ID) are skipped with a
warning rather than failing the run — check the run summary's `notFound` list.

***

### Exporting & integrating

Results land in a standard Apify dataset, so you can:

- **Download** as CSV, JSON, Excel, XML, or RSS from the run's Storage tab.
- **Fetch via API** — pull the dataset programmatically with the Apify API or clients.
- **Automate** — schedule runs, or connect to Make, Zapier, n8n, Slack, and more.

### Pricing

This Actor is **pay per result** — you're charged per app record it returns, with no
platform usage or compute to reason about.

### FAQ

**Do I need an API key or an account anywhere?**
No. Just provide App Store IDs and run it — billing is handled through Apify.

**What if an app ID doesn't exist or has been removed?**
It's skipped with a warning and listed under `notFound` in the run summary; the run
continues for the rest of your list.

**How is this different from scraping the App Store page myself?**
You get a stable, structured schema (ratings, pricing, IAPs, chart positions, media)
in one request — no HTML parsing, no layout changes to chase.

**Can I look up a lot of apps at once?**
Yes — pass as many IDs as you need in `appIds`; `concurrency` controls how many are
fetched in parallel.

# Actor input Schema

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

Apple App Store track IDs to fetch full details for (the numeric ID from the app's App Store URL).

## `iconWidth` (type: `integer`):

Width in pixels for the app icon URL. Apple returns a base URL; the Actor appends a size suffix (e.g. 512x0w.png) so the icon field is a ready-to-use image link.

## `concurrency` (type: `integer`):

How many app lookups to run in parallel (1-20). Lower this if you hit rate limits.

## Actor input object example

```json
{
  "appIds": [
    "544007664"
  ],
  "iconWidth": 512,
  "concurrency": 5
}
```

# Actor output Schema

## `details` (type: `string`):

The default dataset — one flat row per app, with rich fields (screenshots, videos, in-app purchases, chart positions) kept as nested JSON.

## `summary` (type: `string`):

The OUTPUT record in the default key-value store: appIds, rowsPushed, requestsMade, creditsSpent, stoppedReason, and notFound.

# 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 = {
    "appIds": [
        "544007664"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("appsigma/app-store-app-details").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 = { "appIds": ["544007664"] }

# Run the Actor and wait for it to finish
run = client.actor("appsigma/app-store-app-details").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 '{
  "appIds": [
    "544007664"
  ]
}' |
apify call appsigma/app-store-app-details --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "App Store App Details & Metadata",
        "description": "Fetch full iOS App Store metadata for any app by ID — description, ratings, pricing, in-app purchases, chart positions, screenshots/videos, and more.",
        "version": "0.1",
        "x-build-id": "L3uZ5zDVItIMedtst"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/appsigma~app-store-app-details/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-appsigma-app-store-app-details",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/appsigma~app-store-app-details/runs": {
            "post": {
                "operationId": "runs-sync-appsigma-app-store-app-details",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/appsigma~app-store-app-details/run-sync": {
            "post": {
                "operationId": "run-sync-appsigma-app-store-app-details",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "appIds"
                ],
                "properties": {
                    "appIds": {
                        "title": "App IDs",
                        "type": "array",
                        "description": "Apple App Store track IDs to fetch full details for (the numeric ID from the app's App Store URL).",
                        "default": [
                            "544007664"
                        ],
                        "items": {
                            "type": "string"
                        }
                    },
                    "iconWidth": {
                        "title": "Icon width (px)",
                        "minimum": 16,
                        "maximum": 2048,
                        "type": "integer",
                        "description": "Width in pixels for the app icon URL. Apple returns a base URL; the Actor appends a size suffix (e.g. 512x0w.png) so the icon field is a ready-to-use image link.",
                        "default": 512
                    },
                    "concurrency": {
                        "title": "Concurrency",
                        "minimum": 1,
                        "maximum": 20,
                        "type": "integer",
                        "description": "How many app lookups to run in parallel (1-20). Lower this if you hit rate limits.",
                        "default": 5
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
