Spotify Search API: Query Syntax, Limits and 2026 Changes

How the Spotify Web API search endpoint works in 2026: query filters, the new 10-result limit, client credentials auth, 22-character IDs and the dev-mode rules.

Ilyas5 min read
The short answer

The Spotify search API is GET https://api.spotify.com/v1/search with a q query and a type (track, artist, album, playlist, show, episode or audiobook). A client credentials token is enough. Since 11 February 2026, development-mode apps get at most 10 results per page (default 5), need a Premium account and can have 5 users. Field filters such as artist:, year: and isrc: narrow the query, and offset goes up to 1,000.

The Spotify search API is one endpoint, GET https://api.spotify.com/v1/search, that takes a text query and returns matching tracks, artists, albums, playlists, shows, episodes or audiobooks. It still works the way most tutorials describe, but 2026 changed the numbers: development-mode apps now get at most 10 results per page, need a Premium account and can have only 5 users. This guide covers the query syntax, authentication, IDs, limits and the changes that break older code.

How does the Spotify search endpoint work?

Two parameters are required: q, the search text, and type, a comma-separated list of what to search. The rest are optional. Per the search reference:

ParameterWhat it doesValues
qThe search text, with optional field filtersAny string
typeWhat to search foralbum, artist, playlist, track, show, episode, audiobook
marketOnly return content playable in this countryISO 3166-1 alpha-2 code, such as GB
limitResults per type, per page0–10, default 5 (development mode, since February 2026)
offsetWhere to start0–1,000
include_externalMark externally hosted audio as playableaudio

The response has one paging object per type you asked for (tracks, artists and so on), each with items, next, limit, offset and total.

How do you write a Spotify search query?

Plain words match anywhere. To narrow a search, add field filters to q. Each filter only applies to some types:

FilterWorks forExample
artist:Albums, artists, tracksartist:Radiohead
album:Albums, tracksalbum:"OK Computer"
track:Trackstrack:Airbag
year:Albums, artists, tracksyear:1997 or year:1990-1999
genre:Artists, tracksgenre:"trip hop"
isrc:Tracksisrc:GBAYE9700135
upc:Albumsupc:724385522925
tag:newAlbums released in the last two weekstag:new
tag:hipsterAlbums in the lowest 10% of popularitytag:hipster

Filters combine with plain text: q=airbag artist:radiohead year:1997 with type=track finds that one song. Searching by isrc: is the most reliable way to match a track you already know from another source, because the ISRC identifies the recording itself.

How do you authenticate?

Search reads no user data, so the client credentials flow is enough: exchange your app's client id and secret for a token, then send it as a bearer token. Tokens last 3,600 seconds, so cache one and reuse it.

bash
TOKEN=$(curl -s -X POST "https://accounts.spotify.com/api/token" \
  -u "$SPOTIFY_CLIENT_ID:$SPOTIFY_CLIENT_SECRET" \
  -d "grant_type=client_credentials" | jq -r .access_token)

curl -G "https://api.spotify.com/v1/search" \
  -H "Authorization: Bearer $TOKEN" \
  --data-urlencode "q=airbag artist:radiohead" \
  --data-urlencode "type=track" \
  --data-urlencode "market=GB" \
  --data-urlencode "limit=10"

The same call in Python:

python
import os
import requests

token = requests.post(
    "https://accounts.spotify.com/api/token",
    auth=(os.environ["SPOTIFY_CLIENT_ID"], os.environ["SPOTIFY_CLIENT_SECRET"]),
    data={"grant_type": "client_credentials"},
).json()["access_token"]

res = requests.get(
    "https://api.spotify.com/v1/search",
    headers={"Authorization": f"Bearer {token}"},
    params={"q": "airbag artist:radiohead", "type": "track", "market": "GB", "limit": 10},
)
for track in res.json()["tracks"]["items"]:
    print(track["id"], track["name"], track["artists"][0]["name"])

What is a Spotify ID, URI and URL?

Every result carries an id. Spotify's IDs and URIs page defines the ID as the base-62 identifier at the end of a Spotify URI. Track, artist, album and playlist IDs are typically 22 characters long. The same item appears in three forms:

FormExample
ID6rqhFgbbKwnb9MLmUQDhG6
URIspotify:track:6rqhFgbbKwnb9MLmUQDhG6
URLhttps://open.spotify.com/track/6rqhFgbbKwnb9MLmUQDhG6

To turn a pasted link into an ID, take the path segment after /track/, /artist/ or /album/ and drop any ?si= query string. Not every Spotify identifier is 22 characters: user IDs and category IDs are ordinary strings, so do not validate on length alone.

What are the Spotify search API limits?

Spotify counts requests over a rolling 30-second window and does not publish the numbers. When you go over, you get HTTP 429 with a Retry-After header in seconds; wait that long before retrying. Since July 2026, development-mode quota is counted per developer account instead of per app, and a quota error carries "reason": "QUOTA_EXCEEDED".

The bigger limits are on who can use the API at all:

  • Development mode is now for learning, experiments and non-commercial personal projects. Since February 2026 the app owner needs Spotify Premium, and each app can have 5 authorised users.
  • Extended quota mode, for production, has only been open to organisations since May 2025: a registered business with a launched service and at least 250,000 monthly active users, with review taking up to six weeks.

What changed in the Spotify Web API in 2024–2026?

If a tutorial's code fails, it was probably written before one of these:

DateChange
27 November 2024New apps lost Recommendations, Related Artists, Audio Features, Audio Analysis and Spotify's editorial playlists
15 May 2025Extended quota limited to organisations with 250,000+ monthly active users
11 February 2026Development mode: Premium required, 5 users, search limit cut to 10, several endpoints and fields removed
March 2026external_ids (ISRC, UPC) restored on tracks and albums
July 2026Quota counted per developer account

The February 2026 migration guide also removed batch lookups such as GET /tracks?ids=, artist top tracks and the browse endpoints, and deprecated fields including popularity, genres and followers. Code that sorts search results by popularity needs another signal.

Searching Spotify alongside other platforms

If Spotify is one of several sources you search, for example finding an artist on Spotify, SoundCloud and Apple Music together, crawlfeed exposes Spotify search and lookups with the same API key and response shape as its other 26 platforms:

OperationEndpointNeedsCredits
Profile/v1/spotify/profilehandle1
Posts/v1/spotify/postshandle1
Post/v1/spotify/postid1
Search/v1/spotify/searchq1
Collection/v1/spotify/collectionid1
Collection posts/v1/spotify/collection/postsid1
Collection tracks/v1/spotify/collection/tracksid1
Track/v1/spotify/trackid1
Tracks/v1/spotify/trackshandle1

A search costs 1 credit, and artists come back as Profile objects, the same type as a SoundCloud or Apple Music artist. Spotify's Developer Terms apply to Spotify content whichever way you fetch it: they forbid feeding it into AI models and building databases beyond what your app needs, so crawlfeed excludes Spotify from its AI enrichment and raw archive. See the Spotify reference for the parameters, or the SoundCloud API guide for the other big music source.

The short answer

Call GET https://api.spotify.com/v1/search with q, type and a client credentials token. Narrow results with filters such as artist:, year: and isrc:, and page with offset up to 1,000. In development mode you get at most 10 results per page, need Premium and can have 5 users; production access is limited to businesses with 250,000 monthly users. IDs are base-62 strings, typically 22 characters, found at the end of every Spotify URI and URL.

Questions

Is there a Spotify search API?

Yes. The Spotify Web API has a search endpoint, GET https://api.spotify.com/v1/search, that finds albums, artists, playlists, tracks, shows, episodes and audiobooks. You call it with an access token, and the client credentials flow is enough because search reads no user data.

How many results does the Spotify search API return?

For development-mode apps, at most 10 per page since 11 February 2026, with a default of 5. Before that the maximum was 50 and the default 20; apps with extended quota keep the higher limit. You can page with offset up to 1,000.

How long is a Spotify track ID?

Spotify IDs are base-62 strings, typically 22 characters long, such as 6rqhFgbbKwnb9MLmUQDhG6. Spotify's docs define the ID as the identifier at the end of a Spotify URI (spotify:track:6rqhFgbbKwnb9MLmUQDhG6) or URL (open.spotify.com/track/6rqhFgbbKwnb9MLmUQDhG6) but do not state the length.

Is the Spotify Web API free?

Spotify charges no per-call fee, but since February 2026 a development-mode app needs its owner to have Spotify Premium, and it is limited to 5 users. Extended quota, for production apps, is only open to registered businesses with at least 250,000 monthly active users.

What are the Spotify API rate limits?

Spotify counts calls over a rolling 30-second window and does not publish the numbers. Over the limit you get HTTP 429 with a Retry-After header. Since July 2026, development-mode quota is counted per developer account rather than per app.

Try it on your own data

Every example above runs as written. New accounts get 100 free credits, no card needed.

Get an API key