Dedicated ScrapersGoogle Play Scraper API
Google Play logoDedicated Google Play API

Google Play Scraper API — Apps, Reviews & Rankings

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.

10Endpoints
40+Countries
17+Languages
1–5★Full rating histogram

No credit card required · PAYG credits never expire

GET /v1/google-play/apps/com.spotify.music
# 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",
)
200 OK1.8s · 5 credits
{
  "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
}
API Reference

Google Play API — 10 Dedicated Endpoints

Structured JSON responses with normalized data models. No HTML parsing. No proxy management. No Play Developer account.

GET
/v1/google-play/search
Keyword search across the Play Store, per country and language, with an optional free/paid price filter
5 cr / req
GET
/v1/google-play/apps/{app_id}
Full listing for one package id — title, developer, price, installs, rating, screenshots, changelog
5 cr / req
GET
/v1/google-play/apps/{app_id}/reviews
Paged user reviews with sort and a continuation token, plus developer replies where present
5 cr / req
GET
/v1/google-play/apps/{app_id}/permissions
Every Android permission the app declares, grouped the way Play groups them
3 cr / req
GET
/v1/google-play/apps/{app_id}/similar
The “similar apps” shelf Google itself renders on a listing — the competitive set, ranked
5 cr / req
GET
/v1/google-play/developers/{developer_id}
Every app a developer publishes, so you can size a publisher’s whole portfolio in one call
5 cr / req
GET
/v1/google-play/categories/{category_id}
Browse the top-grossing, top-free and top-paid charts inside a category — the reliable way to read charts
5 cr / req
GET
/v1/google-play/collections/{collection}
Curated Play collections and editorial shelves by collection id
5 cr / req
GET
/v1/google-play/categories
Every Play category id you can browse — free, costs no credits
0 cr / req
GET
/v1/google-play/markets
Supported country and language codes — free, costs no credits
0 cr / req
About Top Charts: Google renders the global top-charts list client-side, so it cannot be fetched honestly — that request returns a clear 422 rather than a fabricated ranking. Browse /categories/{category_id} instead: category charts return real ranked apps for top-free, top-paid and top-grossing.
Response Schema

Every Field You Need, Ready to Use

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

app_idstringAndroid package name — the key every other endpoint takes
title / summarystringListing title and the one-line summary under it
descriptionstringFull store description, plain text and HTML
developerobjectDeveloper name, id, website and support email
price / currencyfloat / stringPrice in the requested country’s currency, 0 for free apps
installs / min_installsstring / integerThe “1,000,000,000+” badge and the numeric floor behind it
score / ratingsfloat / integerAverage star rating and how many ratings it is built from
histogramobjectCount of ratings at each of the five star levels
version / updatedstringCurrent version string and last-update timestamp
recent_changesstringThe “what’s new” changelog for the current release
content_ratingstringAge rating and the descriptors behind it
screenshots / videoarray / stringFull-resolution store media
in_app_productsstringIAP price range as Play states it
genre / genre_idstringPrimary category with its browsable id

Review

review_idstringStable review identifier for deduplication
user_namestringReviewer display name
scoreintegerStars this reviewer gave, 1–5
textstringReview body
thumbs_upintegerHelpfulness votes
app_versionstringThe app version the review was left against
atstringSubmission timestamp, ISO 8601 UTC
reply_content / replied_atstringThe developer’s public reply, when there is one
page_tokenstringContinuation token — pass it back to walk deeper into the review history
Coverage

40+ countries, 17+ languages

Play 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.

🇺🇸US
🇬🇧GB
🇩🇪DE
🇫🇷FR
🇪🇸ES
🇮🇹IT
🇳🇱NL
🇵🇱PL
🇸🇪SE
🇧🇷BR
🇲🇽MX
🇨🇦CA
🇮🇳IN
🇯🇵JP
🇰🇷KR
🇮🇩ID
🇹🇷TR
🇦🇺AU
lang=enlang=delang=frlang=eslang=itlang=ptlang=nllang=pllang=svlang=trlang=rulang=jalang=kolang=zhlang=hilang=idlang=ar
Rank is per-locale, not global: the same query returns a different ordering in every country, and a different listing text in every language. Call /markets — it is free — for the authoritative country and language codes.
Use Cases

What Developers Build with Play Store Data

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.

ASO & keyword rank tracking

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.

Review mining & sentiment

Page reviews with the continuation token to build a corpus per version, then split complaints by release to see exactly which update broke what.

Competitor & portfolio tracking

Pull a developer’s whole catalogue in one call and watch the similar-apps shelf to see who Google itself considers the competitive set.

Permission & privacy auditing

Read every Android permission an app declares. Useful for supply-chain review, app-store compliance and flagging overreach across a portfolio.

AI training datasets

Collect structured app metadata — descriptions, categories, ratings, install bands and review text — for classification, recommendation and moderation models.

Rating-distribution monitoring

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.

Pricing

Pay Per Request. Credits Never Expire.

You only pay for successful responses — failed requests are always free. PAYG credits never expire; volume subscription tiers reduce per-credit cost further.

EndpointCredits / requestPAYGSubscription
Search Apps /search5 credits
App Detail /apps/{app_id}5 credits
App Reviews /apps/{app_id}/reviews5 credits
App Permissions /apps/{app_id}/permissions3 credits
Similar Apps /apps/{app_id}/similar5 credits
Developer Portfolio /developers/{developer_id}5 credits
Category Charts /categories/{category_id}5 credits
Collections /collections/{collection}5 credits
Categories /categoriesFree
Markets /marketsFree

See the full plan comparison on the pricing page — subscription tiers step down per-credit cost beyond the cheapest column shown above.

Free trial
1,000 credits free
= 200 search requests
Credits expire
Never
Buy once, use anytime
Failed requests
Always free
Pay for success only
Live cost estimator
Credits per request5
Total credits needed5,000
Loading plans…
Why ScrapeBadger

Built for Reliability at Scale

ScrapeBadger's Google Play Scraper API handles everything Play throws at automated requests — so your pipeline keeps running.

Country and language are separate knobs

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.

Charts that actually return data

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.

The full rating histogram

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.

Token-based review paging

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 Play Developer account

No Google account, no Play Console, no upstream quota. One ScrapeBadger API key covers every endpoint on this page.

Pay per success only

Credits are deducted for successful responses. Blocks and timeouts return a 422 and cost nothing, so you never pay for a retry.

Code Examples

Simple Integration. Any Language.

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.

Node.js — Search + Detail
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)
}
Node.js — Page every review
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)
FAQ

Frequently Asked Questions

Common questions about scraping Google Play with the API — Python, Node.js, or REST.

Do I need a Google Play Developer account or API key?

No. You only need a ScrapeBadger API key. There is no Play Console access, no Google account and no upstream quota involved.

What is an app_id?

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.

Can I get the global Top Charts?

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.

How do country and language interact?

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.

How deep can I page through reviews?

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.

Plans & subscriptions

Bigger volume? Save up to 64%

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.

Get started

Start Scraping Google Play Today

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