Spotify search API
Tracks, artists, albums, playlists, podcasts, episodes and audiobooks.
GET /v1/spotify/search
GET /v1/spotify/search
Tracks, artists, albums, playlists, podcasts, episodes and audiobooks. Without type every kind is returned, 10 of each; with type, 20 of that kind. Use type=show to find podcast ids. Episodes come back as songs with extra.type "episode", audiobooks as collections. Results follow the country of the server's IP; region is accepted but does not change them.
- Cost: 1 credit
- Cache: Results are kept up to 30 days; send
max_age_daysto reuse them for free. - Timeout: A request still running after about 25 seconds answers
202with a job to poll (Batch and jobs).
Parameters#
| Name | Type | Required | Description |
|---|---|---|---|
query | string | yes | Search terms. Also accepted as keyword, q. |
type | string | no | Kind of result. One of track, album, artist, playlist, show, episode, audiobook. Also accepted values: podcast for show, podcasts for show, tracks for track, albums for album, artists for artist, playlists for playlist, episodes for episode, audiobooks for audiobook. |
Every request also accepts:
cursor: the cursor from the previous page (Pagination).region: two-letter country code for results that vary by country. Changing it restarts the cursor chain.trim:truefor a smaller response withoutnullfields andextra.raw:trueto also get the platform's original object asraw.max_age_days: accept a cached result up to this many days old, for 0 credits (Caching).
Example request#
Set your key in the environment first (see Authentication).
1curl -G "https://api.socialscrape.dev/v1/spotify/search" \2 -H "x-api-key: $SOCIALSCRAPE_API_KEY" \3 --data-urlencode "query=taylor swift"1import os2import requests34params = {5 "query": "taylor swift",6}7res = requests.get(8 "https://api.socialscrape.dev/v1/spotify/search",9 headers={"x-api-key": os.environ["SOCIALSCRAPE_API_KEY"]},10 params=params,11)12body = res.json()1314if body["ok"]:15 print(body["data"])16else:17 print(body["error"]["code"], body["error"]["message"])1const url = new URL("https://api.socialscrape.dev/v1/spotify/search");2url.search = new URLSearchParams({3 "query": "taylor swift"4}).toString();5const res = await fetch(url, {6 headers: { "x-api-key": process.env.SOCIALSCRAPE_API_KEY! },7});8const body = await res.json();910if (body.ok) {11 console.log(body.data);12} else {13 console.error(body.error.code, body.error.message);14}1{2 "nodes": [3 {4 "name": "SocialScrape Spotify search",5 "type": "n8n-nodes-base.httpRequest",6 "typeVersion": 4.2,7 "position": [8 0,9 010 ],11 "parameters": {12 "method": "GET",13 "url": "https://api.socialscrape.dev/v1/spotify/search",14 "sendQuery": true,15 "queryParameters": {16 "parameters": [17 {18 "name": "query",19 "value": "taylor swift"20 }21 ]22 },23 "sendHeaders": true,24 "headerParameters": {25 "parameters": [26 {27 "name": "x-api-key",28 "value": "={{ $env.SOCIALSCRAPE_API_KEY }}"29 }30 ]31 }32 }33 }34 ],35 "connections": {}36}Example response#
This is a sample from a recorded response, lists and long text are shortened. Status 200.
1{2 "ok": true,3 "credits_charged": 1,4 "credits_remaining": 4999,5 "cached": false,6 "cached_at": null,7 "request_id": "req_30b540ee571e072da05cb2f3",8 "data": {9 "object": "list",10 "items": [11 {12 "object": "song",13 "platform": "spotify",14 "id": "5xTtaWoae3wi06K5WfVUUH",15 "url": "https://open.spotify.com/track/5xTtaWoae3wi06K5WfVUUH",16 "title": "Shake It Off",17 "artists": [18 "Taylor Swift"19 ],20 "album": "1989",21 "duration_seconds": 219.2,22 "cover_url": "https://i.scdn.co/image/ab67616d0000b2739abdf14e6058bd3903686148",23 "preview_url": null,24 "released_at": null,25 "isrc": null,26 "explicit": false,27 "is_original": null,28 "stats": {29 "plays": null,30 "uses": null,31 "likes": null32 },33 "extra": {34 "album_id": "2QJmrSgbdM35R67eoGQo4j",35 "artist_ids": [36 "06HL4z0CvFAxyc27GXpf02"37 ],38 "playable": true,39 "uri": "spotify:track:5xTtaWoae3wi06K5WfVUUH",40 "video_count": 141 }42 },43 {44 "object": "song",45 "platform": "spotify",46 "id": "3GCL1PydwsLodcpv0Ll1ch",47 "url": "https://open.spotify.com/track/3GCL1PydwsLodcpv0Ll1ch",48 "title": "You Belong With Me",49 "artists": [50 "Taylor Swift"51 ],52 "album": "Fearless",53 "duration_seconds": 231.133,54 "cover_url": "https://i.scdn.co/image/ab67616d0000b2737b25c072237f29ee50025fdc",55 "preview_url": null,56 "released_at": null,57 "isrc": null,58 "explicit": false,59 "is_original": null,60 "stats": {61 "plays": null,62 "uses": null,63 "likes": null64 },65 "extra": {66 "album_id": "2dqn5yOQWdyGwOpOIi9O4x",67 "artist_ids": [68 "06HL4z0CvFAxyc27GXpf02"69 ],70 "playable": true,71 "uri": "spotify:track:3GCL1PydwsLodcpv0Ll1ch",72 "video_count": 173 }74 }75 ],76 "cursor": "eyJvIjoxMH0",77 "has_more": true,78 "parent": null79 },80 "cursor": "eyJvIjoxMH0",81 "has_more": true82}Response#
A list of Song or Album or Profile or Collection objects in data.items, with data.cursor and data.has_more.
See Data models for every field. The envelope around data is described in Responses.
Errors#
Failures are free: credits_charged is 0. Branch on error.code, never on the message.
| Code | HTTP | Retry | Meaning |
|---|---|---|---|
invalid_params | 400 | no | A parameter is missing, unknown or has the wrong type. |
not_found | 404 | no | The platform says this profile, post or item does not exist. |
Every request can also fail with the account and platform errors listed on the Errors page.
Related endpoints#
- Spotify artist (
GET /v1/spotify/artist) - Spotify album (
GET /v1/spotify/album) - Spotify track (
GET /v1/spotify/track) - Spotify podcast (
GET /v1/spotify/podcast) - Spotify playlist (
GET /v1/spotify/playlist) - Spotify podcast episodes (
GET /v1/spotify/podcast/episodes)