Google Play
Google Play Reviews API
A page of one app's Google Play reviews as JSON: star score, the full review text, author and avatar, thumbs-up count, the developer's reply — and the field that makes a review actionable, the APP VERSION the reviewer was running. Sort by relevance, date or rating, take up to 200 per call, and page through the corpus with next_cursor. Costs 2 credits per page. The app endpoint already returns the first 20 reviews, so use this to page past them or to sort differently.
Authorizations
AuthorizationstringheaderrequiredBearer authentication header of the form Bearer <token>, where <token> is your Scavio API key (e.g. Bearer sk_live_your_key).
Body
application/jsonapp_idstringrequiredAndroid package name (com.spotify.music) or any play.google.com URL carrying one in its id param, 1-500 characters.
Example: com.spotify.tv.android
sortenum<string>default:newestReview ordering. The cursor ENCODES this value, so it must stay identical for the whole walk — changing sort mid-pagination invalidates the cursor you are holding.
relevance— Play's own "Most relevant" order — what the store page shows by default.newest— Most recently published first (the default here).rating— Ordered by star score.
countintegerdefault:50Reviews to return, 1-200. The 200 ceiling is OURS, not Play's: Play honours far more in one request, but a single page that large is megabytes for one call. Page with cursor instead of maximising this.
Example: 200
cursorstringContinuation token from a previous response's next_cursor, 1-4000 characters. OPAQUE and SINGLE-USE, and it encodes the sort as well as the position — send it back with the SAME sort it came from. A cursor past the last review is a 404, not an empty page, so stop when next_cursor comes back null.
hlstringdefault:enInterface language, 2-20 characters. Changes the STOREFRONT, not only the strings. Play silently falls back to English on a value it does not serve.
Example: pt-BR
glstringdefault:usCountry code, 2-10 characters, deciding which storefront is read. Play silently falls back to the US storefront on a country it does not serve.
Example: de
Request
from scavio import ScavioClient
client = ScavioClient(api_key="sk_live_your_key")
# Walk the review corpus. The cursor encodes the sort, so sort must not change.
cursor = None
while True:
page = client.google_play.reviews(
"com.spotify.tv.android",
sort="newest",
count=200,
cursor=cursor,
)
for review in page["data"]["reviews"]:
# app_version is what turns a complaint into a regression report
print(review["score"], review["app_version"], review["text"])
cursor = page["data"]["next_cursor"]
if not cursor:
breakResponse