Google Play Apps Scraper

Export localized Google Play search results and rich app details, including ratings, installs, prices, media, release notes, Android requirements, and public developer contacts.

Data fields

FieldTypeDescription
querystring | nullSearch query that produced the app, or null for direct app IDs and URLs.
rankinteger | nullResult rank within the search response, or null for direct app inputs.
inputTypestringInput path that produced the row.
appIdstringAndroid package ID.
titlestring | nullGoogle Play app title when available.
developerstring | nullDeveloper name when available.
developerIdstring | nullGoogle Play developer ID when available.
developerInternalIdstring | nullGoogle Play internal developer identifier when available.

Input preview

queriesSearch queries
appIdsApp IDs
startUrlsGoogle Play app URLs
countryCountry code
languageLanguage code
maxResultsMaximum apps

API and agents

This actor can be run through Apify API, datasets, webhooks, schedules, and the official Apify MCP server.

Ready-to-run examples

Open a saved Apify example, adjust the input, and run the actor in your own Apify account.

View all examples

How this actor works

See example inputs, outputs, API usage, and practical limits before running this actor on Apify.

Open Apify page

Google Play Apps Scraper exports public Google Play app search results and app detail metadata for ASO, market research, and competitor tracking.

Use it to collect Android app titles, package IDs, developers, ratings, installs, prices, categories, descriptions, screenshots and videos, release notes, Android requirements, public developer contacts, and localized metadata.

At a glance

  • Extracts: app ID, title, developer, URL, icon, rating, ratings/reviews counts, installs, price, ads/IAP flags, category, summary, description, media URLs, release/update data, developer website, and developer email when available.
  • Inputs: search queries, direct app IDs, direct Google Play app URLs, country, language, maximum results, detail toggle, and price filter.
  • Best for: ASO research, competitor discovery, app store market snapshots, lead enrichment, and product intelligence.
  • Exports: Apify dataset rows downloadable as CSV, JSON, Excel, or available through the API.
  • Login: no Google account, cookies, or Google API key are required.

What can it do?

  • Export Google Play search results: Save ranked app rows for keywords, categories, brands, or competitor searches.
  • Enrich known apps: Fetch app metadata from direct package IDs or Google Play app URLs.
  • Collect ASO fields: Capture titles, summaries, descriptions, ratings, installs, screenshots, categories, and pricing signals.
  • Localize market snapshots: Use country and language inputs to compare localized rankings, prices, and metadata.
  • Use as a Google Play apps API workflow: Run from API, schedules, webhooks, or MCP-compatible agents and export CSV/Excel/JSON.

Common workflows

  • Research ASO keywords: collect top search results for a keyword and compare titles, summaries, ratings, installs, and categories.
  • Enrich app IDs: pass known package IDs to get detail fields without running a discovery search.
  • Compare competitors: run a small app list weekly and track metadata changes in your own database.
  • Build app market datasets: export localized rows to spreadsheets, BI tools, or warehouse jobs through the Apify API.

Example input

{
  "queries": ["fitness tracker"],
  "appIds": ["com.spotify.music"],
  "country": "us",
  "language": "en",
  "maxResults": 10,
  "includeDetails": true,
  "price": "all"
}

Example output

{
  "query": "fitness tracker",
  "rank": 1,
  "inputType": "search",
  "appId": "com.example.fitness",
  "title": "Example Fitness App",
  "developer": "Example Developer",
  "appUrl": "https://play.google.com/store/apps/details?id=com.example.fitness&hl=en&gl=US",
  "rating": 4.5,
  "ratingsCount": 12000,
  "installs": "1,000,000+",
  "free": true,
  "containsAds": true,
  "inAppPurchases": true,
  "category": "Health & Fitness",
  "locale": "en_US",
  "scrapedAt": "2026-07-03T09:00:00.000Z"
}

Tips for best results

  • Use direct app IDs for known apps: package IDs are the most precise input for enrichment.
  • Use small keyword batches: test search quality with one keyword and 10-25 results before scaling.
  • Set country and language deliberately: rankings, prices, titles, and descriptions can change by locale.
  • Keep details enabled for richer rows: developer contacts, screenshots, installs, and descriptions depend on detail data.

Limits and caveats

  • This is not a reviews scraper: use Google Play Reviews Scraper for review text and developer replies.
  • Fields vary by app: some apps do not expose contact details, screenshots, install ranges, or update data.
  • Search ranking changes: Google Play search order can shift by country, language, time, and personalization outside the Actor.
  • Large runs can take longer: detail pages are richer but slower than search-card metadata.
  • Google Play can vary search behavior: upstream Google Play responses have occasionally ignored country or price filters. Treat those filters as best-effort and verify critical market comparisons with direct app IDs.
  • Partial runs preserve useful data: if one detail page disappears or changes format, its search-card row is kept when possible and the error is recorded in RUN_SUMMARY.

API usage

Run from the Apify API or SDK with the same input keys shown above.

Node.js

import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('fetch_cat/google-play-apps-scraper').call({
  queries: ['fitness tracker'],
  country: 'us',
  language: 'en',
  maxResults: 10,
  includeDetails: true
});
console.log(run.defaultDatasetId);

Python:

import os
from apify_client import ApifyClient

client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("fetch_cat/google-play-apps-scraper").call(run_input={
    "queries": ["fitness tracker"],
    "country": "us",
    "maxResults": 10,
    "includeDetails": True,
})
print(run["defaultDatasetId"])

cURL:

curl -X POST "https://api.apify.com/v2/acts/fetch_cat~google-play-apps-scraper/runs?token=$APIFY_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"queries":["fitness tracker"],"country":"us","maxResults":10,"includeDetails":true}'

MCP and AI agents

For AI agents, use the official Apify MCP server. The focused single-Actor URL is:

https://mcp.apify.com?tools=fetch_cat/google-play-apps-scraper

The default MCP server can search and run Actors. The focused URL exposes this Actor directly to clients that support tool-scoped MCP connections.

Claude CLI:

claude mcp add --transport http apify-google-play "https://mcp.apify.com?tools=fetch_cat/google-play-apps-scraper"

JSON configuration for MCP clients:

{
  "mcpServers": {
    "apify-google-play": {
      "type": "http",
      "url": "https://mcp.apify.com?tools=fetch_cat/google-play-apps-scraper"
    }
  }
}

Example prompts:

  • “Find 20 budgeting apps on Google Play in the UK and include detailed metadata.”
  • “Enrich com.spotify.music and com.duolingo, then compare ratings, installs, recent changes, and Android requirements.”
  • “Export lightweight search results for fitness tracker without fetching app detail pages.”

Support

Open an issue on the Actor page if Google Play changes its public response format or if you need a field clarified. To make a problem reproducible, include:

  • the Apify run ID or run URL;
  • the exact input JSON, with secrets removed;
  • the expected output and the actual output;
  • one reproducible public URL (normally a Google Play app page) or search query, when applicable.

Do not post Apify tokens, cookies, private URLs, or other credentials.

Privacy and data handling

This Actor runs with Apify limited permissions and processes only the inputs needed for the documented run. It requests public Google Play search and app-detail pages, then stores results in your Apify run storage. FetchCat does not use your inputs or outputs for advertising or model training and does not retain them outside the Apify run except for transient support debugging when you explicitly share run details. You are responsible for using the Actor lawfully, respecting the target site's terms, and avoiding unnecessary personal or sensitive data in inputs.

Common questions

Questions and answers reused from the canonical actor README.

Can I export app data to CSV, Excel, JSON, or API?

Yes. Apify datasets support all of those access paths.

Does this require a Google Play account?

No. It reads public Google Play app data.

Can I scrape reviews with this Actor?

No. Use Google Play Reviews Scraper for review rows.

Why are some fields null?

Google Play does not expose every field for every app, and some fields require includeDetails: true.

Can I monitor competitors over time?

Yes. Schedule the same app IDs or search query and compare dataset exports across runs.