# Source: https://developer.spotify.com/documentation/web-api/concepts/rate-limits

# Rate Limits

- Rate Limits | Spotify for Developers[Skip to content]()[]()DocumentationDocumentationProducts[Web API]()
- [Web Playback SDK]()
- [Ads API]()
- [iOS]()
- [Android]()
- [Embeds]()
- [Commercial Hardware]()
- [Open Access]()
Guidelines- [Design]()
- [Accessibility]()
- [Legal]()
- [Community]()
0- DocumentationDocumentationProducts[Web API]()
- [Web Playback SDK]()
- [Ads API]()
- [iOS]()
- [Android]()
- [Embeds]()
- [Commercial Hardware]()
- [Open Access]()
Guidelines- [Design]()
- [Accessibility]()
- [Legal]()
- [Community]()
Web API

- [Overview]()
- [Getting started]()
- ConceptsConceptsConcepts[Access Token]()
- [API calls]()
- [Apps]()
- [Authorization]()
- [Redirect URIs]()
- [Playlists]()
- [Quota modes]()
- [Rate limits]()
- [Scopes]()
- [Spotify URIs and IDs]()
- [Track Relinking]()
- TutorialsTutorialsTutorials[Authorization code]()
- [Authorization code PKCE]()
- [Client credentials]()
- [Implicit grant [Deprecated]]()
- [Refreshing tokens]()
- [Migration: Implicit grant to Authorization code]()
- [Migration: Insecure redirect URI]()
- How-TosHow-TosHow-Tos[Display your Spotify profile data in a web app]()
Reference- AlbumsAlbumsAlbumsGet Album

- Get Several Albums

- Get Album Tracks

- Get User's Saved Albums

- Save Albums for Current User

- Remove Users' Saved Albums

- Check User's Saved Albums

- Get New Releases

- ArtistsArtistsArtistsGet Artist

- Get Several Artists

- Get Artist's Albums

- Get Artist's Top Tracks

- Get Artist's Related Artists

- AudiobooksAudiobooksAudiobooksGet an Audiobook

- Get Several Audiobooks

- Get Audiobook Chapters

- Get User's Saved Audiobooks

- Save Audiobooks for Current User

- Remove User's Saved Audiobooks

- Check User's Saved Audiobooks

- CategoriesCategoriesCategoriesGet Several Browse Categories

- Get Single Browse Category

- ChaptersChaptersChaptersGet a Chapter

- Get Several Chapters

- EpisodesEpisodesEpisodesGet Episode

- Get Several Episodes

- Get User's Saved Episodes

- Save Episodes for Current User

- Remove User's Saved Episodes

- Check User's Saved Episodes

- GenresGenresGenresGet Available Genre Seeds

- MarketsMarketsMarketsGet Available Markets

- PlayerPlayerPlayerGet Playback State

- Transfer Playback

- Get Available Devices

- Get Currently Playing Track

- Start/Resume Playback

- Pause Playback

- Skip To Next

- Skip To Previous

- Seek To Position

- Set Repeat Mode

- Set Playback Volume

- Toggle Playback Shuffle

- Get Recently Played Tracks

- Get the User's Queue

- Add Item to Playback Queue

- PlaylistsPlaylistsPlaylistsGet Playlist

- Change Playlist Details

- Get Playlist Items

- Update Playlist Items

- Add Items to Playlist

- Remove Playlist Items

- Get Current User's Playlists

- Get User's Playlists

- Create Playlist

- Get Featured Playlists

- Get Category's Playlists

- Get Playlist Cover Image

- Add Custom Playlist Cover Image

- SearchSearchSearchSearch for Item

- ShowsShowsShowsGet Show

- Get Several Shows

- Get Show Episodes

- Get User's Saved Shows

- Save Shows for Current User

- Remove User's Saved Shows

- Check User's Saved Shows

- TracksTracksTracksGet Track

- Get Several Tracks

- Get User's Saved Tracks

- Save Tracks for Current User

- Remove User's Saved Tracks

- Check User's Saved Tracks

- Get Several Tracks' Audio Features

- Get Track's Audio Features

- Get Track's Audio Analysis

- Get Recommendations

- UsersUsersUsersGet Current User's Profile

- Get User's Top Items

- Get User's Profile

- Follow Playlist

- Unfollow Playlist

- Get Followed Artists

- Follow Artists or Users

- Unfollow Artists or Users

- Check If User Follows Artists or Users

- Check if Current User Follows Playlist

Web API- [Overview]()
- [Getting started]()
- ConceptsConceptsConcepts[Access Token]()
- [API calls]()
- [Apps]()
- [Authorization]()
- [Redirect URIs]()
- [Playlists]()
- [Quota modes]()
- [Rate limits]()
- [Scopes]()
- [Spotify URIs and IDs]()
- [Track Relinking]()
- TutorialsTutorialsTutorials[Authorization code]()
- [Authorization code PKCE]()
- [Client credentials]()
- [Implicit grant [Deprecated]]()
- [Refreshing tokens]()
- [Migration: Implicit grant to Authorization code]()
- [Migration: Insecure redirect URI]()
- How-TosHow-TosHow-Tos[Display your Spotify profile data in a web app]()
Reference- AlbumsAlbumsAlbumsGet Album

- Get Several Albums

- Get Album Tracks

- Get User's Saved Albums

- Save Albums for Current User

- Remove Users' Saved Albums

- Check User's Saved Albums

- Get New Releases

- ArtistsArtistsArtistsGet Artist

- Get Several Artists

- Get Artist's Albums

- Get Artist's Top Tracks

- Get Artist's Related Artists

- AudiobooksAudiobooksAudiobooksGet an Audiobook

- Get Several Audiobooks

- Get Audiobook Chapters

- Get User's Saved Audiobooks

- Save Audiobooks for Current User

- Remove User's Saved Audiobooks

- Check User's Saved Audiobooks

- CategoriesCategoriesCategoriesGet Several Browse Categories

- Get Single Browse Category

- ChaptersChaptersChaptersGet a Chapter

- Get Several Chapters

- EpisodesEpisodesEpisodesGet Episode

- Get Several Episodes

- Get User's Saved Episodes

- Save Episodes for Current User

- Remove User's Saved Episodes

- Check User's Saved Episodes

- GenresGenresGenresGet Available Genre Seeds

- MarketsMarketsMarketsGet Available Markets

- PlayerPlayerPlayerGet Playback State

- Transfer Playback

- Get Available Devices

- Get Currently Playing Track

- Start/Resume Playback

- Pause Playback

- Skip To Next

- Skip To Previous

- Seek To Position

- Set Repeat Mode

- Set Playback Volume

- Toggle Playback Shuffle

- Get Recently Played Tracks

- Get the User's Queue

- Add Item to Playback Queue

- PlaylistsPlaylistsPlaylistsGet Playlist

- Change Playlist Details

- Get Playlist Items

- Update Playlist Items

- Add Items to Playlist

- Remove Playlist Items

- Get Current User's Playlists

- Get User's Playlists

- Create Playlist

- Get Featured Playlists

- Get Category's Playlists

- Get Playlist Cover Image

- Add Custom Playlist Cover Image

- SearchSearchSearchSearch for Item

- ShowsShowsShowsGet Show

- Get Several Shows

- Get Show Episodes

- Get User's Saved Shows

- Save Shows for Current User

- Remove User's Saved Shows

- Check User's Saved Shows

- TracksTracksTracksGet Track

- Get Several Tracks

- Get User's Saved Tracks

- Save Tracks for Current User

- Remove User's Saved Tracks

- Check User's Saved Tracks

- Get Several Tracks' Audio Features

- Get Track's Audio Features

- Get Track's Audio Analysis

- Get Recommendations

- UsersUsersUsersGet Current User's Profile

- Get User's Top Items

- Get User's Profile

- Follow Playlist

- Unfollow Playlist

- Get Followed Artists

- Follow Artists or Users

- Unfollow Artists or Users

- Check If User Follows Artists or Users

- Check if Current User Follows Playlist

# Rate Limits  
If your app makes a lot of Web API requests in a short period of time then it
may receive a 429 error response from Spotify. This indicates that your app has
reached our Web API *rate limit*. The Web API has rate limits in order to keep
our API reliable and to help third-party developers use the API in a
responsible way.

## Spotify's rate limit

Spotify's API rate limit is calculated based on the number of calls that your
app makes to Spotify in a rolling 30 second window. If your app exceeds the
rate limit for your app then you'll begin to see 429 error responses from
Spotify's Web API, and you may hear from users about unexpected behavior that
they have noticed while using your app. The limit varies depending on whether
your app is in development mode or extended quota mode.

In the chart above, the app will receive an error response for the periods of
time where the 30 second window exceeds the example rate limit in red.

### Exceptions

Be aware that Spotify does sometimes implement other limits outside of the
API-wide rate limit. A few API endpoints, like the playlist image upload
endpoint, have a custom rate limit that may differ from your app-wide rate
limit. See the body of your API response from Spotify for more information
about the error that you have received.

## Building your app with rate limits in mind

Every app is different and you'll want to plan your app architecture and user
experience with rate limits in mind. Here are a few techniques that can help
you design an app that works well with Spotify's Web API rate limits:

### Apply for extended quota mode

If your app is meant to be used by many Spotify users at the same time then you
should apply for extended quota
mode.
Apps in this mode have a rate limit that is much higher than apps in
development mode, the default mode for new apps. You can apply for a quota
extension by opening your app detail page in the Developer
Dashboard and tapping on the Request Extension link.

### Develop a backoff-retry strategy

When your app has been rate limited it will receive a 429 error response from
Spotify. Your app can use this information as a cue to slow down the number of
API requests that it makes to the Web API. The header of the 429 response will
normally include a `Retry-After` header with a value in seconds. Consider
waiting for the number of seconds specified in `Retry-After` before your app
calls the Web API again.

### Use batch APIs to your advantage

Spotify has some APIs — like the Get Multiple
Albums
endpoint — that allow you to fetch a batch of data in one API request. You can
reduce your API requests by calling the batch APIs when you know that you will
need data from a set of objects.

### Use the snapshot_id

Playlist APIs expose a `snapshot_id` that corresponds to the version of the
playlist that you are working with. Downloading a playlist can be expensive so
some apps may want to store and refer to the `snapshot_id` to avoid refreshing
an entire playlist that has not changed. You can learn more about `snapshot_id`
in our Working with
Playlists guide.

### Study your app's request patterns

When you load your app's detail page in the [Developer Dashboard]()
you'll find a graph that can tell you about your API request volume over time.
Understanding anomalies in API requests — and the reasons for them — can help
you find ways to avoid hitting the rate limit. For example, if you notice that
your website receives a surge in traffic after you send out your weekly
newsletter then you might decide that you want to stagger the delivery of those
emails over the course of a day.

For more advanced insights into your app's request patterns, consider tracking
your app's API calls to Spotify using your own logging tools.

### Consider 'lazy loading' features

Users often don't want to use every feature that is available to them on a web
page, or in the view of a mobile app. You can avoid making API requests by
making API calls conditional on user interactions, like tapping on a 'learn
more' link, or scrolling to a defined region of a web page.

## Footer
[]()### Documentation
- [Web API]()
- [Web Playback SDK]()
- [Ads API]()
- [iOS]()
- [Android]()
- [Embeds]()
- [Commercial Hardware]()
### Guidelines
- [Design]()
- [Accessibility]()
### Community
- [News]()
- [Forum]()
### Legal
- [Developer Terms]()
- [Developer Policy]()
- [Compliance Tips]()
- [Third Party Licenses]()
[Legal]()[Cookies]()© 2025 Spotify AB