Spotify API Rate Limit: 30-Second Window, 429s and Quota
The Spotify API rate limit is counted per app over a rolling 30-second window, and Spotify does not publish the number. When you go over, the Web API returns HTTP 429, normally with a Retry-After header in seconds. Development Mode apps also have a separate quota, counted per developer account since July 2026, which returns 429 with "reason": "QUOTA_EXCEEDED"; Extended Quota Mode raises the rate limit but is open only to organizations with at least 250,000 monthly active users.
Spotify's Web API can send you a 429 for two different reasons, and they need different fixes. One is the rate limit, a short rolling window. The other is the Development Mode quota, a budget shared by all your development apps. This post covers both and how to tell them apart. What Development Mode can and cannot read is covered in Is the Spotify API free?
How the Spotify API rate limit works
- Rolling 30 seconds. Spotify counts the calls your app made in the last 30 seconds source. There is no fixed reset moment.
- Per app. The count is of calls "your app makes", so all users of one client ID share it.
- Depends on mode. Development Mode apps have a lower limit than Extended Quota Mode apps. Spotify publishes neither number.
- Some endpoints are stricter. A few, such as the playlist cover image upload, have their own custom limit. The error body tells you which limit you hit.
Rate limit or quota: two different 429s
| Rate limit | Development Mode quota | |
|---|---|---|
| Counted | Per app, rolling 30 seconds | Per developer account, across all its Development Mode client IDs, in buckets of endpoints |
| Response | 429, normally with Retry-After | 429 with "reason": "QUOTA_EXCEEDED" in the JSON body |
| Fix | Wait Retry-After seconds, then slow down | Use fewer calls; retrying soon will not help |
| Raised by | Extended Quota Mode | Extended Quota Mode |
The quota change is from Spotify's 23 July 2026 update: an account can now have up to 25 client IDs, but they all draw from one quota pool, and the 429 body now names the reason. Spotify's quota modes page says the bucket groupings and limits are subject to change and does not list them.
{
"error": {
"status": 429,
"message": "Too many requests",
"reason": "QUOTA_EXCEEDED"
}
}
Handling a Spotify 429 in Python
import random, time, requests
class QuotaExceeded(Exception):
pass
def spotify_get(url, token, **params):
for attempt in range(6):
r = requests.get(url, params=params, timeout=30,
headers={"Authorization": "Bearer " + token})
if r.status_code != 429:
r.raise_for_status()
return r.json()
try:
reason = r.json().get("error", {}).get("reason")
except ValueError:
reason = None
if reason == "QUOTA_EXCEEDED":
raise QuotaExceeded("development mode quota used up")
wait = r.headers.get("Retry-After")
delay = int(wait) if wait and wait.isdigit() else random.uniform(1, min(60, 2 ** attempt))
time.sleep(delay + 0.5)
raise RuntimeError("still rate limited after 6 tries")
album = spotify_get("https://api.spotify.com/v1/albums/4aawyAB9vmqN3uQ7FjRGTy", "TOKEN")
Two practical notes. Spotify says the header is "normally" present, so keep a fallback backoff for when it is missing. And if Retry-After is very large, log it and stop the job rather than sleeping in a request thread for hours.
How many calls can you really make?
Because Spotify does not publish the limit, you plan in calls, not in seconds. Take a job that needs 1,000 albums:
| Mode | How | Calls |
|---|---|---|
| Development Mode | Batch endpoints were removed in February 2026, so GET /albums/{id} once per album source | 1,000 |
| Extended Quota Mode | Get Several Albums, up to 20 IDs per call | 50 |
Search is similar. In Development Mode a search returns at most 10 results, so 200 results for one query is 20 calls instead of 4.
For pacing, start conservatively and adapt. A reasonable start for a background job is one request every 250 ms, which is 120 per 30 seconds. On the first 429, honor Retry-After and halve your rate; after 10 clean minutes, raise it by 10%. At 4 requests a second the 1,000-album job takes about 4 minutes in Development Mode, if the quota holds.
Ways to stay under the limit
- Batch where you can. In Extended Quota Mode, the Get Several endpoints cut calls by up to 20 times.
- Use
snapshot_id. Store each playlist's snapshot and skip refetching playlists that have not changed. - Cache catalog data. Album and track metadata rarely changes. A day-long cache removes most repeat calls.
- Load lazily. Fetch details when a user opens them, not for every item on screen.
- Watch the dashboard. Your app's page in the Developer Dashboard graphs request volume, which shows the spikes that trip the limit, such as a newsletter going out.
Extended quota mode
Extended Quota Mode removes the 5-user allowlist and has a much higher rate limit. Since 15 May 2025, Spotify accepts applications only from organizations, sent from a company email. Requirements include a registered business, a launched service and at least 250,000 monthly active users. If the partner application is approved, you submit the Quota extension Request questionnaire in the dashboard, and review can take up to six weeks. For an individual developer or a small project, Extended Quota Mode is not available.
When a paid API is simpler
If your job is reading public catalog data, such as albums, artists, playlists and podcasts, at a volume Development Mode cannot serve, and you are not a 250,000-user business, the official route is closed. ScrapeIO allows 300 requests a minute per API key, with no daily or monthly cap beyond the credits you hold. A 429 from ScrapeIO costs nothing, and neither do failed calls, private or not-found answers, or cached repeats.
ScrapeIO's spotify album API, spotify artist API, spotify playlist API and spotify search API return public Spotify data at 1 credit a call, with no user login. It cannot control playback or read a user's library. Agents can use the Spotify MCP server. For more options, see Spotify Web API and scraper options.
FAQ
What is the Spotify API rate limit?
Spotify does not publish a number. It counts each app's calls over a rolling 30 seconds, with a higher limit in Extended Quota Mode.
How long should I wait after a Spotify 429?
The number of seconds in the Retry-After header. If there is none, back off exponentially with jitter.
What does QUOTA_EXCEEDED mean?
Your developer account's Development Mode quota is used up. It is not the rolling rate limit, so short waits will not fix it.
Is the Spotify rate limit per user or per app?
Per app. The Development Mode quota is wider still: it is shared by every Development Mode app on your developer account.
Can an individual get Extended Quota Mode?
No. Since May 2025 Spotify only accepts organizations, and it asks for at least 250,000 monthly active users.
Sources
Checked on 9 November 2026 from each vendor's own pages. Prices and limits change; follow the links before you decide.
- https://developer.spotify.com/documentation/web-api/concepts/rate-limits
- https://developer.spotify.com/documentation/web-api/concepts/quota-modes
- https://developer.spotify.com/blog/2026-07-23-web-api-quota-updates
- https://developer.spotify.com/documentation/web-api/tutorials/february-2026-migration-guide
- https://developer.spotify.com/documentation/web-api/reference/get-multiple-albums
100 free credits, no card. Credits never expire.
Get API key