# Google Play Category Apps Scraper - App Leads by Category (`appdata-labs/google-play-category-apps`) Actor

Get the apps in any Google Play category as a lead list: install counts, ratings, category, update date and the developer's published email and website for each app. Filter by minimum installs or apps with a contact email, and pay only for apps that pass. Any country, clean JSON, no login.

- **URL**: https://apify.com/appdata-labs/google-play-category-apps.md
- **Developed by:** [Kobkoon Janngam](https://apify.com/appdata-labs) (community)
- **Categories:** Agents, MCP servers, Lead generation
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.50 / 1,000 category app scrapeds

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 Category Apps Scraper — app leads by category

**Get the apps in any Google Play category as a lead list** — install counts, ratings, genre, last update, and the developer's published email and website for every app. Filter to the apps big enough to matter, or to the ones with a contact email, and pay only for the apps that pass.

**Quick start:** press **Start** with no configuration at all. It reads the Health & Fitness category in the US store and returns 20 apps with their full details in well under a minute. Then pick your categories and countries.

### Sample output

| category | country | categoryPosition | title | installs | developerEmail |
|---|---|---|---|---|---|
| HEALTH_AND_FITNESS | us | 1 | Samsung Health | 1,000,000,000+ | noreply.sec@samsung.com |
| HEALTH_AND_FITNESS | us | 2 | Planet Fitness | 10,000,000+ | PFMobileAppSupport@abcfinancial.com |
| HEALTH_AND_FITNESS | us | 3 | AllTrails: Hike, Bike & Run | 50,000,000+ | android-support@alltrails.com |
| FINANCE | gb | 2 | Wise - Global Money | 50,000,000+ | support@wise.com |

Read from the live store on 24 October 2026; your run returns whatever the pages list that day.

Every row also carries `appId`, `url`, `summary`, `minInstalls`, `ratings`, `reviews`, `histogram`, `price`, `offersIAP`, `adSupported`, `genre`, `contentRating`, `released`, `updated`, `version`, `developerWebsite`, `privacyPolicy`, `country` and more — the same record as our Google Play App Details Actor.

### Who this is for

- **B2B sales and partnerships** building a list of app companies in a vertical — every fintech app in the UK store, with the contact the developer published on Google Play.
- **Market researchers** sizing a category: how many apps, how big, how recently updated.
- **Investors and analysts** watching which apps sit at the top of a category, market by market.
- **AI agents** asked "find me fitness apps with over a million installs" — rows are compact, consistently shaped, and the filters do the narrowing before anything is charged.

### Filters that save you money

| Filter | What it keeps |
|---|---|
| `minInstalls: 1000000` | Apps with at least a million installs (lower bound of Google Play's install band) |
| `onlyWithDeveloperEmail: true` | Apps whose listing publishes a developer contact email |

Filters run **before charging**. An app the filter removes, or whose listing could not be read, costs you nothing — the run summary says how many were removed and why.

### Input

| Field | Default | Notes |
|---|---|---|
| `categories` | `["HEALTH_AND_FITNESS"]` | Category IDs or store names ("Health & Fitness"). `TOP` for the overall top-charts page. An unknown category is skipped with a reason. |
| `countries` | `["us"]` | Each country has its own category pages, so the same category returns different apps. |
| `language` | `en` | Text language, independent of country. |
| `maxAppsPerCategory` | `20` | Up to 100. About 1.5 seconds per app. |
| `minInstalls` | `0` | See filters above. |
| `onlyWithDeveloperEmail` | `false` | See filters above. |

An app listed in two of your categories is returned once, under the first.

### How it works, and its limits

The list of apps comes from the category pages Google Play shows a shopper, and each app's details from its public listing page. **It does not use Google Play search or Google Play's internal API** — both are disallowed to automated clients by Google Play's robots.txt, and this Actor follows that. The trade-off: a category page lists roughly 30 to 90 apps, not the whole category. For a wider list, add countries — each store's page is different — or seed our Google Play Similar Apps and Developer Apps Actors with what you find here.

`categoryPosition` is the app's position on the category page, which mixes Google Play's own sections; it is a useful signal of prominence, not an official chart rank.

The developer email and website are what each developer chose to publish on their Google Play listing. Use them in line with the privacy and anti-spam rules that apply to you.

### Pricing

Pay per app returned. Apps removed by your filters, and apps whose listing could not be read, are not charged. Duplicates across categories are dropped before anything is counted.

### Works well with

Same publisher, same output conventions, same honest-failure rules:

- [**app-store-app-details**](https://apify.com/appdata-labs/app-store-app-details) — Full App Store listing for any app, or search the store by keyword.
- [**app-store-reviews**](https://apify.com/appdata-labs/app-store-reviews) — Customer reviews, filtered by stars, keyword and date — pay only for matches.
- [**app-store-top-charts**](https://apify.com/appdata-labs/app-store-top-charts) — Top free, paid and grossing charts for any country and category.
- [**app-store-developer-apps**](https://apify.com/appdata-labs/app-store-developer-apps) — Every iOS app a publisher has released, from one app or the publisher name.
- [**google-play-app-details**](https://apify.com/appdata-labs/google-play-app-details) — Full Google Play listing: installs, rating histogram, developer contact.
- [**google-play-developer-apps**](https://apify.com/appdata-labs/google-play-developer-apps) — Every Android app a publisher has released.
- [**google-play-similar-apps**](https://apify.com/appdata-labs/google-play-similar-apps) — Competitors Google Play itself shows next to an app.

### Disclaimer

This is an unofficial tool. It is not affiliated with, endorsed by or connected to Google. It reads public Google Play pages that robots.txt allows, one request at a time with a rate limit, identifying itself in its user agent. It does not log in, and it does not use search or Google Play's internal APIs.

# Actor input Schema

## `categories` (type: `array`):

Google Play categories to list, by ID or by the name the store shows: HEALTH_AND_FITNESS or "Health & Fitness". Use TOP for the overall top-charts page. App categories include ART_AND_DESIGN, BEAUTY, BUSINESS, COMMUNICATION, DATING, EDUCATION, ENTERTAINMENT, FINANCE, FOOD_AND_DRINK, HEALTH_AND_FITNESS, LIFESTYLE, MEDICAL, MUSIC_AND_AUDIO, PHOTOGRAPHY, PRODUCTIVITY, SHOPPING, SOCIAL, TOOLS, TRAVEL_AND_LOCAL; games include GAME, GAME_ACTION, GAME_CASUAL, GAME_PUZZLE, GAME_STRATEGY. An unknown category is skipped with a reason, the rest still run.

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

Two-letter country codes of the Google Play stores to read. Category pages differ by country, so the same category returns different apps in each.

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

Two-letter language code for the text Google Play returns (titles, descriptions). Independent of country.

## `maxAppsPerCategory` (type: `integer`):

How many apps to read from each category page, in the order the page lists them. A category page lists roughly 30 to 90 apps; each app takes about 1.5 seconds to read.

## `minInstalls` (type: `integer`):

Keep only apps with at least this many installs, using the lower bound of Google Play's install band ("1,000,000+" counts as 1000000). 0 keeps everything. Filtered apps are not charged.

## `onlyWithDeveloperEmail` (type: `boolean`):

Keep only apps whose Google Play listing publishes a developer contact email — for outreach lists. Filtered apps are not charged.

## Actor input object example

```json
{
  "categories": [
    "FINANCE",
    "Health & Fitness",
    "TOP"
  ],
  "countries": [
    "us",
    "gb",
    "th"
  ],
  "language": "en",
  "maxAppsPerCategory": 50,
  "minInstalls": 100000,
  "onlyWithDeveloperEmail": true
}
```

# Actor output Schema

## `rows` (type: `string`):

One row per app: position on the category page, installs, rating and rating count, genre, update date, and the developer email and website from its listing.

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

Apps listed on each category page, how many were read and returned, how many your filters removed, and anything that could not be read.

# 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 = {
    "categories": [
        "HEALTH_AND_FITNESS"
    ],
    "countries": [
        "us"
    ],
    "language": "en",
    "maxAppsPerCategory": 20,
    "minInstalls": 0,
    "onlyWithDeveloperEmail": false
};

// Run the Actor and wait for it to finish
const run = await client.actor("appdata-labs/google-play-category-apps").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 = {
    "categories": ["HEALTH_AND_FITNESS"],
    "countries": ["us"],
    "language": "en",
    "maxAppsPerCategory": 20,
    "minInstalls": 0,
    "onlyWithDeveloperEmail": False,
}

# Run the Actor and wait for it to finish
run = client.actor("appdata-labs/google-play-category-apps").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 '{
  "categories": [
    "HEALTH_AND_FITNESS"
  ],
  "countries": [
    "us"
  ],
  "language": "en",
  "maxAppsPerCategory": 20,
  "minInstalls": 0,
  "onlyWithDeveloperEmail": false
}' |
apify call appdata-labs/google-play-category-apps --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,appdata-labs/google-play-category-apps"
        }
    }
}
```

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/MsTJScCc9l85ef4hI/builds/RZkkrZ5xCuHo7wZMC/openapi.json
