Spotify Play Count Scraper
Pricing
from $2.00 / 1,000 track play counts
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
Maintained by CommunityActor stats
0
Bookmarked
7
Total users
2
Monthly active users
10 days ago
Last modified
Categories
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.comURLs (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.
maxResultscaps 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?
| Request | Input 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
- Add Spotify links, URIs or IDs in Spotify URLs.
- Set Max results to cap the total number of track rows.
- 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 }}
| Field | Type | What it controls |
|---|---|---|
spotifyUrls | array (required) | Track, album, playlist or artist links, spotify: URIs or bare 22-character IDs. |
defaultType | string | How to read bare IDs with no prefix: track, album, playlist or artist. Default track. |
maxResults | integer | Total track rows returned and charged across all inputs. Default 1000. |
proxyConfiguration | object | Apify Proxy settings. Apify datacenter (US) is the default and suits most runs. |
| Input type | Rows returned |
|---|---|
| Track | One row |
| Album | One row per track |
| Playlist | One row per music track |
| Artist | One row per top track |
Output
| Field | What it contains |
|---|---|
trackName, trackId, trackUri, trackUrl | Track identity and links |
playcount, playcountFormatted | Stream count as an integer and as display text |
playcountAvailable | true when Spotify shows a count for the track |
artistNames, artists | Artists as one string and as an array |
albumName, albumId, albumUrl | Album identity |
releaseDate, durationMs, durationText | Release date and length |
explicit, trackNumber, discNumber | Track flags and position |
sourceType, sourceId, sourceName, sourceUrl | The input that produced the row |
dataSource, scrapedAt | Provenance 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 ApifyClientclient = 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:
- Put every link in
spotifyUrlsand setmaxResultsto the most track rows you want charged. - Read rows with
get-dataset-itemsand sum or sort onplaycount. - Keep
trackUrlandscrapedAtwith each number so the source and collection time travel with it. - Check
playcountAvailablebefore treating a count as a total.
Best results
| Starting situation | Helpful action | Expected outcome |
|---|---|---|
| A long playlist | Set maxResults to the depth you need | A bounded, predictable run |
| Bare IDs in a spreadsheet | Set defaultType to the right type | Each ID read as track, album, playlist or artist |
| Tracking growth | Schedule the same links and compare playcount by trackId | Stream change per track over time |
| A whole discography | Add each album link rather than the artist link | Every track, beyond the top-tracks list |
| Heavy batches | Switch proxyConfiguration to Residential | Steady 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.
Does an artist link return the whole discography?
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.