The fastest way to start scraping the Google Play Store at scale. Structured JSON for app search, full listing detail with the complete rating histogram, token-paged user reviews, declared Android permissions, similar apps, developer portfolios and category charts — across dozens of countries and languages. No Play Developer account.
No credit card required · PAYG credits never expire
# Full listing for one Play app
import scrapebadger
client = scrapebadger.ScrapeBadger("sb_live_...")
app = client.google_play.app(
app_id="com.spotify.music",
country="US",
lang="en",
){
"app_id": "com.spotify.music",
"title": "Spotify: Music and Podcasts",
"developer": "Spotify AB",
"installs": "1,000,000,000+",
"score": 4.3,
"ratings": 32184712,
"price": 0,
"free": true
}Structured JSON responses with normalized data models. No HTML parsing. No proxy management. No Play Developer account.
/v1/google-play/search/v1/google-play/apps/{app_id}/v1/google-play/apps/{app_id}/reviews/v1/google-play/apps/{app_id}/permissions/v1/google-play/apps/{app_id}/similar/v1/google-play/developers/{developer_id}/v1/google-play/categories/{category_id}/v1/google-play/collections/{collection}/v1/google-play/categories/v1/google-play/markets/categories/{category_id} instead: category charts return real ranked apps for top-free, top-paid and top-grossing.All fields are normalized from Play's own listing data — no HTML for you to parse. App detail carries the full rating histogram alongside the average, and reviews carry the continuation token so deep paging stays consistent.
app_idstringAndroid package name — the key every other endpoint takestitle / summarystringListing title and the one-line summary under itdescriptionstringFull store description, plain text and HTMLdeveloperobjectDeveloper name, id, website and support emailprice / currencyfloat / stringPrice in the requested country’s currency, 0 for free appsinstalls / min_installsstring / integerThe “1,000,000,000+” badge and the numeric floor behind itscore / ratingsfloat / integerAverage star rating and how many ratings it is built fromhistogramobjectCount of ratings at each of the five star levelsversion / updatedstringCurrent version string and last-update timestamprecent_changesstringThe “what’s new” changelog for the current releasecontent_ratingstringAge rating and the descriptors behind itscreenshots / videoarray / stringFull-resolution store mediain_app_productsstringIAP price range as Play states itgenre / genre_idstringPrimary category with its browsable idreview_idstringStable review identifier for deduplicationuser_namestringReviewer display namescoreintegerStars this reviewer gave, 1–5textstringReview bodythumbs_upintegerHelpfulness votesapp_versionstringThe app version the review was left againstatstringSubmission timestamp, ISO 8601 UTCreply_content / replied_atstringThe developer’s public reply, when there is onepage_tokenstringContinuation token — pass it back to walk deeper into the review historyPlay serves a different storefront per country and a different translation per language. Both are separate parameters — country and lang — so pricing, availability, ranking and listing copy are never accidentally mixed.
/markets — it is free — for the authoritative country and language codes.Scraping Google Play gives you real mobile-market signals — where a package ranks in each locale, how its ratings actually distribute, what its users complain about per version, and what permissions it quietly asks for.
Run the same query per country and language and record where each package lands. Play ranks differently in every locale, so rank is only meaningful when you pin both.
Page reviews with the continuation token to build a corpus per version, then split complaints by release to see exactly which update broke what.
Pull a developer’s whole catalogue in one call and watch the similar-apps shelf to see who Google itself considers the competitive set.
Read every Android permission an app declares. Useful for supply-chain review, app-store compliance and flagging overreach across a portfolio.
Collect structured app metadata — descriptions, categories, ratings, install bands and review text — for classification, recommendation and moderation models.
Track the full star histogram over time, not just the rounded average, so a slide from a healthy 4.6 to a polarised one is visible before the average moves.
You only pay for successful responses — failed requests are always free. PAYG credits never expire; volume subscription tiers reduce per-credit cost further.
| Endpoint | Credits / request | PAYG | Subscription |
|---|---|---|---|
Search Apps /search | 5 credits | — | — |
App Detail /apps/{app_id} | 5 credits | — | — |
App Reviews /apps/{app_id}/reviews | 5 credits | — | — |
App Permissions /apps/{app_id}/permissions | 3 credits | — | — |
Similar Apps /apps/{app_id}/similar | 5 credits | — | — |
Developer Portfolio /developers/{developer_id} | 5 credits | — | — |
Category Charts /categories/{category_id} | 5 credits | — | — |
Collections /collections/{collection} | 5 credits | — | — |
Categories /categories | Free | — | — |
Markets /markets | Free | — | — |
See the full plan comparison on the pricing page — subscription tiers step down per-credit cost beyond the cheapest column shown above.
ScrapeBadger's Google Play Scraper API handles everything Play throws at automated requests — so your pipeline keeps running.
Play serves a different listing, a different price and a different ranking per country, and different copy per language. Both are explicit parameters, so a comparison is never accidentally mixed.
Global top-charts are rendered client-side by Google and cannot be fetched honestly — we return a clear 422 rather than a fabricated list. Category charts are the supported path and return real ranked apps.
App detail carries the count at each star level alongside the average, so you can tell a genuine 4.6 from one propped up by a bimodal split.
Reviews page with Play’s own continuation token instead of an offset, so deep paging stays consistent while new reviews arrive at the top.
No Google account, no Play Console, no upstream quota. One ScrapeBadger API key covers every endpoint on this page.
Credits are deducted for successful responses. Blocks and timeouts return a 422 and cost nothing, so you never pay for a retry.
Get started in minutes with Python, Node.js, or plain HTTP requests.
The scrapebadger Node.js library wraps the Google Play API with typed methods. Install with npm install scrapebadger, then start scraping the Play Store in a few lines of code.
import ScrapeBadger from 'scrapebadger'
const client = new ScrapeBadger({ apiKey: 'sb_live_...' })
// Free meditation apps, German storefront
const { apps } = await client.googlePlay.search({
query: 'meditation',
country: 'DE',
lang: 'de',
price: 'free',
})
// Full listing for the top three
for (const a of apps.slice(0, 3)) {
const app = await client.googlePlay.app({ appId: a.app_id })
console.log(app.title, app.score, app.installs, app.histogram)
}import ScrapeBadger from 'scrapebadger'
const client = new ScrapeBadger({ apiKey: 'sb_live_...' })
// Newest reviews first, walked with the continuation token
let pageToken = undefined
do {
const res = await client.googlePlay.reviews({
appId: 'com.spotify.music',
sort: 'newest',
count: 100,
pageToken,
})
for (const r of res.reviews) {
console.log(r.score, r.app_version, r.text)
}
pageToken = res.page_token
} while (pageToken)Common questions about scraping Google Play with the API — Python, Node.js, or REST.
No. You only need a ScrapeBadger API key. There is no Play Console access, no Google account and no upstream quota involved.
It is the Android package name — the id= value in a Play Store URL, for example com.spotify.music. Search, category and developer responses all return it on every app, so you can go straight from a search result to full detail, reviews or permissions.
Not as a single global list — Google renders those client-side, so any endpoint claiming to serve them is guessing. We return an honest 422 instead. Use the category endpoint to browse top-free, top-paid and top-grossing charts inside a category; those are real ranked results.
They are independent. country decides which storefront you see — pricing, availability and ranking — and lang decides which translation of the listing text comes back. Pin both when you are comparing markets, or the comparison is not like-for-like.
Reviews return a page_token; pass it back to fetch the next page and keep going until the token stops coming. Each page is billed as its own request, so cost scales with depth rather than with a single expensive call.
Per-request credit costs are listed above. For higher monthly volume, subscription tiers reduce the per-credit rate substantially. All Google Play endpoints — search, app detail, reviews, permissions, similar apps, developers, collections and category charts — are included on every plan.
1,000 free credits. No credit card. Get your API key in under a minute.
PAYG credits never expire · Pay only for successful requests · 40+ countries