Skip to content

Spotify Web API API

by spotify.com

OAuthHTTPSMedia
Open documentation ↗

Overview

You can use Spotify's Web API to discover music and podcasts, manage your Spotify library, control audio playback, and much more. Browse our available Web API endpoints using the sidebar at left, or via the navigation bar on top of this page on smaller screens. In order to make successful Web API requests your app will need a valid access token. One can be obtained through <a href="https://developer.spotify.com/documentation/general/guides/authorization-guide/">OAuth 2.0</a>. The base URI for all Web API requests is `https://api.spotify.com/v1`. Need help? See our <a href="https://developer.spotify.com/documentation/web-api/guides/">Web API guides</a> for more information, or visit the <a href="https://community.spotify.com/t5/Spotify-for-Developers/bd-p/Spotify_Developer">Spotify for Developers community forum</a> to ask questions and connect with other developers.

Spotify Web API is a media API from spotify.com. Requests are authenticated with OAuth. It is served over HTTPS. Its OpenAPI description documents 88 endpoints.

At a glance

Authentication
OAuth
HTTPS
Yes
CORS
Unknown
Category
Media
Base URL
https://api.spotify.com/v1
Version
1.0.0
Endpoints
88
Spec updated
2023-02-17

Make a first request

Replace the placeholders; the documentation says exactly where credentials go.

cURL
curl -X GET "https://api.spotify.com/v1/albums" \
  -H "Accept: application/json" \
  -H "Authorization: Bearer YOUR_TOKEN"
JavaScript
const response = await fetch("https://api.spotify.com/v1/albums", {
  method: "GET",
  headers: {
    "Accept": "application/json",
    "Authorization": "Bearer YOUR_TOKEN",
  },
});
const data = await response.json();
console.log(data);
Python
import requests

response = requests.request(
    "GET",
    "https://api.spotify.com/v1/albums",
    headers={
    "Accept": "application/json",
    "Authorization": "Bearer YOUR_TOKEN",
    },
    timeout=30,
)
print(response.json())

Endpoints

MethodPathWhat it does
GET/albumsGet Several Albums
GET/albums/{id}Get Album
GET/albums/{id}/tracksGet Album Tracks
GET/artistsGet Several Artists
GET/artists/{id}Get Artist
GET/artists/{id}/albumsGet Artist's Albums
GET/artists/{id}/related-artistsGet Artist's Related Artists
GET/artists/{id}/top-tracksGet Artist's Top Tracks
GET/audio-analysis/{id}Get Track's Audio Analysis
GET/audio-featuresGet Tracks' Audio Features
GET/audio-features/{id}Get Track's Audio Features
GET/audiobooksGet Several Audiobooks
GET/audiobooks/{id}Get an Audiobook
GET/audiobooks/{id}/chaptersGet Audiobook Chapters
GET/browse/categoriesGet Several Browse Categories
GET/browse/categories/{category_id}Get Single Browse Category
GET/browse/categories/{category_id}/playlistsGet Category's Playlists
GET/browse/featured-playlistsGet Featured Playlists
GET/browse/new-releasesGet New Releases
GET/chaptersGet Several Chapters
GET/chapters/{id}Get a Chapter
GET/episodesGet Several Episodes
GET/episodes/{id}Get Episode
GET/marketsGet Available Markets
GET/meGet Current User's Profile
GET/me/albumsGet User's Saved Albums
PUT/me/albumsSave Albums for Current User
DELETE/me/albumsRemove Users' Saved Albums
GET/me/albums/containsCheck User's Saved Albums
GET/me/audiobooksGet User's Saved Audiobooks
PUT/me/audiobooksSave Audiobooks for Current User
DELETE/me/audiobooksRemove User's Saved Audiobooks
GET/me/audiobooks/containsCheck User's Saved Audiobooks
GET/me/episodesGet User's Saved Episodes
PUT/me/episodesSave Episodes for Current User
DELETE/me/episodesRemove User's Saved Episodes
GET/me/episodes/containsCheck User's Saved Episodes
GET/me/followingGet Followed Artists
PUT/me/followingFollow Artists or Users
DELETE/me/followingUnfollow Artists or Users
GET/me/following/containsCheck If User Follows Artists or Users
GET/me/playerGet Playback State
PUT/me/playerTransfer Playback
GET/me/player/currently-playingGet Currently Playing Track
GET/me/player/devicesGet Available Devices
POST/me/player/nextSkip To Next
PUT/me/player/pausePause Playback
PUT/me/player/playStart/Resume Playback
POST/me/player/previousSkip To Previous
GET/me/player/queueGet the User's Queue
POST/me/player/queueAdd Item to Playback Queue
GET/me/player/recently-playedGet Recently Played Tracks
PUT/me/player/repeatSet Repeat Mode
PUT/me/player/seekSeek To Position
PUT/me/player/shuffleToggle Playback Shuffle
PUT/me/player/volumeSet Playback Volume
GET/me/playlistsGet Current User's Playlists
GET/me/showsGet User's Saved Shows
PUT/me/showsSave Shows for Current User
DELETE/me/showsRemove User's Saved Shows
GET/me/shows/containsCheck User's Saved Shows
GET/me/top/{type}Get User's Top Items
GET/me/tracksGet User's Saved Tracks
PUT/me/tracksSave Tracks for Current User
DELETE/me/tracksRemove User's Saved Tracks
GET/me/tracks/containsCheck User's Saved Tracks
GET/playlists/{playlist_id}Get Playlist
PUT/playlists/{playlist_id}Change Playlist Details
PUT/playlists/{playlist_id}/followersFollow Playlist
DELETE/playlists/{playlist_id}/followersUnfollow Playlist
GET/playlists/{playlist_id}/followers/containsCheck if Users Follow Playlist
GET/playlists/{playlist_id}/imagesGet Playlist Cover Image
PUT/playlists/{playlist_id}/imagesAdd Custom Playlist Cover Image
GET/playlists/{playlist_id}/tracksGet Playlist Items
POST/playlists/{playlist_id}/tracksAdd Items to Playlist
PUT/playlists/{playlist_id}/tracksUpdate Playlist Items
DELETE/playlists/{playlist_id}/tracksRemove Playlist Items
GET/recommendationsGet Recommendations
GET/recommendations/available-genre-seedsGet Available Genre Seeds
GET/searchSearch for Item
GET/showsGet Several Shows
GET/shows/{id}Get Show
GET/shows/{id}/episodesGet Show Episodes
GET/tracksGet Several Tracks
GET/tracks/{id}Get Track
GET/users/{user_id}Get User's Profile
GET/users/{user_id}/playlistsGet User's Playlists
POST/users/{user_id}/playlistsCreate Playlist

Questions

Does the Spotify Web API API need an API key?

Yes. The Spotify Web API API uses OAuth authentication; the documentation explains how to get credentials.

Does the Spotify Web API API support HTTPS?

Yes, the Spotify Web API API is served over HTTPS.

How many endpoints does the Spotify Web API API have?

Its OpenAPI description lists 88 endpoints in version 1.0.0. All of them are shown on this page.

What are alternatives to the Spotify Web API API?

Other Media APIs include SiriKit Cloud Media, Radio & Music Services, setlist.fm API, NBA Stats API, APOD.

Compare alternatives →

SiriKit Cloud Media

Media

Add intelligent features with Apple Intelligence, machine learning, and related technologies.

No auth6 endpoints

Radio & Music Services

Media

We encapsulate Radio & Music business logic for iPlayer Radio and BBC Music products on all platforms. We add value by reliably providing the right blend of metadata needed by clients.

No auth75 endpoints

setlist.fm API

Media

<p> The setlist.fm API has been designed to give you easy access to setlist data in order to build fancy websites and other applications. Before starting to use the API, be sure to ... <ol> <li>... understand how setlist.fm works (the <a href="https://www.setlist.fm/faq">FAQ</a> and the <a href="https://www.setlist.fm/guidelines">Guidelines</a> are a good starting point),</li> <li>... read this documentation carefully and</li> <li>... <a href="https://www.setlist.fm/settings/api">apply for an API key</a> (link for logged in users only) - if you're no registered user yet, then <a href="https://www.setlist.fm/signup">register first</a> (it's free).</li> </ol> </p> <p> If this documentation isn't enough or if you've got other things you'd like to tell us about the API, visit the <a href="https://www.setlist.fm/forum/setlistfm/setlistfm-api">API Forum</a>. </p> <p> Note that the setlist.fm API is, according to the <a href="https://www.setlist.fm/help/api-terms">API terms of service</a>, only free for non-commercial projects. If you're interested in using the API for commercial purposes, <a href="https://www.setlist.fm/contact">contact us</a>. </p> <h2>About this Service</h2> <p> This service provides methods to get both setlists and components of setlists such as artists, cities, countries or venues. </p> <h2>Supported Content Types</h2> <p> The REST service currently supports XML (default) and JSON content. </p> <p> To receive a JSON response, set the <code>Accept</code> <a href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.1">header</a> to <em>application/json</em>. </p> <h2>Internationalization</h2> <p> <small>(Please note that this is an experimental feature and does not work for all cities!)</small> </p> <p> Most of the featured methods honor the <code>Accept-Language</code> <a href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.4">header</a>. This header is used for localizing cities and countries. The default language is English (en), but you can provide any of the languages Spanish (es), French (fr), German (de), Portuguese (pt), Turkish (tr), Italian (it) or Polish (pl). </p> <p> E.g. if you search a setlist for a concert that took place in Vienna and you pass &quot;de&quot; as header, you'll get <em>&quot;Wien, &Ouml;sterreich&quot;</em> instead of <em>&quot;Vienna, Austria&quot;</em>.<br/> This also works if you use a different language than the country's native language. </p> <p> E.g. for a concert in New York, you'll get <em>&quot;Nueva York, Estados Unidos&quot;</em> instead of <em>&quot;New York, United States&quot;</em> if you pass &quot;es&quot; as language. </p> <h2>API Keys</h2> API keys (<a href="https://www.setlist.fm/settings/api">application form</a>) must be included in the request with the <code>x-api-key</code> header. <h2>Version History</h2> <table class="table table-bordered table-versions"> <thead> <tr> <th>Version</th> <th>Docs</th> <th>End of Service</th> </tr> </thead> <tbody> <tr> <td><strong>1.0</strong></td> <td><a href="/docs/1.0">Docs</a></td> <td>-</li> </tr> <tr> <td><strong>0.1</strong></td> <td></td> <td>December 31, 2017</li> </tr> </tbody> </table>

No auth15 endpoints

NBA Stats API

Media

The destination for current and historic NBA statistics.

No auth91 endpoints

APOD

Media

This endpoint structures the APOD imagery and associated metadata so that it can be repurposed for other applications. In addition, if the concept_tags parameter is set to True, then keywords derived from the image explanation are returned. These keywords could be used as auto-generated hashtags for twitter or instagram feeds; but generally help with discoverability of relevant imagery

API key1 endpoints

Wikimedia

Media

This API provides cacheable and straightforward access to Wikimedia content and data, in machine-readable formats. ### Global Rules - Limit your clients to no more than 200 requests/s to this API. Each API endpoint's documentation may detail more specific usage limits. - Set a unique `User-Agent` or `Api-User-Agent` header that allows us to contact you quickly. Email addresses or URLs of contact pages work well. By using this API, you agree to Wikimedia's [Terms of Use](https://wikimediafoundation.org/wiki/Terms_of_Use) and [Privacy Policy](https://wikimediafoundation.org/wiki/Privacy_policy). Unless otherwise specified in the endpoint documentation below, content accessed via this API is licensed under the [CC-BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0/) and [GFDL](https://www.gnu.org/copyleft/fdl.html) licenses, and you irrevocably agree to release modifications or additions made through this API under these licenses. See https://www.mediawiki.org/wiki/REST_API for background and details. ### Endpoint documentation Please consult each endpoint's documentation for details on: - Licensing information for the specific type of content and data served via the endpoint. - Stability markers to inform you about development status and change policy, according to [our API version policy](https://www.mediawiki.org/wiki/API_versioning). - Endpoint specific usage limits.

API key35 endpoints

Listed from APIs.guru (CC0).