Spotify Play Count Scraper avatar

Spotify Play Count Scraper

Pricing

from $0.99 / 1,000 results

Go to Apify Store
Spotify Play Count Scraper

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

Farhan Febrian Nauval

Maintained by Community

Actor 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 IDshttps://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

  1. Paste one or more track or album links (or URIs / bare IDs).
  2. 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.
  3. 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"
}
FieldTypeDescription
albumOrTrackUrlsarray of stringsSpotify track or album links or spotify: URIs. Track vs album is auto-detected. Album inputs return one record per track.
idsarray of stringsOptional. 22-character Spotify IDs without the full URL.
idTypestringtrack or album — what the values in ids are. Ignored for full links/URIs.
albumTrackLimitintegerMax tracks to return per album. Default 300.
maxConcurrencyintegerHow many tracks/albums to fetch in parallel. Default 4.
proxyConfigurationobjectOptional. 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

FieldTypeDescription
playcountnumberThe play count shown on the Spotify web player for this track.
namestringTrack title.
artistsarray of stringsArtist name(s) on the track.
albumNamestringAlbum the track belongs to.
albumUristringSpotify URI of the album.
uristringSpotify URI of the track.
trackIdstringTrack ID (track inputs).
trackNumber / discNumbernumberPosition within the album (album inputs).
durationMsnumberTrack length in milliseconds.
explicitbooleanWhether the track is marked explicit.
recordTypestringAlways TRACK.
rawobjectThe 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.