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
- OpenAPI
- Specification ↗
- Spec updated
- 2023-02-17
Make a first request
Replace the placeholders; the documentation says exactly where credentials go.
curl -X GET "https://api.spotify.com/v1/albums" \
-H "Accept: application/json" \
-H "Authorization: Bearer YOUR_TOKEN"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);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
| Method | Path | What it does |
|---|---|---|
| GET | /albums | Get Several Albums |
| GET | /albums/{id} | Get Album |
| GET | /albums/{id}/tracks | Get Album Tracks |
| GET | /artists | Get Several Artists |
| GET | /artists/{id} | Get Artist |
| GET | /artists/{id}/albums | Get Artist's Albums |
| GET | /artists/{id}/related-artists | Get Artist's Related Artists |
| GET | /artists/{id}/top-tracks | Get Artist's Top Tracks |
| GET | /audio-analysis/{id} | Get Track's Audio Analysis |
| GET | /audio-features | Get Tracks' Audio Features |
| GET | /audio-features/{id} | Get Track's Audio Features |
| GET | /audiobooks | Get Several Audiobooks |
| GET | /audiobooks/{id} | Get an Audiobook |
| GET | /audiobooks/{id}/chapters | Get Audiobook Chapters |
| GET | /browse/categories | Get Several Browse Categories |
| GET | /browse/categories/{category_id} | Get Single Browse Category |
| GET | /browse/categories/{category_id}/playlists | Get Category's Playlists |
| GET | /browse/featured-playlists | Get Featured Playlists |
| GET | /browse/new-releases | Get New Releases |
| GET | /chapters | Get Several Chapters |
| GET | /chapters/{id} | Get a Chapter |
| GET | /episodes | Get Several Episodes |
| GET | /episodes/{id} | Get Episode |
| GET | /markets | Get Available Markets |
| GET | /me | Get Current User's Profile |
| GET | /me/albums | Get User's Saved Albums |
| PUT | /me/albums | Save Albums for Current User |
| DELETE | /me/albums | Remove Users' Saved Albums |
| GET | /me/albums/contains | Check User's Saved Albums |
| GET | /me/audiobooks | Get User's Saved Audiobooks |
| PUT | /me/audiobooks | Save Audiobooks for Current User |
| DELETE | /me/audiobooks | Remove User's Saved Audiobooks |
| GET | /me/audiobooks/contains | Check User's Saved Audiobooks |
| GET | /me/episodes | Get User's Saved Episodes |
| PUT | /me/episodes | Save Episodes for Current User |
| DELETE | /me/episodes | Remove User's Saved Episodes |
| GET | /me/episodes/contains | Check User's Saved Episodes |
| GET | /me/following | Get Followed Artists |
| PUT | /me/following | Follow Artists or Users |
| DELETE | /me/following | Unfollow Artists or Users |
| GET | /me/following/contains | Check If User Follows Artists or Users |
| GET | /me/player | Get Playback State |
| PUT | /me/player | Transfer Playback |
| GET | /me/player/currently-playing | Get Currently Playing Track |
| GET | /me/player/devices | Get Available Devices |
| POST | /me/player/next | Skip To Next |
| PUT | /me/player/pause | Pause Playback |
| PUT | /me/player/play | Start/Resume Playback |
| POST | /me/player/previous | Skip To Previous |
| GET | /me/player/queue | Get the User's Queue |
| POST | /me/player/queue | Add Item to Playback Queue |
| GET | /me/player/recently-played | Get Recently Played Tracks |
| PUT | /me/player/repeat | Set Repeat Mode |
| PUT | /me/player/seek | Seek To Position |
| PUT | /me/player/shuffle | Toggle Playback Shuffle |
| PUT | /me/player/volume | Set Playback Volume |
| GET | /me/playlists | Get Current User's Playlists |
| GET | /me/shows | Get User's Saved Shows |
| PUT | /me/shows | Save Shows for Current User |
| DELETE | /me/shows | Remove User's Saved Shows |
| GET | /me/shows/contains | Check User's Saved Shows |
| GET | /me/top/{type} | Get User's Top Items |
| GET | /me/tracks | Get User's Saved Tracks |
| PUT | /me/tracks | Save Tracks for Current User |
| DELETE | /me/tracks | Remove User's Saved Tracks |
| GET | /me/tracks/contains | Check User's Saved Tracks |
| GET | /playlists/{playlist_id} | Get Playlist |
| PUT | /playlists/{playlist_id} | Change Playlist Details |
| PUT | /playlists/{playlist_id}/followers | Follow Playlist |
| DELETE | /playlists/{playlist_id}/followers | Unfollow Playlist |
| GET | /playlists/{playlist_id}/followers/contains | Check if Users Follow Playlist |
| GET | /playlists/{playlist_id}/images | Get Playlist Cover Image |
| PUT | /playlists/{playlist_id}/images | Add Custom Playlist Cover Image |
| GET | /playlists/{playlist_id}/tracks | Get Playlist Items |
| POST | /playlists/{playlist_id}/tracks | Add Items to Playlist |
| PUT | /playlists/{playlist_id}/tracks | Update Playlist Items |
| DELETE | /playlists/{playlist_id}/tracks | Remove Playlist Items |
| GET | /recommendations | Get Recommendations |
| GET | /recommendations/available-genre-seeds | Get Available Genre Seeds |
| GET | /search | Search for Item |
| GET | /shows | Get Several Shows |
| GET | /shows/{id} | Get Show |
| GET | /shows/{id}/episodes | Get Show Episodes |
| GET | /tracks | Get Several Tracks |
| GET | /tracks/{id} | Get Track |
| GET | /users/{user_id} | Get User's Profile |
| GET | /users/{user_id}/playlists | Get User's Playlists |
| POST | /users/{user_id}/playlists | Create 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.
Similar media APIs
Compare alternatives →SiriKit Cloud Media
MediaAdd intelligent features with Apple Intelligence, machine learning, and related technologies.
Radio & Music Services
MediaWe 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.
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 "de" as header, you'll get <em>"Wien, Österreich"</em> instead of <em>"Vienna, Austria"</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>"Nueva York, Estados Unidos"</em> instead of <em>"New York, United States"</em> if you pass "es" 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>
NBA Stats API
MediaThe destination for current and historic NBA statistics.
APOD
MediaThis 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
Wikimedia
MediaThis 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.
Listed from APIs.guru (CC0).