Spotify Play Count MCP
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Spotify Play Count MCPHow many plays does each track on this album have? spotify:album:4aawyAB9vmqN3uQ7FjRGTy"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Spotify Play Count MCP: Plays & Monthly Listeners
An MCP server that gives your AI assistant Spotify play counts. Paste a track, album, artist or playlist link (or a spotify: URI) and it returns every track's play count, and for artists their monthly listeners, followers, world rank and top cities. Optionally it adds streams over the last 1, 7 and 30 days for tracks in daily tracking. No Spotify login and no proxy setup.
Built on the public Spotify web pages, via the Apify Actor Spotify Play Count & Monthly Listeners Scraper. Not affiliated with Spotify.
Apify Store: https://apify.com/publicrecords/spotify-play-count-scraper
MCP server: https://mcp.apify.com?tools=publicrecords/spotify-play-count-scraper
Example prompts
"How many plays does each track on this album have? https://open.spotify.com/album/4aawyAB9vmqN3uQ7FjRGTy"
"Compare monthly listeners and followers for these three artists."
"Which tracks on this playlist have the most plays?"
"Track my artist page weekly and show streams per day for every song."
Related MCP server: Spotify MCP Server
Tool
Tool | Input | Output |
|
| One row per track (track, artists, album, play count, release date, links) and one per artist (monthly listeners, followers, world rank, top cities) |
About the daily stream fields (streamsLast1d, streamsLast7d, streamsLast30d, with addDailyStreams on): a track seen for the first time gets empty values on that day. The fields fill in after the first day of history, so a run a day later shows the last day and a week later the last 7 days.
The full input schema is in tools.json, generated from the Actor's public input schema and checked for drift daily.
MCP endpoint
https://mcp.apify.com?tools=publicrecords/spotify-play-count-scraperTransport: Streamable HTTP (hosted by Apify, see https://docs.apify.com/mcp).
Auth
Sign in with Apify OAuth when your client prompts you, or send the header
Authorization: Bearer <APIFY_TOKEN> where <APIFY_TOKEN> is your own Apify API token.
Never commit a real token.
Client setup
Claude
Claude Code:
claude mcp add --transport http spotify-play-count "https://mcp.apify.com?tools=publicrecords/spotify-play-count-scraper"Claude Desktop / claude.ai: Settings → Connectors → Add custom connector, and paste the MCP endpoint URL above.
Cursor
~/.cursor/mcp.json:
{
"mcpServers": {
"spotify-play-count": {
"url": "https://mcp.apify.com?tools=publicrecords/spotify-play-count-scraper"
}
}
}VS Code
.vscode/mcp.json:
{
"servers": {
"spotify-play-count": {
"type": "http",
"url": "https://mcp.apify.com?tools=publicrecords/spotify-play-count-scraper"
}
}
}To use a token instead of OAuth, add "headers": { "Authorization": "Bearer <APIFY_TOKEN>" } next to "url".
Disclosure: I maintain this Actor.
Local stdio server (open source)
This repo also ships a small MCP server in src/ for clients that only run local stdio servers. It answers initialize and tools/list locally from tools.json, which is generated from the Actor's public input schema and checked for drift in CI and daily, so any client or directory can inspect the tools with no token. tools/call is forwarded to the hosted Apify MCP endpoint above with your own APIFY_TOKEN; without a token a call returns a clear error instead of running anything. The token is only sent in the Authorization header and is never logged.
npx -y github:GeminiGeorge22/spotify-play-count-mcp{
"mcpServers": {
"spotify-play-count": {
"command": "npx",
"args": ["-y", "github:GeminiGeorge22/spotify-play-count-mcp"],
"env": { "APIFY_TOKEN": "YOUR_APIFY_TOKEN" }
}
}
}Or from a clone:
git clone https://github.com/GeminiGeorge22/spotify-play-count-mcp.git
cd spotify-play-count-mcp && npm install
APIFY_TOKEN=YOUR_APIFY_TOKEN node src/server.jsOptional env: APIFY_ACTORS (comma-separated subset of the Actors above) and APIFY_MCP_URL (full endpoint override).
Tests run against an in-memory mock server, with no network and no token: npm test. Requires Node.js 18+.
Python (uvx/pip)
A matching Python version of this server lives in python/, built on the official mcp Python SDK: same tool, same APIFY_TOKEN, same hosted endpoint. Requires Python 3.10+.
uvx spotify-play-count-mcp{
"mcpServers": {
"spotify-play-count": {
"command": "uvx",
"args": ["spotify-play-count-mcp"],
"env": { "APIFY_TOKEN": "YOUR_APIFY_TOKEN" }
}
}
}Or with pip: pip install spotify-play-count-mcp, then run spotify-play-count-mcp. Until the first PyPI release, run it from GitHub: uvx --from "git+https://github.com/GeminiGeorge22/spotify-play-count-mcp#subdirectory=python" spotify-play-count-mcp. Python tests: cd python && pip install -e ".[test]" && env -u APIFY_TOKEN python -m pytest.
See also
google-ads-transparency-mcp: Competitor Google ads from the Ads Transparency Center: new, running and stopped.
etsy-sales-mcp: Etsy search results and Etsy shop sales.
ecommerce-sales-mcp: E-commerce sales signals: Amazon bestsellers and reviews, eBay sold prices, TikTok Shop and Etsy shop sales.
sports-odds-mcp: Sports odds from Kambi sportsbooks.
Available Tools
1 toolpublicrecords--spotify-play-count-scraperSpotify Play Count & Monthly Listeners ScraperARead-onlyInspect
Spotify Play Count & Monthly Listeners Scraper. Play counts for every track of any Spotify album, playlist or artist, plus monthly listeners and followers for artists. Optional streams per day for tracked tracks. No login.
When to use: Use when you need Spotify play counts: the total plays of every track behind a track, album, artist or playlist link, plus an artist's monthly listeners, followers, world rank and top cities. Optional streams over the last 1, 7 and 30 days for tracks already in daily tracking; those fields stay empty for a track's first day and fill in once it has history. Good for release tracking, playlist checks and artist comparisons; not for private Spotify for Artists data or royalties.
Returns: the run's dataset rows as structured JSON (one row per result), plus the run and dataset IDs for paging the full dataset.
Behavior: starts one run of the Apify Actor "publicrecords/spotify-play-count-scraper" through Apify's hosted MCP gateway (mcp.apify.com) with your own APIFY_TOKEN; the run uses your Apify account. Read-only: it only reads public web data and changes nothing on the source site. Docs: https://apify.com/publicrecords/spotify-play-count-scraper
| Name | Required | Description | Default |
|---|---|---|---|
| urls | Yes | One per line: track, album, artist or playlist links (open.spotify.com/…) or URIs (spotify:album:…). Example: ["https://open.spotify.com/album/4aawyAB9vmqN3uQ7FjRGTy"] | |
| addDailyStreams | No | Adds streams per day for tracks we have been tracking. Tracks seen for the first time get empty values today and history from tomorrow. | |
| maxTracksPerTarget | No | 0 means no limit. Large playlists and full catalogs can run to thousands of tracks. | |
| includeArtistAlbums | No | Off: an artist link returns the artist row plus its top tracks. On: also every track of the albums and singles shown on the artist page (slower). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the read-only and open-world annotations, it explains that each invocation starts an Apify Actor run through the hosted gateway, requires the caller's APIFY_TOKEN, and uses their Apify account. It also discloses the public-data-only behavior, output rows and paging IDs, daily-tracking warm-up behavior, and documentation link.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The labeled 'When to use,' 'Returns,' and 'Behavior' paragraphs make the detailed description easy to scan, and the core capability is front-loaded. However, the opening repeats the title and the first two paragraphs overlap substantially in listing capabilities and metrics.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a hosted scraper with four parameters and no output schema, the definition covers inputs, outputs, authentication, run behavior, read-only scope, tracking caveats, exclusions, and documentation. Together with the fully described schema, it leaves no material gap likely to impede correct selection or invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the structured fields already document all four parameters well. The description reinforces supported target types and daily-stream history behavior but adds little beyond the schema, and it provides no extra invocation detail for maxTracksPerTarget or includeArtistAlbums.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the resource and operation precisely: scraping track play counts from Spotify track, album, artist, or playlist targets, with artist listeners, followers, rank, and top cities also available. It further distinguishes optional daily-stream history from the core play-count results.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
An explicit 'When to use' section gives concrete use cases: release tracking, playlist checks, and artist comparisons. It also supplies clear exclusions, stating that the tool is not for private Spotify for Artists data or royalties.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
v0.1.0- First observed
publicrecords--spotify-play-count-scraper
TDQS
Scored across 1 tool
With only one tool exposed, there is no possibility of tool-to-tool confusion or misselection. An agent always knows exactly which tool to call for Spotify play-count data.
The name 'publicrecords--spotify-play-count-scraper' uses kebab-case with a vendor prefix and double hyphen, and describes an object rather than following a verb_noun pattern. There is no inconsistency to speak of with a single tool, but the convention is not the predictable action-oriented style an agent might expect.
A single tool is thin even for a narrow, single-purpose scraper wrapper, and it forces all queries (track, album, artist, playlist) through one monolithic entry point. The tool itself is substantial, but the surface is minimal rather than well-scoped across a few focused operations.
The tool covers the stated domain well: per-track play counts across tracks/albums/artists/playlists plus monthly listeners, followers, rank, cities, and optional stream history. Gaps exist around search/link resolution and historical export beyond the run's dataset paging, and private Spotify for Artists data is explicitly out of scope.
Maintenance
Related MCP Connectors
Spotify play counts, monthly listeners, charts, artist stats, albums, playlists and ISRC lookup.
Find active Spotify playlists for a song and check a playlist's integrity. No curator contacts.
Query your Twitch streams, events, supporters, raids & rankings from an AI assistant via OAuth.
Privacy-first, cookie-free web analytics. Read stats and manage sites from your AI.
Related MCP Servers
- FlicenseAqualityDmaintenanceEnables AI assistants to control Spotify playback, search for music, manage playlists, and access library information through the Spotify API. Requires Spotify Premium for playback control features.4-
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to control Spotify playback, search music, manage playlists and library, and access user listening insights via the Spotify Web API.-
- AlicenseBqualityDmaintenanceEnables AI agents to access public Spotify data (tracks, albums, artists, playlists, podcasts) without an API key, including lyrics and podcast transcripts with optional login.282,984 PyPI323MIT
- AlicenseAqualityBmaintenanceEnables AI assistants to control Spotify playback, manage playlists, and plan DJ sets using BPM, key, and energy data.37MIT