- Home
- Resources
- Integrations
- Spotify
Spotify n8n integrationAutomate Spotify with n8n.
Every Spotify n8n integration starts with one question: which operation does what? The node ships 30 operations across 7 resources, from album lookups to player controls. No Spotify trigger node exists, so the workflow starts on a Schedule Trigger or a Webhook.
Verified Trustpilot reviews · AI, automation & growth agency
What does the Spotify n8n integration actually do?
The Spotify node ships with n8n and talks to the Spotify Web API on your behalf. It gives a workflow 30 operations spread over 7 resources: Album, Artist, Library, My Data, Player, Playlist and Track. Reads cover public catalog data, the music saved on the account and recent listening history. Writes cover playlists and playback on whatever device is currently active.
Scenario one, the monthly recap. A Schedule Trigger fires on the first of the month, library.getLikedTracks pulls everything saved on the account with Return All switched on, and the tracks land in a fresh playlist. Same run, the list gets appended to a spreadsheet through Google Sheets so the history survives outside Spotify.
Scenario two, the office soundtrack. player.startMusic takes a playlist, artist or album URI and starts it on the active device, player.volume drops the level when a meeting begins, and player.pause ends it. Hook the same workflow to a physical button through Home Assistant, or match the room lighting with Philipshue.
Scenario three, artist watch. artist.getAlbums and album.getNewReleases run on a schedule, a Code node compares the result with last week's, and anything new gets posted to a channel with Slack.
What the node does not expose, HTTP Request does. Any Spotify Web API endpoint missing from the 30 operations is one HTTP Request node away, reusing the same credential through predefined authentication.
Three limits are worth knowing before you plan anything. Every Player operation targets the device currently active on the account, so nothing happens when nothing is playing anywhere. Lists are paginated: with Return All off, you get at most what Limit allows. And there is no Spotify trigger node, which is why each example above starts on a Schedule Trigger or on the Webhook node, a URL n8n exposes so another service can call the workflow.
Still choosing a platform? The n8n review covers hosting and cost, and the n8n training walks through building a first workflow end to end.
How do you connect Spotify to n8n?
- 01
Create a Spotify app
The Spotify credential in n8n supports one authentication method, OAuth2. If you self-host n8n, you need a Spotify Developer account to issue the keys. Open the Spotify developer dashboard, select Create an app, fill in an App name such as
n8n integrationand an App description, then check the box agreeing to the Spotify Terms of Service and Branding Guidelines. - 02
Register the redirect URL
Open a new Spotify credential in n8n, from the Credentials menu, and copy the OAuth Redirect URL it displays. Paste that value into the Redirect URI field of the Spotify app, then select Create in the dashboard. The App overview page opens, and that is where the keys live. Skip this and the authorization step later will bounce.
- 03
Authorize the account
Copy the Client ID from the App overview page into the n8n credential, do the same with the Client Secret, then select Connect my account and follow the on-screen prompts. A credential is created once and reused everywhere: every Spotify node in every workflow picks it from a dropdown, so you never paste those keys into a node again.
What can the Spotify node do?
The Spotify node exposes 30 operations across 7 resources. For each one: the node as you configure it in n8n, the required fields, and our field notes.
| Resource | Create a Playlist | Get | Remove an Item | Add an Item | Add Song to Queue | Currently Playing | Get Albums | Get Audio Features | Get Following Artists | Get Liked Tracks | Get New Releases | Get Related Artists | Get Top Tracks | Get Tracks | Get the User's Playlists | Next Song | Pause | Previous Song | Recently Played | Resume | Search | Start Music | Set Volume |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Album | ✓ | ✓ | ✓ | ✓ | |||||||||||||||||||
| Artist | ✓ | ✓ | ✓ | ✓ | ✓ | ||||||||||||||||||
| Library | ✓ | ||||||||||||||||||||||
| My Data | ✓ | ||||||||||||||||||||||
| Player | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||||||||||||||
| Playlist | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||||||||||||||||
| Track | ✓ | ✓ | ✓ |
Operations index
Album
4 operationsGet an album
album.getWhat you see in n8n
Notes & use cases
Point this at one album and Spotify returns its record: title, release information, cover art and the artists credited on it.
Key parameters
- Album ID: the album's Spotify URI or ID, in the
spotify:album:1YZ3k65Mqw3G8FzYlW1mmpform. When the value arrives from an earlier node, an expression like{{ $json.id }}reads it off the incoming item, and n8n blocks the run if the field ends up empty.
Get new album releases
album.getNewReleasesWhat you see in n8n
Notes & use cases
Spotify keeps a rolling list of albums that just came out, and this operation reads it without any ID to supply.
Key parameters
- Return All: on, n8n walks the pages of the release feed until it runs out; off, it stops at Limit.
- Limit: how many albums come back when Return All is off.
- Country: optional, under Filters, to read the releases of one country rather than the default feed.
Get an album's tracks by URI or ID
album.getTracksWhat you see in n8n
Notes & use cases
Here the album stays in the background and its track listing comes out, one item per song.
Key parameters
- Album ID: the same URI or ID as the album lookup, often
{{ $json.id }}chained from a search. - Return All: on for a complete listing, which matters on long compilations.
- Limit: the ceiling when Return All is off, so a short result usually means this value, not a missing track.
Search albums by keyword
album.searchWhat you see in n8n
Notes & use cases
No identifier to hand? Type words instead and get matching albums back, each with the ID the other operations expect.
Key parameters
- Search Keyword: the term to search for, free text, frequently
{{ $json.query }}from a form or a spreadsheet row. - Return All: on to page through every match, which is rarely what you want on a vague keyword.
- Limit: the number of matches to keep.
- Country: optional, under Filters, restricts results to what is playable in that market.
Artist
5 operationsGet an artist
artist.getWhat you see in n8n
Notes & use cases
One artist in, one record out, with the name, genres and images Spotify holds for them.
Key parameters
- Artist ID: the artist's Spotify URI or ID, shaped like
spotify:artist:4LLpKhyESsyAXpc4laK94U. The plain ID works too, and the field is required, so an empty expression stops the node.
Get an artist's albums by URI or ID
artist.getAlbumsWhat you see in n8n
Notes & use cases
A discography in one call: every album credited to the artist comes back as a separate item.
Key parameters
- Artist ID: the artist's URI or ID, the same value the artist lookup takes.
- Return All: on, n8n keeps requesting pages until the discography is complete.
- Limit: the cap when Return All is off, handy when only the recent output matters.
Get an artist's related artists by URI or ID
artist.getRelatedArtistsWhat you see in n8n
Notes & use cases
Spotify maintains its own list of artists close to a given one, and this operation hands that list to the workflow.
Key parameters
- Artist ID: the URI or ID of the artist you want neighbours for, commonly
{{ $json.id }}from an artist search that ran just before.
Get an artist's top tracks by URI or ID
artist.getTopTracksWhat you see in n8n
Notes & use cases
Popularity is local, so this operation asks which country you mean before returning an artist's most played songs.
Key parameters
- Artist ID: the artist's Spotify URI or ID.
- Country: required here, and it is free text rather than a dropdown. Enter the postal abbreviation,
USfor instance, and expect a different ranking per market.
Search artists by keyword
artist.searchWhat you see in n8n
Notes & use cases
Same idea as the album search, pointed at performers, with one quirk worth knowing.
Key parameters
- Artist ID: the node still asks for it and marks it required, so leave a value in place even though the keyword drives the search.
- Search Keyword: the term to look for.
- Return All: on to page through every match.
- Limit: the maximum number of artists returned.
- Country: optional, under Filters, keeps only what is playable in that market.
Library
1 operationGet liked tracks
library.getLikedTracksWhat you see in n8n
Notes & use cases
The Library resource has a single operation, and it reads the songs saved on the authorized account.
Key parameters
- Return All: on for the whole library, which is the only setting that makes sense for a backup.
- Limit: with Return All off, the number of saved tracks to bring back, newest first.
My Data
1 operationGet your followed artists
myData.getFollowingArtistsWhat you see in n8n
Notes & use cases
Following an artist is not the same as playing one, and this operation lists everyone the authorized account follows.
Key parameters
- Return All: on, every followed artist comes back page after page.
- Limit: the ceiling when Return All is off.
Player
9 operationsAdd a song to a queue
player.addSongToQueueWhat you see in n8n
Notes & use cases
Rather than interrupting what plays, this operation slots a track behind it in the queue.
Key parameters
- Track ID: a track URI or ID, written like
spotify:track:0xE4LEFzSNGsz1F6kvXsHU, often{{ $json.id }}from a track search.
Get the currently playing track
player.currentlyPlayingWhat you see in n8n
Notes & use cases
This one takes no fields at all. n8n asks the account what is playing right now and returns the track, with nothing to configure beyond the credential.
Skip to the next track
player.nextSongWhat you see in n8n
Notes & use cases
The workflow equivalent of pressing skip: playback moves to whatever sits next in the queue, and no parameter is needed.
Pause the player
player.pauseWhat you see in n8n
Notes & use cases
Silence, in one node and zero fields. Playback stops on the active device and the position is kept, which is what makes the resume operation useful afterwards.
Skip to the previous song
player.previousSongWhat you see in n8n
Notes & use cases
Going backwards works the same way as skipping forward, without any field to fill in.
Get the recently played tracks
player.recentlyPlayedWhat you see in n8n
Notes & use cases
Listening history, freshest first, is what comes out of this operation.
Key parameters
- Return All: on, n8n pages through the history Spotify keeps.
- Limit: the number of past tracks to return when Return All is off, which is usually enough for a daily run.
Resume the player
player.resumeWhat you see in n8n
Notes & use cases
Playback picks up on the current active device, from where it stopped, and again there is nothing to configure.
Set volume on the player
player.volumeWhat you see in n8n
Notes & use cases
Loudness becomes a workflow variable here, applied to the current active device.
Key parameters
- Volume: the volume percentage to set, a number rather than a step up or down, so the workflow decides the exact level instead of nudging it.
Start music on the player
player.startMusicWhat you see in n8n
Notes & use cases
Playback begins from a container rather than a single song: a playlist, an artist or an album, whichever URI you hand over.
Key parameters
- Resource ID: a playlist, artist or album URI or ID, for example
spotify:album:1YZ3k65Mqw3G8FzYlW1mmp. One field covers the three types, so the same node can start any of them.
Playlist
7 operationsAdd an Item to a playlist
playlist.addWhat you see in n8n
Notes & use cases
This operation pushes a track into a playlist that already exists on the connected account, so a workflow can fill a playlist track by track instead of someone dragging songs in the app.
Key parameters
- Playlist ID: the playlist's Spotify URI or its ID, in the form
spotify:playlist:37i9dQZF1DWUhI3iC1khPH. - Track ID: the track's Spotify URI or ID, the track to add to the playlist, often
{{ $json.id }}from a search step. - Position: an optional field that sets where the new track lands in the playlist.
0 so the newest track sits on top.Create a playlist
playlist.createWhat you see in n8n
Notes & use cases
Here the node creates a brand new playlist on the connected account and hands back its ID, which every later playlist operation needs as input.
Key parameters
- Name: the name of the playlist to create, such as
Favorite Songs. Build it with an expression when the name carries a date or a campaign label. - Description: optional free text shown under the playlist title.
- Public: optional switch that decides whether the playlist is publicly accessible.
Get a playlist
playlist.getWhat you see in n8n
Notes & use cases
Point the node at one playlist and it returns that playlist's own data, without its track list. Useful when a workflow needs to confirm a playlist still exists before writing to it.
Key parameters
- Playlist ID: the playlist's Spotify URI or its ID. Both forms work, so
spotify:playlist:37i9dQZF1DWUhI3iC1khPHand the bare ID behind it lead to the same result.
Get a user's playlists
playlist.getUserPlaylistsWhat you see in n8n
Notes & use cases
Rather than one playlist, this operation lists the playlists tied to the connected account, one item per playlist, which gives a workflow something to loop over.
Key parameters
- Return All: turned on, n8n walks through the API pages and brings back every playlist; turned off, it stops at Limit.
- Limit: the maximum number of playlists returned when Return All stays off.
Get a playlist's tracks by URI or ID
playlist.getTracksWhat you see in n8n
Notes & use cases
Reading the contents of a playlist happens here: n8n returns the tracks it holds, one n8n item per track, ready for a filter, a loop or an export node.
Key parameters
- Playlist ID: the playlist's Spotify URI or its ID, the playlist to read.
- Return All: on for a full export of a long playlist, since the API sends tracks page by page.
- Limit: caps the number of tracks when Return All is off.
Remove an item from a playlist
playlist.deleteWhat you see in n8n
Notes & use cases
Cleanup is the mirror of Add an Item: the node takes a track out of a playlist and leaves the rest untouched.
Key parameters
- Playlist ID: the playlist's Spotify URI or its ID, the playlist being edited.
- Track ID: the track's Spotify URI or ID, the track to delete from the playlist, such as
spotify:track:0xE4LEFzSNGsz1F6kvXsHU.
Search playlists by keyword
playlist.searchWhat you see in n8n
Notes & use cases
Keyword search runs across Spotify's public playlists and returns matches as items, which makes it a discovery step rather than an editing one.
Key parameters
- Search Keyword: the keyword term to search for, wired to a form or chat message with
{{ $json.query }}when the search comes from a user. - Return All and Limit: all matches, or a capped list.
- Country: an optional filter; with a country code set, only content playable in that market comes back.
Track
3 operationsGet a track
track.getWhat you see in n8n
Notes & use cases
One track in, that track's Spotify data out. This is the operation a workflow calls when it holds an identifier and needs the readable details behind it.
Key parameters
- Track ID: the track's Spotify URI or ID. A URI like
spotify:track:0xE4LEFzSNGsz1F6kvXsHUworks, and so does the ID alone, which matters when the value arrives from another node as{{ $json.trackId }}.
Get audio features of a track
track.getAudioFeaturesWhat you see in n8n
Notes & use cases
Spotify computes a set of audio features for each track, and this operation returns them for the track you name. It answers questions about how a track sounds, not about who released it.
Key parameters
- Track ID: the track's Spotify URI or ID, the track whose features get pulled. Chain it after a search step so the identifier comes from the previous node.
Search tracks by keyword
track.searchWhat you see in n8n
Notes & use cases
Free text goes in, matching tracks come out, each one carrying the identifier the other track and playlist operations expect.
Key parameters
- Search Keyword: the keyword term to search for.
- Track ID: the node still marks the track's Spotify URI or ID as required on this operation, so leave a value in the field.
- Return All and Limit: every match, or a short list to keep executions light.
- Country: optional, restricts results to content playable in that market.
Need help automating Spotify with n8n?
A person reads every message.
