Skip to content
APIStead
MediaVerifiedPreview

Spotify API v2 for AI Agents

Spotify metadata v2: tracks, albums, artists, playlists, search, full discographies, artist playlists, related artists, discovered-on and featuring playlists, similar albums, podcasts, episodes, audiobooks, chapters, genres and users. No auth, no API key.

About this API

Spotify v2 is the additive generation of the APIStead Spotify API. The five v1 routes remain live; v2 adds keyword search, complete artist discographies, artist playlist sections, related artists and similar albums.

Every v2 route accepts a Spotify URL, URI or 22-character id and returns normalized JSON. Playlists return every ordered track with no song limit. Search returns tracks, albums, artists, playlists, podcasts, episodes, audiobooks, genres and users with per-type counts and totals. Dedicated search routes cover podcasts, episodes, audiobooks and users. Detail routes return podcasts, podcast episodes, episodes, audiobooks, audiobook chapters, genres and public user profiles. Artist routes return playlists, related artists, discovered-on playlists and featuring playlists. Discography returns the artist's release sections and marks `complete: true` when the full discography was read.

The API reads public Spotify catalogue metadata. No Spotify account, login, OAuth token or API key is required from the buyer. This is an independent APIStead API and is not affiliated with or endorsed by Spotify.

Playlist creation dates and per-track added dates are not exposed in public metadata, so those fields are not returned. Playback control, downloads and user-library access are not included.

For AI agents

Spotify v2 metadata for agents: search the catalogue; fetch complete artist discographies, artist playlists, related artists, similar albums, podcast episodes, audiobook chapters and public user playlists. No Spotify login or API key.

Scope

The v2 release covers public Spotify search, playlists, albums, artists, artist top tracks, related artists, artist playlists, discovered-on playlists, featuring playlists, complete artist discographies, tracks, similar albums, podcasts, podcast episodes, episodes, audiobooks, audiobook chapters, genres and public user profiles. The five v1 routes remain live. It does not access a user library, playback, downloads or account data. Playlist creation dates and per-track added dates are not exposed in public metadata.

Endpoints

MethodRoutePrice
GET/spotify/search$0.03
GET/spotify/playlist$0.03
GET/spotify/album$0.03
GET/spotify/artist$0.03
GET/spotify/artist/top-tracks$0.03
GET/spotify/artist/discography$0.03
GET/spotify/track$0.03
GET/spotify/podcast$0.03
GET/spotify/podcast/episodes$0.03
GET/spotify/episode$0.03
GET/spotify/audiobook$0.03
GET/spotify/audiobook/chapters$0.03
GET/spotify/genres$0.03
GET/spotify/user$0.03
GET/spotify/search/podcasts$0.03
GET/spotify/search/episodes$0.03
GET/spotify/search/audiobooks$0.03
GET/spotify/search/users$0.03
GET/spotify/artist/playlists$0.03
GET/spotify/artist/related$0.03
GET/spotify/artist/discovered-on$0.03
GET/spotify/artist/featuring$0.03
GET/spotify/track/similar-albums$0.03

Example request

request
GET https://apistead.qd.je/api/v2/spotify/search?q=daft%20punk&type=all&limit=2

Example response

200 application/json
{
  "note": "Spotify catalogue search, normalized for agents. Returns public tracks, albums, artists, playlists, podcasts, episodes, audiobooks, genres and users. Playback control, downloads and user-library access are not included.",
  "type": "all",
  "limit": 2,
  "query": "daft punk",
  "users": [],
  "albums": [
    {
      "id": "5WulAOx9ilWy1h8UGZ1gkI",
      "uri": "spotify:album:5WulAOx9ilWy1h8UGZ1gkI",
      "url": "https://open.spotify.com/album/5WulAOx9ilWy1h8UGZ1gkI",
      "name": "Deadbeat",
      "type": "album",
      "artists": [
        {
          "id": "5INjqkS1o8h1imAzPqGZBb",
          "url": "https://open.spotify.com/artist/5INjqkS1o8h1imAzPqGZBb",
          "name": "Tame Impala"
        }
      ],
      "cover_image": "https://i.scdn.co/image/ab67616d0000b273208500450dcd0fd294d7bd3b",
      "track_count": null,
      "release_date": "2025-10-17"
    }
  ],
  "counts": {
    "users": 0,
    "albums": 1,
    "genres": 0,
    "tracks": 1,
    "artists": 1,
    "episodes": 0,
    "podcasts": 0,
    "playlists": 1,
    "audiobooks": 0
  },
  "genres": [],
  "offset": 0,
  "source": "spotify",
  "totals": {
    "users": 0,
    "albums": 1,
    "genres": 0,
    "tracks": 1,
    "artists": 1,
    "episodes": 0,
    "podcasts": 0,
    "playlists": 1,
    "audiobooks": 0
  },
  "tracks": [
    {
      "id": "4whkhyXTrTgHKZzkUvdwoq",
      "uri": "spotify:track:4whkhyXTrTgHKZzkUvdwoq",
      "url": "https://open.spotify.com/track/4whkhyXTrTgHKZzkUvdwoq",
      "album": {
        "id": "5WulAOx9ilWy1h8UGZ1gkI",
        "url": "https://open.spotify.com/album/5WulAOx9ilWy1h8UGZ1gkI",
        "name": "Deadbeat",
        "release_date": "2025-10-17"
      },
      "title": "My Old Ways",
      "artists": [
        {
          "id": "5INjqkS1o8h1imAzPqGZBb",
          "url": "https://open.spotify.com/artist/5INjqkS1o8h1imAzPqGZBb",
          "name": "Tame Impala"
        }
      ],
      "artwork": "https://i.scdn.co/image/ab67616d0000b273208500450dcd0fd294d7bd3b",
      "explicit": true,
      "playable": true,
      "position": 1,
      "duration_ms": 298783,
      "preview_url": "https://p.scdn.co/mp3-preview/7a7303f1efe59a3ef469aed4ea5fa7a3ef0e677d",
      "release_date": "2025-10-17",
      "duration_formatted": "4:59"
    }
  ],
  "artists": [
    {
      "id": "5INjqkS1o8h1imAzPqGZBb",
      "uri": "spotify:artist:5INjqkS1o8h1imAzPqGZBb",
      "url": "https://open.spotify.com/artist/5INjqkS1o8h1imAzPqGZBb",
      "name": "Tame Impala",
      "image": "https://i.scdn.co/image/ab6761610000e5ebe412a782245eb20d9626c601"
    }
  ],
  "preview": false,
  "episodes": [],
  "podcasts": [],
  "playlists": [
    {
      "id": "37i9dQZF1DXcBWIGoYBM5M",
      "uri": "spotify:playlist:37i9dQZF1DXcBWIGoYBM5M",
      "url": "https://open.spotify.com/playlist/37i9dQZF1DXcBWIGoYBM5M",
      "name": "Daft Punk Mix",
      "owner": {
        "id": "spotify",
        "url": "https://open.spotify.com/user/spotify",
        "name": "Spotify",
        "avatar": null
      },
      "cover_image": "https://i.scdn.co/image/ab67616d0000b2730893a0c33fd4b8497b0ef2f6",
      "description": "",
      "track_count": null
    }
  ],
  "audiobooks": [],
  "retrieved_at": "2026-11-12T00:00:00Z"
}

Call with x402

The client reads the 402 challenge, pays USDC on Base, then retries with the payment header. The 402 is the authoritative price for the call.

Python: v2 search

python
import asyncio
import os

from eth_account import Account
from x402 import x402Client
from x402.http.clients import x402HttpxClient
from x402.mechanisms.evm import EthAccountSigner
from x402.mechanisms.evm.exact.register import register_exact_evm_client

account = Account.from_key(os.environ["EVM_PRIVATE_KEY"])
client = x402Client()
register_exact_evm_client(client, EthAccountSigner(account))


async def main():
    async with x402HttpxClient(client) as http:
        response = await http.get(
            "https://apistead.qd.je/api/v2/spotify/search",
            params={"q": "daft punk", "type": "track", "limit": 5},
        )
        response.raise_for_status()
        print(response.json())


asyncio.run(main())

JavaScript: v2 search

javascript
import { x402Client } from "@x402/core/client";
import { ExactEvmScheme } from "@x402/evm/exact/client";
import { wrapFetchWithPayment } from "@x402/fetch";
import { privateKeyToAccount } from "viem/accounts";

const account = privateKeyToAccount(process.env.EVM_PRIVATE_KEY);
const client = new x402Client();
client.register("eip155:8453", new ExactEvmScheme(account));

const paidFetch = wrapFetchWithPayment(fetch, client);
const response = await paidFetch(
  "https://apistead.qd.je/api/v2/spotify/search?q=daft%20punk&type=track&limit=5",
);

console.log(await response.json());

cURL: v2 search challenge

bash
curl -i "https://apistead.qd.je/api/v2/spotify/search?q=daft%20punk&type=track&limit=5"

Python: v2 track

python
import asyncio
import os

from eth_account import Account
from x402 import x402Client
from x402.http.clients import x402HttpxClient
from x402.mechanisms.evm import EthAccountSigner
from x402.mechanisms.evm.exact.register import register_exact_evm_client

account = Account.from_key(os.environ["EVM_PRIVATE_KEY"])
client = x402Client()
register_exact_evm_client(client, EthAccountSigner(account))


async def main():
    async with x402HttpxClient(client) as http:
        response = await http.get(
            "https://apistead.qd.je/api/v2/spotify/track",
            params={"id": "4cOdK2wGLETKBW3PvgPWqT"},
        )
        response.raise_for_status()
        print(response.json())


asyncio.run(main())

Verification

Verified23 of 23 routes verified

APIStead paid one named route from its own wallet, received real product back, and published the on-chain USDC receipt. The badge covers that route, not the whole listing.

Last verified
13 Nov 2026

Use cases

  • Search Spotify for a track, album, artist or playlist without a login
  • Find Spotify metadata without an OAuth token or API key
  • Fetch a complete Spotify artist discography
  • List an artist's playlists, related artists, discovered-on playlists and featuring playlists
  • Search the Spotify catalogue by keyword
  • Search podcasts, episodes, audiobooks or public users directly
  • Fetch a Spotify podcast and its episodes
  • Fetch an audiobook and its chapters
  • Find Spotify genres and public user profiles
  • Find albums similar to a track
  • Summarize a Spotify playlist or album for a user
  • Build a music discovery or recommendation workflow

Agent intents

Phrases an agent can use to find this route.

Spotify search APISpotify API without loginSpotify API without an API keySpotify API no OAuthSpotify catalogue searchSpotify music metadata APISpotify discography APISpotify artist playlists APISpotify related artists APIget Spotify related artistsget Spotify artist playlistsget Spotify artist discovered-on playlistsget Spotify artist featuring playlistsget Spotify albums similar to a tracksearch Spotify podcastssearch Spotify episodessearch Spotify audiobookssearch Spotify usersget a Spotify podcastget Spotify podcast episodesget a Spotify episodeget a Spotify audiobookget Spotify audiobook chaptersget Spotify genresget a Spotify public user profilesearch Spotify trackssearch Spotify albumssearch Spotify artistssearch Spotify playlistsget Spotify metadata without a tokensearch Spotify for a tracksearch Spotify for an album or artistsearch Spotify without an API keyget a Spotify artist's complete discographyget a Spotify playlist with full track metadataget Spotify metadata without a Spotify accountSpotify API v2 for AI agentsSpotify API alternative

Frequently asked questions

What is the difference between Spotify v1 and v2?+

v1 keeps playlist, album, artist, artist top-tracks and track metadata. v2 adds keyword search, complete artist discographies, artist playlists, related artists, discovered-on playlists, featuring playlists, similar albums and dedicated spoken-audio and user search. v2 returns the same core shapes as v1.

Does v2 require a Spotify account?+

No. The provider uses public catalogue metadata. There is no Spotify login, OAuth grant, user library scope or playback scope, and the buyer does not send a Spotify token.

Is APIStead affiliated with Spotify?+

No. APIStead is an independent first-party API and is not affiliated with or endorsed by Spotify. It reads public Spotify catalogue metadata without a buyer account.

Does v2 include playlist creation or per-track added dates?+

No. Playlist creation dates are not exposed in public playlist metadata. Per-track added dates are not exposed in public metadata. V2 does not return or fabricate either.

Does v2 include artist genres or popularity?+

No. The public catalogue source exposes world_rank but does not expose Spotify genre labels or popularity scores. V2 does not fabricate them.

Does the v2 playlist endpoint limit tracks?+

No. It pages through the complete playlist and returns every ordered track. album_limit only controls how many tracks receive album enrichment.

What does v2 search return?+

Search returns tracks, albums, artists, playlists, podcasts, episodes, audiobooks, genres and users with per-type counts and totals. Dedicated search routes return only podcasts, episodes, audiobooks or users. Detail routes return podcasts, podcast episodes, episodes, audiobooks, audiobook chapters, genres and public user profiles. Artist records include world_rank, and artist routes return playlists, related artists, discovered-on playlists and featuring playlists.

What artist and recommendation routes does v2 include?+

V2 includes artist playlists, related artists, discovered-on playlists, featuring playlists and similar albums based on a track. These return normalized JSON for agents.

Does v2 include track, album or artist radio?+

No. Radio is created by the playback client and is not exposed as a stable public catalogue query. V2 returns similar albums based on a track and related artists instead.

Is the v2 discography complete?+

v2 returns all albums, singles and EPs and marks complete as true when the release feed was fully read. The public Appears On section exposes up to 50 items and reports appears_on_total.

Does v2 download or play music?+

No. v2 returns metadata only. It does not download audio, stream audio, control playback or access a user library.

How much does a v2 call cost?+

Every v2 route costs $0.03 USDC on Base. The agent reads the x402 402 challenge, pays the provider wallet directly and retries. There is no API key or subscription.

Changelog

2.3.0release12 Nov 2026

Artist sections, similar albums and focused search

Added artist playlists, related artists, discovered-on and featuring playlists, similar albums based on a track, and dedicated podcast, episode, audiobook and user search routes. V2 now has twenty-three routes at /bin/bash.03 per call.

By APIStead Labs

2.2.0release12 Nov 2026

Podcasts, audiobooks, genres and users

Added podcast, podcast episode, episode, audiobook, audiobook chapter, genre search and public user profile routes. V2 now has fourteen routes at /bin/bash.03 per call.

By APIStead Labs

2.1.0release12 Nov 2026

Price update and release dates

V2 calls now cost /bin/bash.05 USDC. Search covers tracks, albums, artists, playlists, podcasts, episodes, audiobooks, genres and users. Playlists return every ordered track with no song limit. Track and release objects include release_date; artist records include world_rank. Appears On reports appears_on_total.

By APIStead Labs

2.0.1release12 Nov 2026

Full discographies and preview URLs

Discography returns all albums, singles and EPs by default. Track responses now include a 30-second preview_url when Spotify publishes one.

By APIStead Labs

2.0.0release12 Nov 2026

Spotify API v2

Added keyword search, complete artist discographies and seven v2 routes. All v2 routes are settlement-verified on Base mainnet.

By APIStead Labs