# Spotify API

> Spotify returns artist, song, album, playlist, search, and podcast chart data as a workflow and API.

Spotify’s Get artist returns profile, audience, and popular track details; provide an artist name, link, or ID. Get album and Get song return album or song details and public play counts; provide a title, link, or ID, optionally with an artist.

- Page: https://fous.com/tools/spotify
- Handle: `@spotify`
- Category: [Entertainment](https://fous.com/tools/category/entertainment)
- Source website: https://open.spotify.com
- Last verified: Oct 8, 2026

## Methods

### Get album

Operation `get_album`, version 1. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.

Get a Spotify album by name, optionally choosing the artist, or by Spotify album link or ID. Includes credits and ordered tracks with public play counts.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `album` | string | yes | `"https://open.spotify.com/album/0ETFjACtuP2ADo6LFhL6HN"` | Album name, Spotify album link or album ID, for example Abbey Road. |
| `artist` | string | no | `"The Beatles"` | Artist to identify the right album, for example The Beatles. |

**Input schema**

```json
{
  "type": "object",
  "required": [
    "album"
  ],
  "properties": {
    "album": {
      "type": "string",
      "description": "Album name, Spotify album link or album ID, for example Abbey Road.",
      "examples": [
        "https://open.spotify.com/album/0ETFjACtuP2ADo6LFhL6HN",
        "Abbey Road",
        "Rumours"
      ]
    },
    "artist": {
      "type": "string",
      "default": "",
      "description": "Artist to identify the right album, for example The Beatles.",
      "examples": [
        "The Beatles",
        "Fleetwood Mac"
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "album": "https://open.spotify.com/album/0ETFjACtuP2ADo6LFhL6HN"
    },
    {
      "album": "Abbey Road",
      "artist": "The Beatles"
    },
    {
      "album": "Rumours",
      "artist": "Fleetwood Mac"
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `tracks` | array |  | All album tracks in disc and track order. |
| `tracks[].title` | string | `"Come Together - Remastered 2009"` | Track title. |
| `tracks[].length` | string | `"4:19"` | Track length in m:ss. |
| `tracks[].explicit` | boolean | `false` | Whether Spotify marks the track explicit. |
| `tracks[].length_ms` | integer | `259946` | Track length in milliseconds. |
| `tracks[].play_count` | integer or null | `1000879986` | Public Spotify play count, or null if unavailable. |
| `tracks[].disc_number` | integer | `1` | Disc number. |
| `tracks[].spotify_link` | string | `"https://open.spotify.com/track/2EqlS6tkEnglzr7tkKAAYD"` | Spotify track page link. |
| `tracks[].track_number` | integer | `1` | Track number within its disc. |
| `tracks[].featured_artists` | array |  | Track artists who are not credited as album artists. |
| `tracks[].spotify_track_id` | string | `"2EqlS6tkEnglzr7tkKAAYD"` | Spotify track ID. |
| `artists` | array |  | Album artists. |
| `copyright` | string or null | `"© 2015 Apple Corps Ltd \| ℗ 2015 Calderstone Productions Limited (a division of Universal Music Group)"` | Copyright credits, or null if not listed. |
| `album_name` | string | `"Abbey Road (Remastered)"` | Album title. |
| `album_type` | string | `"album"` | Album, single or compilation. |
| `record_label` | string or null | `"EMI Catalogue"` | Record label, or null if not provided. |
| `release_date` | string or null | `"1969-09-26"` | Release date in YYYY-MM-DD, or null if not listed. |
| `spotify_link` | string | `"https://open.spotify.com/album/0ETFjACtuP2ADo6LFhL6HN"` | Spotify album page link. |
| `total_length` | string | `"47 min 29 s"` | Total running time as text. |
| `cover_image_link` | string or null | `"https://i.scdn.co/image/ab67616d0000b273dc30583ba717007b00cceb25"` | Spotify cover image link. |
| `number_of_tracks` | integer | `17` | Total tracks across all discs. |
| `spotify_album_id` | string | `"0ETFjACtuP2ADo6LFhL6HN"` | Spotify album ID. |

**Example input**

```json
{
  "album": "https://open.spotify.com/album/0ETFjACtuP2ADo6LFhL6HN"
}
```

**Example output**

```json
{
  "tracks": [
    {
      "title": "Come Together - Remastered 2009",
      "length": "4:19",
      "explicit": false,
      "length_ms": 259946,
      "play_count": 1000879986,
      "disc_number": 1,
      "spotify_link": "https://open.spotify.com/track/2EqlS6tkEnglzr7tkKAAYD",
      "track_number": 1,
      "featured_artists": [],
      "spotify_track_id": "2EqlS6tkEnglzr7tkKAAYD"
    },
    {
      "title": "Something - Remastered 2009",
      "length": "3:02",
      "explicit": false,
      "length_ms": 182293,
      "play_count": 542693967,
      "disc_number": 1,
      "spotify_link": "https://open.spotify.com/track/0pNeVovbiZHkulpGeOx1Gj",
      "track_number": 2,
      "featured_artists": [],
      "spotify_track_id": "0pNeVovbiZHkulpGeOx1Gj"
    },
    {
      "title": "Maxwell's Silver Hammer - Remastered 2009",
      "length": "3:27",
      "explicit": false,
      "length_ms": 207920,
      "play_count": 68961874,
      "disc_number": 1,
      "spotify_link": "https://open.spotify.com/track/2S8xyNRJX1XQdo3qnTuovI",
      "track_number": 3,
      "featured_artists": [],
      "spotify_track_id": "2S8xyNRJX1XQdo3qnTuovI"
    }
  ],
  "artists": [
    "The Beatles"
  ],
  "copyright": "© 2015 Apple Corps Ltd | ℗ 2015 Calderstone Productions Limited (a division of Universal Music Group)",
  "album_name": "Abbey Road (Remastered)",
  "album_type": "album",
  "record_label": "EMI Catalogue",
  "release_date": "1969-09-26",
  "spotify_link": "https://open.spotify.com/album/0ETFjACtuP2ADo6LFhL6HN",
  "total_length": "47 min 29 s",
  "cover_image_link": "https://i.scdn.co/image/ab67616d0000b273dc30583ba717007b00cceb25",
  "number_of_tracks": 17,
  "spotify_album_id": "0ETFjACtuP2ADo6LFhL6HN"
}
```

### Get artist

Operation `get_artist`, version 1. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.

Get a Spotify artist’s public profile from their name, artist link, or ID. Genres are empty when they are not shown on the public player.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `artist` | string | yes | `"Taylor Swift"` | Artist name, Spotify artist link, or artist ID, for example Taylor Swift. |

**Input schema**

```json
{
  "type": "object",
  "required": [
    "artist"
  ],
  "properties": {
    "artist": {
      "type": "string",
      "description": "Artist name, Spotify artist link, or artist ID, for example Taylor Swift.",
      "examples": [
        "Taylor Swift",
        "https://open.spotify.com/artist/1Xyo4u8uXC1ZmMpatF05PJ"
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "artist": "Taylor Swift"
    },
    {
      "artist": "https://open.spotify.com/artist/1Xyo4u8uXC1ZmMpatF05PJ"
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `genres` | array |  |  |
| `verified` | boolean | `true` |  |
| `artist_id` | string | `"06HL4z0CvFAxyc27GXpf02"` |  |
| `followers` | integer or null | `164819635` |  |
| `top_cities` | array |  |  |
| `top_cities[].city` | string or null | `"London"` |  |
| `top_cities[].country` | string or null | `"United Kingdom"` |  |
| `top_cities[].listeners` | integer or null | `1631243` |  |
| `world_rank` | integer or null | `5` |  |
| `album_count` | integer or null | `34` |  |
| `artist_name` | string | `"Taylor Swift"` |  |
| `single_count` | integer or null | `80` |  |
| `spotify_link` | string | `"https://open.spotify.com/artist/06HL4z0CvFAxyc27GXpf02"` |  |
| `latest_release` | any |  |  |
| `popular_tracks` | array |  |  |
| `popular_tracks[].album` | string or null | `"The Life of a Showgirl"` |  |
| `popular_tracks[].title` | string or null | `"The Fate of Ophelia"` |  |
| `popular_tracks[].length` | string or null | `"3:46"` |  |
| `popular_tracks[].track_id` | string or null | `"53iuhJlwXhSER5J2IYYv1W"` |  |
| `popular_tracks[].length_ms` | integer or null | `226073` |  |
| `popular_tracks[].play_count` | integer or null | `1694932432` |  |
| `popular_tracks[].spotify_link` | string or null | `"https://open.spotify.com/track/53iuhJlwXhSER5J2IYYv1W"` |  |
| `artist_image_link` | string or null | `"https://i.scdn.co/image/ab6761610000e5eb12184bdd29403de54cb9d9c7"` |  |
| `monthly_listeners` | integer or null | `103505973` |  |

**Example input**

```json
{
  "artist": "Taylor Swift"
}
```

**Example output**

```json
{
  "genres": [],
  "verified": true,
  "artist_id": "06HL4z0CvFAxyc27GXpf02",
  "followers": 164819635,
  "top_cities": [
    {
      "city": "London",
      "country": "United Kingdom",
      "listeners": 1631243
    },
    {
      "city": "Quezon City",
      "country": "Philippines",
      "listeners": 1482580
    },
    {
      "city": "São Paulo",
      "country": "Brazil",
      "listeners": 1165479
    }
  ],
  "world_rank": 5,
  "album_count": 34,
  "artist_name": "Taylor Swift",
  "single_count": 80,
  "spotify_link": "https://open.spotify.com/artist/06HL4z0CvFAxyc27GXpf02",
  "latest_release": {
    "type": "Album",
    "title": "The Life of a Showgirl: The Encore",
    "release_date": "2026-09-25",
    "spotify_link": "https://open.spotify.com/album/4hF2gTGuPYlykYuphDxi8J"
  },
  "popular_tracks": [
    {
      "album": "The Life of a Showgirl",
      "title": "The Fate of Ophelia",
      "length": "3:46",
      "track_id": "53iuhJlwXhSER5J2IYYv1W",
      "length_ms": 226073,
      "play_count": 1694932432,
      "spotify_link": "https://open.spotify.com/track/53iuhJlwXhSER5J2IYYv1W"
    },
    {
      "album": "1989",
      "title": "Blank Space",
      "length": "3:51",
      "track_id": "1p80LdxRV74UKvL8gnD7ky",
      "length_ms": 231826,
      "play_count": 2614612868,
      "spotify_link": "https://open.spotify.com/track/1p80LdxRV74UKvL8gnD7ky"
    },
    {
      "album": "The Life of a Showgirl",
      "title": "Opalite",
      "length": "3:55",
      "track_id": "3yWuTOYDztXjZxdE2cIRUa",
      "length_ms": 235355,
      "play_count": 889991339,
      "spotify_link": "https://open.spotify.com/track/3yWuTOYDztXjZxdE2cIRUa"
    }
  ],
  "artist_image_link": "https://i.scdn.co/image/ab6761610000e5eb12184bdd29403de54cb9d9c7",
  "monthly_listeners": 103505973
}
```

### Get playlist

Operation `get_playlist`, version 1. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.

Get the songs and public details of a Spotify playlist by name or link. Returns up to 500 songs in playlist order.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `playlist` | string | yes | `"https://open.spotify.com/playlist/37i9dQZF1DWWQRwui0ExPn"` | A public playlist name or Spotify playlist link, for example RapCaviar or https://open.spotify.com/playlist/37i9dQZF1DX0XUsuxWHRQd. |
| `max_songs` | integer | no | `120` | Maximum songs to include, for example 100 (up to 500). |

**Input schema**

```json
{
  "type": "object",
  "required": [
    "playlist"
  ],
  "properties": {
    "playlist": {
      "type": "string",
      "description": "A public playlist name or Spotify playlist link, for example RapCaviar or https://open.spotify.com/playlist/37i9dQZF1DX0XUsuxWHRQd.",
      "examples": [
        "https://open.spotify.com/playlist/37i9dQZF1DWWQRwui0ExPn",
        "RapCaviar"
      ]
    },
    "max_songs": {
      "type": "integer",
      "default": 100,
      "maximum": 500,
      "minimum": 1,
      "description": "Maximum songs to include, for example 100 (up to 500).",
      "x-fous-developer": true,
      "examples": [
        120
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "playlist": "https://open.spotify.com/playlist/37i9dQZF1DWWQRwui0ExPn",
      "max_songs": 120
    },
    {
      "playlist": "RapCaviar"
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `owner` | string or null | `"Spotify"` |  |
| `songs` | array |  |  |
| `songs[].album` | string or null | `"Marinara"` |  |
| `songs[].title` | string or null | `"Marinara"` |  |
| `songs[].length` | string or null | `"1:53"` |  |
| `songs[].artists` | string or null | `"rden.96"` |  |
| `songs[].position` | integer | `1` |  |
| `songs[].track_id` | string or null | `"7uI6R3KoJWxuXjvBHIr5lW"` |  |
| `songs[].song_link` | string or null | `"https://open.spotify.com/track/7uI6R3KoJWxuXjvBHIr5lW"` |  |
| `songs[].date_added` | string or null | `"2026-09-25"` | Date added, YYYY-MM-DD when available. |
| `followers` | integer or null | `5517453` |  |
| `description` | string or null | `"chill beats, lofi vibes, new tracks every week..."` |  |
| `playlist_id` | string | `"37i9dQZF1DWWQRwui0ExPn"` |  |
| `spotify_link` | string | `"https://open.spotify.com/playlist/37i9dQZF1DWWQRwui0ExPn"` |  |
| `total_length` | string or null | `"8 hr 29 min"` | Total duration of all songs in the playlist when available. |
| `playlist_name` | string | `"lofi beats"` |  |
| `number_of_songs` | integer | `229` |  |
| `cover_image_link` | string or null | `"https://i.scdn.co/image/ab67706f00000002266beb50b0032b0f140a749e"` |  |

**Example input**

```json
{
  "playlist": "https://open.spotify.com/playlist/37i9dQZF1DWWQRwui0ExPn",
  "max_songs": 120
}
```

**Example output**

```json
{
  "owner": "Spotify",
  "songs": [
    {
      "album": "Marinara",
      "title": "Marinara",
      "length": "1:53",
      "artists": "rden.96",
      "position": 1,
      "track_id": "7uI6R3KoJWxuXjvBHIr5lW",
      "song_link": "https://open.spotify.com/track/7uI6R3KoJWxuXjvBHIr5lW",
      "date_added": "2026-09-25"
    },
    {
      "album": "Close Up",
      "title": "Close Up",
      "length": "2:13",
      "artists": "Audio Sculptor",
      "position": 2,
      "track_id": "3nLvd6qsfFRcMTVyZbb6vd",
      "song_link": "https://open.spotify.com/track/3nLvd6qsfFRcMTVyZbb6vd",
      "date_added": "2026-09-25"
    },
    {
      "album": "Shelter",
      "title": "Shelter",
      "length": "2:27",
      "artists": "Floating Basket",
      "position": 3,
      "track_id": "0hXawbgaDuD2ANxbH6tsl2",
      "song_link": "https://open.spotify.com/track/0hXawbgaDuD2ANxbH6tsl2",
      "date_added": "2026-09-25"
    }
  ],
  "followers": 5517453,
  "description": "chill beats, lofi vibes, new tracks every week...",
  "playlist_id": "37i9dQZF1DWWQRwui0ExPn",
  "spotify_link": "https://open.spotify.com/playlist/37i9dQZF1DWWQRwui0ExPn",
  "total_length": "8 hr 29 min",
  "playlist_name": "lofi beats",
  "number_of_songs": 229,
  "cover_image_link": "https://i.scdn.co/image/ab67706f00000002266beb50b0032b0f140a749e"
}
```

### Get song

Operation `get_song`, version 1. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.

Find a Spotify song by title, track link, or ID and return its public play count and details. Previews and ISRC may be unavailable for some tracks.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `song` | string | yes | `"https://open.spotify.com/track/3n3Ppam7vgaVa1iaRUc9Lp"` | Song title, Spotify track link, or track ID, for example Blinding Lights or https://open.spotify.com/track/0VjIjW4GlUZAMYd2vXMi3b. |
| `artist` | string | no | `"The Weeknd"` | Artist name to identify the song, for example The Weeknd. Omit to use the most-played matching track. |

**Input schema**

```json
{
  "type": "object",
  "required": [
    "song"
  ],
  "properties": {
    "song": {
      "type": "string",
      "description": "Song title, Spotify track link, or track ID, for example Blinding Lights or https://open.spotify.com/track/0VjIjW4GlUZAMYd2vXMi3b.",
      "examples": [
        "https://open.spotify.com/track/3n3Ppam7vgaVa1iaRUc9Lp",
        "Blinding Lights"
      ]
    },
    "artist": {
      "type": "string",
      "default": "",
      "description": "Artist name to identify the song, for example The Weeknd. Omit to use the most-played matching track.",
      "examples": [
        "The Weeknd"
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "song": "https://open.spotify.com/track/3n3Ppam7vgaVa1iaRUc9Lp"
    },
    {
      "song": "Blinding Lights",
      "artist": "The Weeknd"
    },
    {
      "song": "Blinding Lights"
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `album` | string or null | `"Hot Fuss"` | Album name. |
| `title` | string | `"Mr. Brightside"` | Song title. |
| `length` | string | `"3:42"` | Track length (m:ss). |
| `artists` | array |  | Performing artists. |
| `explicit` | string | `"no"` | Whether the track is marked explicit: yes or no. |
| `isrc_code` | string or null | `"GBFFP0300052"` | International Standard Recording Code. |
| `length_ms` | integer or null | `222200` | Track length in milliseconds. |
| `play_count` | integer or null | `3499759361` | Spotify track play count. |
| `preview_link` | string or null | `"https://p.scdn.co/mp3-preview/848b1bd5544e82f62f9cfcec65362d0f5369781f"` | 30-second preview link, if provided. |
| `release_date` | string or null | `"2004-06-15"` | Album release date (YYYY-MM-DD). |
| `spotify_link` | string | `"https://open.spotify.com/track/3n3Ppam7vgaVa1iaRUc9Lp"` | Spotify track page link. |
| `track_number` | integer or null | `2` | Track number on the album. |
| `cover_image_link` | string or null | `"https://i.scdn.co/image/ab67616d0000b2739c284a6855f4945dc5a3cd73"` | Cover image link. |
| `spotify_track_id` | string | `"3n3Ppam7vgaVa1iaRUc9Lp"` | Spotify track ID. |

**Example input**

```json
{
  "song": "https://open.spotify.com/track/3n3Ppam7vgaVa1iaRUc9Lp"
}
```

**Example output**

```json
{
  "album": "Hot Fuss",
  "title": "Mr. Brightside",
  "length": "3:42",
  "artists": [
    "The Killers"
  ],
  "explicit": "no",
  "isrc_code": "GBFFP0300052",
  "length_ms": 222200,
  "play_count": 3499759361,
  "preview_link": "https://p.scdn.co/mp3-preview/848b1bd5544e82f62f9cfcec65362d0f5369781f",
  "release_date": "2004-06-15",
  "spotify_link": "https://open.spotify.com/track/3n3Ppam7vgaVa1iaRUc9Lp",
  "track_number": 2,
  "cover_image_link": "https://i.scdn.co/image/ab67616d0000b2739c284a6855f4945dc5a3cd73",
  "spotify_track_id": "3n3Ppam7vgaVa1iaRUc9Lp"
}
```

### List top podcasts

Operation `list_top_podcasts`, version 1. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.

List top or trending podcasts in a country, in chart order, with rank, movement, publisher, artwork and Spotify link. Category charts are available in selected countries only. Spotify supplies movement direction but not the number of places moved, so that count is unavailable for moves.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `chart` | string | no | `"top_podcasts"` | Top podcasts or trending podcasts; for example, trending. Defaults to top_podcasts. |
| `country` | string | no | `"United States"` | Country name or two-letter code, such as United States or US. Defaults to United States. |
| `category` | string | no | `"Comedy"` | Top podcast category, such as Comedy, True Crime, or Business. Use all for the overall chart. Only applies to top_podcasts. |
| `max_results` | integer | no | `5` | Maximum podcasts to return, from 1 to 50; for example, 10. Defaults to 50. |

**Input schema**

```json
{
  "type": "object",
  "properties": {
    "chart": {
      "enum": [
        "top_podcasts",
        "trending"
      ],
      "type": "string",
      "default": "top_podcasts",
      "description": "Top podcasts or trending podcasts; for example, trending. Defaults to top_podcasts.",
      "examples": [
        "top_podcasts",
        "trending"
      ]
    },
    "country": {
      "type": "string",
      "default": "United States",
      "description": "Country name or two-letter code, such as United States or US. Defaults to United States.",
      "examples": [
        "United States",
        "United Kingdom",
        "Australia"
      ]
    },
    "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.",
      "examples": [
        "Comedy",
        "True Crime"
      ]
    },
    "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.",
      "x-fous-developer": true,
      "examples": [
        5,
        3,
        4
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "chart": "top_podcasts",
      "country": "United States",
      "category": "Comedy",
      "max_results": 5
    },
    {
      "chart": "trending",
      "country": "United Kingdom",
      "max_results": 3
    },
    {
      "country": "Australia",
      "category": "True Crime",
      "max_results": 4
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `podcasts` | array |  | Podcasts in chart order. |
| `podcasts[].rank` | integer | `1` |  |
| `podcasts[].movement` | string | `"same"` |  |
| `podcasts[].publisher` | string or null | `"Joe Rogan"` |  |
| `podcasts[].spotify_url` | string | `"https://open.spotify.com/show/4rOoJ6Egrf8K2IrywzwOMk"` |  |
| `podcasts[].places_moved` | integer or null | `0` | Zero when unchanged; null if the chart does not publish a number. |
| `podcasts[].podcast_name` | string | `"The Joe Rogan Experience"` |  |
| `podcasts[].cover_image_url` | string or null | `"https://i.scdn.co/image/ab67656300005f1fa5906ae450ffdace2b4bac41"` |  |

**Example input**

```json
{
  "chart": "top_podcasts",
  "country": "United States",
  "category": "Comedy",
  "max_results": 5
}
```

**Example output**

```json
{
  "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/ab67656300005f1fa5906ae450ffdace2b4bac41"
    },
    {
      "rank": 2,
      "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"
    },
    {
      "rank": 3,
      "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"
    }
  ]
}
```

### Search music

Operation `search_music`, version 1. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.

Search Spotify for songs, artists, albums, playlists, or podcasts by keywords, in Spotify’s result order. Release dates are included when Spotify gives a full date; country preferences may be limited by Spotify’s anonymous visitor region.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `type` | string | no | `"playlists"` | Kind of result, such as songs. |
| `query` | string | yes | `"lofi study"` | Words to search for, such as Adele Hello. |
| `country` | string | no | `"United States"` | Country name or two-letter code, such as United States or GB. |
| `max_results` | integer | no | `12` | Maximum number of results, such as 10. |

**Input schema**

```json
{
  "type": "object",
  "required": [
    "query"
  ],
  "properties": {
    "type": {
      "enum": [
        "songs",
        "artists",
        "albums",
        "playlists",
        "podcasts"
      ],
      "type": "string",
      "default": "songs",
      "description": "Kind of result, such as songs.",
      "examples": [
        "playlists",
        "songs",
        "albums"
      ]
    },
    "query": {
      "type": "string",
      "minLength": 1,
      "description": "Words to search for, such as Adele Hello.",
      "examples": [
        "lofi study",
        "Adele Hello",
        "Adele"
      ]
    },
    "country": {
      "type": "string",
      "default": "United States",
      "description": "Country name or two-letter code, such as United States or GB.",
      "examples": [
        "United States"
      ]
    },
    "max_results": {
      "type": "integer",
      "default": 10,
      "maximum": 50,
      "minimum": 1,
      "description": "Maximum number of results, such as 10.",
      "x-fous-developer": true,
      "examples": [
        12,
        10,
        5
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "type": "playlists",
      "query": "lofi study",
      "max_results": 12
    },
    {
      "type": "songs",
      "query": "Adele Hello",
      "country": "United States",
      "max_results": 10
    },
    {
      "type": "albums",
      "query": "Adele",
      "max_results": 10
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `results` | array |  | Matches in Spotify search order. |
| `results[].name` | string | `"chill lofi study beats"` | Result title. |
| `results[].type` | string | `"playlist"` | Kind of Spotify item. |
| `results[].album` | string or null | `"25"` | Album title for a song. |
| `results[].owner` | string or null | `"Spotify"` | Playlist owner. |
| `results[].length` | string or null | `"4:55"` | Song duration in m:ss. |
| `results[].artists` | string or null | `"Adele"` | Artist names for songs and albums. |
| `results[].publisher` | string or null | `"Spotify Studios"` | Podcast publisher. |
| `results[].image_link` | string or null | `"https://i.scdn.co/image/ab67706f000000021498ddc160581579f9b55979"` | Cover or artist image link. |
| `results[].spotify_id` | string | `"37i9dQZF1DX8Uebhn9wzrS"` | Spotify item ID. |
| `results[].release_date` | string or null | `"2015-11-20"` | Full song or album release date, when available. |
| `results[].spotify_link` | string | `"https://open.spotify.com/playlist/37i9dQZF1DX8Uebhn9wzrS"` | Spotify page for this item. |

**Example input**

```json
{
  "type": "playlists",
  "query": "lofi study",
  "max_results": 12
}
```

**Example output**

```json
{
  "results": [
    {
      "name": "chill lofi study beats",
      "type": "playlist",
      "album": null,
      "owner": "Spotify",
      "length": null,
      "artists": null,
      "publisher": null,
      "image_link": "https://i.scdn.co/image/ab67706f000000021498ddc160581579f9b55979",
      "spotify_id": "37i9dQZF1DX8Uebhn9wzrS",
      "release_date": null,
      "spotify_link": "https://open.spotify.com/playlist/37i9dQZF1DX8Uebhn9wzrS"
    },
    {
      "name": "Lofi Study 2026",
      "type": "playlist",
      "album": null,
      "owner": "Lofi Girl",
      "length": null,
      "artists": null,
      "publisher": null,
      "image_link": "https://image-cdn-fa.spotifycdn.com/image/ab67706c0000da84e8fcb214bcd7d054018d9fe4",
      "spotify_id": "6zCID88oNjNv9zx6puDHKj",
      "release_date": null,
      "spotify_link": "https://open.spotify.com/playlist/6zCID88oNjNv9zx6puDHKj"
    },
    {
      "name": "lofi autumn beats 🍁🍂",
      "type": "playlist",
      "album": null,
      "owner": "Spotify",
      "length": null,
      "artists": null,
      "publisher": null,
      "image_link": "https://i.scdn.co/image/ab67706f00000002409a98a40d38e6c16f39d796",
      "spotify_id": "37i9dQZF1DX9O8HCSWScgZ",
      "release_date": null,
      "spotify_link": "https://open.spotify.com/playlist/37i9dQZF1DX9O8HCSWScgZ"
    }
  ]
}
```

## Quick start

Replace `YOUR_API_KEY` with a Fous API key. To create one, open Developers at the bottom of Fous Studio, turn on Developer mode, then go to API keys (https://app.fous.com/keys). Change the values in `input` to run the same tool on new data.

```bash
curl 'https://api.fous.com/v1/query' \
  --fail-with-body --silent --show-error --max-time 180 \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H 'Content-Type: application/json' \
  --data-raw '{
  "api": "@spotify",
  "visibility": "public",
  "operation": "get_album",
  "version": 1,
  "input": {
    "album": "https://open.spotify.com/album/0ETFjACtuP2ADo6LFhL6HN"
  },
  "response": {
    "format": "json"
  }
}'
```

```python
# Save as fous.py and run with python3 fous.py. No packages needed.
import json
import urllib.error
import urllib.request

api_key = "YOUR_API_KEY"

body = json.loads("{\n  \"api\": \"@spotify\",\n  \"visibility\": \"public\",\n  \"operation\": \"get_album\",\n  \"version\": 1,\n  \"input\": {\n    \"album\": \"https://open.spotify.com/album/0ETFjACtuP2ADo6LFhL6HN\"\n  },\n  \"response\": {\n    \"format\": \"json\"\n  }\n}")
request = urllib.request.Request(
    "https://api.fous.com/v1/query",
    data=json.dumps(body).encode("utf-8"),
    headers={
        "Authorization": f"Bearer {api_key}",
        "Content-Type": "application/json",
    },
    method="POST",
)
try:
    with urllib.request.urlopen(request, timeout=180) as response:
        result = json.load(response)
except urllib.error.HTTPError as error:
    raise RuntimeError(f"HTTP {error.code}: {error.read().decode('utf-8', errors='replace')}") from error
if result.get("success") is False:
    raise RuntimeError(result.get("error", {}).get("message", "Request failed"))
print(json.dumps(result["data"]["output"], indent=2))
```

```typescript
// Save as fous.mts and run with npx tsx fous.mts.
const apiKey = "YOUR_API_KEY";

const response = await fetch("https://api.fous.com/v1/query", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${apiKey}`,
    "Content-Type": "application/json",
  },
  signal: AbortSignal.timeout(180_000),
  body: JSON.stringify({
  "api": "@spotify",
  "visibility": "public",
  "operation": "get_album",
  "version": 1,
  "input": {
    "album": "https://open.spotify.com/album/0ETFjACtuP2ADo6LFhL6HN"
  },
  "response": {
    "format": "json"
  }
}),
});
type ApiResult = { success: boolean; data?: { output: unknown }; error?: { message: string } };
const result: ApiResult = await response.json();
if (!response.ok || result.success === false) {
  throw new Error(result.error?.message ?? `HTTP ${response.status}`);
}
if (!result.data) throw new Error("Missing API response data");
console.log(result.data.output);
```

## Use from an AI assistant

Connect this tool to Claude Code, Claude Desktop, Cursor, VS Code, Codex and any MCP client as its own MCP server. Each method is a typed tool whose arguments are the method’s input.

- Server URL: `https://api.fous.com/mcp/tools/spotify`
- Authorization: `Authorization: Bearer <Fous API key>`

**Tools**

- `get_album`: Get album. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.
- `get_artist`: Get artist. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.
- `get_playlist`: Get playlist. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.
- `get_song`: Get song. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.
- `list_top_podcasts`: List top podcasts. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.
- `search_music`: Search music. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.
- `fous_get_run`: the result of a run that was still going, by its `request_id`. Free.

Claude Code:

```bash
claude mcp add --scope user --transport http fous-spotify https://api.fous.com/mcp/tools/spotify --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"
```

To give the assistant every tool, connect `https://api.fous.com/mcp`: it finds one with `fous_search_tools` and runs it with `fous_run_tool`. Setup for other clients: https://fous.com/llms-full.txt.

## Use cases

- Compare artist follower counts and monthly listeners.
- Review public play counts for songs and albums.
- Track songs in playlist order.
- Find music and podcasts by keyword.
- Monitor top or trending podcast charts by country.

## FAQ

### Can I run it with my own inputs?

Yes. Change the inputs in Studio and press Run, or send new inputs from your code, or ask a connected AI assistant.

### Can I call this Spotify tool as an API?

Yes. Send a POST request to /v1/query with your Fous API key and the inputs, and get JSON back.

### How much does it cost?

Each completed run costs 1 credit. Failed runs without a completed receipt are free; completed work can remain charged if delivery is interrupted. With pay as you go, a credit costs 1¢. Monthly plans cost less per credit.

### Do I need a Spotify account?

No. You only need a Fous account.

### How current is the data?

Fous gets the data from open.spotify.com when you run it. Some results are reused for up to 24 hours, and results that use your account or key are never reused. It was last verified on Oct 8, 2026.

### How many monthly listeners does an artist have?

Get artist returns an artist’s monthly listeners when you provide their name, Spotify link, or ID.

### What is a song’s public play count?

Get song returns a song’s public play count when you provide its title, Spotify track link, or ID.

### Which podcasts are trending in a country?

List top podcasts returns trending podcasts in chart order for a selected country.

## Related

- [Apple Podcasts API](https://fous.com/tools/apple-podcasts.md): Apple Podcasts returns chart listings, relevant show search results, show details with newest available episodes, and country-specific ratings and reviews; results are capped, and older or subscription episodes may be unavailable.
- [Deezer API](https://fous.com/tools/deezer.md): Deezer provides albums with ordered tracklists, song recording details, and current worldwide charts or official country-playlist tracks; previews and some tempo data may be unavailable or expire.
- [Apple Music API](https://fous.com/tools/apple-music.md): Apple Music returns albums, tracks, artist profiles, latest releases, top music, matching songs, and current charts; prices, previews, and older albums may be unavailable.
- [Last.fm API](https://fous.com/tools/last-fm.md): Last.fm provides listening statistics, artist profiles, discovery, up to 50 tracks or albums, similar artists without percentages, and upcoming events that may be absent.
- [SoundCloud API](https://fous.com/tools/soundcloud.md): SoundCloud lets people listen to and share music, find public tracks with play stats, and browse artists’ tracks, with popular lists limited to 30.
- [Genius API](https://fous.com/tools/genius.md): Genius provides lyrics, annotations, credits, and music knowledge, plus song stories, relationships, page details, and artist song lists by popularity or release date; dates and views may be unavailable.
- [Kworb API](https://fous.com/tools/kworb.md): Kworb provides published Spotify and YouTube music charts and tracked artist streaming totals; chart dates may lag, and daily streams or some views may be unavailable.
- [Bandcamp API](https://fous.com/tools/bandcamp.md): Bandcamp provides music albums and merchandise from artists and labels, with album details and prices and genre releases ordered by best-selling or new arrivals; availability details appear only when shown.
- [All Entertainment tools](https://fous.com/tools/category/entertainment)
