Spotify Playlist Tracker - Followers, Tracks & Play Counts
Pricing
from $2.80 / 1,000 playlist returneds
Spotify Playlist Tracker - Followers, Tracks & Play Counts
Follower count and track list for public Spotify playlists: the exact follower integer, total track count, and the tracks in the public page with their play counts. Turn monitoring on and later runs return a playlist only when followers or tracks changed.
Pricing
from $2.80 / 1,000 playlist returneds
Rating
0.0
(0)
Developer
NeverEmpty
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
10 days ago
Last modified
Categories
Share
Spotify Playlist Tracker
Follower count and track list for public Spotify playlists: the exact follower integer in the public playlist page (33,757,306 - not "33.7M"), the playlist's total track count, and the tracks that are in the public page with position, artists and play count. With monitoring on, a playlist comes back only when its follower count or its tracks changed, with the previous figures, the difference, and the tracks that entered and left.
Paste playlists as page URLs, spotify:playlist: URIs or 22-character playlist IDs, mixed in one list.
This Actor reads playlists only. It does not look up the play count of an arbitrary track: the public track page does not carry that track's own play count. Play counts are reported for the tracks that are listed in a playlist page.
What you get
One row per playlist:
| Column | Meaning |
|---|---|
playlistName, playlistId, playlistUrl | The name Spotify returned for that ID, the ID and the page that was read |
followers | Followers (saves) of the playlist, as an integer |
totalTracks | How many tracks the playlist has, according to the page data |
tracksOnPage | How many of those tracks were in the public page and are listed in tracks |
tracksCoverage | The same two numbers as a sentence, e.g. 30 of 50 playlist tracks were in the public page and are listed in "tracks" |
tracks | The tracks in the page, in page order: position, trackName, trackId, trackUrl, artistNames, albumName, playCount, playCountChange, durationMs |
ownerName, ownerUsername, description, imageUrl | The playlist owner, its description and cover image |
pageCountry | The country Spotify served the page for |
input, scrapedAt, status | What you typed, when it was read, ok for a playlist row |
Monitoring columns (filled only in monitoring mode): change (first-check or changed), isFirstCheck, changedFields, previousFollowers, followersChange, previousTotalTracks, tracksEntered, tracksLeft, previousCheckedAt, and playCountChange inside each track.
A value that is not in the page is null, never 0.
Measured on 2026-10-04 by an Apify run in the US:
| Playlist | followers | totalTracks | tracksOnPage |
|---|---|---|---|
| Today's Top Hits | 33757304 | 50 | 30 |
| RapCaviar | 15537525 | 50 | 30 |
| Rock Classics | 13639206 | 200 | 30 |
A home connection in Japan read the same three pages within the same minute: all 90 tracks and play counts were identical in the same positions, and the follower figures were 33757306, 15537526 and 13639206 - two of the three differed by 1 or 2 from the US read.
Only the tracks in the public page
The public playlist page carries the first part of the playlist, not always all of it: on 2026-10-04 both 50-track playlists above had 30 tracks in the page. This Actor reads that one page and does not page through the rest, so tracks is not the full track list of a longer playlist. Every row says how many tracks were read out of how many (tracksOnPage, totalTracks, tracksCoverage).
Why every row names the playlist it read
The figures are taken only from the block of page data whose key is the playlist ID you asked for, and each play count is taken from the same block as that track's own ID. If the page does not contain the playlist ID, no number is taken from it and you get an unreadable row instead. playlistName is what Spotify returned for the ID, and input is what you typed, so a mix-up is visible in the row itself.
Input
playlists-https://open.spotify.com/playlist/37i9dQZF1DXcBWIGoYBM5M(with or withoutintl-xx/,?si=...or the scheme),spotify:playlist:37i9dQZF1DXcBWIGoYBM5M, or37i9dQZF1DXcBWIGoYBM5M. Get the link from Share > Copy link to playlist in Spotify. Playlist names are not searched. Track, album, artist and embed links are not read and come back as aninvalid-inputrow with the reason (for artists, see Spotify Monthly Listeners & Followers Tracker).maxPlaylists- with monitoring off, stop after this many playlist rows.monitoringMode,monitorMode,resetMonitoringState- see below.useProxy- requests go directly to Spotify; a residential proxy is tried once per refused page, at most three times in a run, only when Spotify answers HTTP 403 or 429; after that the run stops asking and lists what it did not read.
Monitoring mode
Turn monitoringMode on and schedule the Actor. It remembers each playlist's follower count, total track count and the tracks found in the page and, on later runs:
- a playlist that has not changed is not returned as a row; it still costs one check (see "What is charged"), and if no playlist changed you get one free
no-changerow saying how many were compared; - a playlist that changed comes back with
previousFollowers,followersChange,tracksEntered,tracksLeft,changedFields, and aplayCountChangefor every track that was also in the page last time; - a playlist it has never seen is returned once (
first-check).
Follower changes of 1 or 2 are not counted as a change. The public follower figure varies by 1 or 2 between reads and connections, so a playlist is returned for followers only when the figure differs by more than 2 from the last figure you were sent. The remembered figure is not moved by such a run, so small differences add up and the playlist comes back once the total exceeds 2.
monitorMode chooses what counts as a change: any-change (followers or tracks), followers-change, or tracks-change (a track entered or left the tracks in the page, or the total track count differs). A change in play counts alone does not trigger a return.
tracksEntered and tracksLeft compare the tracks in the page between two reads. For a playlist longer than the page, a track that moved below the part in the page is listed in tracksLeft although it is still in the playlist, and a track that moved up into it is listed in tracksEntered. If the number of tracks in the page differs from last time while the total track count is the same, the two reads are not compared track by track: tracksEntered and tracksLeft stay empty for that run and it does not count as a track change.
If a figure was missing from the page on the read that was remembered and is present now, the playlist is returned once with that field in changedFields and a null difference.
Playlists are remembered one by one, not per list, in a key-value store named spotify-playlist-monitoring in your own account, so adding a playlist to the list does not return the others again. The remembered state of a playlist is updated only when a row for it was delivered, so each difference is measured against the last row you received. resetMonitoringState clears everything remembered.
Do not put the same playlist in two schedules that run at the same moment: Apify's key-value store has no atomic update, so two runs finishing together can overwrite each other's record and a playlist may be returned once more as first-check.
How often Spotify refreshes follower and play counts has not been measured by this Actor. On 2026-10-04, three reads of the same page 8 seconds apart returned identical figures, and four monitoring runs of three playlists within about two minutes returned no change after the first. Follower figures read from two countries in the same minute differed by 1 or 2 (see above), which is why a follower difference of 1 or 2 does not count as a change. If you schedule it more often than Spotify updates the page, the extra runs return no-change.
What is charged
- playlist-returned - one per playlist row with
status: ok. - playlist-checked - monitoring mode only: one per playlist that was read and compared, whether or not it changed. Checks are charged together after the last playlist was read, so a run that is aborted or times out while reading charges nothing. A playlist that changed is charged one check and one row.
- Not charged:
no-such-playlist(Spotify answers 404 for the ID),invalid-input,duplicate-input,unreadable,blocked,no-change,not-readandbudget-reachedrows. There is no start fee and no monthly fee.
If you set a maximum total charge for a run, monitoring mode reads only as many playlists as fit a check plus a row each, and lists the rest in a not-read row.
Rows that explain instead of failing
| status | When |
|---|---|
no-such-playlist | Spotify answered 404 (Page not found) for the ID: no such playlist, a private or deleted one, or an ID that is not a playlist |
invalid-input | The line is not a playlist URL, URI or ID (track, album and artist links land here) - or no playlist was given |
duplicate-input | The same playlist appeared earlier in the list |
unreadable | The page came back without the playlist data, or its format changed. No figure is guessed |
blocked | Spotify refused the request (403/429), or answered with a verification or login page |
not-read | Lines that were not requested: after a blocked row or three unreadable pages in a row the run stops asking Spotify; also when maxPlaylists or the charge limit was reached |
no-change | Monitoring: every playlist was compared and none had changed |
budget-reached | The run's maximum total charge was reached before every ready row could be delivered |
Limits
- Tracks: only the tracks in the public playlist page (see above). Not the full list of a longer playlist, and not a play count lookup for single tracks or albums.
- Non-track items (podcast episodes in a playlist) are not listed in
tracks; they still count inpositionand intotalTracks. - Country: Spotify builds the page for the country of the connection (
pageCountry). Personalised and "made for you" playlists need a login and are not readable. - Only the public playlist page (
open.spotify.com/playlist/<id>) is requested, one page per playlist, about one request per second, with a User-Agent that identifies this Actor. No login, no Spotify API token, no embed pages. If Spotify stops serving the data in that page, or serves playlist items none of which can be read as a track, rows becomeunreadablerather than wrong. - This Actor is not affiliated with, endorsed by or sponsored by Spotify. Spotify's terms of use restrict automated collection from its service; decide for yourself whether your use is permitted before you run it.