Google Play Store Scraper API
Our Google Play Store scraper takes any Android package id or play.google.com URL and returns the app's listing as JSON: title, developer, rating, review count, category, price, content rating, icon, and screenshots in a single request.
Why it is hard
Google Play has no public app data API, so the only source is the store HTML, where the numbers you need sit inside late-loading script blobs that shift position and break brittle scrapers. A datacenter IP hitting the page repeatedly also trips a consent or captcha interstitial instead of the listing.
Quickstart
curl "https://api.appstorescraperapi.com/api/v1/googleplay/product?id=com.spotify.music&api_key=$API_KEY" import requests
BASE = "https://api.appstorescraperapi.com"
API_KEY = "YOUR_API_KEY"
# Pass an Android package id or a play.google.com URL.
data = requests.get(
f"{BASE}/api/v1/googleplay/product",
params={
"id": "com.spotify.music", # package id or full Play URL
"hl": "en", # content language
"gl": "us", # storefront country
"api_key": API_KEY,
},
timeout=30,
).json()
print(data["title"], "by", data["developer"])
print(data["rating"], "stars across", data["reviews_count"], "reviews")
print(data["category"], "-", "free" if data["is_free"] else data["price"]) Response
{
"id": "com.spotify.music",
"package_id": "com.spotify.music",
"title": "Spotify: Music and Podcasts",
"developer": "Spotify AB",
"developer_url": "https://www.spotify.com",
"description": "Listen to songs, play podcasts, create playlists and discover music you'll love",
"category": "MUSIC_AND_AUDIO",
"operating_system": "ANDROID",
"content_rating": "Teen",
"price": 0,
"currency": "USD",
"is_free": true,
"rating": 4.334629058837891,
"reviews_count": 35848654,
"icon": "https://play-lh.googleusercontent.com/IzQgYCcnCFCD08GR-3bdtcT8xzOvrNkC84avGT5CwTX2VIqmTmKKJcP_Cd4JoBOdmCMlTndlOzV6hrthg2fOWA",
"thumbnail": "https://play-lh.googleusercontent.com/IzQgYCcnCFCD08GR-3bdtcT8xzOvrNkC84avGT5CwTX2VIqmTmKKJcP_Cd4JoBOdmCMlTndlOzV6hrthg2fOWA",
"screenshots": [
"https://play-lh.googleusercontent.com/xl04GurQer374yogi24hRkvUcXtMStMOcOo86Sprmrid9j6wQHF0d9xMh73CwUEg57lbsGIwpOXgrJ927Q",
"https://play-lh.googleusercontent.com/c1jnjL-9CIFlwlTMX3xNyeo8aEH39sNuC5zpTHhfW8keGxQE3TBMRX9Rm3VqM3E03Cyl9AqtnxuKvxJpcW0WCA"
],
"url": "https://play.google.com/store/apps/details/Spotify_Music_and_Podcasts?id=com.spotify.music&hl=en"
} | Field | Type | Description |
|---|---|---|
id | string | The Android package id. package_id mirrors it. |
title | string | The app's display name as shown on its Google Play page. |
developer | string | The developer name from the listing. developer_url points to their site. |
description | string | The app description text from the store page. |
category | string | The Google Play application category, e.g. MUSIC_AND_AUDIO. |
operating_system | string | The platform for the listing, e.g. ANDROID. |
content_rating | string | The app's content rating, e.g. Teen. |
price | number | Numeric price in the storefront currency. is_free is true when the price is 0. |
Use it for
Cross-store app tracking
Competitor monitoring
App catalogs and directories
Rating and price alerts
Under the hood
- Package id or URL input Look an app up by its Android package id or a full play.google.com URL, both resolved server side to the same listing.
- Resilient parsing We read the stable JSON-LD block plus meta tags and the Play CDN, so the response holds up when Google shifts its internal data offsets.
- Anti-bot and proxy rotation Rotating residential and datacenter proxies with anti-bot handling get past the consent and captcha walls that block 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 a Google Play Store scraper?
A Google Play Store scraper is a tool that reads a public app listing on Google Play and returns it as structured data. Our Google Play Store scraper API takes an Android package id or a play.google.com URL and returns the title, developer, rating, review count, category, content rating, price, icon, and screenshots as JSON from a single request.
Is there an official Google Play API for app data?
No. Google Play has no public API that returns app listing data such as ratings, reviews, or descriptions. The Google Play Developer API covers publishing and managing your own apps, not reading arbitrary listings. That is why a scraper that parses the public store page is the practical way to get Google Play app data, which is what this endpoint does.
How do I get Google Play data by package id?
Send one GET request to our googleplay/product endpoint with id set to the package id, for example com.spotify.music, or a full play.google.com URL, which we parse for the package id. Add hl for language and gl for storefront country. We handle proxies, consent walls, and retries and return the listing as clean JSON.
Can I read a listing in another language or country?
Yes. The hl parameter sets the content language (default en) and the gl parameter sets the storefront country (default us). The description, price, and availability reflect the locale you request, so you can compare a listing across regions and languages.
Do I need a Google account or API key?
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 the public listing any visitor can see, and the free tier includes 1,000 requests per month.
How fast is the Google Play Store scraper API?
Median end-to-end response is about 2.6 seconds, including proxy routing, anti-bot handling, retries, and parsing. Because Google Play serves a consent or captcha interstitial to repeat datacenter traffic, the proxy rotation and retries behind the endpoint are what keep listing requests returning the real page instead of a block.