For Google Play app reviews, start with Google’s documented reviews.list method in the Google Play Developer API if you have the required authorized context. It returns reviews for a specified app and supports pagination; it is not documented as an unrestricted export of every review. Collecting information from public Play Store pages is a separate method, and whether a particular automated collection is allowed depends on applicable instructions and terms.
Choose the collection method that fits your access
There are two distinct approaches, and they should not be treated as interchangeable:
- Google Play Developer API: Google documents
reviews.listfor listing reviews of a specified app. Its reference requires an OAuth scope, so this is the documented route when you have an authorized context for the API. - Public-page collection: This means collecting information rendered on public Google Play pages rather than calling the review API. It has different technical and policy considerations; the existence of a public page does not itself establish permission to automate collection from it.
If your goal is repeatable review analysis and you have the relevant API authorization, use the API first. If you are considering public-page collection, assess the applicable machine-readable instructions and terms for your exact method and use before building a crawler. The cited sources do not settle every possible collection scenario.
Use the documented Google Play reviews endpoint
The API reference documents the method as reviews.list and gives this GET endpoint:
Do these 3 things before closing this tab:
1Fix the driver behind crashes, sound loss and screen glitches2Clear out junk files and repair common Windows errors3Scan for outdated or missing drivers - takes under a minute#1 Best Overall
https://androidpublisher.googleapis.com/androidpublisher/v3/applications/{packageName}/reviews
Replace {packageName} with the app’s package name. For example, a package name commonly appears in a Play Store listing URL after id=; use the actual package name for the app you intend to query. The reference documents the OAuth scope https://www.googleapis.com/auth/androidpublisher. You need an OAuth access token with the appropriate authorization context; a package name alone is not authentication.
Google’s method reference, last updated 2025-05-21 UTC, is the source for the endpoint, scope, parameters, and response described here: Google Play Developer API: reviews.list.
Make a request with cURL
After obtaining a valid OAuth access token through your authorized Google API setup, pass it as a bearer token. This example requests a page for the package named in PACKAGE_NAME:
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
curl -G "https://androidpublisher.googleapis.com/androidpublisher/v3/applications/${PACKAGE_NAME}/reviews"
-H "Authorization: Bearer ${ACCESS_TOKEN}"
-H "Accept: application/json"
--data-urlencode "maxResults=100"
maxResults is a documented query parameter. The example value is a request parameter, not a claim about the maximum supported page size. Consult the current API reference for supported values and behavior rather than assuming a quota, limit, or coverage level.
Make a request with Python
This Python example uses the same endpoint and an access token supplied by your authenticated setup. It prints the JSON response so you can inspect its structure before writing an importer:
import os
import requests
package_name = "com.example.app"
access_token = os.environ["GOOGLE_ACCESS_TOKEN"]
url = (
"https://androidpublisher.googleapis.com/androidpublisher/v3/"
f"applications/{package_name}/reviews"
)
response = requests.get(
url,
headers={
"Authorization": f"Bearer {access_token}",
"Accept": "application/json",
},
params={"maxResults": 100},
timeout=30,
)
response.raise_for_status()
data = response.json()
print(data)
Install the dependency with python -m pip install requests. Set GOOGLE_ACCESS_TOKEN in the environment from your OAuth flow; do not hard-code or publish a credential in a script or repository. The sample assumes authorization has already been obtained and does not replace Google’s OAuth setup.
Make a request with Node.js
With a current Node.js runtime that provides fetch, supply an access token and encode query parameters with URLSearchParams:
The Tool Desk
Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →const packageName = 'com.example.app';
const accessToken = process.env.GOOGLE_ACCESS_TOKEN;
if (!accessToken) throw new Error('Set GOOGLE_ACCESS_TOKEN first');
const url = new URL(
`https://androidpublisher.googleapis.com/androidpublisher/v3/applications/${packageName}/reviews`
);
url.searchParams.set('maxResults', '100');
const response = await fetch(url, {
headers: {
Authorization: `Bearer ${accessToken}`,
Accept: 'application/json',
},
});
if (!response.ok) {
throw new Error(`Google API returned ${response.status}: ${await response.text()}`);
}
const data = await response.json();
console.log(data);
Read the response and paginate deliberately
The method reference documents a reviews[] collection in the response, along with tokenPagination and pageInfo. Treat a response as a page, not as proof that you have retrieved every review. Store the response and inspect its pagination fields; when the API provides a next-page token, use that token in a subsequent request.
The reference lists these optional query parameters:
tokenfor pagination.startIndexfor selecting a starting position.maxResultsfor the requested result count.translationLanguagefor the translation language.
Do not combine pagination parameters by guesswork. Follow the method reference for the exact field format and behavior, and use the returned pagination information to determine whether another page is available. Save the page token and the time of each successful retrieval alongside your stored results. That makes interrupted collection easier to resume and helps distinguish a newly fetched page from data already processed.
Build a resilient importer
- Identify the app. Record the exact package name and the query configuration, including any translation language requested.
- Authenticate before fetching. Obtain a valid OAuth access token for an account and API use that are authorized for your purpose.
- Fetch and validate a page. Check the HTTP result, parse JSON, and confirm that the response contains the fields your importer expects before persisting it.
- Persist before advancing. Save returned reviews and the page information together. This reduces the chance of losing your place if a later request fails.
- Continue only when pagination indicates another page. Supply the returned token according to the API reference, and stop when there is no next page indicated.
- Make repeated runs idempotent. Use review identifiers when present in the response to avoid treating a review returned again as a new record. The reference, not an assumed review count, should guide your retrieval logic.
The reviewed API documentation does not establish universal access to all reviews, historical coverage, a request quota, or a numeric page-size maximum. Do not design an analysis that depends on those assumptions without confirming them in current documentation and in the responses available to your authorized caller.
Free tools Windows power users keep installed
One-click scans. No signup required.
What changes if you collect from public Play Store pages?
A page scraper reads public-facing page content rather than calling reviews.list. It may seem attractive if you do not have the API context, but it is not a substitute with equivalent documented behavior: the cited sources establish no guaranteed coverage, stable page structure, or permission for a particular crawler. Page markup and the content visible to a browser are implementation details, so a script tied to selectors can break when the site changes.
Google’s general Terms of Service say automated access is prohibited when it violates machine-readable instructions on Google pages, with robots.txt given as an example. That is a general condition, not a definitive ruling for every Play Store collection method. Review the applicable instructions and the current terms for the exact pages, method, location, and intended reuse before automating. The terms are at Google Terms of Service.
Google Play’s ratings and reviews policy addresses authentic reviews and prohibits manipulation, including inflating ratings or reviews through fraudulent or incentivized activity. That is important if you are collecting reviews to monitor product quality, but it is not a complete technical scraping rule and should not be read as granting scraping permission. See User Ratings, Reviews, and Installs.
The Google Play Developer API also has its own terms. Google’s API terms include restrictions on uses of particular APIs, including limits involving third-party account use for certain developer operations. Check the current terms that apply to the precise API and data use rather than assuming API access makes downstream use unrestricted: Google Play Developer API Terms of Service.
Crashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minutePC Slower Than It Used to Be?
A free scan shows the junk files, broken settings and background clutter dragging Windows down - then fixes them in one click.Free scan · Windows 10 & 11Keep review analysis separate from screenshots
A screenshot records a visual page state; it does not return structured review records or replace the review API. If your project also needs evidence of how a listing or another page looked at capture time, a screenshot can complement a properly authorized review-data workflow. It should not be presented as a way to extract review text at scale.
Or skip the browser setup
ScreenshotNeo is a website screenshot API and MCP server. A single GET request can capture a page as PNG, JPEG, WebP, or PDF. For instance, this saves a screenshot of a Play Store listing page; it does not scrape its reviews into structured data. See the ScreenshotNeo API documentation for request options.
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://play.google.com/store/apps/details?id=com.example.app -o shot.webp
- It accepts cookie or consent banners as a visitor and removes more than 60 known consent platforms, newsletter popups, and chat widgets before capture; each step can be turned off.
- Bot checks or CAPTCHAs, blank pages, timeouts, failed loads, and cache hits are not billed; response headers identify the page verdict and billing status.
- Its MCP server gives AI agents tools named
take_screenshot,get_page_info, andcapture_pdf. - The Free plan includes 1,000 shots per month with no card. Paid plans start at $5 for 3,000 shots.
Sign up for ScreenshotNeo’s free plan to get 1,000 screenshots a month with no card.
Troubleshoot common collection failures
Unauthorized or forbidden API response
Check that the request includes a current bearer token, that the token was acquired for the documented androidpublisher scope, and that the account and API use have the required authorization. The method reference does not establish that every caller can access every app’s reviews, so do not assume a package name grants access.
Malformed request or unexpected parameter behavior
Confirm that the package name is in the path, query parameters are encoded, and pagination values follow the method reference. Remove optional parameters and retry a minimal request if needed, then add them back individually. Do not infer undocumented limits from a failed request.
Repeated pages or incomplete imports
Persist the returned pagination information with each page, and pass the next-page token exactly as documented. Avoid advancing local state before the page has been stored successfully. Use review identifiers to deduplicate records across reruns.
Public-page parser stops finding reviews
Do not assume an empty selector result means the app has no reviews. Page structure may have changed or the content may not have been rendered as expected. Recheck the current page and applicable instructions, and avoid escalating retries or evasion tactics as a workaround for access controls.
FAQ
Does the reviews API guarantee access to every review for an app?
No such guarantee is established by the method reference. It documents listing reviews and pagination for a specified app, with an OAuth scope requirement; availability depends on the authorized context and actual API response.
Does a policy against fake reviews decide whether scraping is allowed?
No. The ratings and reviews policy concerns authenticity and manipulation. Automated collection is a separate question governed by applicable instructions and terms.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




