TidyTools

Google Play reviews

POST https://tools.yukai.uk/api/v1/appstore/play/reviews

Get Google Play reviews of an app. Google Play reviews, newest first or most relevant first, in the requested language and country, optionally only one star rating. Up to 500 per call; when there are more, nextPageToken continues where the call stopped (send it back with the same app, sort and rating). Each review: id, reviewer display name, rating, text, date, thumbs-up count, app version, developer reply and its date.

Cost

Credits: 1 per review ($0.0001 per review). 50 credits are reserved before the call; the call is then settled on the real number of items returned. Failed calls are free. Source price: apple-app-store-reviews/review.

Input

Send a JSON body (POST) or the same fields as a query string (GET).

Required: app.

FieldTypeDefaultDescription
app requiredstringGoogle Play package name (com.spotify.music) or a Play Store app URL (https://play.google.com/store/apps/details?id=com.spotify.music&hl=en&gl=us; its hl / gl are used when lang / country are not given). Aliases: appId, id, url.
langstring"en"Language of the store text and of the reviews (en, ja, pt-BR, zh-TW...). Alias: hl.
countrystring"us"Two-letter Google Play country (prices, currency, availability). Alias: gl.
sortstring"newest"Order. mostRelevant is Google Play's default order on the app page.
ratingintegerOnly reviews with exactly this many stars.
limitinteger100Maximum reviews returned.
pageTokenstringnextPageToken from the previous answer, to read the next reviews.

Examples

Replace tt_live_XXXX with your key from the pricing page.

curl

curl -i -X POST "https://tools.yukai.uk/api/v1/appstore/play/reviews" \
  -H "Authorization: Bearer tt_live_XXXX" \
  -H "Content-Type: application/json" \
  -d '{"app":"com.spotify.music"}'

JavaScript (fetch)

const res = await fetch("https://tools.yukai.uk/api/v1/appstore/play/reviews", {
  method: "POST",
  headers: { "Authorization": "Bearer tt_live_XXXX", "Content-Type": "application/json" },
  body: JSON.stringify({"app":"com.spotify.music"}),
});
console.log(res.status, res.headers.get("x-credits-charged"), res.headers.get("x-credits-balance"));
console.log(await res.json());

Python (requests)

import requests

r = requests.post(
    "https://tools.yukai.uk/api/v1/appstore/play/reviews",
    headers={"Authorization": "Bearer tt_live_XXXX"},
    json={"app": "com.spotify.music"},
    timeout=120,
)
print(r.status_code, r.headers.get("x-credits-charged"), r.headers.get("x-credits-balance"))
print(r.json())

Response

JSON with "success": true and the result fields; on failure {"success": false, "error": {"code", "message", "retryable"}} and no credits are used. Every answer carries x-credits-charged (credits used) and x-credits-balance (balance after the call); check the balance any time with GET https://tools.yukai.uk/v1/billing/balance.

Full field list and response schema: OpenAPI spec app-store (its servers entry is the marketplace gateway; call https://tools.yukai.uk with your key).

← All routes · Pricing