Export timestamped public Spotify track play counts, artist monthly listeners, and album metadata from Spotify watchlist URLs.
Monitor Spotify music metrics over time
Spotify Play Count Scraper is built for music marketers, labels, playlist analysts, and creator-economy teams that need a repeatable public-metric export.
Use it to:
- Track public play counts for a watchlist of Spotify tracks.
- Record public monthly-listener values for artists.
- Save timestamps so exports can be compared across reporting periods.
- Keep album identity and release metadata alongside a metric watchlist.
It works with public Spotify URLs. It does not access Spotify for Artists, listener accounts, user libraries, or private analytics.
Who is it for?
Music marketers can compare track momentum between campaign snapshots.
Record labels and managers can maintain an exportable artist and release watchlist.
Playlist analysts can collect public track identifiers and visible performance metrics for reporting workflows.
Creator-economy researchers can build timestamped datasets for public music-performance analysis.
Start with a track watchlist
Paste public Spotify URLs and use a low maxItems value for a quick first export.
{
"trackUrls": [
"https://open.spotify.com/track/3n3Ppam7vgaVa1iaRUc9Lp"
],
"artistUrls": [
"https://open.spotify.com/artist/0C0XlULifJtAgn6ZNCW2eu"
],
"maxItems": 10,
"includeRelatedTracks": false
}
Spotify monthly listeners scraper and artist metrics scraper
Track play-count monitoring
Add one or more trackUrls. Keep maxItems close to the number of watchlist URLs when you only need requested tracks.
{
"trackUrls": [
"https://open.spotify.com/track/3n3Ppam7vgaVa1iaRUc9Lp"
],
"maxItems": 1
}
Artist monthly-listener monitoring
Add public artist URLs to return a timestamped monthly-listener metric when Spotify exposes one.
{
"artistUrls": [
"https://open.spotify.com/artist/0C0XlULifJtAgn6ZNCW2eu"
],
"maxItems": 1,
"failOnUnavailableMetric": false
}
Artist page with related tracks
Set includeRelatedTracks when you also want public track rows shown on a requested artist or album page.
{
"artistUrls": [
"https://open.spotify.com/artist/0C0XlULifJtAgn6ZNCW2eu"
],
"includeRelatedTracks": true,
"maxItems": 10
}
Example output
{
"entityType": "track",
"spotifyId": "3n3Ppam7vgaVa1iaRUc9Lp",
"url": "https://open.spotify.com/track/3n3Ppam7vgaVa1iaRUc9Lp",
"name": "Mr. Brightside",
"artistNames": ["The Killers"],
"albumName": "Hot Fuss",
"playCount": 3427230508,
"monthlyListeners": null,
"releaseDate": "2004-06-15T00:00:00Z",
"snapshotAt": "2026-08-26T00:00:00.000Z",
"scrapedAt": "2026-08-26T00:00:00.000Z",
"metricAvailability": "available",
"sourceInput": "https://open.spotify.com/track/3n3Ppam7vgaVa1iaRUc9Lp",
"isTarget": true
}
Input settings
| Input | Description |
|---|---|
trackUrls |
Public Spotify track URLs. Returns an exact public play count when Spotify exposes it. |
artistUrls |
Public Spotify artist URLs. Returns public monthly listeners when exposed. |
albumUrls |
Public Spotify album URLs. Returns album metadata; Spotify does not provide one aggregate album play count. |
maxItems |
Maximum rows to persist (1–1000; default 10). |
includeRelatedTracks |
Add public track rows exposed on requested artist or album pages. |
failOnUnavailableMetric |
Skip a target rather than save its unavailable metric row; remaining targets continue. |
Tips and limits
- Use track URLs when exact track play counts are required.
- Keep
snapshotAtwhen comparing a metric across reporting periods. - Invalid Spotify URLs are ignored. If no valid URL remains, the run fails before browsing.
- A public metric can change between runs.
- Public pages may omit a metric. This Actor never substitutes a zero for an unavailable metric.
- Album rows describe the album; Spotify does not expose one aggregate public album play count.
API Usage: Spotify play count API
Use the Apify API to run a saved or scheduled metric watchlist.
Node.js
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('fetch_cat/spotify-play-count-scraper').call({
trackUrls: ['https://open.spotify.com/track/3n3Ppam7vgaVa1iaRUc9Lp'],
maxItems: 1,
});
console.log(run.defaultDatasetId);
Python
from apify_client import ApifyClient
import os
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('fetch_cat/spotify-play-count-scraper').call(run_input={
'trackUrls': ['https://open.spotify.com/track/3n3Ppam7vgaVa1iaRUc9Lp'],
'maxItems': 1,
})
print(run['defaultDatasetId'])
cURL
curl -X POST "https://api.apify.com/v2/acts/fetch_cat~spotify-play-count-scraper/runs" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"trackUrls":["https://open.spotify.com/track/3n3Ppam7vgaVa1iaRUc9Lp"],"maxItems":1}'
MCP and agents
Connect an MCP-capable assistant to this Actor with:
claude mcp add --transport http apify "https://mcp.apify.com?tools=fetch_cat/spotify-play-count-scraper"
Or add this server configuration to an MCP client:
{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=fetch_cat/spotify-play-count-scraper"
}
}
}
Example prompts
- “Run my Spotify track watchlist and return each play count with
snapshotAt.” - “Compare this artist's monthly-listener snapshots from two datasets.”
- “Export public metadata and exact counts for these Spotify track URLs.”
Support
Open an issue from the Actor page with the public Spotify URL, run ID, and expected public field. Do not share credentials or private account information.