Google Play Apps Scraper avatar

Google Play Apps Scraper

Pricing

from $0.48 / 1,000 item extracteds

Go to Apify Store
Google Play Apps Scraper

Google Play Apps Scraper

Collect Google Play category charts and app details with package IDs, publishers, descriptions, ratings, installs, monetization, versions, and listing URLs.

Pricing

from $0.48 / 1,000 item extracteds

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Categories

Share

Collect public Google Play apps from category charts or supplied package IDs and listing URLs. The Actor returns one consistent app record with package identity, title, publisher, description, rating signals, install range, monetization labels, category, version, release dates, media, and the localized listing URL.

Use it to create repeatable app-market snapshots without managing a browser, Google account, or private API key.

What does this Google Play scraper collect?

The Actor supports two complementary routes:

  1. Browse a Google Play category chart such as top free Health & Fitness apps.
  2. Fetch current details for known Android package IDs or public app-detail URLs.

Both routes produce the same typed dataset rows. This makes category discovery and later detail refreshes easy to combine in one data pipeline.

The Actor does not collect reviews, permissions, or private Play Console data.

Who is it for?

  • App-market analysts tracking category composition and publisher activity.
  • ASO teams comparing ratings, installs, versions, and monetization labels.
  • Product teams maintaining a watchlist of Android competitors.
  • Investors and researchers building recurring app-market datasets.
  • Data engineers feeding Google Play metadata into a warehouse or dashboard.

Why use this Actor?

  • Catalog plus details: discover category apps and refresh known packages with one schema.
  • Localized results: choose a country and language for availability, prices, text, and charts.
  • Stable identity: every row includes the Android package ID and canonical listing URL.
  • Automation-ready: schedule runs and export JSON, CSV, Excel, XML, or RSS from Apify datasets.
  • Bounded output: one global maxItems limit controls the size and price of every run.
  • Fail-closed behavior: malformed URLs, package IDs, and locales are rejected instead of producing misleading empty data.

Supported Google Play category charts

Choose one or more categories and one collection:

  • TOP_FREE — top free apps.
  • TOP_PAID — top paid apps.
  • GROSSING — top-grossing apps.

Supported category IDs include BUSINESS, EDUCATION, FINANCE, GAME, HEALTH_AND_FITNESS, MUSIC_AND_AUDIO, PHOTOGRAPHY, PRODUCTIVITY, SHOPPING, SOCIAL, SPORTS, TOOLS, TRAVEL_AND_LOCAL, and the other values listed in the input UI.

A public category URL can also carry the collection, for example:

https://play.google.com/store/apps/category/HEALTH_AND_FITNESS/collection/topselling_free

Extracted app fields

GroupFields
IdentityappId, title, appUrl
Publisherdeveloper, developerId, developerEmail, developerWebsite
Listing textsummary, description, recentChanges
Rating signalsscore, ratings, reviews
Adoptioninstalls, minInstalls, maxInstalls
Monetizationprice, priceText, currency, free, offersInAppPurchases, containsAds
Classificationgenre, genreId, contentRating
Releasereleased, updatedAt, version
MediaiconUrl, headerImageUrl, screenshots
ProvenancesourceType, sourceCategory, sourceCollection, country, language, scrapedAt

Fields can be null when Google Play does not expose a value for a listing or locale.

How to scrape Google Play apps

  1. Open the Actor input page.
  2. Add package IDs, app-detail URLs, categories, or category URLs.
  3. Select the chart used by category inputs.
  4. Set a two-letter country and language.
  5. Choose maxItems to cap the total number of unique apps.
  6. Click Start.
  7. Open the Dataset tab to preview or export the records.

For a first run, use HEALTH_AND_FITNESS, TOP_FREE, us, en, and maxItems: 10.

Input parameters

ParameterTypeDefaultMeaning
startUrlsarrayemptyGoogle Play app-detail or app-category URLs
appIdsstring arrayemptyAndroid package IDs such as com.spotify.music
categoriesstring arrayemptyGoogle Play category IDs to browse
collectionstringTOP_FREETOP_FREE, TOP_PAID, or GROSSING
countrystringusTwo-letter storefront country code
languagestringenTwo-letter listing language code
maxItemsinteger50Global output limit from 1 to 500

At least one app, URL, or category must be supplied. Duplicate packages found through multiple inputs are emitted once.

Example input

{
"categories": ["PRODUCTIVITY", "BUSINESS"],
"collection": "GROSSING",
"country": "us",
"language": "en",
"maxItems": 20
}

To refresh a known watchlist instead:

{
"appIds": [
"com.spotify.music",
"com.google.android.apps.fitness"
],
"country": "us",
"language": "en",
"maxItems": 2
}

Example output

A real run produces rows shaped like this:

{
"appId": "com.google.android.apps.fitness",
"title": "Google Fit: Activity Tracking",
"developer": "Google LLC",
"score": 3.9,
"ratings": 620000,
"installs": "100,000,000+",
"price": 0,
"priceText": "Free",
"currency": "USD",
"free": true,
"offersInAppPurchases": false,
"containsAds": false,
"genre": "Health & Fitness",
"genreId": "HEALTH_AND_FITNESS",
"version": "Varies with device",
"updatedAt": "2026-08-01T12:00:00.000Z",
"appUrl": "https://play.google.com/store/apps/details?id=com.google.android.apps.fitness&hl=en&gl=US",
"sourceType": "app",
"sourceCategory": null,
"sourceCollection": null,
"country": "us",
"language": "en",
"scrapedAt": "2026-08-30T12:00:00.000Z"
}

Live values change as publishers update their listings.

How much does it cost to collect Google Play app metadata?

Pay-per-event pricing has a $0.005 Actor start and one item event for each app record saved. The item event is the primary value event.

PlanPrice per app
Free$0.000920
Bronze$0.000800
Silver$0.000624
Gold$0.000480
Platinum$0.000320
Diamond$0.000224

At Bronze pricing, a run costs approximately:

  • 1 app: $0.0058 including the start.
  • 10 apps: $0.013 including the start.
  • 100 apps: $0.085 including the start.

Failed, duplicate, or rejected records do not produce an item event. Your Apify plan and applicable platform rules determine the tier used.

Monitoring and change-detection workflow

Schedule the same input daily or weekly to create timestamped snapshots. Use appId as the stable join key, then compare fields such as:

  • score, ratings, and reviews for rating movement.
  • minInstalls and maxInstalls for adoption changes.
  • price, free, offersInAppPurchases, and containsAds for monetization changes.
  • version, updatedAt, and recentChanges for release monitoring.
  • developer and listing text for publisher or positioning changes.

The Actor returns snapshots. It does not itself send alerts or calculate historical diffs.

Integrations and exports

Use Apify integrations to send dataset rows to:

  • Google Sheets for analyst review.
  • Make or Zapier for downstream automation.
  • Webhooks for run-completion processing.
  • BigQuery, Snowflake, or another warehouse through your ETL process.
  • A BI dashboard for app-category and publisher reporting.

Dataset API parameters can select fields, unwind arrays, and choose JSON, CSV, Excel, XML, or RSS.

Run with the Apify API

cURL

curl -X POST \
"https://api.apify.com/v2/acts/automation-lab~google-play-app-catalog-details/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"categories":["HEALTH_AND_FITNESS"],"collection":"TOP_FREE","country":"us","language":"en","maxItems":10}'

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/google-play-app-catalog-details').call({
appIds: ['com.spotify.music', 'com.google.android.apps.fitness'],
country: 'us',
language: 'en',
maxItems: 2,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('automation-lab/google-play-app-catalog-details').call(run_input={
'categories': ['PRODUCTIVITY', 'BUSINESS'],
'collection': 'GROSSING',
'country': 'us',
'language': 'en',
'maxItems': 20,
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)

Use with MCP and AI assistants

Add this Actor to Claude Code through the Apify MCP server:

claude mcp add --transport http apify \
"https://mcp.apify.com?tools=automation-lab/google-play-app-catalog-details"

Claude Desktop setup

Add this server to Claude Desktop's MCP configuration:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=automation-lab/google-play-app-catalog-details"
}
}
}

Cursor setup

In Cursor, open Settings → Tools & MCP → New MCP Server and use the same HTTP URL shown above.

VS Code setup

In VS Code with MCP support, add an HTTP server named apify using the same Actor-specific MCP URL.

Example prompts:

  • “Collect the top 25 free Finance apps from the US Google Play store.”
  • “Refresh details for these Android package IDs and return rating and version changes.”
  • “Create a current snapshot of top-grossing Productivity and Business apps.”

Reliability, limits, and troubleshooting

Google Play is a public but undocumented source and can change its response format. The Actor validates package identities and emits a failure when all requested routes fail.

Operational limits:

  • maxItems is capped at 500 per run.
  • Category composition and order vary by country and time.
  • Some fields are absent for some apps or locales and therefore return null.
  • The Actor does not use a residential proxy, browser, account, or automatic paid fallback.
  • Removed, unavailable, or region-restricted apps may not produce a row.

If a category returns fewer records than expected, try a different country or collection and check whether Google Play currently exposes that category there.

Responsible use and legality

This Actor collects public Google Play listing metadata. Use it in accordance with applicable laws, Google Play terms, and Apify's terms. Do not use the output to harass publishers, misrepresent apps, or make automated decisions that require additional verification.

Public developer contact details may still be personal data in some jurisdictions. Only retain and process fields needed for a legitimate purpose. You are responsible for your input, schedule, storage, and downstream use.

FAQ

Does it need a Google account or API key?

No. It reads public Google Play app and category data. An Apify account is needed to run the Actor.

Can it scrape reviews?

No. This Actor returns app catalog and detail rows only. Use the related Google Play Store Scraper when review collection is part of the job.

Why is a field null?

Google Play does not expose every field for every app, country, or language. Null values preserve the stable schema without inventing data.

Why did my run fail with “invalid app ID”?

Package IDs must look like Android identifiers, for example com.spotify.music. For URLs, provide an HTTPS app-detail or category URL on play.google.com.

Can I compare changes automatically?

Schedule repeated runs and compare datasets by appId. The Actor creates snapshots but does not calculate diffs or send alerts itself.