Public Spotify metadata, lyrics and podcasts for LLM agents. No API key, read-only.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
We haven't yet run this listing's install command through our automated sandbox check. This isn't a red flag β we're steadily working through the catalog.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Extract public Spotify data β tracks, albums, artists, playlists, and podcasts β without the official API or an API key.
π§ Try it live in your browser β β paste any Spotify link and watch SpotifyScraper pull typed data, cover art, and a preview, with the exact Python that does it. (How it was built.)
SpotifyScraper bootstraps an anonymous token from Spotify's own public embed
pages and reads the same JSON endpoints the web player uses, returning typed,
immutable models. v3 is a ground-up rewrite focused on reliability and a clean,
modern API. Public data needs no login; the opt-in logged-in features
(lyrics, podcast transcripts, and account info) add your own Spotify sp_dc
cookie β never a password or an API key.
Upgrading from v2? See the migration guide. The previous line lives on the
v2.xbranch.
spotipy wraps Spotify's official Web API β the right choice when you need to
write to a user's account or read private/library data. SpotifyScraper reads the
public data the web player already exposes, so it skips the setup entirely.
| SpotifyScraper | spotipy (official API) | |
|---|---|---|
| API key / app registration | β not needed | β required |
| OAuth flow | β not needed | β required for most data |
| Rate-limit quota / billing | none | Spotify quota |
| Sync and async | β | sync only |
| Fully typed, immutable models | β | partial |
| Lyrics & podcast transcripts | β (cookie) | β |
| MCP server for Claude / LLM agents | β | β |
| Write / playback / private data | β (read-only public) | β |
Use spotipy for authenticated writes and private, market-accurate data; use SpotifyScraper for fast, key-free access to public metadata, lyrics, and previews β plus a drop-in MCP server for AI agents.
Hit by the official-API deprecations? Spotify's
audio-features,recommendations, andrelated-artistsendpoints have returned403for new apps since Nov 2024. SpotifyScraper still returns related artists and recommendations with no API key. (It can't bring backaudio-featuresβ Spotify removed that data entirely, from every tool.)
Python 3.10+.
Every entity has its own method β get_track, get_album, get_artist,
get_playlist, get_episode, get_show β each accepting a URL, URI, or bare
ID.
Pass locale β a BCP-47 language tag: a bare language subtag ("de",
"ja") or a language-region tag ("ja-JP") β to localize the language of
display names. Set it per client or override it per call:
It is sent as the Accept-Language header and changes only how names are
spelled. It is not a country/market code β a bare "US" is meaningless as
a language and is ignored β and it does not filter regional availability
or vary preview URLs: anonymous Spotify resolves country from the request IP,
and its pathfinder silently ignores a market variable. True market/availability
filtering requires the authenticated Web API, which this library does not
implement; for region-specific results, point the client's proxy at the target
region. See the
localization guide.
SearchResults.get_user() (name, follower counts, public playlists).spotifyscraper-mcp (batch tools + a one-call get_track_visuals); also ships as a container on ghcr.io.locale) to set the language of names.get_account() / is_premium(), plus cookie-free session_info().get_*s([...]) with partial-failure-safe results and managed concurrency.to_dict() / from_dict().httpx); media and browser support are optional extras.With the cli extra installed, a spotifyscraper command is available:
Every command emits JSON, so it composes with tools like jq. See the
CLI guide.
Each getter has a plural sibling (get_tracks, get_albums, β¦) that fetches
many inputs and returns one BatchItem per input β index-aligned, and a dead
input never aborts the rest:
Factual signals from GitHub, npm, and our automated checks β not a rating.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/spotifyscraper)<a href="https://allmcps.com/mcp/spotifyscraper"><img src="https://allmcps.com/api/badge/spotifyscraper?style=directory" alt="Spotifyscraper on AllMCPs" /></a>