# Google Play Store Scraper API - Apps, Details, and Reviews as JSON > Source: https://scrape.do/products/ready-api/google-play-store-scraper/ Scrape Google Play Store for Android app search, detail pages, and paginated user reviews. Structured JSON with ratings, prices, screenshots, downloads, versions, and developer responses. Search by query, category, or top chart. > Each successful request costs **10 credits**. **The Play Store Catalog in Three API Calls** Pull Android app search results, full product detail pages, and paginated user reviews as clean JSON. One endpoint per surface, consistent schema across all three. Localize by country and language, browse by category or top chart, and walk every review with token-based pagination. ![The Play Store Catalog in Three API Calls](/uploads/google-play-store-api.png) ## Highlights ### Search, Product, Reviews in One Schema Family - Three endpoints, one consistent schema. **Search** returns app cards with title, rating, price, package id, and feature image. **Product** returns the full detail page with description, screenshots, downloads, version, release notes, and developer info. **Reviews** returns paginated reviews with star ratings, dates, app version, and developer responses. - Find apps by **keyword, category, or top chart**. Top free, top paid, top grossing, the `MEDICAL` catalog, the `GAME_PUZZLE` shelf. Match what the Play Store user sees when they browse on any device, in any country, in any language. ### Localized to Any Country, Any Device - Pass `gl=de&hl=de` for the German store, `gl=jp&hl=ja` for Japanese, `gl=tr&hl=tr` for Turkish. Prices come back in the local currency, ratings reflect the local user base, and the same call works across all regions. - Restrict search results to one device type with `store_device`: `phone`, `tablet`, `tv`, `chromebook`, `watch`, or `car`. Browse the kids' catalog by age bucket with the `FAMILY` category and the `age` parameter. ## How It Works ### App Search Search by query, category, or top chart. Returns up to 20 app cards per page with title, package id, rating, author, price, and thumbnails. Pagination via next_page_token for deeper walks. ![App Search](/uploads/google-play-store-search.png) **cURL (API mode)** ```bash curl --location --request GET 'https://api.scrape.do/plugin/google/play-store?token=&q=weather' ``` **Python (API mode)** ```python import requests import json token = "" url = f"https://api.scrape.do/plugin/google/play-store?token={token}&q=weather" response = requests.request("GET", url) print(json.dumps(response.json(), indent=2)) ``` **Node.js (API mode)** ```javascript const axios = require('axios'); const token = ""; const url = `https://api.scrape.do/plugin/google/play-store?token=${token}&q=weather`; axios.get(url) .then(response => { console.log(JSON.stringify(response.data, null, 2)); }) .catch(error => { console.error(error); }); ``` *(Go, Ruby, Java, C#, PHP examples are also available on the HTML version.)* **Example response** ```json { "search_parameters": { "q": "coffee", "hl": "en", "gl": "us", "store": "apps" }, "organic_results": [ { "items": [ { "title": "Good Coffee, Great Coffee", "link": "https://play.google.com/store/apps/details?id=com.tapblaze.coffeebusiness", "product_id": "com.tapblaze.coffeebusiness", "rating": 4.4, "author": "TapBlaze", "video": "https://www.youtube.com/embed/RFUNyVrGCzE", "thumbnail": "https://play-lh.googleusercontent.com/..." }, { "title": "Coffee Roaster", "link": "https://play.google.com/store/apps/details?id=de.brettspielwelt.coffee_roaster", "product_id": "de.brettspielwelt.coffee_roaster", "rating": 3.8, "author": "Brettspielwelt GmbH", "price": "$3.99", "extracted_price": 3.99, "thumbnail": "https://play-lh.googleusercontent.com/..." } ] } ], "pagination": { "next_page_token": "eyJvIjoyMH0" } } ``` ### App Details Pass any package id (e.g., com.discord) to fetch the full product page. Returns long description, category, content rating, download bucket, version, min Android, release notes, screenshots, header image, and developer info (name, URL, email, optional address). ![App Details](/uploads/google-play-store-product.png) **cURL (API mode)** ```bash curl --location --request GET 'https://api.scrape.do/plugin/google/play-store/product?token=&product_id=com.discord' ``` **Python (API mode)** ```python import requests import json token = "" url = f"https://api.scrape.do/plugin/google/play-store/product?token={token}&product_id=com.discord" response = requests.request("GET", url) print(json.dumps(response.json(), indent=2)) ``` **Node.js (API mode)** ```javascript const axios = require('axios'); const token = ""; const url = `https://api.scrape.do/plugin/google/play-store/product?token=${token}&product_id=com.discord`; axios.get(url) .then(response => { console.log(JSON.stringify(response.data, null, 2)); }) .catch(error => { console.error(error); }); ``` *(Go, Ruby, Java, C#, PHP examples are also available on the HTML version.)* **Example response** ```json { "title": "Discord - Talk, Play, Hang Out", "product_id": "com.discord", "description": "Discord is designed for gaming and great for just chilling with friends...", "category": "Communication", "category_id": "COMMUNICATION", "content_rating": "Teen", "rating": 4.28, "rating_count": 6769967, "free": true, "downloads": "500,000,000+", "in_app_purchases": "$1.99 - $274.94 per item", "version": "327.12 - Stable", "min_android": "7.0", "updated": "May 8, 2026", "release_notes": "We've been hard at work making Discord better for you...", "icon": "https://play-lh.googleusercontent.com/...", "header_image": "https://play-lh.googleusercontent.com/...", "screenshots": [ "https://play-lh.googleusercontent.com/...", "https://play-lh.googleusercontent.com/..." ], "developer": { "name": "Discord Inc.", "url": "https://discord.com/", "email": "support@discord.com" } } ``` ### User Reviews Paginated user reviews for any app. 20 reviews per page, unlimited depth via next_page_token. Each review carries star rating, review text, helpful count, app version installed, ISO date, and the developer's reply when present. ![User Reviews](/uploads/google-play-store-reviews.png) **cURL (API mode)** ```bash curl --location --request GET 'https://api.scrape.do/plugin/google/play-store/reviews?token=&product_id=com.tapblaze.coffeebusiness' ``` **Python (API mode)** ```python import requests import json token = "" url = f"https://api.scrape.do/plugin/google/play-store/reviews?token={token}&product_id=com.tapblaze.coffeebusiness" response = requests.request("GET", url) print(json.dumps(response.json(), indent=2)) ``` **Node.js (API mode)** ```javascript const axios = require('axios'); const token = ""; const url = `https://api.scrape.do/plugin/google/play-store/reviews?token=${token}&product_id=com.tapblaze.coffeebusiness`; axios.get(url) .then(response => { console.log(JSON.stringify(response.data, null, 2)); }) .catch(error => { console.error(error); }); ``` *(Go, Ruby, Java, C#, PHP examples are also available on the HTML version.)* **Example response** ```json { "search_parameters": { "product_id": "com.tapblaze.coffeebusiness", "hl": "en", "gl": "us", "store": "apps", "sort_by": 1, "num": 20 }, "reviews": [ { "id": "707d91c4-0510-455d-9288-71eddf9784be", "title": "Rebecca Saurer", "avatar": "https://play-lh.googleusercontent.com/...", "rating": 4, "snippet": "generally speaking, this games great!...", "likes": 52, "date": "February 16, 2026", "iso_date": "2026-02-16T02:26:14Z", "app_version": "1.18.0", "response": { "title": "TapBlaze", "snippet": "Hello! Thank you so much for your feedback...", "date": "February 16, 2026", "iso_date": "2026-02-16T23:30:38Z" } } ], "pagination": { "next_page_token": "CrkBIrABAYw1..." } } ``` ## FAQ ### How does this compare to scraping play.google.com myself? The Play Store ships its data as deeply nested protobuf-style JavaScript blobs that change shape constantly. Direct scraping means tracking selector drift across dozens of fields and rebuilding parsers every time the Play Store team ships a layout change. This plugin handles the parsing server-side and returns a stable, documented JSON schema that doesn't change when the Play Store UI does. ### Can I search by category or top chart? Yes. Pass `apps_category=GAME_PUZZLE` (or any category id) to browse a category. Pass `chart=topselling_free` (or `topselling_paid`, `topgrossing`) to fetch the top chart. Both work with localization, so `chart=topselling_free&gl=de&hl=de` returns the top free apps for the German Play Store. ### What identifier do I use for the product and reviews endpoints? The `product_id` field returned on search results. It's the Android package name (e.g., `com.discord`, `com.tapblaze.coffeebusiness`, `com.whatsapp`). Pass it as `product_id` to either `/product` or `/reviews`. The same id works across all three endpoints. ### How many reviews can I pull per app? 20 per page, unlimited pagination depth. Each response includes `pagination.next_page_token` until you hit the end. Sort order is fixed to "most relevant" today, which mirrors the default Play Store experience. ### Do reviews include developer replies? Yes. When the developer has replied, `reviews[].response` contains the reply text, the developer name, and both human-readable and ISO 8601 dates. The field is absent when the developer hasn't replied. ### Can I localize the results? Yes. `hl` controls the language and `gl` controls the country. Prices come back in the local currency, ratings reflect the local user base, screenshots may differ by region, and the developer description is localized when the developer has shipped translations. ### What filters does search support? `store_device` (`phone`, `tablet`, `tv`, `chromebook`, `watch`, `car`) to restrict results to one device type. `age` (`AGE_RANGE1` up to 5, `AGE_RANGE2` 6–8, `AGE_RANGE3` 9–12) when browsing the `FAMILY` category. `num` (1–50) to control page size. ### Are there any known limitations? One: `apps_category=MEDICAL` currently returns a parser error. Other categories (`GAME_PUZZLE`, `FAMILY`, `COMMUNICATION`, etc.) work normally, and `q=medical` returns medical apps via keyword search. We're tracking it. ### Where can I find the full API reference? The [Google Play Store API documentation](/documentation/google-scraper-api/play-store/) covers all three endpoints (search, product, reviews), every supported parameter, the full response schema for each, and pagination patterns.