~ / endpoints / Android App Data API

Android App Data Scraper API

Our Android app data scraper turns any keyword into the ranked Google Play results: package id, title, developer, category, install count, and listing URL per app, returned as structured JSON from one request.

Get a free API keyEndpoint catalog
1,000
free requests / mo
2.6s
median response
50
max results / call
JSON
structured output
the hurdle

The hard part of Android App data

Google Play search results live inside an obfuscated data blob in the page, so the package ids and titles you want sit behind nested arrays that shift with every layout change. Hit the search page from a datacenter IP and Google is quick to answer with a consent redirect or a captcha instead of results.

step one

Send one request to the Android App Data Scraper API

cURL
curl "https://api.appstorescraperapi.com/api/v1/googleplay/search?q=spotify&limit=20&api_key=$API_KEY"
Python
import requests

BASE = "https://api.appstorescraperapi.com"
API_KEY = "YOUR_API_KEY"

# One keyword in, the ranked Google Play results out as JSON.
data = requests.get(
    f"{BASE}/api/v1/googleplay/search",
    params={
        "q": "spotify",   # the search query
        "hl": "en",       # content language
        "gl": "us",       # storefront country
        "limit": 20,       # up to 50 results
        "api_key": API_KEY,
    },
    timeout=30,
).json()

print(data["query"], "-", data["total_results"], "results")
for app in data["results"]:
    print(app["position"], app["package_id"], app["title"], app["installs"])
parameters list

Parameters

ParameterRequiredDefaultNotes
qrequired-The search query to run against Google Play, e.g. spotify. This is the primary parameter.
hloptionalenUI and content language (Google Play hl). Defaults to en.
gloptionalusStorefront country (Google Play gl). Defaults to us. Sets the region the results are ranked for.
limitoptional20Maximum number of results to return. Defaults to 20, hard cap 50 (a search page holds about 20 apps).
urloptional-A play.google.com search URL. Pass it and we run it as the query. For most cases q is simpler.
api_keyrequired-Your API key, passed as a query parameter. Get one free at signup.
data back

Reading the Android App Data Scraper API response

200 OK
{
  "query": "spotify",
  "page": 1,
  "total_results": 20,
  "results": [
    {
      "position": 1,
      "id": "com.spotify.music",
      "package_id": "com.spotify.music",
      "title": "Spotify: Music and Podcasts",
      "category": null,
      "developer": null,
      "installs": null,
      "url": "https://play.google.com/store/apps/details?id=com.spotify.music",
      "price": null,
      "currency": "USD",
      "rating": null,
      "reviews_count": null,
      "thumbnail": null
    },
    {
      "position": 2,
      "id": "com.spotify.tv.android",
      "package_id": "com.spotify.tv.android",
      "title": "Spotify: Music & Podcasts",
      "category": "Music & Audio",
      "developer": "Spotify AB",
      "installs": "100,000,000+",
      "url": "https://play.google.com/store/apps/details?id=com.spotify.tv.android",
      "price": null,
      "currency": "USD",
      "rating": null,
      "reviews_count": null,
      "thumbnail": null
    }
  ]
}
FieldTypeDescription
querystringThe search query echoed back from your request.
pageintegerThe result page number for this response, starting at 1.
total_resultsintegerNumber of results returned in this response.
resultsarrayRanked app results, each an object with the fields below.
positionintegerThe app's rank in the results, starting at 1.
idstringThe Android package id for the result. package_id mirrors it.
titlestringThe app's display name.
categorystringThe app's Google Play category when present in the result cluster, e.g. Music & Audio.
developerstringThe developer name when present in the result cluster.
installsstringThe install-count band when present, e.g. 100,000,000+.
urlstringThe canonical play.google.com listing URL for the app.
ratingnumberNull on search rows. Google Play carries rating and price only on the app detail page, so pass the package_id to googleplay/product for those.
common builds

What you can ship with it

>

Keyword rank tracking

Run target keywords on a schedule and store each app's position to chart how your listing rises or falls in Google Play search.
>

Competitor discovery

Search a category term to see which Android apps rank for it, then feed their package ids to the product endpoint for full detail.
>

Install-band benchmarking

Read the installs field across the top results to gauge how big the leading apps in a niche are before you enter it.
>

App discovery tools

Power an internal search feature by querying the endpoint and rendering the ranked package ids, titles, and developers.
>

Brand monitoring

Search your brand name to spot clones and unofficial Android apps ranking alongside your own listing.
>

Cross-store mapping

Match Google Play package ids from search to their App Store counterparts to keep a single cross-platform app index in sync.
why it works

Why our Android App Data Scraper API earns its keep

Send a keyword and we return the ranked Google Play results as clean JSON, with no store API to depend on and no proxy pool of your own to babysit. Every request rotates proxies, handles the consent and captcha walls, and retries across tiers, returning a validated schema in about 2.6 seconds.

*

Ranked results in one call

One query returns up to 50 apps with position, package id, title, and, when the cluster carries them, developer, category, and install band.
*

Resilient parsing

We parse the search data cluster and, as a floor, always return the package ids in document order, so a layout change never leaves you with nothing.
*

Anti-bot and proxy rotation

Rotating residential and datacenter proxies with anti-bot handling get past the consent and captcha walls Google shows datacenter IPs.
*

Auto-retry across pools

A consent shell or blocked fetch retries through paid-residential, datacenter, and free proxy tiers before a response is returned.
*

Language and region control

The hl and gl parameters rank results as a given language and storefront country would see them.
*

Feeds the product endpoint

Each row carries the package id, so you can hand it to googleplay/product for rating, price, and the full listing when you need depth.
comparison table

Android App Data Scraper API vs official and roll-your-own

Our APIDIY (requests / headless)Official Google Play API
Ranked search resultsParsed and ordered JSONDecode the page data blob yourselfNo public search API exists
SetupAPI key onlyProxies, headless browser, parsersNot available
Consent and captcha wallsHandled by proxy rotationYou solve them per requestNot applicable
Language and regionhl and gl parametersYou set them per requestNot applicable
Anti-bot and proxiesBuilt inYou build and maintain itNot applicable
OutputValidated JSON, stable schemaWhatever you parseNot applicable
what you pay

From free to high volume

PlanPriceBest for
Free1,000 requestsTesting and small jobs
Pro$0.60 / 1kProduction workloads
Pay-as-you-go$0.90 / 1kSpiky or one-off volume

Median response 2.6s. You only pay for successful requests.

FAQ

What is an Android app data scraper?

An Android app data scraper is a tool that reads Google Play and returns app data as structured output. Our Android app data scraper API takes a search query and returns the ranked results, each with the package id, title, and, where available, developer, category, and install band, as JSON. Pass any result's package id to the product endpoint for the app's full listing, ratings, and price.

How do I scrape Google Play search results?

Send one GET request to our googleplay/search endpoint with q set to your query and your API key. Optionally add hl for language, gl for storefront country, and limit for how many results you want, up to 50. We handle proxies, consent walls, and retries and return the ranked results as clean JSON.

Why are rating and price null on search rows?

Google Play does not put rating or price in the search result cluster; those fields live only on each app's detail page. The search endpoint returns them as null to keep the shape uniform, and every row includes the package id, so you call googleplay/product with that id to get the rating, review count, and price for the apps you care about.

How many results can I get per search?

Up to 50 per call. A Google Play search page holds about 20 apps, and the limit parameter defaults to 20 with a hard cap of 50. Each result includes the package id and listing URL, so you can enrich the ones you need through the product endpoint.

Do I need a Google account to scrape Android app data?

No. You only need an appstorescraperapi key passed as the api_key query parameter. There is no Google account, no Play Console access, and no OAuth. The endpoint reads Google Play's public search results, and the free tier includes 1,000 requests per month.

How fast is the Android app data scraper API?

Median end-to-end response is about 2.6 seconds, including proxy routing, anti-bot handling, retries, and parsing. Google Play serves a consent or captcha interstitial to repeat datacenter traffic, so the proxy rotation and retries behind the endpoint are what keep search requests returning real results instead of a wall.

Stream android app data api as JSON
Spin up free with 1,000 requests.
Get a free API key Endpoint catalog