Get Recommendations
Recommendations are generated based on the available information for a given seed entity and matched against similar artists and tracks. If there is sufficient information about the provided seeds, a list of tracks will be returned together with pool size details.
For artists and tracks that are very new or obscure there might not be enough data to generate a list of tracks.
Please note that you can not use the Spotify Platform or any Spotify Content to train a machine learning or AI model or otherwise ingesting Spotify Content into a machine learning or AI model.
More information
Request
- limitinteger
The target size of the list of recommended tracks. For seeds with unusually small pools or when highly restrictive filtering is applied, it may be impossible to generate the requested number of recommended tracks. Debugging information for such cases is available in the response. Default: 20. Minimum: 1. Maximum: 100.
Default:limit=20
Range:1
-100
Example:limit=10
- marketstring
An ISO 3166-1 alpha-2 country code. If a country code is specified, only content that is available in that market will be returned.
If a valid user access token is specified in the request header, the country associated with the user account will take priority over this parameter.
Note: If neither market or user country are provided, the content is considered unavailable for the client.
Users can view the country that is associated with their account in the account settings.Example:market=ES
- seed_artistsstringRequired
A comma separated list of Spotify IDs for seed artists. Up to 5 seed values may be provided in any combination of
seed_artists
,seed_tracks
andseed_genres
.
Note: only required ifseed_genres
andseed_tracks
are not set.Example:seed_artists=4NHQUGzhtTLFvgF5SZesLK
- seed_genresstringRequired
A comma separated list of any genres in the set of available genre seeds. Up to 5 seed values may be provided in any combination of
seed_artists
,seed_tracks
andseed_genres
.
Note: only required ifseed_artists
andseed_tracks
are not set.Example:seed_genres=classical,country
- seed_tracksstringRequired
A comma separated list of Spotify IDs for a seed track. Up to 5 seed values may be provided in any combination of
seed_artists
,seed_tracks
andseed_genres
.
Note: only required ifseed_artists
andseed_genres
are not set.Example:seed_tracks=0c6xIDDpzE81m2q797ordA
- min_acousticnessnumber
For each tunable track attribute, a hard floor on the selected track attribute’s value can be provided. See tunable track attributes below for the list of available options. For example,
min_tempo=140
would restrict results to only those tracks with a tempo of greater than 140 beats per minute.Range:0
-1
- max_acousticnessnumber
For each tunable track attribute, a hard ceiling on the selected track attribute’s value can be provided. See tunable track attributes below for the list of available options. For example,
max_instrumentalness=0.35
would filter out most tracks that are likely to be instrumental.Range:0
-1
- target_acousticnessnumber
For each of the tunable track attributes (below) a target value may be provided. Tracks with the attribute values nearest to the target values will be preferred. For example, you might request
target_energy=0.6
andtarget_danceability=0.8
. All target values will be weighed equally in ranking results.Range:0
-1
- min_danceabilitynumber
For each tunable track attribute, a hard floor on the selected track attribute’s value can be provided. See tunable track attributes below for the list of available options. For example,
min_tempo=140
would restrict results to only those tracks with a tempo of greater than 140 beats per minute.Range:0
-1
- max_danceabilitynumber
For each tunable track attribute, a hard ceiling on the selected track attribute’s value can be provided. See tunable track attributes below for the list of available options. For example,
max_instrumentalness=0.35
would filter out most tracks that are likely to be instrumental.Range:0
-1
- target_danceabilitynumber
For each of the tunable track attributes (below) a target value may be provided. Tracks with the attribute values nearest to the target values will be preferred. For example, you might request
target_energy=0.6
andtarget_danceability=0.8
. All target values will be weighed equally in ranking results.Range:0
-1
- min_duration_msinteger
For each tunable track attribute, a hard floor on the selected track attribute’s value can be provided. See tunable track attributes below for the list of available options. For example,
min_tempo=140
would restrict results to only those tracks with a tempo of greater than 140 beats per minute. - max_duration_msinteger
For each tunable track attribute, a hard ceiling on the selected track attribute’s value can be provided. See tunable track attributes below for the list of available options. For example,
max_instrumentalness=0.35
would filter out most tracks that are likely to be instrumental. - target_duration_msinteger
Target duration of the track (ms)
- min_energynumber
For each tunable track attribute, a hard floor on the selected track attribute’s value can be provided. See tunable track attributes below for the list of available options. For example,
min_tempo=140
would restrict results to only those tracks with a tempo of greater than 140 beats per minute.Range:0
-1
- max_energynumber
For each tunable track attribute, a hard ceiling on the selected track attribute’s value can be provided. See tunable track attributes below for the list of available options. For example,
max_instrumentalness=0.35
would filter out most tracks that are likely to be instrumental.Range:0
-1
- target_energynumber
For each of the tunable track attributes (below) a target value may be provided. Tracks with the attribute values nearest to the target values will be preferred. For example, you might request
target_energy=0.6
andtarget_danceability=0.8
. All target values will be weighed equally in ranking results.Range:0
-1
- min_instrumentalnessnumber
For each tunable track attribute, a hard floor on the selected track attribute’s value can be provided. See tunable track attributes below for the list of available options. For example,
min_tempo=140
would restrict results to only those tracks with a tempo of greater than 140 beats per minute.Range:0
-1
- max_instrumentalnessnumber
For each tunable track attribute, a hard ceiling on the selected track attribute’s value can be provided. See tunable track attributes below for the list of available options. For example,
max_instrumentalness=0.35
would filter out most tracks that are likely to be instrumental.Range:0
-1
- target_instrumentalnessnumber
For each of the tunable track attributes (below) a target value may be provided. Tracks with the attribute values nearest to the target values will be preferred. For example, you might request
target_energy=0.6
andtarget_danceability=0.8
. All target values will be weighed equally in ranking results.Range:0
-1
- min_keyinteger
For each tunable track attribute, a hard floor on the selected track attribute’s value can be provided. See tunable track attributes below for the list of available options. For example,
min_tempo=140
would restrict results to only those tracks with a tempo of greater than 140 beats per minute.Range:0
-11
- max_keyinteger
For each tunable track attribute, a hard ceiling on the selected track attribute’s value can be provided. See tunable track attributes below for the list of available options. For example,
max_instrumentalness=0.35
would filter out most tracks that are likely to be instrumental.Range:0
-11
- target_keyinteger
For each of the tunable track attributes (below) a target value may be provided. Tracks with the attribute values nearest to the target values will be preferred. For example, you might request
target_energy=0.6
andtarget_danceability=0.8
. All target values will be weighed equally in ranking results.Range:0
-11
- min_livenessnumber
For each tunable track attribute, a hard floor on the selected track attribute’s value can be provided. See tunable track attributes below for the list of available options. For example,
min_tempo=140
would restrict results to only those tracks with a tempo of greater than 140 beats per minute.Range:0
-1
- max_livenessnumber
For each tunable track attribute, a hard ceiling on the selected track attribute’s value can be provided. See tunable track attributes below for the list of available options. For example,
max_instrumentalness=0.35
would filter out most tracks that are likely to be instrumental.Range:0
-1
- target_livenessnumber
For each of the tunable track attributes (below) a target value may be provided. Tracks with the attribute values nearest to the target values will be preferred. For example, you might request
target_energy=0.6
andtarget_danceability=0.8
. All target values will be weighed equally in ranking results.Range:0
-1
- min_loudnessnumber
For each tunable track attribute, a hard floor on the selected track attribute’s value can be provided. See tunable track attributes below for the list of available options. For example,
min_tempo=140
would restrict results to only those tracks with a tempo of greater than 140 beats per minute. - max_loudnessnumber
For each tunable track attribute, a hard ceiling on the selected track attribute’s value can be provided. See tunable track attributes below for the list of available options. For example,
max_instrumentalness=0.35
would filter out most tracks that are likely to be instrumental. - target_loudnessnumber
For each of the tunable track attributes (below) a target value may be provided. Tracks with the attribute values nearest to the target values will be preferred. For example, you might request
target_energy=0.6
andtarget_danceability=0.8
. All target values will be weighed equally in ranking results. - min_modeinteger
For each tunable track attribute, a hard floor on the selected track attribute’s value can be provided. See tunable track attributes below for the list of available options. For example,
min_tempo=140
would restrict results to only those tracks with a tempo of greater than 140 beats per minute.Range:0
-1
- max_modeinteger
For each tunable track attribute, a hard ceiling on the selected track attribute’s value can be provided. See tunable track attributes below for the list of available options. For example,
max_instrumentalness=0.35
would filter out most tracks that are likely to be instrumental.Range:0
-1
- target_modeinteger
For each of the tunable track attributes (below) a target value may be provided. Tracks with the attribute values nearest to the target values will be preferred. For example, you might request
target_energy=0.6
andtarget_danceability=0.8
. All target values will be weighed equally in ranking results.Range:0
-1
- min_popularityinteger
For each tunable track attribute, a hard floor on the selected track attribute’s value can be provided. See tunable track attributes below for the list of available options. For example,
min_tempo=140
would restrict results to only those tracks with a tempo of greater than 140 beats per minute.Range:0
-100
- max_popularityinteger
For each tunable track attribute, a hard ceiling on the selected track attribute’s value can be provided. See tunable track attributes below for the list of available options. For example,
max_instrumentalness=0.35
would filter out most tracks that are likely to be instrumental.Range:0
-100
- target_popularityinteger
For each of the tunable track attributes (below) a target value may be provided. Tracks with the attribute values nearest to the target values will be preferred. For example, you might request
target_energy=0.6
andtarget_danceability=0.8
. All target values will be weighed equally in ranking results.Range:0
-100
- min_speechinessnumber
For each tunable track attribute, a hard floor on the selected track attribute’s value can be provided. See tunable track attributes below for the list of available options. For example,
min_tempo=140
would restrict results to only those tracks with a tempo of greater than 140 beats per minute.Range:0
-1
- max_speechinessnumber
For each tunable track attribute, a hard ceiling on the selected track attribute’s value can be provided. See tunable track attributes below for the list of available options. For example,
max_instrumentalness=0.35
would filter out most tracks that are likely to be instrumental.Range:0
-1
- target_speechinessnumber
For each of the tunable track attributes (below) a target value may be provided. Tracks with the attribute values nearest to the target values will be preferred. For example, you might request
target_energy=0.6
andtarget_danceability=0.8
. All target values will be weighed equally in ranking results.Range:0
-1
- min_temponumber
For each tunable track attribute, a hard floor on the selected track attribute’s value can be provided. See tunable track attributes below for the list of available options. For example,
min_tempo=140
would restrict results to only those tracks with a tempo of greater than 140 beats per minute. - max_temponumber
For each tunable track attribute, a hard ceiling on the selected track attribute’s value can be provided. See tunable track attributes below for the list of available options. For example,
max_instrumentalness=0.35
would filter out most tracks that are likely to be instrumental. - target_temponumber
Target tempo (BPM)
- min_time_signatureinteger
For each tunable track attribute, a hard floor on the selected track attribute’s value can be provided. See tunable track attributes below for the list of available options. For example,
min_tempo=140
would restrict results to only those tracks with a tempo of greater than 140 beats per minute.Maximum value:11
- max_time_signatureinteger
For each tunable track attribute, a hard ceiling on the selected track attribute’s value can be provided. See tunable track attributes below for the list of available options. For example,
max_instrumentalness=0.35
would filter out most tracks that are likely to be instrumental. - target_time_signatureinteger
For each of the tunable track attributes (below) a target value may be provided. Tracks with the attribute values nearest to the target values will be preferred. For example, you might request
target_energy=0.6
andtarget_danceability=0.8
. All target values will be weighed equally in ranking results. - min_valencenumber
For each tunable track attribute, a hard floor on the selected track attribute’s value can be provided. See tunable track attributes below for the list of available options. For example,
min_tempo=140
would restrict results to only those tracks with a tempo of greater than 140 beats per minute.Range:0
-1
- max_valencenumber
For each tunable track attribute, a hard ceiling on the selected track attribute’s value can be provided. See tunable track attributes below for the list of available options. For example,
max_instrumentalness=0.35
would filter out most tracks that are likely to be instrumental.Range:0
-1
- target_valencenumber
For each of the tunable track attributes (below) a target value may be provided. Tracks with the attribute values nearest to the target values will be preferred. For example, you might request
target_energy=0.6
andtarget_danceability=0.8
. All target values will be weighed equally in ranking results.Range:0
-1
Response
A set of recommendations
- Required
An array of recommendation seed objects.
- afterFilteringSizeinteger
The number of tracks available after min_* and max_* filters have been applied.
- afterRelinkingSizeinteger
The number of tracks available after relinking for regional availability.
- hrefstring
A link to the full track or artist data for this seed. For tracks this will be a link to a Track Object. For artists a link to an Artist Object. For genre seeds, this value will be
null
. - idstring
The id used to select this seed. This will be the same as the string used in the
seed_artists
,seed_tracks
orseed_genres
parameter. - initialPoolSizeinteger
The number of recommended tracks available for this seed.
- typestring
The entity type of this seed. One of
artist
,track
orgenre
.
- Required
An array of track object (simplified) ordered according to the parameters supplied.
The album on which the track appears. The album object includes a link in
href
to full information about the album.- album_typestringRequired
The type of the album.
Allowed values:"album"
,"single"
,"compilation"
Example:"compilation"
- total_tracksintegerRequired
The number of tracks in the album.
Example:9
- available_marketsarray of stringsRequired
The markets in which the album is available: ISO 3166-1 alpha-2 country codes. NOTE: an album is considered available in a market when at least 1 of its tracks is available in that market.
Example:["CA","BR","IT"]
- Required
Known external URLs for this album.
- spotifystring
The Spotify URL for the object.
- hrefstringRequired
A link to the Web API endpoint providing full details of the album.
- idstringRequired
The Spotify ID for the album.
Example:"2up3OPMp9Tb4dAKM2erWXQ"
- Required
The cover art for the album in various sizes, widest first.
- namestringRequired
The name of the album. In case of an album takedown, the value may be an empty string.
- release_datestringRequired
The date the album was first released.
Example:"1981-12"
- release_date_precisionstringRequired
The precision with which
release_date
value is known.Allowed values:"year"
,"month"
,"day"
Example:"year"
Included in the response when a content restriction is applied.
- reasonstring
The reason for the restriction. Albums may be restricted if the content is not available in a given market, to the user's subscription type, or when the user's account is set to not play explicit content. Additional reasons may be added in the future.
Allowed values:"market"
,"product"
,"explicit"
- typestringRequired
The object type.
Allowed values:"album"
- uristringRequired
The Spotify URI for the album.
Example:"spotify:album:2up3OPMp9Tb4dAKM2erWXQ"
- Required
The artists of the album. Each artist object includes a link in
href
to more detailed information about the artist.
The artists who performed the track. Each artist object includes a link in
href
to more detailed information about the artist.- available_marketsarray of strings
A list of the countries in which the track can be played, identified by their ISO 3166-1 alpha-2 code.
- disc_numberinteger
The disc number (usually
1
unless the album consists of more than one disc). - duration_msinteger
The track length in milliseconds.
- explicitboolean
Whether or not the track has explicit lyrics (
true
= yes it does;false
= no it does not OR unknown). Known external IDs for the track.
- isrcstring
- eanstring
- upcstring
Known external URLs for this track.
- spotifystring
The Spotify URL for the object.
- hrefstring
A link to the Web API endpoint providing full details of the track.
- idstring
The Spotify ID for the track.
- is_playableboolean
Part of the response when Track Relinking is applied. If
true
, the track is playable in the given market. Otherwisefalse
. Part of the response when Track Relinking is applied, and the requested track has been replaced with different track. The track in the
linked_from
object contains information about the originally requested track.Included in the response when a content restriction is applied.
- reasonstring
The reason for the restriction. Supported values:
market
- The content item is not available in the given market.product
- The content item is not available for the user's subscription type.explicit
- The content item is explicit and the user's account is set to not play explicit content.
Additional reasons may be added in the future. Note: If you use this field, make sure that your application safely handles unknown values.
- namestring
The name of the track.
- popularityinteger
The popularity of the track. The value will be between 0 and 100, with 100 being the most popular.
The popularity of a track is a value between 0 and 100, with 100 being the most popular. The popularity is calculated by algorithm and is based, in the most part, on the total number of plays the track has had and how recent those plays are.
Generally speaking, songs that are being played a lot now will have a higher popularity than songs that were played a lot in the past. Duplicate tracks (e.g. the same track from a single and an album) are rated independently. Artist and album popularity is derived mathematically from track popularity. Note: the popularity value may lag actual popularity by a few days: the value is not updated in real time. - preview_urlstringNullable
A link to a 30 second preview (MP3 format) of the track. Can be
null
Important policy noteAudio Preview Clips may not be offered as a standalone service or product.
More information
- track_numberinteger
The number of the track. If an album has several discs, the track number is the number on the specified disc.
- typestring
The object type: "track".
Allowed values:"track"
- uristring
The Spotify URI for the track.
- is_localboolean
Whether or not the track is from a local file.
Response sample
{ "seeds": [ { "afterFilteringSize": 0, "afterRelinkingSize": 0, "href": "string", "id": "string", "initialPoolSize": 0, "type": "string" } ], "tracks": [ { "album": { "album_type": "compilation", "total_tracks": 9, "available_markets": ["CA", "BR", "IT"], "external_urls": { "spotify": "string" }, "href": "string", "id": "2up3OPMp9Tb4dAKM2erWXQ", "images": [ { "url": "https://i.scdn.co/image/ab67616d00001e02ff9ca10b55ce82ae553c8228", "height": 300, "width": 300 } ], "name": "string", "release_date": "1981-12", "release_date_precision": "year", "restrictions": { "reason": "market" }, "type": "album", "uri": "spotify:album:2up3OPMp9Tb4dAKM2erWXQ", "artists": [ { "external_urls": { "spotify": "string" }, "href": "string", "id": "string", "name": "string", "type": "artist", "uri": "string" } ] }, "artists": [ { "external_urls": { "spotify": "string" }, "href": "string", "id": "string", "name": "string", "type": "artist", "uri": "string" } ], "available_markets": ["string"], "disc_number": 0, "duration_ms": 0, "explicit": false, "external_ids": { "isrc": "string", "ean": "string", "upc": "string" }, "external_urls": { "spotify": "string" }, "href": "string", "id": "string", "is_playable": false, "linked_from": { }, "restrictions": { "reason": "string" }, "name": "string", "popularity": 0, "preview_url": "string", "track_number": 0, "type": "track", "uri": "string", "is_local": false } ]}