Google API: Get app reviews
Gets public user reviews for an Android app on Google Play. The app can be given by name, Play Store link, or app ID.
Unofficial. Not affiliated with or endorsed by Google.
Inputs
Values from the run on Oct 23, 2026, shown under Output.
- App, required
app App name, Play Store link, or app ID, e.g. WhatsApp.
https://play.google.com/store/apps/details?id=com.google.android.apps.maps
- Sort optional
sort Review ordering, e.g. newest.
most_relevant
One of
newest,most_relevant. Defaultnewest.- Stars optional
stars Review rating 1–5, or 0 for all ratings, e.g. 5.
1
Whole number from 0 to 5. Default
0.- Country optional
country Country name or two-letter code, e.g. United States or US.
United States
Default
United States.- Language optional
language Language name or code, e.g. English or en.
English
Default
English.- Max Results optional
max_results Maximum number of reviews, e.g. 50.
110
Whole number from 1 to 500. Default
50.
Input as JSON
{ "app": "https://play.google.com/store/apps/details?id=com.google.android.apps.maps" , "sort": "most_relevant", "stars": 1, "country": "United States", "language": "English", "max_results": 110}Output
{ "reviews": [ { "date": "2026-09-16", "stars": 1, "page_link": "https://play.google.com/store/apps/details?id=com.google.android.apps.maps&reviewId=7bcb477a-36c5-4d76-8814-55ae0c84788e" , "review_id": "7bcb477a-36c5-4d76-8814-55ae0c84788e", "review_text": "My app auto changed to a disgusting ai voice. when I went to change it back to the older one, they removed all the street vocabulary and now she only can say \"turn left, turn right, etc\" and cannot say street names when she never had a problem before this update. If I could give a rating below 1 sta…", "helpful_votes": 744, "reviewer_name": "Megan Olson", "app_version_reviewed": "26.35.03.969485213", "developer_reply_date": "2026-09-16", "developer_reply_text": "That doesn’t sound good, Megan. You can submit the details of what you're experiencing by following these steps: goo.gle/355m3NU, so our team gets the right information to help improve the app. Appreciate it!" }, { "date": "2026-04-21", "stars": 1, "page_link": "https://play.google.com/store/apps/details?id=com.google.android.apps.maps&reviewId=21360732-d8b6-40bf-bb27-06be083512e5" , "review_id": "21360732-d8b6-40bf-bb27-06be083512e5", "review_text": "i don't know how an app like this manages to become worse with every update. nearly useless at this point, you're better off with a paper map. Today it routed me to the middle of an interstate, nowhere near an exit, and said I'd arrived at my destination. A few days ago it only offered one route thr…", "helpful_votes": 161, "reviewer_name": "Spencer Cashdollar", "app_version_reviewed": "26.15.01.894202351", "developer_reply_date": null, "developer_reply_text": null }, { "date": "2026-04-13", "stars": 1, "page_link": "https://play.google.com/store/apps/details?id=com.google.android.apps.maps&reviewId=b5f1540b-95be-4065-aa35-cd46506ebd6c" , "review_id": "b5f1540b-95be-4065-aa35-cd46506ebd6c", "review_text": "it used to turn the route red or yellow depending on traffic. now it only shows blue. we have always relied on those colors to help us change routes. also, the alternative route button doesn't give options that are helpful. it keeps trying to bring us through DC, which, is never a fast route. I can …", "helpful_votes": 144, "reviewer_name": "Roddy Graham", "app_version_reviewed": "26.14.09.891313448", "developer_reply_date": "2026-04-14", "developer_reply_text": "We understand your concern, Roddy. We would love to learn more about the issue and help. Please create a post in our Google Maps forum so that our community of experts can assist you: goo.gle/3vosTcH. Appreciate it." } ], "app_link": "https://play.google.com/store/apps/details?id=com.google.android.apps.maps" , "app_name": "Google Maps"}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"play.google.com/get_app_reviews","input":{"app":"https://play.google.com/store/apps/details?id=com.google.android.apps.maps","sort":"most_relevant","stars":1,"country":"United States","language":"English","max_results":110}}' # Save as fous.py, then run: python3 fous.pyimport json, os, timefrom urllib.error import HTTPErrorfrom urllib.request import Request, urlopenAPI = "https://api.fous.com/v1/runs" KEY = os.environ["FOUS_API_KEY"]HEADERS = { "Authorization": f"Bearer {KEY}", "Content-Type": "application/json" ,}def call(url, body=None): data = json.dumps(body).encode() if body else None request = Request(url, data, HEADERS) try: with urlopen(request, timeout=120) as r: return r.status, json.load(r) except HTTPError as error: message = json.load(error)["error"]["message"] raise RuntimeError(message) from errorstatus, run = call(API, { "method": "play.google.com/get_app_reviews" , "input": { "app": "https://play.google.com/store/apps/details?id=com.google.android.apps.maps" , "sort": "most_relevant", "stars": 1, "country": "United States", "language": "English", "max_results": 110 }})# 202: still going after 30 s. Ask again until it ends.while status == 202: time.sleep(2) status, run = call(f"{API}/{run['id']}")print(json.dumps(run["data"], indent=2))// Save as fous.mjs, then run: node fous.mjsconst api = "https://api.fous.com/v1/runs" ;const headers = { Authorization: `Bearer ${process.env.FOUS_API_KEY}`, "Content-Type": "application/json" ,};let response = await fetch(api, { method: "POST", headers, body: JSON.stringify({ "method": "play.google.com/get_app_reviews" , "input": { "app": "https://play.google.com/store/apps/details?id=com.google.android.apps.maps" , "sort": "most_relevant", "stars": 1, "country": "United States", "language": "English", "max_results": 110 } }), signal: AbortSignal.timeout(120_000),});let run = await response.json();// 202: still going after 30 s. Ask again until it ends.while (response.status === 202) { await new Promise((done) => setTimeout(done, 2_000)); response = await fetch(`${api}/${run.id}`, { headers }); run = await response.json();}if (!response.ok) throw new Error(run.error.message);console.log(run.data);# Connect your agent to Fous once, over MCP (Streamable HTTP):# https://api.fous.com/mcp# Set FOUS_API_KEY first: create a key at https://app.fous.com/keys.# Claude Codeclaude mcp add \ --scope user \ --transport http fous https://api.fous.com/mcp \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Codexcodex mcp add fous \ --url https://api.fous.com/mcp \ --bearer-token-env-var FOUS_API_KEY# Cursor, VS Code, Windsurf, Cline and morenpx -y add-mcp https://api.fous.com/mcp -g -n fous \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Then ask your agent:# "Use Fous to run play.google.com/get_app_reviews# with {"app":"https://play.google.com/store/apps/details?id=com.google.android.apps.maps","sort":"most_relevant","stars":1,"country":"United States","language":"English","max_results":110}"Over HTTP, the answer’s data holds the output. A run still going after 30 seconds answers 202 with its id: ask GET /v1/runs/{id} until it ends.
Schema
Input schema
{ "type": "object", "required": [ "app" ], "properties": { "app": { "type": "string", "description": "App name, Play Store link, or app ID, e.g. WhatsApp." }, "sort": { "enum": [ "newest", "most_relevant" ], "type": "string", "default": "newest", "description": "Review ordering, e.g. newest." }, "stars": { "type": "integer", "default": 0, "maximum": 5, "minimum": 0, "description": "Review rating 1–5, or 0 for all ratings, e.g. 5." }, "country": { "type": "string", "default": "United States", "description": "Country name or two-letter code, e.g. United States or US." }, "language": { "type": "string", "default": "English", "description": "Language name or code, e.g. English or en." }, "max_results": { "type": "integer", "default": 50, "maximum": 500, "minimum": 1, "description": "Maximum number of reviews, e.g. 50." } }}Output schema
{ "type": "object", "required": [ "app_name", "app_link", "reviews" ], "properties": { "reviews": { "type": "array", "items": { "type": "object", "properties": { "date": { "type": [ "string", "null" ] }, "stars": { "type": [ "integer", "null" ] }, "page_link": { "type": "string" }, "review_id": { "type": [ "string", "null" ] }, "review_text": { "type": [ "string", "null" ] }, "helpful_votes": { "type": "integer" }, "reviewer_name": { "type": [ "string", "null" ] }, "app_version_reviewed": { "type": [ "string", "null" ] }, "developer_reply_date": { "type": [ "string", "null" ] }, "developer_reply_text": { "type": [ "string", "null" ] } } } }, "app_link": { "type": "string" }, "app_name": { "type": "string" } }}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
play.google.com/get_app_reviews- Returns
- app name, app link, reviews with stars, date, text, helpful votes, version, developer reply
Use it from your agent
Give your agent this line. It reads SKILL.md, gets a Fous API key and connects the Fous MCP server. Its run then takes the method play.google.com/get_app_reviews with the inputs above.
Ask your agent
- Show me the latest 20 user reviews for the WhatsApp Android app on Play Store, sorted newest first, in English from the US
- What are the most relevant 5-star reviews for com.spotify.music on Google Play?
- Pull up 1-star reviews for the Duolingo app in Germany with developer replies included
- I need the newest reviews for Instagram on the Play Store in French from France, up to 100 entries
- Get the most helpful critical reviews (2 stars or lower) for the Zoom app on Google Play, including version numbers and helpful vote counts
See more
All Google methodsGets a public Google Play app listing by app name or Play Store link, with developer, rating, downloads, price, what's new, descriptions and data safety highlights.
play.google.com/get_appFinds Android apps on Google Play by keywords, in Play search order, with each listing's developer, star rating, price and currency for the chosen country, download range and link. Results are limited to apps shown on the public search page.
play.google.com/search_appsFinds a place on Google Maps by name and location and returns its public reviews in the chosen order.
google.com/get_place_reviewsFinds a hotel on Google Hotels by name and city and returns its guest reviews in the chosen order, its Google rating and review count, and topic ratings averaged from the returned reviews that rate each topic.
google.com/get_hotel_reviewsLists ranked Android apps or games from the Google Play top free, top paid or top grossing chart for a country and category.
play.google.com/list_top_chartsLooks up a public Google Maps place by name and location and returns its profile: address, rating, hours, phone, website and photos.
google.com/get_placeFinds Chrome Web Store extensions by keywords in store order, with each listing's developer, users, rating, rating count, short description and store link. Some listings omit developer, users or ratings.
chromewebstore.google.com/search_extensionsLooks up a Chrome Web Store extension by name or store link and returns its public listing: developer, users, rating, version, update date, size, category, description, declared privacy practices, website and store link. Permissions are null when the listing does not show them.
chromewebstore.google.com/get_extension