Spotify Playlist Tracker - Followers, Tracks & Play Counts avatar

Spotify Playlist Tracker - Followers, Tracks & Play Counts

Pricing

from $2.80 / 1,000 playlist returneds

Go to Apify Store
Spotify Playlist Tracker - Followers, Tracks & Play Counts

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

NeverEmpty

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

10 days ago

Last modified

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:

ColumnMeaning
playlistName, playlistId, playlistUrlThe name Spotify returned for that ID, the ID and the page that was read
followersFollowers (saves) of the playlist, as an integer
totalTracksHow many tracks the playlist has, according to the page data
tracksOnPageHow many of those tracks were in the public page and are listed in tracks
tracksCoverageThe same two numbers as a sentence, e.g. 30 of 50 playlist tracks were in the public page and are listed in "tracks"
tracksThe tracks in the page, in page order: position, trackName, trackId, trackUrl, artistNames, albumName, playCount, playCountChange, durationMs
ownerName, ownerUsername, description, imageUrlThe playlist owner, its description and cover image
pageCountryThe country Spotify served the page for
input, scrapedAt, statusWhat 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:

PlaylistfollowerstotalTrackstracksOnPage
Today's Top Hits337573045030
RapCaviar155375255030
Rock Classics1363920620030

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 without intl-xx/, ?si=... or the scheme), spotify:playlist:37i9dQZF1DXcBWIGoYBM5M, or 37i9dQZF1DXcBWIGoYBM5M. 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 an invalid-input row 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-change row saying how many were compared;
  • a playlist that changed comes back with previousFollowers, followersChange, tracksEntered, tracksLeft, changedFields, and a playCountChange for 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-read and budget-reached rows. 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

statusWhen
no-such-playlistSpotify 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-inputThe line is not a playlist URL, URI or ID (track, album and artist links land here) - or no playlist was given
duplicate-inputThe same playlist appeared earlier in the list
unreadableThe page came back without the playlist data, or its format changed. No figure is guessed
blockedSpotify refused the request (403/429), or answered with a verification or login page
not-readLines 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-changeMonitoring: every playlist was compared and none had changed
budget-reachedThe 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 in position and in totalTracks.
  • 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 become unreadable rather 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.