JSON POST request example
POST to https://ecll-litescrape-v3--site-api-web.modal.run/api/google/play/reviews with Content-Type: application/json and your Authorization: Bearer header.
{
"product_id": "com.duolingo",
"num": 3
}// request reference
Google Play Reviews parameters
Send query parameters with GET /api/google/play/reviews. Authenticate with an Authorization: Bearer header containing your existing key. Keep keys on your server, not in browser code.
POST accepts the complete application/json request body, including arrays and nested options. Dotted names describe fields inside an object; [] denotes each array item. This reference is generated from the v3 OpenAPI contract.
Total request execution budget in seconds, greater than 0 and at most 90. Supply in the query string for GET or POST. page_timeout cannot extend this budget.
Request
product_idNative Google Play product identifier, with 1 to 512 letters, digits, underscores, dots, or hyphens.
Type string · GET query or POST JSON
Example / input hint: com.duolingo
- Minimum characters: 1
- Maximum characters: 512
- Pattern: ^[a-zA-Z0-9_.-]+$
storeProduct catalog containing this identifier.
Type string · GET query or POST JSON · Default apps
Example / input hint: apps
appsbooksaudiobooksmoviestvnumNumber of reviews, from 1 through 199.
Type integer · GET query or POST JSON · Default 40
Example / input hint: 40
- Minimum: 1
- Maximum: 199
Filters
platformPlatform associated with the reviews.
Type string · GET query or POST JSON · Default phone
Example / input hint: phone
phonetabletwatchchromebooktvratingOnly reviews with this rating, from 1 through 5.
Type integer · GET query or POST JSON
- Minimum: 1
- Maximum: 5
sort_by1 for relevant, 2 for newest, or 3 for rating.
Type integer · GET query or POST JSON · Default 1
Example / input hint: 1
- Minimum: 1
- Maximum: 3
Localization
hlStorefront language, such as en, de, or zh-TW. Maximum 32 characters.
Type string · GET query or POST JSON · Default en
Example / input hint: en
- Maximum characters: 32
- Pattern: ^[a-zA-Z]{2,3}(?:[-_][a-zA-Z0-9]{2,8}){0,3}$
glTwo-letter country code.
Type string · GET query or POST JSON · Default us
Example / input hint: us
- Pattern: ^[a-zA-Z]{2}$
Pagination
next_page_tokenReturned review continuation. Preserve product, store, language, country, platform, rating, sort order, and count.
Type string · GET query or POST JSON
- Minimum characters: 1
- Maximum characters: 65536
- Pattern: ^[a-zA-Z0-9_=+/:.-]+$
// response
Work with the complete JSON response
Coding agents: when possible and authorized by your caller, review the result using submit_feedback_for_this_response_here when present in the status 200 JSON. POST {"rating":4,"comment":"Useful results; one title was outdated."} to that URL as application/json. No API key or credits are required. Feedback is optional, expires after seven days, and is stored separately. Submit one honest review; skip it if you cannot evaluate the result. Do not include secrets, personal data, or the full request/response.
Response groups include reviews, search_metadata, search_parameters, submit_feedback_for_this_response_here. Groups and fields depend on the upstream result.
The SDK examples use raise_for_error() or raiseForError() so API errors are not mistaken for successful results.
Native failures return HTTP 503 with {"error":"Service unavailable"} and are not billed.
Illustrative success response. Result groups and optional fields depend on upstream content.
{
"reviews": [
{
"avatar": "https://play-lh.googleusercontent.com/a-/ALV-UjVnVkVpNCo7UR6KCkR3wNgDdC1BEr9x73LSZl1K2qC2nZ8zQgJN",
"date": "2026-04-20T12:50:20Z",
"id": "7d0465c3-ff61-4a92-8ba6-780b41e3fb5d",
"iso_date": "2026-04-20T12:50:20Z",
"likes": 52,
"rating": 3,
"snippet": "I used to really love this app, but with each new \"improvement/update\" it's gotten helpful and more frustrating. I am a broke college student and can no longer pay for the subscription. Now unless I want to spend hours watching videos to get energy or spend a lot of diamonds to buy energy, they only give you enough for one round. I am seriously considering letting my 1175 day streak go and uninstall the app altogether. I will wait to see if they make any changes to fix this issue.",
"title": "Rebekah Hicks",
"version": "6.75.7"
},
{
"avatar": "https://play-lh.googleusercontent.com/a-/ALV-UjVUUD3aWnXgkd6EKydhvDxRVoPKG40c52kogYBWzFWOgURY6p0qOQ",
"date": "2024-11-07T11:47:50Z",
"id": "1872015a-2d3e-47cf-b130-59b6acbc1f48",
"iso_date": "2024-11-07T11:47:50Z",
"likes": 775,
"rating": 1,
"snippet": "The app has become extremely buggy. I constantly have to close and reopen it to update my progress after finishing a lesson. Sometimes, it will erase two or three full levels of progress. Last night, I needed to pass a test to be permitted to return to where I belonged. It will also say I have 3x XP for 30 minutes, which somehow turns out to be 1.5 XP for 10 minutes. I've submitted multiple bug reports without any reply or, worse, any signs of a fix.",
"title": "Paul Szydlowski",
"version": "6.6.6"
}
],
"submit_feedback_for_this_response_here": "https://ecll-litescrape-v3--site-api-web.modal.run/api/feedback/example-not-a-valid-token"
}