# App Store scraper API for app details, reviews and search

> Look up any iOS app by ID or bundle ID, see how its ratings split across the five stars, page through its written reviews with the developer’s responses, and search the App Store. One storefront per call, as JSON.

Canonical page: https://scrapercompany.com/app-store-api. Endpoints and prices checked against the API on 2026-10-11.

Teams that track apps want the same things on iOS as on Android: ratings, versions, prices and what reviewers say. Apple’s App Store Connect API only covers apps in your own developer account. Its public iTunes Search API searches and looks up any app, but it returns no reviews and no per-star rating counts, and Apple documents a limit of roughly 20 calls a minute for it.

App details and search here come from Apple’s public iTunes lookup and Search API, mapped to field names that match the Google Play API where the data overlaps. What this API adds is what the iTunes API lacks: the 1 to 5 star histogram and the written reviews, both read from the App Store website’s own catalog data. Reviews are paged 20 at a time in four sort orders, with the developer’s response attached. Everything is per storefront, because price, currency, ratings and reviews all differ by country.

## What you get

- `app_id, bundle_id`: Apple’s numeric app ID and the bundle ID; the details call takes either
- `rating, ratings_count`: all-time average rating and number of ratings in the storefront
- `histogram`: number of ratings at each star level, 1 to 5, which the iTunes API does not provide
- `current_version_rating`: average rating for the current version, with current_version_ratings_count
- `price`: value, currency, display text and a free flag for the storefront
- `version, updated, release_notes`: current version, when it was released and its release notes
- `reviews[]`: title, text, stars, author, date, an edited flag and the developer_response
- `next_offset`: offset for the next page of reviews, absent on the last page

## Endpoints and price per call

| Endpoint | Method and path | What it returns | Credits per successful call | Price per call |
| --- | --- | --- | --- | --- |
| [App details](https://scrapercompany.com/docs/reference/app-store-app) | `POST /v1/app_store/app` | One app’s record by app ID or bundle ID, with the star histogram | 2 credits | $0.0020 on Starter, $0.0012 on Growth, $0.0008 on Scale |
| [Reviews](https://scrapercompany.com/docs/reference/app-store-reviews) | `POST /v1/app_store/reviews` | One page of up to 20 written reviews, in one of four sort orders | 2 credits | $0.0020 on Starter, $0.0012 on Growth, $0.0008 on Scale |
| [App search](https://scrapercompany.com/docs/reference/app-store-search) | `POST /v1/app_store/search` | Up to 200 apps for a search term in one storefront | 2 credits | $0.0020 on Starter, $0.0012 on Growth, $0.0008 on Scale |

Pricing: Free $0/month for 1,000 credits; Starter $49/month for 50,000 credits; Growth $149/month for 250,000 credits; Scale $399/month for 1,000,000 credits. Failed requests (4xx or 5xx) and empty results cost 0 credits. Free during the beta. https://scrapercompany.com/pricing

## Example

`POST /v1/app_store/reviews`, 2 credits per successful call.

```bash
curl -X POST "https://api.scrapercompany.com/v1/app_store/reviews" \
  -H "x-api-key: $SCRAPERCOMPANY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "app_id": "324684580"
  }'
```

Response (trimmed):

```json
{
  "search_parameters": {
    "engine": "app_store_reviews",
    "app_id": "1010865877",
    "country": "us",
    "sort": "most_recent",
    "offset": 0
  },
  "reviews": [
    {
      "review_id": "14626730862",
      "title": "Year later update",
      "text": "Same satisfaction as last post.…",
      "rating": 5,
      "author": "Reviewer A",
      "date": "2026-10-04T13:25:50Z",
      "edited": true,
      "developer_response": {
        "id": "61336294",
        "text": "Thanks for posting this encouragement!…",
        "date": "2026-04-17T04:16:19Z"
      }
    },
    {
      "review_id": "14628768234",
      "title": "Super Capable Budgeting App",
      "text": "This is the best subscription I have.…",
      "rating": 5,
      "author": "Reviewer B",
      "date": "2026-10-05T00:42:40Z",
      "edited": false
    }
  ],
  "total": 2,
  "next_offset": 20,
  "meta": {
    "source": "app_store",
    "wire_bytes": 19543,
    "elapsed_s": 0.069
  }
}
```

## FAQ

### Does the App Store have an official API?

Apple has two. The App Store Connect API is for apps in your own developer account, including their customer reviews. The public iTunes Search API searches and looks up any app but returns no reviews or per-star rating counts. ScraperCompany is independent of Apple, and this API needs no Apple developer account.

### What does this API add beyond the iTunes Search API?

Search and app details come from Apple’s public iTunes Search API and lookup, so for those the gain is convenience: one key, consistent fields, and no charge for failed calls. What the iTunes API lacks is reviews and per-star counts. This API adds the 1 to 5 star histogram to every app record and pages through written reviews with developer responses, both from the App Store website’s own catalog data.

### How do I find an app’s App Store ID?

It is the number after id in the app’s App Store URL: for apps.apple.com/us/app/spotify-music-and-podcasts/id324684580 it is 324684580. Search returns it as app_id, and the details endpoint also accepts a bundle ID such as com.spotify.client.

### How many reviews can I get per call?

Up to 20, which is Apple’s page size. Pass next_offset from one answer as offset in the next call, with the same sort; it is absent on the last page. Ratings left without text are not reviews and never appear. Each page is billed once, and an empty page is free.

### Are ratings and reviews different in each country?

Yes. Each App Store storefront has its own price, currency, ratings and reviews, so set country (us, gb, jp and so on) on every call. An app’s US rating says nothing about how it is rated in the UK.

### Do failed requests cost credits?

No. A failed or blocked call (any 4xx or 5xx response) costs 0 credits, and so does a search page that comes back empty. You pay only for successful results.

### How do I get an API key?

Create an account on the sign-up page. Public sign-up is invite-only during the beta, so join the waitlist there and we will email you when your account is ready. The Free plan includes 1,000 credits a month, and the API is free while it is in beta. You create and rotate keys yourself in the dashboard.

## Read next

- [Google Play scraper API](https://scrapercompany.com/google-play-api)
- [App Store reviews reference](https://scrapercompany.com/docs/reference/app-store-reviews)
- [MCP server](https://scrapercompany.com/docs/mcp)
- [All APIs](https://scrapercompany.com/apis.md)
