Spotify Play Count Scraper avatar

Spotify Play Count Scraper

Pricing

from $2.00 / 1,000 track play counts

Go to Apify Store
Spotify Play Count Scraper

Spotify Play Count Scraper

Scrape Spotify play counts for every track on any track, album, playlist or artist, one flat row per track. No API key needed; works with Apify MCP and the API.

Pricing

from $2.00 / 1,000 track play counts

Rating

0.0

(0)

Developer

Khadin Akbar

Khadin Akbar

Maintained by Community

Actor stats

0

Bookmarked

7

Total users

2

Monthly active users

10 days ago

Last modified

Share

What is Spotify Play Count Scraper?

Spotify Play Count Scraper returns the play count (stream count) for every track behind a Spotify track, album, playlist or artist link, as one flat dataset row per track. Each row has trackName, the integer playcount and a formatted copy, artists, album, release date, duration, explicit flag, track and disc number, and the input it came from. Music managers, labels, royalty analysts, A&R scouts, chart trackers and AI agents use it to put real stream numbers into spreadsheets and models, with no Spotify login or developer API key.

Best fit for this Actor

  • Designed for stream counts. Use it when the number you need is plays per track, for one song or a whole catalog.
  • Any Spotify link style. Paste open.spotify.com URLs (including /intl-xx/ locales), spotify: URIs or bare 22-character IDs, mixed in one list.
  • Albums and playlists expand for you. One album link returns a row for every track; one playlist link returns a row for every music track on it; an artist link returns that artist's top tracks.
  • Cost stays bounded. maxResults caps the total track rows across all inputs, so a large playlist never runs past your budget.
  • Wider artist context. For monthly listeners, followers, world rank and top cities, continue with Spotify Monthly Listeners Scraper, or use Spotify Scraper — Artists, Tracks & Playlists when you need search and podcast data too.

What people and AI agents ask this Actor to do

How many streams does every track on this album have? Give me play counts for this playlist so I can rank the songs. What are this artist's most-streamed tracks right now?

RequestInput to send
One track{"spotifyUrls": ["https://open.spotify.com/track/4cOdK2wGLETKBW3PvgPWqT"]}
A full album{"spotifyUrls": ["https://open.spotify.com/album/4aawyAB9vmqN3uQ7FjRGTy"]}
A playlist, capped{"spotifyUrls": ["spotify:playlist:37i9dQZF1DXcBWIGoYBM5M"], "maxResults": 100}
An artist's top tracks from a bare ID{"spotifyUrls": ["0gxyHStUsqpMadRV0Di1Qt"], "defaultType": "artist"}

Workflow example: a catalog royalty check

A label's finance analyst starts with the album links for the label's five latest releases and pastes them into spotifyUrls. The dataset returns one row per track with playcount, trackNumber and releaseDate, plus sourceName showing which album each row came from. The analyst exports the rows to a spreadsheet, multiplies playcount by the label's per-stream rate, and schedules the same input monthly to compare stream growth per track between exports.

How it works

  1. Add Spotify links, URIs or IDs in Spotify URLs.
  2. Set Max results to cap the total number of track rows.
  3. Click Start. The Actor detects each link type, expands albums and playlists track by track, and writes one row per track.

Input

{
"spotifyUrls": [
"https://open.spotify.com/track/4cOdK2wGLETKBW3PvgPWqT",
"https://open.spotify.com/album/4aawyAB9vmqN3uQ7FjRGTy"
],
"defaultType": "track",
"maxResults": 1000,
"proxyConfiguration": { "useApifyProxy": true }
}
FieldTypeWhat it controls
spotifyUrlsarray (required)Track, album, playlist or artist links, spotify: URIs or bare 22-character IDs.
defaultTypestringHow to read bare IDs with no prefix: track, album, playlist or artist. Default track.
maxResultsintegerTotal track rows returned and charged across all inputs. Default 1000.
proxyConfigurationobjectApify Proxy settings. Apify datacenter (US) is the default and suits most runs.
Input typeRows returned
TrackOne row
AlbumOne row per track
PlaylistOne row per music track
ArtistOne row per top track

Output

FieldWhat it contains
trackName, trackId, trackUri, trackUrlTrack identity and links
playcount, playcountFormattedStream count as an integer and as display text
playcountAvailabletrue when Spotify shows a count for the track
artistNames, artistsArtists as one string and as an array
albumName, albumId, albumUrlAlbum identity
releaseDate, durationMs, durationTextRelease date and length
explicit, trackNumber, discNumberTrack flags and position
sourceType, sourceId, sourceName, sourceUrlThe input that produced the row
dataSource, scrapedAtProvenance and collection time
{
"trackName": "Don't Stop the Party (feat. TJR)",
"trackId": "2iblMMIgSznA464mNov7A8",
"trackUri": "spotify:track:2iblMMIgSznA464mNov7A8",
"trackUrl": "https://open.spotify.com/track/2iblMMIgSznA464mNov7A8",
"playcount": 298402583,
"playcountFormatted": "298,402,583",
"playcountAvailable": true,
"artistNames": "Pitbull, TJR",
"artists": ["Pitbull", "TJR"],
"albumName": "Global Warming",
"albumId": "4aawyAB9vmqN3uQ7FjRGTy",
"albumUrl": "https://open.spotify.com/album/4aawyAB9vmqN3uQ7FjRGTy",
"releaseDate": "2012-11-16T00:00:00Z",
"durationMs": 206120,
"durationText": "3:26",
"explicit": false,
"trackNumber": 2,
"discNumber": 1,
"sourceType": "album",
"sourceId": "4aawyAB9vmqN3uQ7FjRGTy",
"sourceName": "Global Warming",
"sourceUrl": "https://open.spotify.com/album/4aawyAB9vmqN3uQ7FjRGTy",
"dataSource": "partner",
"scrapedAt": "2026-10-01T01:32:36.551Z"
}

Pricing

This Actor uses Pay per event plus Apify platform usage. Two events apply: Actor Start once per run, and Track play count once per track row returned, so albums and playlists are charged per expanded track. For example, one single plus one 12-track album creates 13 Track play count events and one Actor Start event, plus the platform usage for the run. maxResults sets the ceiling on track events. The live Pricing tab on this page shows the current event prices.

API example

curl -X POST "https://api.apify.com/v2/acts/khadinakbar~spotify-play-count-scraper/run-sync-get-dataset-items?token=YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"spotifyUrls": ["https://open.spotify.com/album/4aawyAB9vmqN3uQ7FjRGTy"], "maxResults": 50}'
from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("khadinakbar/spotify-play-count-scraper").call(run_input={
"spotifyUrls": ["0gxyHStUsqpMadRV0Di1Qt"],
"defaultType": "artist",
})
for track in client.dataset(run["defaultDatasetId"]).iterate_items():
print(track["trackName"], track["playcountFormatted"])

Use with AI agents through Apify MCP

Connect this Actor to Claude, ChatGPT, Cursor or any MCP client through Apify MCP, then ask:

Get the Spotify play count for every track on https://open.spotify.com/album/4aawyAB9vmqN3uQ7FjRGTy, sort the tracks by plays, and give me the total streams for the album.

Agent checklist:

  1. Put every link in spotifyUrls and set maxResults to the most track rows you want charged.
  2. Read rows with get-dataset-items and sum or sort on playcount.
  3. Keep trackUrl and scrapedAt with each number so the source and collection time travel with it.
  4. Check playcountAvailable before treating a count as a total.

Best results

Starting situationHelpful actionExpected outcome
A long playlistSet maxResults to the depth you needA bounded, predictable run
Bare IDs in a spreadsheetSet defaultType to the right typeEach ID read as track, album, playlist or artist
Tracking growthSchedule the same links and compare playcount by trackIdStream change per track over time
A whole discographyAdd each album link rather than the artist linkEvery track, beyond the top-tracks list
Heavy batchesSwitch proxyConfiguration to ResidentialSteady throughput on large jobs

Builder's note

I built this for the one number music teams ask about most, so every row is a single track with its play count and nothing to unnest. I found that the stream counts the Spotify web player shows can be read over plain HTTP, and the Actor refreshes its web-player session on its own so links keep working when Spotify rotates details. My goal was a tool that stays narrow: links in, flat play-count rows out, with a cap that doubles as a budget.

FAQ

Do I need a Spotify account or API key?

No. Paste links and run; no login or developer credentials are involved.

An artist link returns the artist's top tracks. For every track, add each album link.

What does playcountAvailable: false mean?

Spotify shows no count for that track, and the row is still returned so your list stays complete.

Can I use this for podcasts?

Play counts are a music-track field, so the Actor focuses on tracks; podcast and episode data lives in Spotify Scraper — Artists, Tracks & Playlists.

Responsible use

This Actor reads publicly visible Spotify play counts and track metadata. Use it in line with Spotify's terms of service and applicable laws, and only for data you are entitled to process. Spotify is a trademark of its owner, and this independent Actor is not affiliated with or endorsed by Spotify.