# Google Play Apps Scraper: Top Charts & App Details (`luzivanlt/google-play-apps-scraper`) Actor

Google Play apps with every store-page field, from search, top charts (all 200 ranks) or links. $1 per 1,000 apps. Installs, ratings by star and device, developer contact, permissions, data safety.

- **URL**: https://apify.com/luzivanlt/google-play-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

## Google Play Apps Scraper: Top Charts & App Details

Get Google Play apps with every field of their store page, from search terms,
whole top charts (all 200 ranks), category pages or app links: installs with
the exact count, the rating with the count for each star and the rating on
each kind of device, price, developer contact and legal address,
permissions, data safety, version, dates, similar apps and top reviews. No
Google account, login or cookies needed.

Tested daily. Latest checks: six US top charts (free, paid and grossing, for
apps and for games) read whole, 1,006 of 1,006 distinct apps, in under 8
minutes; and 67 apps with data safety details from a German search, a
category page and an app with its similar apps.

### What does this Actor do?

You give it search terms, Google Play links or package names, or pick top
charts. For each source it finds the apps in the order the store shows them
and saves one row per app with everything on that app's store page. A source
can be:

- a **search term** such as `meditation` (the featured top match first, then
  the results)
- a **top chart**: Top free, Top paid or Top grossing, for all apps, all
  games, kids, or one category such as Productivity or Games: Puzzle, read
  whole in rank order
- a **category page** such as `https://play.google.com/store/apps/category/GAME_PUZZLE`
  (every app on its shelves)
- an **app page** or a **package name** such as `com.duolingo`

Each row comes with:

- the app id, title, summary, description (as text and as HTML), icon,
  header image, screenshots and video
- installs as shown (`10,000,000+`), its lower bound and the exact count
- the rating, the number of ratings and reviews, the count of 1- to 5-star
  ratings, and the rating on phones, tablets, Chromebooks and watches
- price, currency, sale price, in-app purchase range, whether it shows ads
- the developer, their id and page, email, website and address, and the legal
  name, email, address and phone the store shows
- the category, every category and tag the store gives it, the content rating
  and its descriptors, and its rank badge (such as `#1 top free communication`)
- version, required Android version, minimum and target SDK, release and
  update dates, and what's new
- the permissions it asks for, the data-safety summary, and its privacy policy
- the ids of similar apps and of the developer's other apps, and the top
  reviews shown on the page
- where it was found (search, chart, category, link or similar app), its
  position there, and the country and language read

### Why use it?

- **Whole top charts.** Each chart is read to its last rank, up to 200, for
  any category and any country.
- **The fields other tools leave out.** The exact install count, the count
  for each star, the rating per device, the developer's legal address and
  phone, permissions and the data-safety summary are on every row, at no
  extra cost.
- **Similar apps and data safety on request.** Turn on **Include similar
  apps** to save the apps the store lists as similar to each one, or **Include
  data safety details** to add every data type the developer says the app
  shares or collects, with its purposes.
- **Any country and language.** Prices, charts and search results are those
  of the store you pick; tested on the US and German stores.
- **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 **Google Play links or app ids**, or pick
   **Top charts** and **Chart categories**.
2. Optionally, set **Country**, **Language** and **Max apps per source**, and
   turn on similar apps or data safety.
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 `meditation` and
the top 20 free games in the US, charged as usual.

### Input

| Field                                                 | What it does                                                                 | Default           |
| ----------------------------------------------------- | ---------------------------------------------------------------------------- | ----------------- |
| **Search terms** (`searchTerms`)                      | Words to search Google Play apps for                                         | —                 |
| **Google Play links or app ids** (`startUrls`)        | App, search or category pages, or package names such as `com.duolingo`       | —                 |
| **Top charts** (`topCharts`)                          | `free`, `paid`, `grossing`: each chart is read for every chart category      | —                 |
| **Chart categories** (`chartCategories`)              | `APPLICATION` (all apps), `GAME`, `FAMILY`, or a category id such as `TOOLS` | `["APPLICATION"]` |
| **Country** (`country`)                               | The store to read, as a two-letter code                                      | `us`              |
| **Language** (`language`)                             | The language of titles, descriptions and labels                              | `en`              |
| **Max apps per source** (`maxAppsPerSource`)          | The most apps to save from each search term, link or chart (1 to 2,000)      | 100               |
| **Include similar apps** (`includeSimilarApps`)       | Also save each app's similar apps, one level deep                            | off               |
| **Include data safety details** (`includeDataSafety`) | Add the full data-safety section to each app                                 | off               |

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

```json
{
  "searchTerms": ["budget planner"],
  "startUrls": ["com.duolingo"],
  "topCharts": ["free", "grossing"],
  "chartCategories": ["GAME_PUZZLE"],
  "country": "gb",
  "maxAppsPerSource": 50
}
```

### Output

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

```json
{
  "app_id": "com.example.notes",
  "url": "https://play.google.com/store/apps/details?id=com.example.notes",
  "title": "Notes: Simple Notepad",
  "summary": "Write notes and lists in seconds",
  "description": "Notes is a simple notepad…",
  "description_html": "Notes is a simple notepad…<br>",
  "developer": "Example Studio",
  "developer_id": "Example Studio",
  "developer_internal_id": "5191370068110375942",
  "developer_url": "https://play.google.com/store/apps/developer?id=Example+Studio",
  "developer_email": "help@studio.example",
  "developer_website": "https://studio.example",
  "developer_address": null,
  "developer_legal_name": "Example Studio Ltd",
  "developer_legal_email": "legal@studio.example",
  "developer_legal_address": "1 Main St\nSpringfield\nUnited States",
  "developer_legal_phone": "+1 555-0100",
  "privacy_policy": "https://studio.example/privacy",
  "score": 4.6,
  "score_text": "4.6",
  "ratings": 120345,
  "reviews": 9876,
  "ratings_1_star": 5012,
  "ratings_2_star": 1803,
  "ratings_3_star": 4120,
  "ratings_4_star": 15210,
  "ratings_5_star": 94200,
  "rating_by_device": { "phone": 4.6, "tablet": 4.4, "chromebook": 4.5 },
  "installs": "10,000,000+",
  "min_installs": 10000000,
  "real_installs": 12453866,
  "price": 0,
  "original_price": null,
  "currency": "USD",
  "price_text": null,
  "free": true,
  "price_note": null,
  "offers_iap": true,
  "iap_range": "$0.99 - $49.99 per item",
  "contains_ads": true,
  "genre": "Productivity",
  "genre_id": "PRODUCTIVITY",
  "categories": [{ "name": "Productivity", "id": "PRODUCTIVITY" }],
  "tags": ["Note-taking"],
  "content_rating": "Everyone",
  "content_rating_descriptors": null,
  "interactive_elements": "In-App Purchases",
  "chart_name": "top free productivity",
  "chart_rank": 12,
  "version": "5.2.1",
  "android_version": "8.0",
  "min_sdk": 26,
  "target_sdk": 35,
  "released": "Mar 1, 2018",
  "released_at": "2018-03-01T10:00:00Z",
  "updated": "Oct 20, 2026",
  "updated_at": "2026-10-20T08:15:00Z",
  "recent_changes": "Bug fixes",
  "icon": "https://play-lh.googleusercontent.com/example-icon",
  "header_image": "https://play-lh.googleusercontent.com/example-header",
  "screenshots": ["https://play-lh.googleusercontent.com/example-1"],
  "video": null,
  "video_image": null,
  "preview_video": null,
  "preregister": false,
  "family_library_eligible": false,
  "available_in_play_pass": false,
  "play_pass_note": null,
  "permissions": [{ "group": "Camera", "permission": "take pictures and videos" }],
  "data_safety_summary": [
    {
      "heading": "No data shared with third parties",
      "detail": "Learn more about how developers declare sharing"
    }
  ],
  "similar_app_ids": ["com.example.todo", "com.example.memo"],
  "more_by_developer_app_ids": ["com.example.scanner"],
  "top_reviews": [
    {
      "review_id": "b0000000-0000-4000-8000-000000000001",
      "reviewer_name": "A reviewer",
      "rating": 5,
      "review_text": "Works well",
      "review_date": "2026-10-01T12:00:00Z",
      "thumbs_up": 3
    }
  ],
  "source_type": "chart",
  "source": "topselling_free/PRODUCTIVITY",
  "position": 12,
  "language": "en",
  "country": "us"
}
```

With **Include data safety details** on, each row also has `data_safety`:
`shared` and `collected` (each data type with its category, purposes and
whether it is optional) and `security_practices`.

#### Output fields

- `app_id`, `url`, `title`, `summary`, `description`, `description_html`: the
  app, its link and its texts
- `developer`, `developer_id`, `developer_internal_id`, `developer_url`: the
  developer as shown, the id in its page's link, its number and its page
- `developer_email`, `developer_website`, `developer_address`: the contact the
  store shows
- `developer_legal_name`, `developer_legal_email`, `developer_legal_address`,
  `developer_legal_phone`: the legal entity, for apps where the store shows it
- `privacy_policy`: the privacy policy link
- `score`, `score_text`, `ratings`, `reviews`: the rating out of 5 (exact and
  as shown), the number of ratings and of written reviews
- `ratings_1_star` … `ratings_5_star`: the number of ratings for each star
- `rating_by_device`: the rating on each kind of device the store rates it on
- `installs`, `min_installs`, `real_installs`: installs as shown, its lower
  bound and the exact count
- `price`, `original_price`, `currency`, `price_text`, `free`, `price_note`:
  the price as a number, the price before a sale, the currency, the price as
  shown, whether it is free, and any note on the price
- `offers_iap`, `iap_range`, `contains_ads`: in-app purchases, their price
  range, and ads
- `genre`, `genre_id`, `categories`, `tags`: the main category, every category
  with its id, and the store's tags
- `content_rating`, `content_rating_descriptors`, `interactive_elements`: the
  age rating and what it warns about
- `chart_name`, `chart_rank`: the chart badge the app page shows
- `version`, `android_version`, `min_sdk`, `target_sdk`: the current version
  and its Android requirements (empty when it varies with the device)
- `released`, `released_at`, `updated`, `updated_at`, `recent_changes`: dates
  as shown and as timestamps, and what's new
- `icon`, `header_image`, `screenshots`, `video`, `video_image`,
  `preview_video`: media
- `preregister`, `family_library_eligible`, `available_in_play_pass`,
  `play_pass_note`: pre-registration, Family Library, and whether the app is
  free with a Play Pass subscription
- `permissions`: each permission the app asks for, with its group
- `data_safety_summary`: the data-safety lines the app page shows
- `data_safety`: the full data-safety section, when you turn it on
- `similar_app_ids`, `more_by_developer_app_ids`: the apps on the page's
  "Similar apps" and "More by" shelves
- `top_reviews`: the reviews shown on the app page, each with its id,
  reviewer, stars, text, date, helpful votes, app version, device and the
  developer's reply
- `source_type`, `source`, `position`: how the app was found (`search`,
  `chart`, `category`, `app` or `similar`), the search term, chart, category
  or link, and its place in that list
- `language`, `country`: the store read

### 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.
- No start fee and nothing per search or chart. Similar apps, when you turn
  them on, are apps like any other. Data safety 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 20 seconds for the sample (40 apps). Six whole US top charts, 1,006
apps, took 466 seconds, about 2 apps a second. Data safety details add one
page per app: 67 apps with them and with similar apps took 113 seconds.

### Good to know

- **A search reads one page of results**, the featured match and the apps
  below it, about 20 to 30 apps. To get more apps on a topic, add more search
  terms or read the matching category's top charts.
- **Charts hold up to 200 apps.** Some are shorter (Top paid for all apps in
  the US held 120 in our test); a chart is read whole.
- **An app found twice in a run is saved once,** with the first source that
  found it as its `source`: six US charts list 1,120 places but 1,006
  different apps. This holds across stores too: to read the same app in two
  countries, run each country separately. With similar apps on, an app may be
  saved as another app's similar app before its own chart reaches it.
- **Similar apps count toward Max apps per source.** A source whose own list
  already fills the cap may save few or none; raise the cap to get them.
- **Some fields are only on some apps.** The legal address and phone show only
  where the store shows them; the Android requirement and version are empty
  when they vary with the device; `chart_name` only when the app holds a rank
  badge.
- **Data safety details read one more page per app**, so a run with them on
  takes about twice as long. The summary lines are on every row without it.
- **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 a Google Play app, search or
  category page stops the run before anything is read, and the message names
  it.
- **This Actor reads app pages, not every review.** Each row has the few
  reviews the app page shows; for all of an app's reviews, use our
  [Google Play Reviews Scraper](https://apify.com/luzivanlt/google-play-reviews-scraper).

### More Actors from us

- [Google Ads Transparency Scraper: Every Ad by Site](https://apify.com/luzivanlt/google-ads-transparency-scraper): Google Ads Transparency Center ads by website, advertiser or name, to the last page, in 216 regions.
- [Google Flights Scraper: Fares, Dates & Returns](https://apify.com/luzivanlt/google-flights-scraper): Google Flights fares for many routes and dates in one run: every flight listed, with legs, stops and CO2.
- [Google Hotels Scraper: Prices, Reviews & Amenities](https://apify.com/luzivanlt/google-hotels-scraper): Google Hotels prices for your places and dates: hundreds of hotels and rentals per search, with ratings.
- [Google Maps Places Scraper: Phones, Hours, Owners](https://apify.com/luzivanlt/google-maps-places-scraper): Google Maps places past one search's ~200, read in map tiles, with phone, website, hours and owner.
- [Google News Scraper: By Date](https://apify.com/luzivanlt/google-news-scraper): Google News read day by day past the usual 100 per search: 4,440 articles from two keywords over 30 days.
- [Google Play Reviews Scraper: Device, Star Filter & Replies](https://apify.com/luzivanlt/google-play-reviews-scraper): Google Play reviews with the device each was written on, a star filter and the developer's reply.
- [Google Trends Scraper: Trending Now & Compare](https://apify.com/luzivanlt/google-trends-scraper): Google Trends over time, by region and related queries for up to 5 compared terms, plus Trending Now.
- [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.
- [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.
- [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.

### 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~google-play-apps-scraper/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN>
```

With the sample input as its JSON body:

```json
{
  "searchTerms": ["meditation"],
  "topCharts": ["free"],
  "chartCategories": ["GAME"],
  "country": "us",
  "language": "en",
  "maxAppsPerSource": 20,
  "includeSimilarApps": false,
  "includeDataSafety": false
}
```

Its inputs, in the order of the input form:

| Input                                             | What it takes                                                                                                                                                                                                                                             | Default           |
| ------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------- |
| `searchTerms` (Search terms)                      | Words to search Google Play apps for, as you would type them in the store, e.g. meditation or photo editor.                                                                                                                                               | —                 |
| `startUrls` (Google Play links or app ids)        | Google Play app pages (https://play.google.com/store/apps/details?id=…), search pages (https://play.google.com/store/search?q=…\&c=apps), category pages (https://play.google.com/store/apps/category/GAME_PUZZLE), or package names such as com.duolingo. | —                 |
| `topCharts` (Top charts)                          | Google Play’s top charts to read, for each category in Chart categories: Top free, Top paid and Top grossing.                                                                                                                                             | —                 |
| `chartCategories` (Chart categories)              | The categories whose top charts to read: All apps (not games), All games, Kids, or one category such as Productivity or Games: Puzzle.                                                                                                                    | `["APPLICATION"]` |
| `country` (Country)                               | The Google Play store to read, as a two-letter country code: us, gb, de, in, br, vn, … Prices, charts and search results are that country’s.                                                                                                              | `"us"`            |
| `language` (Language)                             | The language of titles, descriptions, labels and top reviews, as a code: en, de, es, fr, pt-BR, ja, vi, … A link’s own hl overrides it for that link.                                                                                                     | `"en"`            |
| `maxAppsPerSource` (Max apps per source)          | The most apps to save from each search term, link or chart (similar apps count toward it).                                                                                                                                                                | `100`             |
| `includeSimilarApps` (Include similar apps)       | Also save the apps Google Play lists as similar to each app found (about 6 each), one level deep.                                                                                                                                                         | `false`           |
| `includeDataSafety` (Include data safety details) | Add the full data-safety section to each app: every data type the developer says is shared or collected, with its purposes and whether it is optional, and the security practices.                                                                        | `false`           |

Apify's MCP server, `https://mcp.apify.com`, lists it as `luzivanlt/google-play-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/google-play-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.06.

### FAQ

**Do I need a Google account or cookies?**
No. The Actor reads what anyone can see on Google Play.

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

**Can I get all reviews of an app?**
This Actor saves the top reviews shown on each app page. For every review,
with filters by star, language and date, use our
[Google Play Reviews Scraper](https://apify.com/luzivanlt/google-play-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 Google Play?

This Actor reads only what anyone can see on Google Play without logging in.
Some fields name people (the developer's contact, reviewers' names): check
Google'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/google-play-apps-scraper/changelog.md

# Actor input Schema

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

Words to search Google Play apps for, as you would type them in the store, e.g. meditation or photo editor. Each term is one source: its apps are read in the order the store shows them, the featured top match first (about 20–30 apps a term). Leave empty to use only links or top charts.

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

Google Play app pages (https://play.google.com/store/apps/details?id=…), search pages (https://play.google.com/store/search?q=…\&c=apps), category pages (https://play.google.com/store/apps/category/GAME_PUZZLE), or package names such as com.duolingo. A link’s own hl and gl (\&hl=de\&gl=DE) choose its language and country; anything else uses Language and Country below. A source given twice is read once. Example: com.duolingo

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

Google Play’s top charts to read, for each category in Chart categories: Top free, Top paid and Top grossing. A chart is read whole, up to its 200 ranks, in rank order. Leave empty for no charts. Example: \["free", "grossing"]

## `chartCategories` (type: `array`):

The categories whose top charts to read: All apps (not games), All games, Kids, or one category such as Productivity or Games: Puzzle. Each chart × category is one source. Default: All apps. Used only with Top charts. Example: \["GAME_PUZZLE", "PRODUCTIVITY"]

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

The Google Play store to read, as a two-letter country code: us, gb, de, in, br, vn, … Prices, charts and search results are that country’s. Default us. e.g. de for the German store.

## `language` (type: `string`):

The language of titles, descriptions, labels and top reviews, as a code: en, de, es, fr, pt-BR, ja, vi, … A link’s own hl overrides it for that link. Default en. e.g. de for German store pages. pt_BR is read as pt-BR.

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

The most apps to save from each search term, link or chart (similar apps count toward it). A chart holds up to 200; a search about 20–30. Default 100. You pay per app saved.

## `includeSimilarApps` (type: `boolean`):

Also save the apps Google Play lists as similar to each app found (about 6 each), one level deep. Each is one more app, charged as any app, and counts toward Max apps per source. Off by default.

## `includeDataSafety` (type: `boolean`):

Add the full data-safety section to each app: every data type the developer says is shared or collected, with its purposes and whether it is optional, and the security practices. Reads one more page per app, so a run takes about twice as long; the price per app stays the same. Without it, each app still has the short data-safety summary. Off by default.

## Actor input object example

```json
{
  "searchTerms": [
    "meditation"
  ],
  "topCharts": [
    "free"
  ],
  "chartCategories": [
    "GAME"
  ],
  "country": "us",
  "language": "en",
  "maxAppsPerSource": 20,
  "includeSimilarApps": false,
  "includeDataSafety": false
}
```

# Actor output Schema

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

Every app the run saved, one row per app.

## `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": [
        "meditation"
    ],
    "topCharts": [
        "free"
    ],
    "chartCategories": [
        "GAME"
    ],
    "country": "us",
    "language": "en",
    "maxAppsPerSource": 20
};

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

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

```

## MCP server setup

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