Google Play Scraper: Apps, Reviews & Charts
Pricing
from $0.15 / 1,000 search app results
Google Play Scraper: Apps, Reviews & Charts
Scrape Google Play apps, 63-field details, reviews, top charts, developer portfolios, similar apps, Data Safety, permissions, and search suggestions. Export clean JSON for any country or language—no login, API key, browser, or proxy setup.
Pricing
from $0.15 / 1,000 search app results
Rating
0.0
(0)
Developer
ScrapingMonkey
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
Google Play Data Scraper - Search, App Details, Reviews, Charts and ASO API
Extract Google Play search results, complete 63-field app profiles, reviews, top charts, developer portfolios, similar apps, and autocomplete keywords. This all-in-one Apify Actor requires no Google account, API key, browser, or proxy configuration.
- Seven modes in one Actor:
search,details,reviews,charts,developer,similar, andsuggest - Full app profiles with Data Safety declarations, permissions, developer contacts, ratings, installs, pricing, media, and technical metadata
- Review pagination with newest, rating, and relevance sorting
- Optional review filtering by a single star rating from 1 to 5
- Top free, top paid, and top-grossing charts by Google Play category
- Developer portfolio and related-app pagination
- Search autocomplete for ASO keyword research
- Country and language localization
- Automatic managed request routing
- Batch input for multiple keywords or application IDs
- Automatic retries, result deduplication, and partial-failure handling
- Export results to JSON, CSV, Excel, XML, or access them through the Apify API
What can you do with this Actor?
| Mode | Input | Output | Best for |
|---|---|---|---|
search | One or more keywords | Ranked lightweight app records | ASO research, keyword tracking, competitor discovery |
details | One or more package IDs | One complete app profile per ID | Market research, app monitoring, developer research |
reviews | One or more package IDs | One dataset row per review | Sentiment analysis, issue discovery, customer feedback monitoring |
charts | Chart type and category | Ranked chart app records | Market rankings, category monitoring, app discovery |
developer | One or more developer IDs or names | Apps published by each developer | Portfolio mapping, publisher research |
similar | One or more package IDs | Apps related by Google Play | Competitor discovery, recommendation research |
suggest | One or more keyword prefixes | Google Play autocomplete phrases | ASO ideation, keyword expansion |
Each run uses one mode. Search results contain package IDs that can be passed directly to a later details or reviews run.
Quick start
- Open the Actor and click Try for free.
- Select one of the seven modes under Mode.
- Enter the relevant search terms, package IDs, developer IDs, or chart settings.
- Choose the country, language, and result limit.
- Click Start.
- Preview the dataset or download it in your preferred format.
The default input is a working search for fitness tracker, so a first test run requires no configuration.
Input examples
Search Google Play by keyword
{"mode": "search","searchTerms": ["fitness tracker", "workout app"],"maxResults": 20,"country": "us","language": "en"}
maxResults applies independently to every search term. Each result also contains the originating searchTerm.
Get complete app details
{"mode": "details","appIds": ["com.whatsapp","org.telegram.messenger","org.thoughtcrime.securesms"],"country": "us","language": "en"}
The Actor saves one full metadata record for every available app.
Collect only one-star Spotify reviews
{"mode": "reviews","appIds": ["com.spotify.music"],"maxResults": 100,"reviewSort": "newest","reviewScore": 1,"country": "us","language": "en"}
Omit reviewScore to collect reviews with all star ratings. When a score filter is selected, the Actor continues through Google Play pagination until it collects the requested number of matching reviews or no more reviews are available.
Get a top chart
{"mode": "charts","chartCollection": "topFree","category": "APPLICATION","maxResults": 100,"country": "us","language": "en"}
Use topFree, topPaid, or topGrossing. Category IDs include APPLICATION, GAME, BUSINESS, EDUCATION, FINANCE, HEALTH_AND_FITNESS, MUSIC_AND_AUDIO, PHOTOGRAPHY, PRODUCTIVITY, SOCIAL, and other Google Play category IDs.
Get every app by a developer
{"mode": "developer","developerIds": ["5700313618786177705", "Google LLC"],"maxResults": 100,"country": "us","language": "en"}
Numeric IDs use Google Play /dev pages; text publisher names use /developer pages. Pagination is handled automatically.
Find similar apps
{"mode": "similar","appIds": ["com.whatsapp", "com.spotify.music"],"maxResults": 50,"country": "us","language": "en"}
Collect Google Play search suggestions
{"mode": "suggest","searchTerms": ["fitness", "photo editor"],"maxResults": 10,"country": "us","language": "en"}
Output examples
Every top-level output field emitted by each mode is shown below. Long text and array values use compact representative content, but no fields are omitted. Live ratings, counts, text, media URLs, and review content change over time.
Search result from the initial Google Play page - 14 top-level fields
{"title": "Google Fit: Activity Tracking","appId": "com.google.android.apps.fitness","url": "https://play.google.com/store/apps/details?id=com.google.android.apps.fitness","icon": "https://play-lh.googleusercontent.com/example-icon","developer": "Google LLC","developerId": "Google LLC","currency": "USD","price": 0,"free": true,"summary": "Localized application summary returned by Google Play","scoreText": "3.4","score": 3.4386387,"recordType": "search","searchTerm": "fitness tracker"}
Search result from a continuation page - 15 top-level fields
Google Play uses a slightly different internal structure for continuation pages. Those rows contain the complete field set below, including priceText.
{"title": "Example Fitness App","appId": "com.example.fitness","url": "https://play.google.com/store/apps/details?id=com.example.fitness","icon": "https://play-lh.googleusercontent.com/example-icon","developer": "Example Developer","developerId": "Example Developer","priceText": "FREE","currency": "USD","price": 0,"free": true,"summary": "Localized application summary returned by Google Play","scoreText": "3.4","score": 3.4,"recordType": "search","searchTerm": "fitness tracker"}
Top-chart result - 20 top-level fields
{"recordType": "chart","chartCollection": "topFree","category": "APPLICATION","rank": 1,"title": "Example App","appId": "com.example.app","url": "https://play.google.com/store/apps/details?id=com.example.app","icon": "https://play-lh.googleusercontent.com/example-icon","screenshots": ["https://play-lh.googleusercontent.com/example-screenshot"],"developer": "Example Developer","developerId": "Example Developer","genre": "Productivity","installs": "10,000,000+","currency": "USD","price": 0,"priceText": "Free","free": true,"summary": "Localized application summary returned by Google Play","scoreText": "4.6","score": 4.6}
Developer app - 16 top-level fields
{"recordType": "developer","sourceDeveloperId": "5700313618786177705","rank": 1,"title": "Example App","appId": "com.example.app","url": "https://play.google.com/store/apps/details?id=com.example.app","icon": "https://play-lh.googleusercontent.com/example-icon","developer": "Example Developer","developerId": "Example Developer","currency": "USD","price": 0,"priceText": "Free","free": true,"summary": "Localized application summary returned by Google Play","scoreText": "4.6","score": 4.6}
Similar app - 16 top-level fields
{"recordType": "similar","sourceAppId": "com.whatsapp","rank": 1,"title": "Example Messenger","appId": "com.example.messenger","url": "https://play.google.com/store/apps/details?id=com.example.messenger","icon": "https://play-lh.googleusercontent.com/example-icon","developer": "Example Developer","developerId": "Example Developer","currency": "USD","price": 0,"priceText": "Free","free": true,"summary": "Localized application summary returned by Google Play","scoreText": "4.4","score": 4.4}
Search suggestion - 4 top-level fields
{"recordType": "suggestion","searchTerm": "fitness","suggestion": "fitness tracker","rank": 1}
App details - 63 top-level fields
Details mode returns the following complete field set, including recordType. Optional fields remain present with null, false, or an empty array when Google Play does not publish a value.
{"title": "WhatsApp Messenger","description": "Full localized app description returned by Google Play","descriptionHTML": "<p>Full localized app description returned by Google Play</p>","summary": "Simple. Reliable. Private.","installs": "10,000,000,000+","minInstalls": 10000000000,"maxInstalls": 12181635330,"score": 4.6330023,"scoreText": "4.6","ratings": 240541353,"reviews": 1955490,"histogram": {"1": 10130214,"2": 3136737,"3": 8388241,"4": 21570400,"5": 197315683},"price": 0,"originalPrice": null,"discountEndDate": null,"free": true,"currency": "USD","priceText": "Free","available": true,"offersIAP": true,"IAPRange": "$0.40 - $199.99 per item","androidVersion": "VARY","androidVersionText": "Varies with device","androidMaxVersion": "VARY","minAndroidApi": null,"maxAndroidApi": 34,"appBundle": "com.whatsapp","permissions": [{"permission": "take pictures and videos","type": "Camera"}],"dataSafety": {"sharedData": [{"data": "App interactions","optional": false,"purpose": ["Analytics"],"type": "App activity"}],"collectedData": [{"data": "Phone number","optional": false,"purpose": ["App functionality"],"type": "Personal info"}],"securityPractices": [{"practice": "Data is encrypted in transit","description": "Your data is transferred over a secure connection"}],"privacyPolicyUrl": "https://www.whatsapp.com/legal/privacy-policy"},"developer": "WhatsApp LLC","developerId": "WhatsApp LLC","developerEmail": "android@support.whatsapp.com","developerWebsite": "http://www.whatsapp.com/","developerAddress": null,"developerLegalName": "Meta Platforms, Inc.","developerLegalEmail": "android@support.whatsapp.com","developerLegalAddress": "1 Meta Way, Menlo Park, CA 94025-1444, United States","developerLegalPhoneNumber": "+1 650-853-1300","privacyPolicy": "https://www.whatsapp.com/legal/privacy-policy","developerInternalID": "WhatsApp LLC","genre": "Communication","genreId": "COMMUNICATION","categories": [{"name": "Communication","id": "COMMUNICATION"}],"icon": "https://play-lh.googleusercontent.com/example-icon","headerImage": "https://play-lh.googleusercontent.com/example-header","screenshots": ["https://play-lh.googleusercontent.com/example-screenshot"],"video": null,"videoImage": null,"previewVideo": null,"contentRating": "Everyone","contentRatingDescription": null,"adSupported": false,"released": "Oct 18, 2010","updated": 1785885538000,"version": "VARY","recentChanges": "Localized release notes returned by Google Play","comments": ["Public review excerpt included on the app page"],"preregister": false,"earlyAccessEnabled": false,"isAvailableInPlayPass": false,"appId": "com.whatsapp","url": "https://play.google.com/store/apps/details?id=com.whatsapp&hl=en&gl=us","recordType": "details"}
The sample uses one representative entry inside list fields such as categories, screenshots, and comments. The Actor returns every available list entry; only the list length is compacted in the documentation, not the output schema or field list.
Review - 16 top-level fields
{"recordType": "review","id": "review-identifier","appId": "com.spotify.music","userName": "Google Play user","userImage": "https://play-lh.googleusercontent.com/example","score": 1,"scoreText": "1","title": null,"text": "The latest update causes playback problems.","date": "2026-08-01T10:30:00.000Z","replyText": null,"replyDate": null,"thumbsUp": 3,"version": "9.0.0","criterias": [{"criteria": "stability","rating": 4}],"url": "https://play.google.com/store/apps/details?id=com.spotify.music&reviewId=review-identifier"}
Google Play does not provide a separate headline for most reviews, so title is normally null.
What app data can you extract?
Not every app publishes every optional field. Detail records can include:
| Category | Fields |
|---|---|
| Identity | appId, url, title, summary, genre, genreId, categories, contentRating, contentRatingDescription |
| Developer | developer, developerId, developerInternalID, developerEmail, developerWebsite, developerAddress, developerLegalName, developerLegalEmail, developerLegalAddress, developerLegalPhoneNumber |
| Ratings | score, scoreText, ratings, reviews, histogram, comments |
| Popularity | installs, minInstalls, maxInstalls |
| Pricing | price, priceText, originalPrice, discountEndDate, currency, free, offersIAP, IAPRange |
| Technical | androidVersion, androidVersionText, androidMaxVersion, minAndroidApi, maxAndroidApi, appBundle, version, updated, released |
| Media | icon, headerImage, screenshots, video, videoImage, previewVideo |
| Content | description, descriptionHTML, recentChanges, privacyPolicy |
| Privacy and access | permissions, dataSafety.sharedData, dataSafety.collectedData, dataSafety.securityPractices, dataSafety.privacyPolicyUrl |
| Availability and flags | available, adSupported, preregister, earlyAccessEnabled, isAvailableInPlayPass |
What review data can you extract?
Each review is stored as a separate dataset row and can include:
| Field | Description |
|---|---|
id | Unique Google Play review identifier |
appId | Package ID of the reviewed app |
userName | Reviewer's public display name |
userImage | Reviewer profile image URL |
score, scoreText | Star rating from 1 to 5 |
title, text | Optional headline and full review body |
date | Review time in ISO 8601 format |
replyText, replyDate | Developer reply and reply time, when available |
thumbsUp | Helpful-vote count |
version | App version installed by the reviewer |
criterias | Structured subcriteria ratings |
url | Direct Google Play URL containing the review ID |
Input parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
mode | string | Yes | search | search, details, reviews, charts, developer, similar, or suggest |
searchTerms | string[] | Search/suggest | - | Search keywords or autocomplete prefixes |
appIds | string[] | Details/reviews/similar | - | Google Play package IDs |
developerIds | string[] | Developer | - | Numeric developer IDs or exact developer names |
maxResults | integer | No | 50 | Maximum per term, app, developer, or chart, from 1 to 500; ignored by details mode |
maxConcurrency | integer | No | 5 | Independent terms, app IDs, or developer IDs processed concurrently, from 1 to 20 |
country | string | No | us | ISO 3166-1 alpha-2 storefront country code |
language | string | No | en | ISO 639-1 interface and content language code |
reviewSort | string | No | newest | Review order: newest, rating, or relevant |
reviewScore | integer | No | All ratings | Optional review filter from 1 to 5 |
chartCollection | string | No | topFree | topFree, topPaid, or topGrossing in charts mode |
category | string | No | APPLICATION | Google Play category ID in charts mode |
includeDataSafety | boolean | No | true | Include the complete Data Safety object in details mode |
includePermissions | boolean | No | true | Include the complete public permissions list in details mode |
Country and language values are case-insensitive and normalized to lowercase.
Use cases
App Store Optimization and keyword research
- Discover apps ranking for target Google Play keywords
- Compare titles, summaries, ratings, categories, and screenshots
- Schedule repeated searches to monitor ranking changes
Competitor and market intelligence
- Compare install ranges, pricing, ratings, and release activity
- Monitor competitors across different country storefronts
- Build structured app catalogs for dashboards and spreadsheets
Review and sentiment analysis
- Collect recent negative reviews for issue discovery
- Separate one-star and five-star feedback
- Analyze review text, helpful votes, versions, and developer replies
Developer research
- Collect public developer emails, websites, addresses, and legal information
- Map applications to publishers using package and developer identifiers
Automated monitoring
- Run the Actor on an Apify schedule
- Trigger workflows through webhooks
- Export recurring results to Google Sheets, data warehouses, or analytics tools
Performance and cost
The Actor uses lightweight HTTP requests instead of launching a browser. Request routing is managed automatically, keeping browser-related startup time and memory use low without requiring additional user configuration. Independent terms, app IDs, and developer IDs run concurrently up to maxConcurrency; pagination for one target remains sequential because each page depends on the previous continuation token.
The Actor uses pay-per-event billing. Each successfully stored dataset row is charged using the event associated with its mode:
| Mode | Billing event | Charge unit |
|---|---|---|
| Search | search-result | One returned search result |
| Details | app-detail | One returned app-detail record |
| Reviews | review | One returned review |
| Charts | chart-result | One returned ranked chart app |
| Developer | developer-app | One returned developer app |
| Similar | similar-app | One returned related app |
| Suggest | suggestion | One returned autocomplete phrase |
The exact event prices and plan discounts are shown in the Actor's Pricing tab. Failed requests that do not produce a dataset row do not trigger a result event. The Actor also respects the run's maximum charge limit and stops saving additional results when the limit is reached.
For a first run, start with 5 to 10 results, verify the dataset shape and price estimate, and then increase the limit.
Reviews may require multiple Google Play requests when a star filter is active because non-matching reviews are inspected but not saved.
API usage
Every Actor can be started through the Apify API. Replace YOUR_USERNAME and APIFY_TOKEN in this example:
curl -X POST \"https://api.apify.com/v2/acts/YOUR_USERNAME~google-play-scraper-python/runs?token=APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"mode": "details","appIds": ["com.whatsapp", "com.spotify.music"],"country": "us","language": "en"}'
After the run finishes, results are available in its default dataset. You can also connect the Actor to Make, Zapier, n8n, Google Sheets, webhooks, or any application that can call a REST API.
The Output tab uses one unified Results view with all 79 top-level fields across Search, Details, Reviews, Charts, Developer, Similar, and Suggest records. Fields that do not apply to a row's recordType remain empty, so users never need to switch mode-specific tabs or open the automatic All fields view.
Limits and good to know
- One mode is executed per run.
- Search, reviews, charts, developer, and similar modes return up to 500 applicable records per input item.
- Google Play may expose fewer search results than requested.
detailsandreviewscurrently accept package IDs such ascom.spotify.music, not full Play Store URLs.- Search, chart, developer, and similar output is intentionally lighter than details output. Use the returned
appIdin details mode for the complete 63-field profile. - Details fetches Data Safety and permissions by default. Disable either enrichment only when you explicitly need fewer requests.
- Review score filtering is performed during pagination and can make filtered runs take longer.
- Region-restricted apps may be unavailable for the selected country.
- Some optional fields are absent for particular apps or reviews.
- The Actor accesses public Google Play data only. It does not download APK files or access account-protected information.
- If one package ID fails in a batch, the Actor logs the failure and continues with the remaining IDs.
Frequently asked questions
Do I need a Google Play account or API key?
No. The Actor handles its network configuration automatically.
Can I scrape several apps or search terms in one run?
Yes. Pass multiple values in appIds or searchTerms. The result limit applies independently to each applicable input.
Can I filter reviews by star rating?
Yes. Set reviewScore to an integer from 1 to 5. Leave it empty to collect every rating.
What is the difference between newest, rating, and relevant?
newestprioritizes recent reviews.ratinguses Google Play's rating ordering.relevantuses Google Play's relevance or helpfulness ordering.
Why did search return fewer results than requested?
maxResults is an upper limit. Google Play controls how many results and continuation pages are available for a particular query, country, and language.
Why are some output values empty?
Google Play does not publish every field for every app. For example, an app may not have a promo video, developer reply, legal address, discount, or fixed Android version.
Can I schedule recurring runs?
Yes. Use Apify schedules for recurring searches, app snapshots, or review monitoring, and webhooks to notify another system when a run completes.
Responsible use
This Actor extracts publicly available Google Play information. Users are responsible for complying with applicable laws, privacy regulations, and Google Play's terms. Public developer contact information and reviewer profile data should be processed responsibly and only for legitimate purposes.
This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Google LLC.
Support
If you find a missing field, parsing problem, or unexpected empty result, create an issue in the Actor's Issues tab. Include the run ID, mode, country, and a non-sensitive example input so the problem can be reproduced.
Local development
pip install -r requirements.txt$env:APIFY_INPUT_PATH = "storage/key_value_stores/default/INPUT.json"python -m my_actor