# App Store Apps Scraper: Top Charts & Details (`luzivanlt/app-store-apps-scraper`) Actor

App Store apps with every store field, from search, top charts (all 200 ranks), developers or ids. $1 per 1,000 apps. Any country. Ratings per star, in-app purchases, privacy labels.

- **URL**: https://apify.com/luzivanlt/app-store-apps-scraper.md
- **Developed by:** [Luzi](https://apify.com/luzivanlt) (community)
- **Categories:** Marketing, Developer tools, Business
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.70 / 1,000 apps

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## App Store Apps Scraper: Top Charts & Details

Get Apple App Store apps with every field the store gives them, from search
terms, whole top charts (all 200 ranks of Top free and Top paid), developers,
app links, app ids or bundle ids, in up to 50 countries in one run: rating
and rating count, price, version, size, languages, age rating and
advisories, developer and seller, genres, release and update dates, what's
new and screenshots. Turn on the app page details for ratings per star,
in-app purchases with prices, privacy labels, links, chart rank, events and
top reviews. No Apple ID, login or cookies needed.

Tested daily. Latest checks: six US top charts (free, paid and grossing, for
all apps and for games) read whole, 863 distinct apps in 45 seconds; and 130
apps with app page details from a search, a developer and ids in the US and
German stores.

### What does this Actor do?

You give it search terms, App Store links or ids, developers, or pick top
charts. For each source it finds the apps in the order the store shows them
and saves one row per app and country. A source can be:

- a **search term** such as `photo editor` (up to 200 apps, in the store's
  order)
- a **top chart**: Top free or Top paid (up to 200 ranks) or Top grossing
  (up to 100), for all apps, one genre such as Productivity, or Games or one
  game genre such as Games: Puzzle, on iPhone or iPad
- a **developer**: a developer's apps (up to 200), from a developer page
  link or id
- an **app**: an app page link, an app id such as `570060128`, or a bundle id
  such as `com.duolingo.DuolingoMobile`

Each row comes with:

- the app id, bundle id, name, link, icon and screenshots (iPhone, iPad,
  Apple TV)
- the description, what's new, version, release and last update dates
- price (as a number and as shown) and currency
- the average rating and the number of ratings, for all versions and for the
  current one
- the age rating, content advisories, genres with their ids, minimum iOS
  version, size in bytes, languages, supported devices and features, Game
  Center
- the developer, their id and page, the seller and the seller's website
- where it was found (search, chart, developer or id), its position there,
  how many apps that source holds, and the country read

With **Include app page details** on, each row also gets: the subtitle,
Editors' Choice and its note, the count of 1- to 5-star ratings, the chart
rank shown on the page, every in-app purchase with its price, whether it has
in-app or external purchases, the privacy labels (data used to track you,
linked to you, not linked), the age-rating reasons, copyright, the developer
website, support and privacy-policy links, the EU trader details, the
requirements for each device, accessibility features, capabilities such as
SharePlay, current events, preview videos, screenshots for every device
(Mac, Apple Vision, Apple TV too), the ids of similar apps and of the
developer's other apps, the stories it was featured in, and the top reviews
shown on the page with any developer reply.

### Why use it?

- **Whole top charts.** Top free and Top paid are read to their 200th rank,
  in rank order, for any genre, country and device.
- **Many countries in one run.** Every search, chart, developer and id is
  read in each country you list, one row per app and country, so prices,
  ratings and ranks can be compared side by side.
- **Every source in one Actor.** Search terms, charts, developers, links, app
  ids and bundle ids can be mixed in one run.
- **What only the app page shows, on request.** Ratings per star, in-app
  purchase prices, privacy labels, the EU trader details and top reviews,
  at the same price per app.
- **Use the data anywhere.** Download as JSON, CSV or Excel, or send it to
  your own tools through Apify's API and integrations.

### How to use it

1. Type **Search terms**, paste **App Store links**, **App ids or bundle
   ids** or **Developer ids**, or pick **Top charts** and **Chart genres**.
2. Optionally, set **Countries**, **Device** and **Max apps per source**, and
   turn on **Include app page details**.
3. Click **Start**. When the run ends, open the **Output** tab to view the
   apps or download them.

Run it with no input to see a sample: 20 apps for the search `photo editor`
and the top 20 free iPhone apps in the US, charged as usual.

### Input

| Field                                           | What it does                                                         | Default  |
| ----------------------------------------------- | -------------------------------------------------------------------- | -------- |
| **Search terms** (`searchTerms`)                | Words to search App Store apps for                                   | —        |
| **App Store links** (`startUrls`)               | App pages or developer pages                                         | —        |
| **App ids or bundle ids** (`appIds`)            | Such as `570060128` or `com.duolingo.DuolingoMobile`                 | —        |
| **Developer ids** (`developerIds`)              | Every app of each developer, such as `570060151`                     | —        |
| **Top charts** (`topCharts`)                    | `free`, `paid`, `grossing`: each chart is read for every chart genre | —        |
| **Chart genres** (`chartGenres`)                | `36` (all apps), `6014` (games), or a genre id such as `6007`        | `["36"]` |
| **Countries** (`countries`)                     | The stores to read, as two-letter codes; each source is read in each | `["us"]` |
| **Device** (`platform`)                         | `iphone` or `ipad`, for charts and search                            | `iphone` |
| **Max apps per source** (`maxAppsPerSource`)    | The most apps to save from each source, per country (1 to 200)       | 100      |
| **Include app page details** (`includeAppPage`) | Add what only the app's store page shows (one more page per app)     | off      |

Give at least one search term, link, id or chart. Example input:

```json
{
  "searchTerms": ["budget planner"],
  "appIds": ["570060128", "com.spotify.client"],
  "topCharts": ["free", "paid"],
  "chartGenres": ["6014"],
  "countries": ["us", "gb"],
  "maxAppsPerSource": 200
}
```

### Output

One row per app and country. An example, with made-up values and shortened
lists:

```json
{
  "app_key": "us/1000000001",
  "app_id": "1000000001",
  "bundle_id": "com.example.notes",
  "app_name": "Notes: Simple Notepad",
  "app_censored_name": "Notes: Simple Notepad",
  "app_url": "https://apps.apple.com/us/app/notes-simple-notepad/id1000000001",
  "country": "us",
  "kind": "software",
  "subtitle": "Write it down fast",
  "editors_choice": false,
  "description": "Notes is a simple notepad…",
  "release_notes": "Bug fixes and a new dark theme.",
  "version": "5.2.1",
  "released_at": "2018-03-01T08:00:00Z",
  "updated_at": "2026-10-20T07:00:00Z",
  "price": 0,
  "formatted_price": "Free",
  "currency": "USD",
  "rating": 4.6,
  "rating_count": 120345,
  "rating_current_version": 4.6,
  "rating_count_current_version": 120345,
  "content_rating": "4+",
  "content_advisory_rating": "4+",
  "advisories": [],
  "primary_genre": "Productivity",
  "primary_genre_id": "6007",
  "genres": ["Productivity", "Utilities"],
  "genre_ids": ["6007", "6002"],
  "developer": "Example Studio",
  "developer_id": "900000001",
  "developer_url": "https://apps.apple.com/us/developer/example-studio/id900000001",
  "seller_name": "Example Studio Ltd",
  "seller_url": "https://studio.example",
  "minimum_os_version": "16.0",
  "file_size_bytes": 52428800,
  "languages": ["EN", "FR"],
  "supported_devices": ["iPhone15-iPhone15"],
  "features": ["iosUniversal"],
  "is_game_center_enabled": false,
  "is_vpp_device_based_licensing_enabled": true,
  "icon_url": "https://is1-ssl.mzstatic.com/…/512x512bb.jpg",
  "icon_url_100": "https://is1-ssl.mzstatic.com/…/100x100bb.jpg",
  "icon_url_60": "https://is1-ssl.mzstatic.com/…/60x60bb.jpg",
  "screenshot_urls": ["https://is1-ssl.mzstatic.com/…/392x696bb.jpg"],
  "ipad_screenshot_urls": [],
  "appletv_screenshot_urls": [],
  "source_type": "chart",
  "source": "top-free/6007/iphone",
  "source_count": 200,
  "position": 12
}
```

With **Include app page details** on, the same row also has:

```json
{
  "app_page_read": true,
  "editors_notes": null,
  "rating_histogram": { "5": 94200, "4": 15210, "3": 4120, "2": 1803, "1": 5012 },
  "chart_rank": 12,
  "chart_name": "Productivity",
  "size_text": "50 MB",
  "compatibility": [{ "device": "iPhone", "requirement": "Requires iOS 16.0 or later." }],
  "languages_text": "English, French",
  "age_rating": "4+",
  "age_rating_contains": ["Advertising"],
  "has_in_app_purchases": true,
  "has_external_purchases": false,
  "in_app_purchases": [{ "name": "Pro (monthly)", "price": "$2.99" }],
  "provider": "Example Studio Ltd",
  "provider_details": [],
  "copyright": "© 2026 Example Studio Ltd",
  "other_information": [],
  "developer_website": "https://studio.example",
  "privacy_policy_url": "https://studio.example/privacy",
  "app_website": "https://studio.example/notes",
  "support_url": "https://studio.example/help",
  "has_custom_license_agreement": false,
  "links": [{ "text": "Developer Website", "url": "https://studio.example" }],
  "screenshots_by_device": { "phone": ["https://is1-ssl.mzstatic.com/…/1242x2688bb.jpg"] },
  "preview_videos": [],
  "capabilities": [],
  "privacy_types": [
    {
      "type": "DATA_LINKED_TO_YOU",
      "title": "Data Linked to You",
      "purposes": [
        {
          "purpose": "APP_FUNCTIONALITY",
          "title": "App Functionality",
          "categories": [
            { "category": "CONTACT_INFO", "title": "Contact Info", "data_types": ["Email Address"] }
          ]
        }
      ],
      "categories": [
        { "category": "CONTACT_INFO", "title": "Contact Info", "data_types": ["Email Address"] }
      ]
    }
  ],
  "app_events": [],
  "accessibility": ["VoiceOver", "Larger Text"],
  "similar_app_ids": ["1000000002", "1000000003"],
  "more_by_developer_ids": [],
  "featured_in": [],
  "top_reviews": [
    {
      "review_id": "10000000001",
      "title": "Does the job",
      "text": "Simple and fast.",
      "rating": 5,
      "reviewer_name": "A reviewer",
      "date": "2026-10-01T10:00:00.000Z",
      "developer_reply": null,
      "developer_reply_date": null
    }
  ]
}
```

Fields:

- `app_key`: the country and the app id, one per row
- `app_id`, `bundle_id`, `app_name`, `app_censored_name`, `app_url`,
  `country`, `kind`: the app and the store it was read in
- `subtitle`, `editors_choice`: from the chart list for chart rows, from the
  app page with the details on; otherwise empty
- `description`, `release_notes`, `version`, `released_at`, `updated_at`
- `price`, `formatted_price`, `currency`
- `rating`, `rating_count`, `rating_current_version`,
  `rating_count_current_version`
- `content_rating`, `content_advisory_rating`, `advisories`
- `primary_genre`, `primary_genre_id`, `genres`, `genre_ids`
- `developer`, `developer_id`, `developer_url`, `seller_name`, `seller_url`
- `minimum_os_version`, `file_size_bytes`, `languages`, `supported_devices`,
  `features`, `is_game_center_enabled`, `is_vpp_device_based_licensing_enabled`
- `icon_url`, `icon_url_100`, `icon_url_60`, `screenshot_urls`,
  `ipad_screenshot_urls`, `appletv_screenshot_urls`
- `source_type` (`search`, `chart`, `developer`, `app`, `bundle`), `source`,
  `source_count` (the apps a chart or developer holds; empty for a search
  or ids), `position`
- with the app page details: every field of the second example above

### How much does it cost?

No surcharges and no paid options; an item that fails is not charged.

This Actor is priced per app saved:

- **$1 per 1,000 apps** ($0.001 an app). An app found by two sources in one
  run is saved and charged once per country.
- No start fee and nothing per search or chart. App page details add no
  charge.

So a whole top chart of 200 apps costs $0.20. If you set a maximum cost for a
run, the Actor stops when it reaches it and keeps every app saved so far.

### How long does a run take?

About 25 seconds for the sample (40 apps). Six whole US top charts, 863
apps, took 45 seconds. App page details add one page per app: 130 apps with
them took about 125 seconds, about one app a second.

### Good to know

- **A search returns up to 200 apps**, in the store's order. That is all the
  store returns for one term; to get more apps on a topic, add more search
  terms or read the matching genre's top charts.
- **Top free and Top paid hold up to 200 apps; Top grossing up to 100.** A
  chart is read whole. Now and then a chart still lists an app the store has
  removed; that app has no data and no row, and the run's status says the
  chart was read short by it.
- **An app found twice in a run is saved once per country,** with the first
  source that found it as its `source`. The same app in two countries is two
  rows.
- **Some fields are only on some apps.** The seller's website, iPad
  screenshots and features show only where the developer gave them; the
  subtitle and Editors' Choice only on chart rows or with the app page
  details on.
- **App page details read one more page per app**, so a run with them on
  takes longer. Their labels are in English in every country; the
  description and what's new stay in the store's own language.
- **An app page that cannot be read keeps the app's row**, with the page's
  fields empty and `app_page_read` false.
- **Up to 50 countries and 500 sources in one run** (each search term, chart
  × genre, developer and batch of ids counts once per country).
- **One source that cannot be read does not stop the run.** The others carry
  on, and the run's status lists the ones that could not be read.
- **Check your links first.** A link that is not an App Store app or
  developer page stops the run before anything is read, and the message
  names it.
- **This Actor reads app details, not every review.** With the app page
  details on, each row has the few reviews the app page shows; for all of an
  app's reviews, use our
  [App Store Reviews Scraper](https://apify.com/luzivanlt/app-store-reviews-scraper).

### More Actors from us

- [App Store Reviews Scraper: All Reviews, Not 500](https://apify.com/luzivanlt/app-store-reviews-scraper): Every written App Store review of an app, not just the newest 500.
- [Airbnb Scraper: Every Stay, Past the 15-Page Limit](https://apify.com/luzivanlt/airbnb-listings-scraper): Every stay of an Airbnb search, past the 15 pages Airbnb shows, checked against its count.
- [Alibaba Products Scraper: Price Tiers & Suppliers](https://apify.com/luzivanlt/alibaba-products-scraper): Alibaba.com products by keyword or link, with price tiers in US dollars on every row.
- [AliExpress Product Scraper: Search Results & Prices](https://apify.com/luzivanlt/aliexpress-products-scraper): Every product of an AliExpress search to its last page, with exact sold counts and ratings.
- [Amazon Product Scraper: Search Results & Prices](https://apify.com/luzivanlt/amazon-products-scraper): Every product on Amazon's search pages to the last page, sponsored marked, with monthly sales.
- [Woolworths Coles ALDI Scraper: AU Grocery Prices](https://apify.com/luzivanlt/au-supermarkets-scraper): Woolworths, Coles and ALDI products for any search in one run, every results page to the end.
- [Bilibili Video Scraper: Search & Channel Videos](https://apify.com/luzivanlt/bilibili-videos-scraper): Bilibili videos from searches or whole channels, each with its full detail page's data.

### Use it from an AI agent or the API

One call starts a run and returns its items (Apify waits up to 300 seconds; for a
longer run, start it with `POST /v2/acts/…/runs` and read its dataset):

```text
POST https://api.apify.com/v2/acts/luzivanlt~app-store-apps-scraper/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN>
```

With the sample input as its JSON body:

```json
{
  "searchTerms": ["photo editor"],
  "topCharts": ["free"],
  "chartGenres": ["36"],
  "countries": ["us"],
  "platform": "iphone",
  "maxAppsPerSource": 20,
  "includeAppPage": false
}
```

Its inputs, in the order of the input form:

| Input                                       | What it takes                                                                                                                                                                                                                                                                                                                                                                                                               | Default    |
| ------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------- |
| `searchTerms` (Search terms)                | Words to search App Store apps for, as you would type them in the store, e.g. photo editor or budget planner.                                                                                                                                                                                                                                                                                                               | —          |
| `startUrls` (App Store links)               | App Store app pages or developer pages, e.g. https://apps.apple.com/us/app/duolingo-language-lessons/id570060128 or https://apps.apple.com/us/developer/duolingo/id570060151.                                                                                                                                                                                                                                               | —          |
| `appIds` (App ids or bundle ids)            | App Store app ids (570060128 or id570060128) or bundle ids (com.duolingo.DuolingoMobile), read in every country below.                                                                                                                                                                                                                                                                                                      | —          |
| `developerIds` (Developer ids)              | App Store developer ids (the number at the end of a developer page link, e.g. 570060151): the developer's apps are read, up to 200 per developer and country, in every country below.                                                                                                                                                                                                                                       | —          |
| `topCharts` (Top charts)                    | The App Store top charts to read, for each genre in Chart genres: Top free and Top paid are read whole, up to their 200 ranks; Top grossing up to its 100 ranks.                                                                                                                                                                                                                                                            | —          |
| `chartGenres` (Chart genres)                | The genres whose top charts to read: All apps, one genre such as Productivity, or Games or one game genre such as Games: Puzzle.                                                                                                                                                                                                                                                                                            | `["36"]`   |
| `countries` (Countries)                     | The App Store countries to read, as two-letter codes, e.g. us, gb, de, jp, in, br, vn.                                                                                                                                                                                                                                                                                                                                      | `["us"]`   |
| `platform` (Device)                         | Which store to read top charts and search results from: the iPhone store or the iPad store, e.g. ipad for the iPad top charts.                                                                                                                                                                                                                                                                                              | `"iphone"` |
| `maxAppsPerSource` (Max apps per source)    | The most apps to save from each search term, chart, developer or batch of ids, per country.                                                                                                                                                                                                                                                                                                                                 | `100`      |
| `includeAppPage` (Include app page details) | Add what only the app’s store page shows: subtitle, Editors’ Choice and its note, ratings per star, chart rank, in-app purchases with prices, privacy labels, age-rating reasons, copyright, website, support and privacy-policy links, the EU trader details, compatibility per device, accessibility, events, preview videos, screenshots for every device, similar apps, the developer’s other apps and the top reviews. | `false`    |

Apify's MCP server, `https://mcp.apify.com`, lists it as `luzivanlt/app-store-apps-scraper`. To give an
AI agent this Actor as a tool, add the server to the agent's MCP config:

```json
{
  "mcpServers": {
    "apify": {
      "url": "https://mcp.apify.com?tools=luzivanlt/app-store-apps-scraper"
    }
  }
}
```

The client signs in with OAuth, or add `"headers": { "Authorization": "Bearer <APIFY_TOKEN>" }`.

Charged per app delivered; the sample input above costs at most $0.08.

### FAQ

**Do I need an Apple ID or cookies?**
No. The Actor reads what anyone can see on the App Store.

**Can I track charts, prices and ratings over time?**
Yes. Run it on a schedule; each row has the app's position in its chart, its
price and its rating and rating count, so you can compare runs.

**Can I compare the same app across countries?**
Yes. List the countries in **Countries**: each app is one row per country,
with that store's price, rating and rank.

**Can I get all reviews of an app?**
This Actor saves the top reviews shown on each app page (with the app page
details on). For every written review, newest first or by rating, use our
[App Store Reviews Scraper](https://apify.com/luzivanlt/app-store-reviews-scraper).

**Can I run it from my own code, on a schedule, or with other apps?**
Yes. Like any Apify Actor, you can start it through the Apify API, run it on a
schedule, and connect it to other apps with Apify's integrations and webhooks.

### Is it legal to scrape the App Store?

This Actor reads only what anyone can see on the App Store without logging
in. Some fields name people (developers who publish under their own name,
reviewers' names in the top reviews): check Apple's terms and the laws that
apply to you, such as the GDPR, before you use the data. If you are unsure,
ask a lawyer.

### Support

Found a problem or need a field? Open an issue on the Actor's Issues tab and
we will look at it.

# Changelog

This Actor's version history is a separate document: https://apify.com/luzivanlt/app-store-apps-scraper/changelog.md

# Actor input Schema

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

Words to search App Store apps for, as you would type them in the store, e.g. photo editor or budget planner. Each term is one source per country: its apps are read in the order the store returns them, up to 200 a term. Leave empty to use only links, ids or top charts.

## `startUrls` (type: `array`):

App Store app pages or developer pages, e.g. https://apps.apple.com/us/app/duolingo-language-lessons/id570060128 or https://apps.apple.com/us/developer/duolingo/id570060151. A link with a country in it is read in that country only; a link without one, in every country below. A source given twice is read once.

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

App Store app ids (570060128 or id570060128) or bundle ids (com.duolingo.DuolingoMobile), read in every country below. Ids are read in batches of up to 200 (or your Max apps per source, if lower). Example: 570060128

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

App Store developer ids (the number at the end of a developer page link, e.g. 570060151): the developer's apps are read, up to 200 per developer and country, in every country below.

## `topCharts` (type: `array`):

The App Store top charts to read, for each genre in Chart genres: Top free and Top paid are read whole, up to their 200 ranks; Top grossing up to its 100 ranks. In rank order. Leave empty for no charts. Example: \["free", "paid"]

## `chartGenres` (type: `array`):

The genres whose top charts to read: All apps, one genre such as Productivity, or Games or one game genre such as Games: Puzzle. Each chart × genre × country is one source. Default: All apps. Used only with Top charts. Example: \["6014", "6007"] for Games and Productivity.

## `countries` (type: `array`):

The App Store countries to read, as two-letter codes, e.g. us, gb, de, jp, in, br, vn. Prices, charts and search results are that country’s, and each source is read once per country, one row per app and country. Up to 50 countries and 500 sources in one run. Default us. uk is read as gb.

## `platform` (type: `string`):

Which store to read top charts and search results from: the iPhone store or the iPad store, e.g. ipad for the iPad top charts. Their charts differ. App ids, links and developers are the same on both. Default iPhone.

## `maxAppsPerSource` (type: `integer`):

The most apps to save from each search term, chart, developer or batch of ids, per country. Every source holds at most 200 apps. Default 100. You pay per app saved.

## `includeAppPage` (type: `boolean`):

Add what only the app’s store page shows: subtitle, Editors’ Choice and its note, ratings per star, chart rank, in-app purchases with prices, privacy labels, age-rating reasons, copyright, website, support and privacy-policy links, the EU trader details, compatibility per device, accessibility, events, preview videos, screenshots for every device, similar apps, the developer’s other apps and the top reviews. Reads one more page per app, so a run takes longer; the price per app stays the same. Off by default.

## Actor input object example

```json
{
  "searchTerms": [
    "photo editor"
  ],
  "topCharts": [
    "free"
  ],
  "chartGenres": [
    "36"
  ],
  "countries": [
    "us"
  ],
  "platform": "iphone",
  "maxAppsPerSource": 20,
  "includeAppPage": false
}
```

# Actor output Schema

## `apps` (type: `string`):

Every app the run saved, one row per app and country.

## `allFields` (type: `string`):

The same rows with every field.

## `runReport` (type: `string`):

What happened to each input: apps saved, nothing found, refused by the site, stopped at your limit, or the error.

# 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"
    ],
    "topCharts": [
        "free"
    ],
    "countries": [
        "us"
    ],
    "maxAppsPerSource": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("luzivanlt/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"],
    "topCharts": ["free"],
    "countries": ["us"],
    "maxAppsPerSource": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("luzivanlt/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"
  ],
  "topCharts": [
    "free"
  ],
  "countries": [
    "us"
  ],
  "maxAppsPerSource": 20
}' |
apify call luzivanlt/app-store-apps-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,luzivanlt/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/1t9VfEucQ2URDhOdb/builds/DsoSooZ7To7BfOsyw/openapi.json
