SpotifyScraper

Read public Spotify catalogue data, charts, lyrics and podcast transcripts without an API key

By Ali Akhtari (individual) Python Local · stdio, Streamable HTTP Media

60 popularity score ★ 324 ↓ 4.8k/mo

Connect your client

Local (once it is running)

Add in one click

Opens the app, which asks before it adds the server.

Or add it by command or config

Claude CodeTerminal
claude mcp add --transport http spotifyscraper http://localhost:8000/mcp
Cursor~/.cursor/mcp.json
{
  "mcpServers": {
    "spotifyscraper": {
      "url": "http://localhost:8000/mcp"
    }
  }
}
VS Code.vscode/mcp.json
{
  "servers": {
    "spotifyscraper": {
      "type": "http",
      "url": "http://localhost:8000/mcp"
    }
  }
}
Codex~/.codex/config.toml
[mcp_servers.spotifyscraper]
url = "http://localhost:8000/mcp"
Gemini CLITerminal
gemini mcp add --scope user --transport http spotifyscraper http://localhost:8000/mcp
Local (PyPI)

Add in one click

Opens the app, which asks before it adds the server.

Or add it by command or config

FirstTerminal
pip install "spotifyscraper[mcp]"
Claude CodeTerminal
claude mcp add spotifyscraper -- spotifyscraper-mcp
Claude Desktopclaude_desktop_config.json
{
  "mcpServers": {
    "spotifyscraper": {
      "command": "spotifyscraper-mcp",
      "args": []
    }
  }
}
Cursor~/.cursor/mcp.json
{
  "mcpServers": {
    "spotifyscraper": {
      "command": "spotifyscraper-mcp",
      "args": []
    }
  }
}
VS Code.vscode/mcp.json
{
  "servers": {
    "spotifyscraper": {
      "type": "stdio",
      "command": "spotifyscraper-mcp",
      "args": []
    }
  }
}
Codex~/.codex/config.toml
[mcp_servers.spotifyscraper]
command = "spotifyscraper-mcp"
args = []
Gemini CLITerminal
gemini mcp add --scope user spotifyscraper spotifyscraper-mcp

Settings 1

SPOTIFY_SP_DC Optional: The sp_dc cookie of a logged-in Spotify web session; enables canvas, credits, user, lyrics, transcript and account tools.

What it does

SpotifyScraper is a Python library for reading Spotify's public data. It also ships an MCP server, spotifyscraper-mcp, that comes with the optional mcp extra. Instead of the official Web API, which needs a registered app and OAuth, it reads the same public endpoints the Spotify web player uses. If those fail, it falls back to the embed page.

The server's tools fetch tracks, albums, artists, playlists, podcast shows and episodes by URL, URI or bare ID. They can also search the catalogue, list and read editorial charts, find related artists and similar albums, page through an artist's discography and list upcoming concerts. Other tools pull a cover's colour palette or return the cover itself as an inline image. Six batch tools fetch many IDs in one call and report success or failure for each item. The server also exposes the six entity types as spotify:// resources and has three prompts: describe_album, playlist_blurb and summarize_episode.

Anonymous access covers most tools. Canvas videos, track credits, user profiles, lyrics, podcast transcripts and account state need the SPOTIFY_SP_DC environment variable, set to the sp_dc cookie of a logged-in Spotify web session. Without it, those tools return an error asking for it.

At version 3.9.2, server.py registers 28 tools. The README never gives a total. The code also sets some defaults the README leaves out: search returns 20 results unless `limit` is given, get_similar_albums returns 10, get_playlist reads up to 100 tracks (`max_tracks`) and get_show up to 50 episodes (`max_episodes`).

What it needs

RuntimePython 3.10+

Python 3.10 or later and the package installed with its mcp extra (pip install "spotifyscraper[mcp]"), which puts spotifyscraper-mcp on PATH. Network access to Spotify. For the authenticated tools, the sp_dc cookie from a logged-in Spotify web session in SPOTIFY_SP_DC. The container image ghcr.io/aliakhtari78/spotifyscraper serves streamable HTTP on port 8000 rather than stdio: start it with docker run -p 8000:8000 and connect a client to the address.

Limits

It is read-only and reaches only public data, plus what the sp_dc cookie unlocks. It cannot play music, edit playlists, read private library data or filter results by market. The locale setting changes only the language of names, not regional availability. It cannot return audio features, because Spotify removed that data. Previews are about 30 seconds, and full tracks are never fetched. It is unofficial and depends on Spotify's internal web endpoints, so the README warns it can break when Spotify changes them. Canvas in get_track_visuals is best-effort and null without the cookie.

Who it suits

Suits developers and researchers who want Spotify catalogue metadata, charts, lyrics or podcast transcripts in an assistant without registering an app with Spotify. Everything runs locally over stdio, and nothing is written to an account. Its own README points to spotipy, a library built on the official Web API, for anything that writes to an account, controls playback or needs private or market-accurate data. Anyone who must stay within an official, supported API should look elsewhere, because this server reads undocumented web endpoints and needs a session cookie for the richer tools.

Tools 28

get_track
Fetch one track by URL, URI or ID
get_album
Fetch one album
get_artist
Fetch one artist's profile
get_playlist
Fetch a playlist, up to 100 tracks by default
get_episode
Fetch a podcast episode
get_show
Fetch a podcast show, up to 50 episodes by default
search
Search the catalogue, optionally by entity type; 20 results by default
list_charts
List the available editorial charts
get_chart
Read the tracks of one chart
get_related_artists
Find artists related to an artist
get_discography
Page through an artist's releases
get_similar_albums
Recommend albums similar to one album; 10 by default
get_colors
Extract the theming colour palette of a cover
get_artist_events
List an artist's upcoming concerts
get_tracks
Fetch many tracks in one call with per-item results
get_albums
Fetch many albums in one call
get_artists
Fetch many artists in one call
get_episodes
Fetch many podcast episodes in one call
get_playlists
Fetch many playlists in one call
get_shows
Fetch many podcast shows in one call
get_canvas
Get a track's looping Canvas video; needs SPOTIFY_SP_DC
get_credits
Get a track's performers, writers and producers; needs SPOTIFY_SP_DC
get_user
Read a public user profile; needs SPOTIFY_SP_DC
get_lyrics
Get a track's time-synced lyrics; needs SPOTIFY_SP_DC
get_transcript
Get a podcast episode's transcript; needs SPOTIFY_SP_DC
get_account
Report the signed-in account's plan state; needs SPOTIFY_SP_DC
get_cover_image
Return an entity's cover art as an inline image
get_track_visuals
Return a track with its colours and, if available, Canvas in one call

Similar servers