---
title: "Spotify Track API"
method: GET
path: "/v1/spotify/track"
tags: ["Spotify"]
---

# Spotify Track API

`GET /v1/spotify/track`

## Request

- Base URL: `https://api.captapi.com`
- URL: `https://api.captapi.com/v1/spotify/track`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-API-Key`

Spotify track — playCount, joinable artists[]/album{}, explicit, releaseDate (1 credit).

Pass a Spotify track URL, URI, or ID and get clean JSON: id, name (song title), playCount (stream count from Spotify's web GraphQL — same metric as artist topTracks[].playCount), trackNumber, contentRating + explicit, durationMs, artists[{id,uri,name,url}] (chain into /spotify/artist), album{id,uri,name,url,releaseDate} (chain into /spotify/album), releaseDate, and previewUrl / isrc / popularity when this Pathfinder surface exposes them. Flat 1 credit (same as artist — not 2). Pass raw=true only for the full GraphQL payload (omitted by default). Note: Spotify's official 0–100 popularity and ISRC are often absent on getTrack; playCount is the listen metric here.

Docs: https://captapi.com/apis/spotify-track

## Query parameters

- `url` string, required
- `raw` boolean
- `cache` boolean

## Response `200`

Success. The data object for this endpoint.

- object
  - `success` unknown, required
  - `data` object, required
    - `platform` string: Always "spotify" on this endpoint.
    - `type` string: Content type of the item.
    - `uri` string: Platform URI for the item.
    - `url` string: Canonical URL of the item.
    - `name` string: Track title (song name). Not a profile displayName alias.
    - `artists` object[]
      - `id` string: Id of this artists item.
      - `uri` string: Platform URI for the item.
      - `name` string: Name of this artists item.
      - `url` string: Canonical URL of the item.
    - `album` object
      - `id` string: Id of this album item.
      - `uri` string: Platform URI for the item.
      - `name` string: Name of this album item.
      - `url` string: Canonical URL of the item.
      - `releaseDate` string: Album release date (ISO) when Spotify exposes it on the track payload.
    - `durationMs` integer: Length in milliseconds.
    - `durationFormatted` string: Human-readable duration.
    - `releaseYear` integer: Year of release.
    - `image` string: Image URL.
    - `id` string: Stable platform ID for the item.
    - `playCount` integer: Lifetime stream count from Spotify web GraphQL (same metric as artist topTracks[].playCount).
    - `trackNumber` integer: Track position on the album.
    - `contentRating` string: Pathfinder contentRating.label: NONE | EXPLICIT | NINETEEN_PLUS | UNKNOWN. Not a 2-valued twin of explicit — age-gate labels stay here.
    - `explicit` boolean: Convenience boolean: true only when contentRating is EXPLICIT. NINETEEN_PLUS / UNKNOWN / NONE → false.
    - `mediaType` string: Spotify media type (e.g. AUDIO).
    - `playable` boolean: Whether the track is playable in the web player.
    - `releaseDate` string: Album release date (ISO) when Spotify exposes it on the track payload.

## Other responses

- `400`: Bad request: wrong platform URL, unknown endpoint, or an invalid parameter value. Not billed.
- `401`: Missing, invalid or revoked API key. Not billed.
- `402`: Not enough credits for this request. Not billed.
- `404`: The resource does not exist or is not public. Not billed.
- `422`: A required parameter is missing or has the wrong type. Not billed.
- `429`: Rate limit reached. Wait for Retry-After seconds. Not billed.
- `502`: The platform could not be reached or returned nothing usable. Retryable, not billed. 503 and 504 use the same envelope.

---

[API](https://skmtc.dev/captapi/apis/captapi-api.md) · [All operations](https://skmtc.dev/captapi/apis/captapi-api/llms.txt) · [OpenAPI document](https://skmtc.dev/captapi/apis/captapi-api/revisions/c9b9ac5ff1bd?raw)
