Spotify
Playlist
Resolves any public Spotify playlist into its metadata and contents: owner, description, follower count, artwork, total track count and each track with artist, album, duration and added-at date. Results are paginated with a cursor so large editorial playlists can be walked end to end. Made for playlist research and pitching workflows.
What you get
Each call returns up to 50 playlist tracks, plus a cursor for the next 50.
Endpoint
GET /v1/spotify/playlist
Price
$1.50
per 1,000 calls · $0.0015 per call
Cost per call
1 credit
Failed calls never charged
Parameters
The Spotify playlist ID. Required unless `url` is supplied.
The public Spotify playlist URL. Required unless `id` is supplied.
Pagination cursor returned by a previous response.
Bypass cached data and force a live fetch for this one call. Use it for daily monitoring or any figure you are tracking over time. Accepts `true`, `1`, `false` or `0`; anything else returns 400 `invalid_fresh`. Defaults to false and costs exactly the same as a cached call.
One of: true, 1, false, 0
Example request
Live call. Successful calls are charged; failed and empty results are not.
curl "https://fastfetchz.com/v1/spotify/playlist?id=37i9dQZF1DXcBWIGoYBM5M" \
-H "X-API-Key: $FASTFETCHZ_KEY"Example response
{
"success": true,
"service": {
"platform": "Spotify",
"name": "Playlist",
"slug": "playlist"
},
"credits_charged": 1,
"credits_remaining": 99,
"latency_ms": 214,
"data": {
"id": "37i9dQZF1DXcBWIGoYBM5M",
"uri": "spotify:playlist:37i9dQZF1DXcBWIGoYBM5M",
"__typename": "Playlist",
"description": "The hottest 50. Cover: ADÉLA",
"followers": 33852683,
"images": [
{
"sources": [
{
"height": null,
"url": "https://i.scdn.co/image/ab67706f00000002810d3464499e998c3faf8b9e",
"width": null
}
]
}
],
"name": "Today’s Top Hits",
"ownerV2": {
"__typename": "User",
"avatar": {
"sources": [
{
"height": 64,
"url": "https://i.scdn.co/image/ab67757000003b8255c25988a6ac314394d3fbf5",
"width": 64
},
{
"height": 300,
"url": "https://i.scdn.co/image/ab6775700000ee8555c25988a6ac314394d3fbf5",
"width": 300
}
]
},
"name": "Spotify",
"uri": "spotify:user:spotify",
"username": "spotify"
},
"tracks": [
{
"id": "02HyFYmpzt02VJ8k0CqxKj",
"__typename": "Track",
"albumOfTrack": {
"coverArt": {
"sources": [
{
"height": 300,
"url": "https://i.scdn.co/image/ab67616d00001e02b176fc721e1faba78b1ef35b",
"width": 300
},
{
"height": 64,
"url": "https://i.scdn.co/image/ab67616d00004851b176fc721e1faba78b1ef35b",
"width": 64
}
]
},
"name": "Ain't In LA",
"uri": "spotify:album:3qGInqGfOePTekb0y7AZ4s"
},
"artists": [
{
"profile": {
"name": "ADÉLA"
},
"uri": "spotify:artist:2qanRMyA5bNuTvz1dK45OP"
}
],
"availableMarkets": [
{
"countryCode": "AR"
},
{
"countryCode": "AU"
}
],
"contentRating": {
"label": "EXPLICIT"
},
"discNumber": 1,
"duration": {
"totalMilliseconds": 184927
},
"name": "Ain't In LA",
"playability": {
"playable": true
},
"playcount": 89159221,
"previews": {
"audioPreviews": [
{
"url": "https://p.scdn.co/mp3-preview/a3d0119e3182fbb19636c2a44737fa3e0b71f939"
}
]
},
"trackNumber": 1,
"uri": "spotify:track:02HyFYmpzt02VJ8k0CqxKj"
},
{
"id": "3h5T5JypYU7huFiVYhv1dr",
"__typename": "Track",
"albumOfTrack": {
"coverArt": {
"sources": [
{
"height": 300,
"url": "https://i.scdn.co/image/ab67616d00001e0221deb742375f88edfb2e7368",
"width": 300
},
{
"height": 64,
"url": "https://i.scdn.co/image/ab67616d0000485121deb742375f88edfb2e7368",
"width": 64
}
]
},
"name": "NO ME ARREPIENTO DE SENTIR TANTO",
"uri": "spotify:album:7a0lnWtCz0eW15WsWu3dHQ"
},
"artists": [
{
"profile": {
"name": "KAROL G"
},
"uri": "spotify:artist:790FomKkXshlbRYZFtlgla"
},
{
"profile": {
"name": "Judeline"
},
"uri": "spotify:artist:1H6X7yhnXZg73f9bssaj1Q"
}
],
"availableMarkets": [
{
"countryCode": "AR"
},
{
"countryCode": "AU"
}
],
"contentRating": {
"label": "NONE"
},
"discNumber": 1,
"duration": {
"totalMilliseconds": 225834
},
"name": "BbY WOW",
"playability": {
"playable": true
},
"playcount": 103015038,
"previews": {
"audioPreviews": [
{
"url": "https://p.scdn.co/mp3-preview/f6ab45a8375c5bcf6f03161edd9f44c1fad501c8"
}
]
},
"trackNumber": 11,
"uri": "spotify:track:3h5T5JypYU7huFiVYhv1dr"
}
],
"cursor": null,
"totalCount": 50
}
}Getting more results
Each response includes a cursor. Pass it back as cursor to fetch the next 50 playlist tracks. Repeat until no cursor is returned.
# Call 1 — first 50 playlist tracks
curl "https://fastfetchz.com/v1/spotify/playlist?id=37i9dQZF1DXcBWIGoYBM5M" \
-H "X-API-Key: $FASTFETCHZ_KEY"
# -> { "data": { ... }, "cursor": "eyJwYWdlIjoyfQ" }
# Call 2 — next 50 playlist tracks
curl "https://fastfetchz.com/v1/spotify/playlist?id=37i9dQZF1DXcBWIGoYBM5M&cursor=eyJwYWdlIjoyfQ" \
-H "X-API-Key: $FASTFETCHZ_KEY"Limits
- Maximum per call: 50 playlist tracks.
- Minimum per call: 1 playlist track — a target with less data returns fewer playlist tracks, and an empty result is still a successful call.
- Each call fetches a full page of up to 50 and costs the same either way. Pass limit to receive fewer than that in the response.
- Larger jobs are paginated with a cursor; there is no cap on how many pages you fetch.
What this costs in practice
500,000 playlist tracks = 10,000 calls × 1 credits per call = 10,000 credits = $0.00
Priced at the Custom pack rate: 1,000,000 credits for $0.00.
Open in the pricing calculator