Spotify
GET /v1/spotify/album

Spotify Album API

Spotify album — tracks[] with playCount, joinable artists[], releaseDate, explicit (1 credit).

1 credit per request
TL;DR
Spotify album — tracks[] with playCount, joinable artists[], releaseDate, explicit (1 credit). The Spotify Album API (Spotify) is a single authenticated 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

Open in Playground

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

Sign in to run live
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

NameTypeRequiredDescription
urlstringYesSpotify 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.
rawbooleanNoInclude the upstream GraphQL payload as data.raw. Default false — omit unless you need fields not in the normalized shape.
cachebooleanNoSet 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.

Using an AI agent? This endpoint is the MCP tool spotify_album via @captapi/mcp. Set it up →

How it works

  1. 1. Sign up — get 100 free credits, no card required.
  2. 2. Create a key from your dashboard.
  3. 3. Send one request to /v1/spotify/album and 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.