Spotify Album API
Spotify album — tracks[] with playCount, joinable artists[], releaseDate, explicit (1 credit).
GET request to /v1/spotify/album that responds with clean JSON and costs 1 credit. Pass cache=true for a free 24h cache hit; default is always fresh. Start with 100 free credits — no credit card.What is the Spotify Album API?
Pass a Spotify album URL, URI, or ID and get clean JSON: name, artists[{id,uri,name,url}] (chain into /spotify/artist), tracks[{id,trackNumber,discNumber,name,uri,url,durationMs,playCount,explicit,artists}] from tracksV2 (per-track stream counts; id matches the uri suffix for joins into /spotify/track), totalTracks, releaseDate (full ISO — not year-only), releaseYear, album-level explicit (true if any track label is EXPLICIT), and cover image. Flat 1 credit (same as artist/track — not 2). Pass raw=true only if you need the full GraphQL payload (omitted by default).
What you get
- Album fields as clean structured JSON
- IDs, URLs, and titles where the platform exposes them
- Engagement or popularity signals when available
- Stable IDs for joining with other endpoints
Try it
Fill in the parameters below and copy a ready-to-run request, or open the live Playground to run it against your account (no API key paste).
Parameters
curl "https://api.captapi.com/v1/spotify/album?url=https%3A%2F%2Fopen.spotify.com%2Falbum%2F151w1FgRZfnKZA9FEcg9Z3%3Fsi%3DDKhdQPU7T8W1NtfM19TiiA" \
-H "Authorization: Bearer capt_live_..."
# or: -H "x-api-key: capt_live_..."Edit the parameters and the code updates instantly. Switch languages and hit copy.
Example response
{
"success": true,
"data": {
"platform": "spotify",
"type": "album",
"uri": "spotify:album:151w1FgRZfnKZA9FEcg9Z3",
"url": "https://open.spotify.com/album/151w1FgRZfnKZA9FEcg9Z3?si=DKhdQPU7T8W1NtfM19TiiA",
"name": "Midnights",
"artists": [
{
"id": "06HL4z0CvFAxyc27GXpf02",
"uri": "spotify:artist:06HL4z0CvFAxyc27GXpf02",
"name": "Taylor Swift",
"url": "https://open.spotify.com/artist/06HL4z0CvFAxyc27GXpf02"
}
],
"releaseYear": 2022,
"image": "https://i.scdn.co/image/ab67616d0000b273bb54dde68cd23e2a268ae0f5",
"totalTracks": 13,
"tracks": [
{
"trackNumber": 1,
"discNumber": 1,
"name": "Lavender Haze",
"uri": "spotify:track:5jQI2r1RdgtuT8S3iG8zFC",
"url": "https://open.spotify.com/track/5jQI2r1RdgtuT8S3iG8zFC",
"durationMs": 202395,
"playCount": 902202241,
"explicit": true,
"artists": [
{
"id": "06HL4z0CvFAxyc27GXpf02",
"uri": "spotify:artist:06HL4z0CvFAxyc27GXpf02",
"name": "Taylor Swift",
"url": "https://open.spotify.com/artist/06HL4z0CvFAxyc27GXpf02"
}
]
},
{
"trackNumber": 2,
"discNumber": 1,
"name": "Maroon",
"uri": "spotify:track:3eX0NZfLtGzoLUxPNvRfqm",
"url": "https://open.spotify.com/track/3eX0NZfLtGzoLUxPNvRfqm",
"durationMs": 218270,
"playCount": 627635994,
"explicit": true,
"artists": [
{
"id": "06HL4z0CvFAxyc27GXpf02",
"uri": "spotify:artist:06HL4z0CvFAxyc27GXpf02",
"name": "Taylor Swift",
"url": "https://open.spotify.com/artist/06HL4z0CvFAxyc27GXpf02"
}
]
}
],
"tracksHasMore": false,
"releaseDate": "2022-10-21T00:00:00Z",
"explicit": true,
"id": "151w1FgRZfnKZA9FEcg9Z3"
}
}Billing metadata is returned in response headers: X-Captapi-Credits (credits charged), X-Captapi-Cache (hit or miss), and X-Captapi-Source. Failed requests (4xx/5xx) are never charged. See the full list of error codes in the error reference.
Response structure
A successful call returns success, cached, creditsUsed, and a data object with the following fields:
Top-level fields
platformAlways "spotify" on this endpoint.typeContent type of the item.uriPlatform URI for the item.urlCanonical URL of the item.nameAlbum title. Not a profile displayName alias.releaseYearConvenience year derived from releaseDate / date.year.imageImage URL.totalTracksAlbum track count from Spotify (matches tracks[] length when the catalog page is complete).tracksHasMoreTrue when totalTracks exceeds the tracks[] page returned (rare after full pagination).releaseDateFull album release timestamp (ISO) when Spotify precision is DAY — prefer over releaseYear alone.explicitTrue if any track contentRating is EXPLICIT; false when no track is EXPLICIT.idStable platform ID for the item.
Artists
Each item in artists contains:
idStable platform ID for the item.uriPlatform URI for the item.nameAlbum title. Not a profile displayName alias.urlCanonical URL of the item.
Tracks
Each item in tracks contains:
trackNumberTrack position on the album.discNumberDisc number. Example: 1.nameAlbum title. Not a profile displayName alias.uriPlatform URI for the item.urlCanonical URL of the item.durationMsLength in milliseconds.playCountLifetime stream count for a tracks[] row (same GraphQL metric as /spotify/track).explicitTrue if any track contentRating is EXPLICIT; false when no track is EXPLICIT.artistsAlbum artists as [{id, uri, name, url}] — chain uri into /spotify/artist.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| url | string | Yes | Spotify URL, URI, or ID. The URL platform must match this endpoint's platform. Do not pass cross-platform URLs, e.g. YouTube to TikTok, Instagram to Facebook, LinkedIn to X/Twitter, or Pinterest to Rumble. |
| raw | boolean | No | Include the upstream GraphQL payload as data.raw. Default false — omit unless you need fields not in the normalized shape. |
| cache | boolean | No | Set true to serve from the 24h response cache (0 credits on hit). Default false — always fetch fresh. Envelope includes cached + cachedAt on hits. |
Authentication: send your key as Authorization: Bearer capt_live_.... A typical call costs 1 credit. Pass cache=true for a free 24h cache hit; default is always fresh.
How it works
- 1. Sign up — get 100 free credits, no card required.
- 2. Create a key from your dashboard.
- 3. Send one request to
/v1/spotify/albumand parse the JSON response.
Use cases
Track lists with stream counts
Read tracks[] with playCount, durationMs, and explicit without scraping the album page.
Catalog joins
Chain artists[].uri → /spotify/artist and tracks[].uri → /spotify/track.
Release metadata
Use full releaseDate (ISO) plus cover art for discography and CRM enrichment.
Frequently asked questions
What does the Spotify Album API do?+
The Spotify Album API lets you fetch full metadata and key stats from a public Spotify sound or track using one GET request to /v1/spotify/album. It returns clean JSON — no OAuth or infrastructure setup required.
How many credits does the Spotify Album API cost?+
Each successful call costs 1 credit. Pass cache=true to serve from the 24h cache (0 credits on hit); default is always fresh. Hits include cached + cachedAt. Selected profile endpoints also accept cacheMaxAge=1d|3d|7d|14d|30d. Failed or empty results are never charged.
Do I need a Spotify API key or OAuth?+
No. A single Captapi key works across every platform Captapi supports — YouTube, TikTok, Instagram, Facebook, Twitter/X, Reddit, Threads, Bluesky, Pinterest, LinkedIn, Rumble, Spotify, Kwai, and more. We handle proxies, rate limits, retries, and authentication for you.
Where is the track list?+
tracks[] — each row has id, trackNumber, discNumber, name, uri/url, durationMs, playCount, explicit, and artists[{id,uri,name,url}]. id matches the uri suffix for joins into /spotify/track. totalTracks matches the album; tracksHasMore is true only if a page was truncated.
Is releaseDate the full date or just the year?+
releaseDate is the ISO timestamp from Spotify (e.g. 2022-10-21T00:00:00Z) when precision is DAY. releaseYear is kept as a convenience integer.
Is the Spotify Album API suitable for production use?+
Yes. It is a stable REST endpoint with predictable JSON and automatic retries. Pass cache=true to serve from the 24h cache (0 credits on hit); default is always fresh. Hits include cached + cachedAt. Selected profile endpoints also accept cacheMaxAge=1d|3d|7d|14d|30d. Use it for analytics, monitoring, and content automation.
More Spotify APIs
Ready to use the Spotify Album API?
Sign up, grab your key, and make your first call in 60 seconds.