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.
Why it is hard
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.
Quickstart
curl "https://api.appstorescraperapi.com/api/v1/googleplay/search?q=spotify&limit=20&api_key=$API_KEY" 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"]) Response
{
"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"
},
{
"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"
}
]
} | Field | Type | Description |
|---|---|---|
query | string | The search query echoed back from your request. |
page | integer | The result page number for this response, starting at 1. |
total_results | integer | Number of results returned in this response. |
results | array | Ranked app results, each an object with the fields below. |
position | integer | The app's rank in the results, starting at 1. |
id | string | The Android package id for the result. package_id mirrors it. |
title | string | The app's display name. |
category | string | The app's Google Play category when present in the result cluster, e.g. Music & Audio. |
Use it for
Keyword rank tracking
Competitor discovery
Install-band benchmarking
App discovery tools
Under the hood
- 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.
Pricing
| Plan | Price | Best for |
|---|---|---|
| Free | 1,000 requests | Testing and small jobs |
| Pro | $0.60 / 1k | Production workloads |
| Pay-as-you-go | $0.90 / 1k | Spiky 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.
Where are rating and price 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 omits them from search rows so the response carries only what the cluster actually provides, 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.