Spotify API: List top podcasts
Lists Spotify's top or trending podcasts for a country in chart order, with rank, movement, publisher, artwork and Spotify link. Category charts exist only for some countries.
Unofficial. Not affiliated with or endorsed by Spotify.
Inputs
Values from the run on Oct 23, 2026, shown under Output.
- Chart optional
chart Top podcasts or trending podcasts; for example, trending. Defaults to top_podcasts.
top_podcasts
One of
top_podcasts,trending. Defaulttop_podcasts.- Country optional
country Country name or two-letter code, such as United States or US. Defaults to United States.
United States
Default
United States.- Category optional
category Top podcast category, such as Comedy, True Crime, or Business. Use all for the overall chart. Only applies to top_podcasts.
Comedy
Default
all.- Max Results optional
max_results Maximum podcasts to return, from 1 to 50; for example, 10. Defaults to 50.
5
Whole number from 1 to 50. Default
50.
Input as JSON
{ "chart": "top_podcasts", "country": "United States", "category": "Comedy", "max_results": 5}Output
{ "podcasts": [ { "rank": 1, "movement": "same", "publisher": "Joe Rogan", "spotify_url": "https://open.spotify.com/show/4rOoJ6Egrf8K2IrywzwOMk" , "places_moved": 0, "podcast_name": "The Joe Rogan Experience", "cover_image_url": "https://i.scdn.co/image/ab67656300005f1fe7c95712f4940a9bf439467e" }, { "rank": 2, "movement": "same", "publisher": "The Ringer", "spotify_url": "https://open.spotify.com/show/1z20EiwuKoDiftKxMVLde1" , "places_moved": 0, "podcast_name": "Good Hang with Amy Poehler", "cover_image_url": "https://i.scdn.co/image/ab67656300005f1faee1957f2176b367c36be8e6" }, { "rank": 3, "movement": "same", "publisher": "Theo Von", "spotify_url": "https://open.spotify.com/show/6PwE1CIZsgfrhX6Bw96PUN" , "places_moved": 0, "podcast_name": "This Past Weekend w/ Theo Von", "cover_image_url": "https://i.scdn.co/image/ab67656300005f1f3c4685e830e0ce8b0597e6aa" } ]}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"open.spotify.com/list_top_podcasts","input":{"chart":"top_podcasts","country":"United States","category":"Comedy","max_results":5}}' # 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": "open.spotify.com/list_top_podcasts" , "input": { "chart": "top_podcasts", "country": "United States", "category": "Comedy", "max_results": 5 }})# 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": "open.spotify.com/list_top_podcasts" , "input": { "chart": "top_podcasts", "country": "United States", "category": "Comedy", "max_results": 5 } }), 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 open.spotify.com/list_top_podcasts# with {"chart":"top_podcasts","country":"United States","category":"Comedy","max_results":5}"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": [], "properties": { "chart": { "enum": [ "top_podcasts", "trending" ], "type": "string", "default": "top_podcasts", "description": "Top podcasts or trending podcasts; for example, trending. Defaults to top_podcasts." }, "country": { "type": "string", "default": "United States", "description": "Country name or two-letter code, such as United States or US. Defaults to United States." }, "category": { "type": "string", "default": "all", "description": "Top podcast category, such as Comedy, True Crime, or Business. Use all for the overall chart. Only applies to top_podcasts." }, "max_results": { "type": "integer", "default": 50, "maximum": 50, "minimum": 1, "description": "Maximum podcasts to return, from 1 to 50; for example, 10. Defaults to 50." } }, "additionalProperties": false}Output schema
{ "type": "object", "required": [ "podcasts" ], "properties": { "podcasts": { "type": "array", "items": { "type": "object", "required": [ "rank", "movement", "places_moved", "podcast_name", "publisher", "cover_image_url", "spotify_url" ], "properties": { "rank": { "type": "integer" }, "movement": { "enum": [ "up", "down", "new", "same" ], "type": "string" }, "publisher": { "type": [ "string", "null" ] }, "spotify_url": { "type": "string" }, "places_moved": { "type": [ "integer", "null" ], "description": "Zero when unchanged; null if the chart does not publish a number." }, "podcast_name": { "type": "string" }, "cover_image_url": { "type": [ "string", "null" ] } }, "additionalProperties": false }, "description": "Podcasts in chart order." } }, "additionalProperties": false}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
open.spotify.com/list_top_podcasts- Returns
- rank, movement, places_moved, podcast name, publisher, cover image URL, Spotify URL
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 open.spotify.com/list_top_podcasts with the inputs above.
Ask your agent
- What are the top 10 podcasts in Germany right now?
- Show me the trending podcasts in Japan on Spotify, with their rank changes.
- I need the current top True Crime podcasts in the US, limited to 20 results.
- Which podcasts are climbing fastest on the Spotify chart in Brazil?
- Give me the overall top 50 podcast chart for the UK, including publisher names and cover art.
See more
All Spotify methodsSearches Spotify for songs, artists, albums, playlists or podcasts by keywords and returns them in Spotify's result order. Songs and albums include a release date when Spotify gives a full date.
spotify.com/search_musicFinds a Spotify song by title (optionally narrowed by artist), track link, URI or track ID and returns its public play count and details. Without an artist, the most-played exact title match wins. Previews and ISRC may be unavailable for some tracks.
open.spotify.com/get_songGets a Spotify artist's public profile from their name, artist link or ID: listeners, followers, world rank, top cities, popular tracks, latest release and release counts.
open.spotify.com/get_artistGets a Spotify album by name (optionally with the artist), album link or album ID, with its details and ordered track list including play counts.
open.spotify.com/get_albumLists Apple Podcasts chart entries in rank order for a country and category, as top shows or top episodes.
podcasts.apple.com/list_top_podcastsLists 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_chartsLists current worldwide top tracks, albums or artists on Deezer in chart order, or tracks from Deezer's official Top <country> playlist.
deezer.com/list_top_chartsLists 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_charts