Spotify Track API
Spotify track — playCount, joinable artists[]/album{}, explicit, releaseDate (1 credit).
GET request to /v1/spotify/track 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 Track API?
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.
What you get
- Track 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
Platform limits
Honest ceilings from the upstream platform surface — not Captapi bugs. Unexpected truncation here is usually the platform, not us.
- contentRating is Spotify's Pathfinder label enum (tracks: NONE | EXPLICIT | NINETEEN_PLUS | UNKNOWN) — not a 2-valued alias of explicit. explicit is true only when the label is EXPLICIT.
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/track?url=https%3A%2F%2Fopen.spotify.com%2Ftrack%2F0V3wPSX9ygBnCm8psDIegu" \
-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": "track",
"uri": "spotify:track:0V3wPSX9ygBnCm8psDIegu",
"url": "https://open.spotify.com/track/0V3wPSX9ygBnCm8psDIegu",
"name": "Anti-Hero",
"artists": [
{
"id": "06HL4z0CvFAxyc27GXpf02",
"uri": "spotify:artist:06HL4z0CvFAxyc27GXpf02",
"name": "Taylor Swift",
"url": "https://open.spotify.com/artist/06HL4z0CvFAxyc27GXpf02"
}
],
"album": {
"id": "151w1FgRZfnKZA9FEcg9Z3",
"uri": "spotify:album:151w1FgRZfnKZA9FEcg9Z3",
"name": "Midnights",
"url": "https://open.spotify.com/album/151w1FgRZfnKZA9FEcg9Z3",
"releaseDate": "2022-10-21T00:00:00Z"
},
"durationMs": 200690,
"durationFormatted": "3:20",
"releaseYear": 2022,
"image": "https://i.scdn.co/image/ab67616d0000b273bb54dde68cd23e2a268ae0f5",
"id": "0V3wPSX9ygBnCm8psDIegu",
"playCount": 2037355549,
"trackNumber": 3,
"contentRating": "NONE",
"explicit": false,
"mediaType": "AUDIO",
"playable": true,
"releaseDate": "2022-10-21T00:00:00Z"
}
}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.nameTrack title (song name). Not a profile displayName alias.durationMsLength in milliseconds.durationFormattedHuman-readable duration.releaseYearYear of release.imageImage URL.idStable platform ID for the item.playCountLifetime stream count from Spotify web GraphQL (same metric as artist topTracks[].playCount).trackNumberTrack position on the album.contentRatingPathfinder contentRating.label: NONE | EXPLICIT | NINETEEN_PLUS | UNKNOWN. Not a 2-valued twin of explicit — age-gate labels stay here.explicitConvenience boolean: true only when contentRating is EXPLICIT. NINETEEN_PLUS / UNKNOWN / NONE → false.mediaTypeSpotify media type (e.g. AUDIO).playableWhether the track is playable in the web player.releaseDateAlbum release date (ISO) when Spotify exposes it on the track payload.
Artists
Each item in artists contains:
idStable platform ID for the item.uriPlatform URI for the item.nameTrack title (song name). Not a profile displayName alias.urlCanonical URL of the item.
Album
The album object contains:
idStable platform ID for the item.uriPlatform URI for the item.nameTrack title (song name). Not a profile displayName alias.urlCanonical URL of the item.releaseDateAlbum release date (ISO) when Spotify exposes it on the track payload.
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 — getTrack embeds bulky artist discography. |
| 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/trackand parse the JSON response.
Use cases
Stream counts
Read playCount (same GraphQL stream metric as artist topTracks) without the official Web API.
Catalog joins
Chain artists[].uri → /spotify/artist and album.uri → /spotify/album from one track resolve.
Playlist enrichment
Fill CRM/playlist rows with title, durationMs, explicit, and releaseDate at 1 credit.
Frequently asked questions
What does the Spotify Track API do?+
The Spotify Track API lets you fetch full metadata and key stats from a public Spotify sound or track using one GET request to /v1/spotify/track. It returns clean JSON — no OAuth or infrastructure setup required.
How many credits does the Spotify Track 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.
Does track return playCount like artist topTracks?+
Yes. playCount is the same stream-count metric as topTracks[].playCount on /spotify/artist — from Spotify's web GraphQL getTrack, not the official Web API.
How do I join to artist or album?+
artists[] is [{id, uri, name, url}] and album is {id, uri, name, url, releaseDate}. Pass artists[0].uri into /spotify/artist and album.uri into /spotify/album.
Why are popularity / isrc / previewUrl often missing?+
Pathfinder getTrack frequently omits Spotify Web API popularity (0–100), ISRC, and preview URLs. When present they are returned; playCount is the listen metric on this surface.
Are contentRating and explicit the same field?+
No. contentRating is Spotify's Pathfinder label enum (NONE | EXPLICIT | NINETEEN_PLUS | UNKNOWN on tracks). explicit is a convenience boolean that is true only for EXPLICIT — age-gate labels are not collapsed into that bit.
Is the Spotify Track 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 Track API?
Sign up, grab your key, and make your first call in 60 seconds.