Google API: List Google Play top charts
Lists ranked Android apps or games from the Google Play top free, top paid or top grossing chart for a country and category.
Unofficial. Not affiliated with or endorsed by Google.
Inputs
Values from the run on Oct 23, 2026, shown under Output.
- Chart optional
chart Which top chart to list, for example top_free.
top_free
One of
top_free,top_paid,top_grossing. Defaulttop_free.- Country optional
country Country name or two-letter code, for example United States or GB.
United States
Default
United States.- Category optional
category App or game category in words, for example games, social, finance, or health and fitness.
games
Default
all apps.- Max Results optional
max_results Maximum number of ranked apps to return, for example 50.
50
Whole number from 1 to 200. Default
50.
Input as JSON
{ "chart": "top_free", "country": "United States", "category": "games", "max_results": 50}Output
{ "apps": [ { "rank": 1, "price": 0, "app_name": "Gossip Harbor: Merge & Story", "currency": "USD", "developer": "Microfun Limited", "star_rating": 4.36, "package_name": "com.mergegames.gossipharbor", "play_store_link": "https://play.google.com/store/apps/details?id=com.mergegames.gossipharbor&gl=US" }, { "rank": 2, "price": 0, "app_name": "Royal Smash! - Physics Puzzle", "currency": "USD", "developer": "Cypher Games", "star_rating": 4.62, "package_name": "com.cyphergames.royalsmash", "play_store_link": "https://play.google.com/store/apps/details?id=com.cyphergames.royalsmash&gl=US" }, { "rank": 3, "price": 0, "app_name": "Meowdoku: Brain Puzzle Games", "currency": "USD", "developer": "Oakever Games", "star_rating": 4.69, "package_name": "com.oakever.meowdoku", "play_store_link": "https://play.google.com/store/apps/details?id=com.oakever.meowdoku&gl=US" } ], "chart": "top_free", "country": "United States", "category": "games"}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"play.google.com/list_top_charts","input":{"chart":"top_free","country":"United States","category":"games","max_results":50}}' # 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/list_top_charts" , "input": { "chart": "top_free", "country": "United States", "category": "games", "max_results": 50 }})# 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/list_top_charts" , "input": { "chart": "top_free", "country": "United States", "category": "games", "max_results": 50 } }), 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/list_top_charts# with {"chart":"top_free","country":"United States","category":"games","max_results":50}"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", "properties": { "chart": { "enum": [ "top_free", "top_paid", "top_grossing" ], "type": "string", "default": "top_free", "description": "Which top chart to list, for example top_free." }, "country": { "type": "string", "default": "United States", "description": "Country name or two-letter code, for example United States or GB." }, "category": { "type": "string", "default": "all apps", "description": "App or game category in words, for example games, social, finance, or health and fitness." }, "max_results": { "type": "integer", "default": 50, "maximum": 200, "minimum": 1, "description": "Maximum number of ranked apps to return, for example 50." } }}Output schema
{ "type": "object", "required": [ "chart", "category", "country", "apps" ], "properties": { "apps": { "type": "array", "items": { "type": "object", "properties": { "rank": { "type": "integer" }, "price": { "type": "number" }, "app_name": { "type": "string" }, "currency": { "type": "string" }, "developer": { "type": [ "string", "null" ] }, "star_rating": { "type": [ "number", "null" ] }, "package_name": { "type": "string" }, "play_store_link": { "type": "string" } } } }, "chart": { "type": "string" }, "country": { "type": "string" }, "category": { "type": "string" } }}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
play.google.com/list_top_charts- Returns
- rank, app name, developer, star rating, price, currency, Play Store link, package name
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/list_top_charts with the inputs above.
Ask your agent
- Show me the top 25 free games on the Google Play chart in the United States
- What are the highest grossing finance apps on Google Play in GB right now?
- List the top paid social apps on Google Play for Germany, with prices and developers
- Which health and fitness apps rank highest on the free Play Store chart in Canada? Give me the top 10.
- On Google Play, what are the top 100 grossing apps in Japan, with package names and star ratings?
See more
All Google methodsFinds 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_appsLists Google Trends 'Trending now' searches for a country, time window and category, in Google's order. Each search comes with its volume, activity, related searches and news headlines.
trends.google.com/list_trending_searchesGets 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_appLists the current top Google News stories, overall or for one topic, in a chosen country and language edition.
news.google.com/list_top_storiesGets public user reviews for an Android app on Google Play. The app can be given by name, Play Store link, or app ID.
play.google.com/get_app_reviewsLists major stock market indexes on Google Finance with their current levels, changes and quote times. Quotes may be delayed, and indexes Google does not show are left out.
google.com/list_market_indexesShows where a search term has the highest relative Google Trends interest, by country worldwide or by region within a country. Scores run from 0 to 100.
trends.google.com/get_interest_by_regionFinds 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_extensions