Spotify Play Count Scraper: Streams for Tracks, Albums, Artists
Pricing
from $0.60 / 1,000 play count rows
Spotify Play Count Scraper: Streams for Tracks, Albums, Artists
Spotify play counts (stream counts) for every track of an artist's full discography, a playlist, an album or single tracks, plus monthly listeners. Paste URLs, no API key needed. Pay per result.
Pricing
from $0.60 / 1,000 play count rows
Rating
0.0
(0)
Developer
Eduardo Airaudo
Maintained by CommunityActor stats
0
Bookmarked
4
Total users
1
Monthly active users
2 hours ago
Last modified
Categories
Share
Spotify Play Count Scraper
Get the all-time play count (stream count) Spotify shows for every track of an artist's full discography, a playlist or an album, or for single tracks, as a plain number you can sort, chart and export. Album rows come with the label, copyrights, release date and the album's total plays; artist rows with monthly listeners, followers and world rank. No Spotify API key, no login, $1.00 per 1,000 results, and one result is one track.
What does Spotify Play Count Scraper do?
It reads the play counts Spotify shows publicly and returns them as structured data:
| You paste | You get |
|---|---|
| An artist URL, with Full discography | 1 row per track of every album, single, EP and compilation, newest release first, each with its album, label, release date and album total |
| A playlist URL | 1 row per track in playlist order, with its position and when it was added (the first 100 entries by default, see maxTracksPerPlaylist) |
| An album URL, URI or ID | 1 row per track, with the album's name, label, copyrights, release date, cover and total plays |
| An artist URL (default: Top tracks) | 1 row per top track (usually 10), with the artist's monthly listeners, followers and world rank |
| A track URL, URI or ID | 1 row: the track's play count, album, release date and duration |
Mix all of them in one run. Every row has a numeric playCount, the track name, its artists, a Spotify url, and the inputUrl you entered, so you can match results back to your list. Turn on includeArtistProfile to add one profile row per artist, with top cities, verified status, biography and social links.
- Exact numbers such as
5631276067, not rounded "5.6B" labels. - Full discographies count each song once: when the same recording is on the album, the single and the deluxe edition, Spotify shows one shared play count, and you get one row for it.
- Accepts
open.spotify.comlinks (with or without?si=,intl-xxor/embed/),spotify.linkshort links,spotify:URIs and bare IDs. - Failed, invalid and repeated inputs are never charged.
- Fast: the five prefilled links (73 results) take about 4 seconds, an artist with 20 releases about 5 seconds.
How to use Spotify Play Count Scraper
- Paste Spotify track, album, artist or playlist links into Spotify URLs, URIs or IDs (
urls), one per line. - For artists, pick Top tracks or Full discography under Artists (
artistMode). - Click Start, then open the Play counts, Albums and discographies, Playlists, Artist top tracks or Artist profiles tab of the dataset, or download the results as CSV, Excel, JSON or HTML.
Input
| Field | Type | Default | What it does |
|---|---|---|---|
urls | array of strings | required | Spotify track, album, artist or playlist URLs, spotify: URIs or 22-character IDs. The type is detected from each URL or URI. |
defaultType | track / album / artist / playlist | track | Type used for bare IDs, which carry no type of their own. Links and URIs always keep their own type. |
artistMode | topTracks / fullDiscography | topTracks | What an artist returns: Spotify's top tracks (usually 10), or every track of every release. |
includeAlbums | boolean | true | Full discography: read the artist's albums. |
includeSingles | boolean | true | Full discography: read the artist's singles and EPs. |
includeCompilations | boolean | true | Full discography: read the artist's compilations. |
maxReleasesPerArtist | integer, 1-1,000 | 200 | Full discography: how many releases of the selected types to read per artist, newest first. |
dedupeTracks | boolean | true | Full discography: return a song once when several releases carry the same recording (see the FAQ). |
includeArtistProfile | boolean | false | Artist inputs: add one profile row per artist (rowType artist). It costs one result. |
maxTracksPerAlbum | integer, 1-200 | 50 | Tracks returned per album input and per release of a full discography, in album order. |
maxTracksPerPlaylist | integer, 1-10,000 | 100 | Playlist entries read per playlist, in playlist order. Playlists stop after the first 100 entries: raise it to get whole playlists. |
includeRaw | boolean | false | Adds the upstream Spotify response under raw on every result (much larger output; a playlist's keeps only that result's entry). |
Play counts of an artist's full discography
Every album, single, EP and compilation, newest first. Lorde's 20 releases give 71 tracks:
{"urls": ["https://open.spotify.com/artist/163tK9Wjr9P9DmM0AVK7lm"],"artistMode": "fullDiscography","includeArtistProfile": true}
Only albums, without singles, EPs and compilations:
{"urls": ["https://open.spotify.com/artist/163tK9Wjr9P9DmM0AVK7lm"],"artistMode": "fullDiscography","includeSingles": false,"includeCompilations": false}
Play counts of every track in a playlist
Editorial and user playlists work alike; podcast episodes and local files in a playlist are skipped. A playlist input reads the first 100 entries unless you raise maxTracksPerPlaylist (up to 10,000), so set it for longer playlists:
{"urls": ["https://open.spotify.com/playlist/37i9dQZF1DXcBWIGoYBM5M"],"maxTracksPerPlaylist": 1000}
Play counts of every track on an album
{"urls": ["https://open.spotify.com/album/6s84u2TUpR3wdUv4NgKA2j"],"maxTracksPerAlbum": 200}
An artist's top tracks with monthly listeners
{"urls": ["https://open.spotify.com/artist/06HL4z0CvFAxyc27GXpf02"]}
A mixed list
This is the prefilled input: two tracks, one album, one artist and one playlist in the same run (73 results at the time of writing).
{"urls": ["https://open.spotify.com/track/0VjIjW4GlUZAMYd2vXMi3b","https://open.spotify.com/track/7qiZfU4dY1lWllzX7mPBI3","https://open.spotify.com/album/6s84u2TUpR3wdUv4NgKA2j","https://open.spotify.com/artist/06HL4z0CvFAxyc27GXpf02","https://open.spotify.com/playlist/37i9dQZF1DXcBWIGoYBM5M"]}
Bare IDs
A bare ID has no type, so tell the Actor what it is with defaultType:
{"urls": ["1McMsnEElThX1knmY4oliG", "06HL4z0CvFAxyc27GXpf02"],"defaultType": "artist"}
Output
One dataset row per track (rowType track), plus one profile row per artist (rowType artist) when includeArtistProfile is on. The dataset has five tabs:
- Play counts:
name,artists,playCount,albumName,entityType,url,inputUrlandscrapedAt. - Albums and discographies:
albumName,albumType,releaseDate,label,trackNumber,name,playCount,albumTotalPlayCountandurl. - Playlists:
playlistName,position,name,artists,playCount,addedAtandurl. - Artist top tracks:
artistName,topTrackRank,name,playCount,monthlyListeners,followers,worldRankandurl. - Artist profiles:
rowType,artistName,monthlyListeners,followers,worldRank,verified,topCities,externalLinksandurl.
A full-discography row (an album row looks the same, without the artist's stats):
{"name": "Royals","artists": ["Lorde"],"playCount": 1557631338,"rowType": "track","id": "2dLLR6qlu5UJ5gk0dKz0h3","type": "track","uri": "spotify:track:2dLLR6qlu5UJ5gk0dKz0h3","url": "https://open.spotify.com/track/2dLLR6qlu5UJ5gk0dKz0h3","artistIds": ["163tK9Wjr9P9DmM0AVK7lm"],"durationMs": 190185,"trackNumber": 3,"discNumber": 1,"explicit": false,"albumId": "0rmhjUgoVa17LZuS8xWQ3v","albumName": "Pure Heroine","albumUri": "spotify:album:0rmhjUgoVa17LZuS8xWQ3v","albumType": "album","label": "Universal Music New Zealand Limited","copyrightC": "© 2013 Universal Music NZ Ltd.","copyrightP": "℗ 2013 Universal Music NZ Ltd.","releaseDate": "2013-09-27T00:00:00Z","imageUrl": "https://i.scdn.co/image/ab67616d00001e02187331e276c898d39764cc98","albumTotalPlayCount": 5503867096,"artistId": "163tK9Wjr9P9DmM0AVK7lm","artistName": "Lorde","monthlyListeners": 26488906,"followers": 11040162,"worldRank": 295,"inputUrl": "https://open.spotify.com/artist/163tK9Wjr9P9DmM0AVK7lm","entityType": "artist","scrapedAt": "2026-10-13T05:35:12.304Z","data": { "…": "Spotify album track entry" }}
A playlist row:
{"name": "Stop The Wedding!","artists": ["Ashe"],"playCount": 90942260,"rowType": "track","id": "3zOYmiNOuyDL0ClxJcEJ0T","type": "track","uri": "spotify:track:3zOYmiNOuyDL0ClxJcEJ0T","url": "https://open.spotify.com/track/3zOYmiNOuyDL0ClxJcEJ0T","artistIds": ["6P5NO5hzJbuOqSdyPB7SJM"],"albumId": "4dem9qxmFf4RD6fqoCH6wc","albumName": "Stop The Wedding!","albumUri": "spotify:album:4dem9qxmFf4RD6fqoCH6wc","imageUrl": "https://i.scdn.co/image/ab67616d00001e020893a0c33fd4b8497b0ef2f6","durationMs": 198840,"explicit": false,"playlistId": "37i9dQZF1DXcBWIGoYBM5M","playlistName": "Today’s Top Hits","playlistOwner": "Spotify","position": 1,"addedAt": "2026-09-04T04:02:23.110Z","inputUrl": "https://open.spotify.com/playlist/37i9dQZF1DXcBWIGoYBM5M","entityType": "playlist","scrapedAt": "2026-10-13T05:34:49.276Z","data": { "…": "Spotify playlist entry" }}
An artist profile row (includeArtistProfile):
{"name": "Lorde","rowType": "artist","id": "163tK9Wjr9P9DmM0AVK7lm","type": "artist","uri": "spotify:artist:163tK9Wjr9P9DmM0AVK7lm","url": "https://open.spotify.com/artist/163tK9Wjr9P9DmM0AVK7lm","artistId": "163tK9Wjr9P9DmM0AVK7lm","artistName": "Lorde","monthlyListeners": 26488906,"followers": 11040162,"worldRank": 295,"topCities": [{ "city": "London", "country": "GB", "region": "ENG", "listeners": 494883 },{ "city": "Sydney", "country": "AU", "region": "NSW", "listeners": 409551 }],"verified": true,"biography": "The magic lives close to the edge","externalLinks": [{ "name": "INSTAGRAM", "url": "https://instagram.com/lorde" },{ "name": "WIKIPEDIA", "url": "https://en.wikipedia.org/wiki/Lorde" }],"imageUrl": "https://i.scdn.co/image/ab6761610000e5eb678a3a4bc2d8a84074f22c71","inputUrl": "https://open.spotify.com/artist/163tK9Wjr9P9DmM0AVK7lm","entityType": "artist","scrapedAt": "2026-10-13T05:35:10.381Z","data": { "…": "Spotify artist profile" }}
Output fields
| Field | Description |
|---|---|
name | Track name (the artist's name on a profile row) |
artists | Names of the credited artists (artistIds has their Spotify IDs) |
playCount | All-time Spotify play count (stream count), as a number; every track row has it |
rowType | track, or artist for a profile row |
id, uri, url | Spotify ID, spotify: URI and open.spotify.com link of the track (or the artist) |
albumName, albumId, albumUri | The track's album; artist top-track rows have no albumName |
albumType, label, copyrightC, copyrightP, albumTotalPlayCount | Album and discography rows: release type, label, copyrights and the sum of every album track's play count |
releaseDate, imageUrl | Release date (track, album and discography rows) and cover image (the picture on a profile row) |
durationMs, trackNumber, discNumber, explicit | Track details, when Spotify returns them |
playlistId, playlistName, playlistOwner, position, addedAt | Playlist rows: the playlist, the track's position in it and when it was added |
topTrackRank | Artist top tracks: position of the track in the artist's Spotify top tracks |
artistName, artistId, monthlyListeners, followers, worldRank | Artist inputs: the artist you entered and their Spotify stats (worldRank only when ranked) |
topCities, verified, biography, externalLinks | Profile rows: top cities by listeners, verified status, biography as plain text, social links |
inputUrl | The URL, URI or ID you entered, exactly as entered |
entityType | What you entered: track, album, artist or playlist |
scrapedAt | When the play count was read |
data | The Spotify object the row was built from |
raw | Full upstream response, only with includeRaw |
The run's key-value store also holds RUN_SUMMARY (inputs by type, results delivered, warnings and the run outcome) and, when an input fails, ERRORS (each failed input with its reason and charged: false).
Pricing
$1.00 per 1,000 results (pay per event). One result is one row: one track with its play count, or one artist profile row when you turn that on. You pay per track, not per link, so a single track costs a tenth of a cent.
| Apify plan | Price per 1,000 results |
|---|---|
| Free | $1.00 |
| Bronze | $0.90 |
| Silver | $0.75 |
| Gold and higher | $0.60 |
What runs cost on the Free plan:
| You enter | Results | Cost |
|---|---|---|
| 1 track | 1 | $0.001 |
| 1 album (SOUR, 11 tracks) | 11 | $0.011 |
| 1 artist, top tracks | 10 | $0.010 |
| 1 artist, full discography (Lorde, 20 releases) | 71 | $0.071 |
| 1 playlist (Today's Top Hits, 50 tracks) | 50 | $0.050 |
| The five prefilled links | 73 | $0.073 |
| 10,000 tracks | 10,000 | $10.00 |
- No start fee and no monthly rental.
- Failed, invalid and empty inputs are free: an ID Spotify does not know, a podcast link, a typo.
- A link repeated in the same run is fetched and charged once, and a full discography charges each song once (
dedupeTracks). - Set a maximum cost per run and the Actor stops there, without charging more. Big catalogs:
maxReleasesPerArtist,maxTracksPerAlbumandmaxTracksPerPlaylistcap what one input can cost.
FAQ
What is a Spotify play count?
It is the number Spotify shows next to each track on artist and album pages: how many times the track has been streamed on Spotify, all time. Spotify counts a play once a track has been listened to for at least 30 seconds. This Actor returns it as playCount, a whole number.
How fresh are the play counts?
Every run reads Spotify's public counter live. Spotify refreshes that counter periodically, usually about once a day, so two runs on the same day tend to return the same number. To track stream growth, schedule the Actor daily and compare playCount per id across scrapedAt.
Why is the play count 0?
Spotify only shows a play count once a track passes 1,000 streams and reports 0 below that. Brand-new or niche releases read 0 until they cross the threshold; the row is still the number Spotify publishes.
Why does a full discography return fewer tracks than the releases list?
Spotify puts the same recording on several releases (the album, the single, a deluxe edition) under different track IDs, and shows one shared play count on all of them. With dedupeTracks on (the default), each song is returned once, from its newest release, so adding up playCount does not count its streams twice. For Lorde that leaves 71 of 85 release tracks. Turn dedupeTracks off to get every release's copy. maxTracksPerAlbum and maxReleasesPerArtist also limit a discography.
Which releases does a full discography include?
The artist's albums, singles and EPs, and compilations, as Spotify lists them on the artist's page, newest first; choose the types with includeAlbums, includeSingles and includeCompilations. Releases by other artists that the artist only appears on are not included.
Why did I get fewer rows than there are tracks?
Tracks that Spotify returns without a play count are skipped and not charged. Playlists skip podcast episodes and local files (the other tracks keep their Spotify positions). Albums stop at maxTracksPerAlbum (50 by default), playlists at maxTracksPerPlaylist (100 by default), and artists in top-tracks mode return Spotify's top tracks only (usually 10).
What happens with a wrong or unsupported link?
It is listed in the ERRORS record with the reason and charged: false. Typical reasons: Spotify does not know the ID, the link is a podcast or a user profile, or the text is not a Spotify link. The run still succeeds, with a status message such as "Delivered 22 items; 1 query had no data on Spotify … and was not charged." Temporary Spotify or network errors are retried first. A run fails only when it delivered nothing because of a temporary error, so Apify's retry and alert settings can react. When part of an input fails, for example one release of a discography, the rest is delivered and the gap is listed under warnings in RUN_SUMMARY.
Is the service up?
Check the live status page: https://stats.uptimerobot.com/y2392u6LY0.
Do I need a Spotify account or API key?
No. You only need an Apify account.
Can I call it via API or connect it to other tools?
Yes. This call starts a run and returns the results:
curl -X POST "https://api.apify.com/v2/acts/eduair94~spotify-play-count-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"urls": ["https://open.spotify.com/artist/163tK9Wjr9P9DmM0AVK7lm"], "artistMode": "fullDiscography"}'
JavaScript, with the apify-client package:
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });const run = await client.actor('eduair94/spotify-play-count-scraper').call({urls: ['https://open.spotify.com/playlist/37i9dQZF1DXcBWIGoYBM5M'],});const { items } = await client.dataset(run.defaultDatasetId).listItems();for (const item of items) console.log(item.position, item.name, item.playCount);
Python, with the apify-client package:
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("eduair94/spotify-play-count-scraper").call(run_input={"urls": ["https://open.spotify.com/artist/06HL4z0CvFAxyc27GXpf02"], "includeArtistProfile": True})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["rowType"], item["name"], item.get("playCount"), item.get("monthlyListeners"))
You can also schedule runs, get a webhook when a run finishes, and send results to Google Sheets, Slack, Make, Zapier and other tools with Apify integrations.
Is it legal to scrape Spotify play counts?
Play counts are public: Spotify shows them to every visitor. The Actor collects no personal data. You are responsible for making sure your use of the data complies with Spotify's terms and the laws that apply to you.
I need other Spotify data
Spotify Scraper covers lyrics, song credits, charts, concerts, podcasts, search and more, including the same play counts.
Use cases
- Catalog valuation and due diligence: sum an artist's or a label's streams across the full discography before buying, financing or licensing a catalog.
- Royalty estimation: multiply streams by a per-stream rate (commonly cited at $0.003-$0.005) to estimate what a track, album or catalog earned.
- Playlist research: see how many streams the tracks of a playlist have, and spot its breakout songs.
- Music marketing: measure what a release campaign, a playlist placement or a viral moment did to a track's streams.
- A&R and talent scouting: compare catalogs and spot breakout tracks by stream count and monthly listeners.
- Chart and stream tracking: schedule daily runs and chart each track's stream growth.
- Research and journalism: back stories and reports with exact stream counts.