Catch a bad release
Read the newest reviews after an update and see if a version number keeps showing up next to one-star ratings.
Google data API · Play reviews
Read the Play Store reviews of up to five Android apps by package id or store URL: the text, rating, date, app version, helpful votes and the developer's reply. Sort by newest, highest rating or most helpful.
Updated 21 October 2026
Read the newest reviews after an update and see if a version number keeps showing up next to one-star ratings.
Find what users of a rival app ask for and complain about, in their own words.
See which reviews got a developer reply and which are still waiting.
curl -X POST https://apiforagents.dev/v1/google \
-H "Authorization: Bearer $AFA_KEY" \
-H "Content-Type: application/json" \
-d '{"op":"playReviews","subjects":["com.spotify.music"],"country":"US","language":"en","sort":"newest","limit":50,"estimateOnly":true}'curl -X POST https://apiforagents.dev/v1/google \
-H "Authorization: Bearer $AFA_KEY" \
-H "Content-Type: application/json" \
-d '{"op":"playReviews","subjects":["com.spotify.music"],"country":"US","language":"en","sort":"newest","limit":50}'Everything you can send in one playReviews call. Required inputs first.
| Input | Type | What it does |
|---|---|---|
| subjects * | text list | Package ids or Play Store URLs. 1-5 items |
| country | string | ISO alpha-2 |
| language | string | BCP-47 |
| sort | enum | |
| limit | integer | 1-100 |
The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.
| Field | Type |
|---|---|
| reviewId | string |
| reviewUrl | string |
| reviewer | string |
| reviewerPhoto | string |
| rating | number |
| reviewText | string |
| posted | string |
| appVersion | string |
| helpfulVotes | integer |
| developerReply | string |
| replyDate | string |
| subratings | any |
| details | object |
details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.
Made-up names and values in the real field names, so you can see the shape before you spend anything.
| reviewer | rating | reviewText | appVersion | helpfulVotes | posted |
|---|---|---|---|---|---|
| Ravi K. | 5 | Fast and simple. Exactly what I needed. | 4.12.0 | 38 | 2026-10-14 |
| Lena M. | 2 | Keeps logging me out after the update. | 4.12.0 | 104 | 2026-10-13 |
| Sam T. | 4 | Great app, wish it had dark mode. | 4.11.2 | 12 | 2026-10-10 |
Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.
| Request | Records | At the list price |
|---|---|---|
| One review | 1 | $0.00009 |
| 5 reviews | 5 | $0.00045 |
| A full page | 100 | $0.009 |
These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.
One row per review: reviewer, rating, text, app version, helpful votes, posted date, the developer's reply and its date, review id and URL.
Up to five package ids (like com.spotify.music) or Play Store URLs, and optionally a country, a language, a sort (newest, rating_high or helpful) and a limit of up to a hundred reviews.
$0.00009 per review at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true: the quote is free and is the most the call can cost. You pay for what comes back.
The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.
Why people pick API for Agents
API for Agents is independent and not affiliated with or endorsed by LinkedIn or any company named here. LinkedIn is a trademark of LinkedIn Corporation; other names belong to their owners. Public data only: nothing behind a login.