Spotify Play Count Scraper
Pricing
from $0.99 / 1,000 results
Spotify Play Count Scraper
Get the per-track play count Spotify shows on its web player (not available in the official API) plus track and album metadata. Paste track or album links and get clean JSON.
Pricing
from $0.99 / 1,000 results
Rating
0.0
(0)
Developer
Farhan Febrian Nauval
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Get the per-track play count Spotify shows on its web player — the big "plays" number next to each song — plus track and album details. This number is not available in Spotify's official API; this actor reads exactly what the web player displays.
Paste track or album links, press Run, and get clean JSON with play counts for every track.
Why use this actor
- The real play count — the exact number shown on the Spotify web player, per track.
- No account, no login, no API key — just press Run.
- Albums expand automatically — give it an album link and get one row per track, each with its own play count.
- Rich detail per track — song name, artists, album, duration, explicit flag, and the full original data.
- Accepts links, URIs, or bare IDs —
https://open.spotify.com/track/...,spotify:album:..., or a 22-character ID. - Clean, stable JSON ready for spreadsheets, dashboards, databases, or reporting pipelines. Export to JSON, CSV, or Excel, and run it on a schedule.
How it works
- Paste one or more track or album links (or URIs / bare IDs).
- For a track, the actor returns that track's play count and details. For an album, it returns every track on the album, each with its own play count.
- Results stream into your dataset, ready to download as JSON, CSV, or Excel.
You don't manage any scrapers, servers, tokens, or logins — the actor handles all of that and retries automatically.
Input
{"albumOrTrackUrls": ["https://open.spotify.com/track/0DiWol3AO6WpXZgp0goxAV","https://open.spotify.com/album/4m2880jivSbbyEGAKfITCa"],"albumTrackLimit": 300,"maxConcurrency": 4}
Using bare IDs instead of links:
{"ids": ["0DiWol3AO6WpXZgp0goxAV"],"idType": "track"}
| Field | Type | Description |
|---|---|---|
albumOrTrackUrls | array of strings | Spotify track or album links or spotify: URIs. Track vs album is auto-detected. Album inputs return one record per track. |
ids | array of strings | Optional. 22-character Spotify IDs without the full URL. |
idType | string | track or album — what the values in ids are. Ignored for full links/URIs. |
albumTrackLimit | integer | Max tracks to return per album. Default 300. |
maxConcurrency | integer | How many tracks/albums to fetch in parallel. Default 4. |
proxyConfiguration | object | Optional. Not required for normal use. |
Output
Every record carries a small header (_input, _scrapedAt, _source, recordType) and the fields you actually want (play count, name, artists, album), followed by raw — the full original object with all field names preserved.
Track input — https://open.spotify.com/track/0DiWol3AO6WpXZgp0goxAV
{"_input": "https://open.spotify.com/track/0DiWol3AO6WpXZgp0goxAV","_source": "S1-getTrack","_scrapedAt": "2026-07-16T09:12:00Z","recordType": "TRACK","playcount": 934403466,"name": "One More Time","artists": ["Daft Punk"],"albumName": "Discovery","albumUri": "spotify:album:2noRn2Aes5aoNVsU6iWThc","trackId": "0DiWol3AO6WpXZgp0goxAV","uri": "spotify:track:0DiWol3AO6WpXZgp0goxAV","durationMs": 320357,"explicit": false,"raw": { "__typename": "Track", "playcount": "934403466", "name": "One More Time", "...": "full track object" }}
Album input — https://open.spotify.com/album/4m2880jivSbbyEGAKfITCa
One record per track. First two shown (13 total):
{"_input": "https://open.spotify.com/album/4m2880jivSbbyEGAKfITCa","_source": "S1-getAlbum","_scrapedAt": "2026-07-16T09:12:00Z","recordType": "TRACK","playcount": 161318873,"name": "Give Life Back to Music","artists": ["Daft Punk"],"albumName": "Random Access Memories","albumUri": "spotify:album:4m2880jivSbbyEGAKfITCa","trackNumber": 1,"discNumber": 1,"uri": "spotify:track:0dEIca2nhcxDUV8C5QkPYb","durationMs": 275386,"explicit": false,"raw": { "playcount": "161318873", "name": "Give Life Back to Music", "...": "full track object" }}
{"_input": "https://open.spotify.com/album/4m2880jivSbbyEGAKfITCa","_source": "S1-getAlbum","_scrapedAt": "2026-07-16T09:12:00Z","recordType": "TRACK","playcount": 854213040,"name": "Instant Crush (feat. Julian Casablancas)","artists": ["Daft Punk"],"albumName": "Random Access Memories","albumUri": "spotify:album:4m2880jivSbbyEGAKfITCa","trackNumber": 5,"discNumber": 1,"uri": "spotify:track:2cGxRwrMyEAp8dEbuZaVv6","durationMs": 337560,"explicit": false,"raw": { "...": "... 11 more tracks in this album run" }}
Key output fields
| Field | Type | Description |
|---|---|---|
playcount | number | The play count shown on the Spotify web player for this track. |
name | string | Track title. |
artists | array of strings | Artist name(s) on the track. |
albumName | string | Album the track belongs to. |
albumUri | string | Spotify URI of the album. |
uri | string | Spotify URI of the track. |
trackId | string | Track ID (track inputs). |
trackNumber / discNumber | number | Position within the album (album inputs). |
durationMs | number | Track length in milliseconds. |
explicit | boolean | Whether the track is marked explicit. |
recordType | string | Always TRACK. |
raw | object | The full original track object, all field names preserved. |
On any failure the actor emits a {_input, _source, _scrapedAt, _error, _errorDetail} record instead of silently skipping.
Notes & limits
- Play counts are a live snapshot at run time and update as Spotify updates them.
- Works with any public track or album — no account needed.
- Podcasts/episodes are not covered (Spotify doesn't publish play counts for those).
- For very large albums or compilations, raise
albumTrackLimit.