{"id":5771,"library":"google-play-scraper","title":"Google Play Scraper","description":"Google-Play-Scraper is a Python library that provides APIs to easily crawl the Google Play Store for app details, reviews, search results, and more, without external dependencies. It is actively maintained with frequent updates to adapt to changes in the Play Store's structure. The current version is 1.2.7.","status":"active","version":"1.2.7","language":"en","source_language":"en","source_url":"https://github.com/JoMingyu/google-play-scraper","tags":["web scraping","google play","android","app store"],"install":[{"cmd":"pip install google-play-scraper","lang":"bash","label":"Install latest version"}],"dependencies":[{"reason":"Requires Python 3.7 or higher, but less than 4.0. The library itself claims to have no external dependencies, relying on standard Python features.","package":"python","optional":false}],"imports":[{"symbol":"app","correct":"from google_play_scraper import app"},{"symbol":"search","correct":"from google_play_scraper import search"},{"symbol":"reviews","correct":"from google_play_scraper import reviews"},{"symbol":"reviews_all","correct":"from google_play_scraper import reviews_all"},{"note":"Sort is an enum class and should be imported directly, not as a lowercase function/variable.","wrong":"from google_play_scraper import sort","symbol":"Sort","correct":"from google_play_scraper import Sort"},{"symbol":"collection","correct":"from google_play_scraper import collection"},{"symbol":"developer","correct":"from google_play_scraper import developer"}],"quickstart":{"code":"from google_play_scraper import app, reviews, Sort\n\n# Fetch details for a specific app (e.g., WhatsApp)\nresult = app(\n    'com.whatsapp',\n    lang='en', # defaults to 'en'\n    country='us' # defaults to 'us'\n)\nprint(\"App Details:\")\nprint(f\"  Title: {result.get('title')}\")\nprint(f\"  Developer: {result.get('developer')}\")\nprint(f\"  Score: {result.get('scoreText')}\")\nprint(f\"  Installs: {result.get('installs')}\")\n\n# Fetch latest reviews for the app\nresult_reviews, continuation_token = reviews(\n    'com.whatsapp',\n    lang='en',\n    country='us',\n    sort=Sort.NEWEST,\n    count=10 # Number of reviews to fetch per call\n)\n\nprint(\"\\nLatest 10 Reviews:\")\nfor i, review in enumerate(result_reviews):\n    print(f\"  {i+1}. User: {review.get('userName')}, Score: {review.get('score')}, Text: {review.get('content')[:70]}...\")\n\n# To get all reviews (be cautious with large apps, see warnings)\n# all_reviews = []\n# for _ in range(5): # Example: fetch 5 batches\n#     result_reviews, continuation_token = reviews(\n#         'com.whatsapp',\n#         lang='en',\n#         country='us',\n#         sort=Sort.NEWEST,\n#         count=200, # Max reviews per page\n#         continuation_token=continuation_token\n#     )\n#     all_reviews.extend(result_reviews)\n#     if not continuation_token: break\n# print(f\"\\nFetched total {len(all_reviews)} reviews.\")","lang":"python","description":"This quickstart demonstrates how to fetch an application's details and its latest user reviews using the `app` and `reviews` functions. It includes parameters for language and country, and shows how to paginate through reviews using `continuation_token` for larger datasets. Remember to replace 'com.whatsapp' with the actual package ID of the app you wish to scrape."},"warnings":[{"fix":"Implement `time.sleep()` between requests or use a rotating proxy service if allowed by Google Play's terms of service. The Node.js version of the scraper has a `throttle` property, which might inspire a similar approach if needed in Python.","message":"Aggressive scraping (too many requests in a short period) can lead to Google Play throttling your requests, returning 503 errors, captchas, or even temporary IP bans. Consider implementing delays or using proxies for large-scale operations.","severity":"gotcha","affected_versions":"All versions"},{"fix":"Regularly update the library to the latest version. Monitor the official GitHub repository for bug reports and patches related to parsing issues.","message":"Google Play's website structure can change periodically. Since this library directly scrapes HTML, such changes can break parsing logic, causing functions to return incomplete data or fail entirely.","severity":"breaking","affected_versions":"All versions are susceptible to future UI/backend changes."},{"fix":"Be aware of this limitation. For comprehensive review analysis beyond what the scraper can provide, consider official developer APIs (if applicable and sufficient) or specialized paid scraping services.","message":"The `reviews_all` function (and `reviews` with pagination) may not fetch *all* reviews for apps with extremely high review counts (e.g., millions). Google Play often limits the number of accessible reviews via its endpoints, and the scraper might hit a cap, commonly returning a multiple of 199 or 200 reviews per batch. The total number of written reviews is typically much lower than the total star ratings shown.","severity":"gotcha","affected_versions":"All versions"},{"fix":"Always verify the PyPI package name and the GitHub repository (`JoMingyu/google-play-scraper`) to ensure you're using the correct library.","message":"There are several similarly named Python and Node.js libraries (e.g., `play-scraper`, `google-play-scraper-dmi`, `facundoolano/google-play-scraper` which is Node.js). Ensure you are installing and importing from `google-play-scraper` by JoMingyu for the intended Python library.","severity":"gotcha","affected_versions":"All versions"}],"env_vars":null,"last_verified":"2026-04-14T00:00:00.000Z","next_check":"2026-07-13T00:00:00.000Z"}