Apple API: List top App Store charts
Lists ranked iPhone or iPad apps from the public App Store charts for a chart, category, and country. App bundles and apps that are no longer available are left out.
Unofficial. Not affiliated with or endorsed by Apple.
Inputs
Values from the run on Oct 23, 2026, shown under Output.
- Chart optional
chart Chart to list, for example top_free.
top_free
One of
top_free,top_paid. Defaulttop_free.- Device optional
device Device chart, for example iphone.
iphone
One of
iphone,ipad. Defaultiphone.- Country optional
country Country name or two-letter country code, for example United States or gb.
United States
Default
United States.- Category optional
category Chart category in words, for example games, business, or health and fitness.
all apps
Default
all apps.- Max Results optional
max_results Maximum number of ranked positions to read (up to 200).
50
Whole number from 1 to 200. Default
50.
Input as JSON
{ "chart": "top_free", "device": "iphone", "country": "United States", "category": "all apps", "max_results": 50}Output
{ "apps": [ { "rank": 1, "price": 0, "app_id": "407558537", "app_name": "Capital One Mobile", "category": "Finance", "currency": "USD", "developer": "Capital One", "app_store_link": "https://apps.apple.com/us/app/capital-one-mobile/id407558537" }, { "rank": 2, "price": 0, "app_id": "632064380", "app_name": "Vinted: Pre-loved marketplace", "category": "Shopping", "currency": "USD", "developer": "Vinted Limited", "app_store_link": "https://apps.apple.com/us/app/vinted-pre-loved-marketplace/id632064380" }, { "rank": 3, "price": 0, "app_id": "6760173601", "app_name": "Muse from Meta", "category": "Productivity", "currency": "USD", "developer": "Meta Platforms, Inc.", "app_store_link": "https://apps.apple.com/us/app/muse-from-meta/id6760173601" } ], "chart": "top_free", "country": "United States", "category": "all apps"}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"apps.apple.com/list_top_charts","input":{"chart":"top_free","device":"iphone","country":"United States","category":"all apps","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": "apps.apple.com/list_top_charts" , "input": { "chart": "top_free", "device": "iphone", "country": "United States", "category": "all apps", "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": "apps.apple.com/list_top_charts" , "input": { "chart": "top_free", "device": "iphone", "country": "United States", "category": "all apps", "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 apps.apple.com/list_top_charts# with {"chart":"top_free","device":"iphone","country":"United States","category":"all apps","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" ], "type": "string", "default": "top_free", "description": "Chart to list, for example top_free." }, "device": { "enum": [ "iphone", "ipad" ], "type": "string", "default": "iphone", "description": "Device chart, for example iphone." }, "country": { "type": "string", "default": "United States", "description": "Country name or two-letter country code, for example United States or gb." }, "category": { "type": "string", "default": "all apps", "description": "Chart category in words, for example games, business, or health and fitness." }, "max_results": { "type": "integer", "default": 50, "maximum": 200, "minimum": 1, "description": "Maximum number of ranked positions to read (up to 200)." } }}Output schema
{ "type": "object", "required": [ "chart", "category", "country", "apps" ], "properties": { "apps": { "type": "array", "items": { "type": "object", "required": [ "rank", "app_name", "app_store_link", "app_id" ], "properties": { "rank": { "type": "integer" }, "price": { "type": [ "number", "null" ] }, "app_id": { "type": "string" }, "app_name": { "type": "string" }, "category": { "type": [ "string", "null" ] }, "currency": { "type": [ "string", "null" ] }, "developer": { "type": [ "string", "null" ] }, "app_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
apps.apple.com/list_top_charts- Returns
- rank, app name, developer, price, currency, category, link, app id
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 apps.apple.com/list_top_charts with the inputs above.
Ask your agent
- What are the top 20 free iPhone apps in the United States right now?
- Show me the top paid iPad games in the UK chart with developer and price.
- Which business apps rank highest on the free iPhone chart in Germany?
- Can you list the top 50 health and fitness apps on Apple's App Store for Canada, with app IDs?
- Give me the current top grossing paid apps for iPad in Japan, ranked, limited to 10 results.
See more
All Apple methodsLists the current top songs, albums, or music videos on Apple Music for a country, in chart order. Countries without an Apple Music chart return no results.
music.apple.com/list_top_chartsLists Apple Podcasts chart entries in rank order for a country and category, as top shows or top episodes.
podcasts.apple.com/list_top_podcastsFinds iPhone and iPad apps by keyword in a chosen country's App Store, with ratings, prices, categories and App Store links.
apps.apple.com/search_appsGets customer reviews for an iPhone or iPad app, found by name or App Store link, from the selected country's App Store.
apps.apple.com/get_app_reviewsGets an iPhone or iPad app's public App Store listing by name or link. You can narrow it by developer and country. In-app purchases are included when the page lists them.
apps.apple.com/get_appFinds Apple Podcasts shows by name or topic in a country, ordered by search relevance, with ratings when the show page provides them.
podcasts.apple.com/search_podcastsGets a podcast's country-specific rating total and average, plus up to 500 listener reviews sorted by newest or most helpful.
podcasts.apple.com/get_podcast_reviewsGets current Apple Store prices and the configurations on sale for a product in one country. It includes only models sold on that country's public store.
apple.com/get_product_prices