Spotify Scraper - Play Counts, Monthly Listeners & Playlists avatar

Spotify Scraper - Play Counts, Monthly Listeners & Playlists

Pricing

from $2.80 / 1,000 spotify rows

Go to Apify Store
Spotify Scraper - Play Counts, Monthly Listeners & Playlists

Spotify Scraper - Play Counts, Monthly Listeners & Playlists

Scrape Spotify tracks, albums, artists, playlists, podcasts and episodes by URL or search: play counts, monthly listeners, followers, world rank, top cities, label, track lists with streams, credits and concerts. Charts, one row per track, monitor mode. $2.80 per 1,000 rows. No login.

Pricing

from $2.80 / 1,000 spotify rows

Rating

0.0

(0)

Developer

Top Api

Top Api

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

What does Spotify Scraper do?

Spotify Scraper extracts Spotify play counts and stats from open.spotify.com: paste track, album, artist, playlist, podcast or episode links, or search terms, and get one row per item with its play count (streams), monthly listeners, followers, world rank, top cities, label, track list and more. Built for music marketers, A&R scouts, labels, playlist pitchers and analysts who track streams without copying numbers from the app by hand.

Also known as: Spotify play count scraper, Spotify stream count scraper, Spotify API alternative, Spotify playlist scraper.

Spotify artist page with monthly listeners and play counts that Spotify Scraper turns into rows

  • Real Spotify play counts: the exact stream count of every track, the number Spotify shows, not the 1-100 popularity score of the official Web API
  • Every Spotify object in one actor: tracks, albums, artists, playlists, podcasts, episodes and audiobooks by link, spotify: URI, short link or bare id; user profiles from search
  • Search in eight result types: songs, artists, albums, playlists, podcasts, episodes, audiobooks and profiles, each result with its full row (profiles: name, username and picture, as the search shows them)
  • Play counts on playlist tracks too: every playlist track carries its play count, date added, BPM and musical key
  • Spotify Charts: Weekly Top Songs, Top Albums and Top Artists with current, previous and peak rank
  • One row per track mode: expand albums, playlists and artists into one row per track for play-count reporting
  • Monitor mode: schedule it and get only what changed, with the previous value and the difference
  • No login, cookies or Spotify API key: you paste links or keywords, nothing else
  • Export anywhere: JSON, CSV, Excel, XML; schedules, webhooks, Make, Zapier, n8n, Google Sheets, Slack, the Apify API and MCP

What data can you get from Spotify?

🎵 Track play count (playCount, streamCount)👥 Monthly listeners (monthlyListeners)❤️ Followers / playlist saves (followers)
🌍 World rank (worldRank)🏙️ Top 5 cities with listeners (topCities)✅ Verified artist (verified)
💿 Album label and copyright📅 Release date and precision🔢 Track and disc number, duration
📋 Album and playlist track lists with play counts➕ Total album / playlist plays (totalPlayCount)🥁 BPM, key and Camelot key of playlist tracks
🎧 30-second preview URL (previewUrl)✍️ Songwriter and producer credits (credits)🎤 Upcoming concerts: date, city and line-up
📖 Artist biography and social links🔗 Related artists, discovered-on and appears-on💽 Full discography, latest and upcoming release
📧 Playlist curator emails, handles and links🎙️ Podcast publisher, rating, topics, episodes🏆 Chart rank, previous and peak rank

On a 100-track test run every row had a play count, duration, album, release date and preview URL. On 400 artists found by search, 100% had followers, 81% monthly listeners (Spotify sends none for artists without listeners this month) and 28% a world rank (Spotify ranks its top 500 only).

How to scrape Spotify with Spotify Scraper

  1. Create a free Apify account — $5 of monthly credit, no card needed.
  2. Open Spotify Scraper and click Try for free.
  3. Paste Spotify links into Spotify URLs, URIs or IDs, or type keywords into Search terms and pick what to Search for.
  4. Click Start. Rows stream into the dataset as they are found.
  5. Open the Storage tab and Export as JSON, CSV or Excel — or let a schedule run it for you.

⬇️ Input

ParameterTypeDescription
🔍 What to scrape
urlsListTrack, album, artist, playlist, show, episode or audiobook links, spotify: URIs, short links or bare ids. Mix them freely.
searchTermsListKeywords to search, e.g. lofi beats, Taylor Swift.
searchTypeSelecttracks, artists, albums, playlists, podcasts, episodes, audiobooks or users. Default: songs (tracks).
searchTypesMulti-selectSeveral result types at once, added to searchType.
chartsBooleanAdd the current Spotify Charts (global Weekly Top Songs, Albums, Artists; 50 each). Default false
trackRowsBooleanOne row per track instead of one row per album / playlist / artist. Default false
idTypeSelectWhat a bare id is (auto detects it). Default auto
🎯 Filters (applied by Spotify)
languageSelectLanguage of search results and genre names, e.g. en, es, de. Default en
searchLanguagesMulti-selectRun each search again in these languages, on top of language, for more results.
marketTextTwo-letter country code, applied when the run uses an Apify proxy.
✂️ Refine results
minPlayCountIntegerKeep only tracks with at least this many plays.
minMonthlyListenersIntegerKeep only artists with at least this many monthly listeners.
minFollowers (minSaves)IntegerKeep only artists and playlists with at least this many followers / saves.
excludeSpotifyOwnedBooleanSkip Spotify's own editorial and algorithmic playlists.
excludePlaylistIdsListPlaylists you already have; they are skipped.
➕ Extra data
includeTracksBooleanAlbums and playlists carry their tracks with play counts; podcasts their episodes. Default true
maxTracksPerItemIntegerTracks kept per album / playlist / podcast. Default 100, 0 = all
includeDiscographyBooleanArtist rows carry every release, not only the latest 10 of each kind.
followAlbums, followSingles, followPopularReleasesBooleanAlso return each of an artist's albums / singles / popular releases as its own album row, for artist links, artists found by search and chart artists. These rows carry followedFrom (the artist's link) and count toward maxResults, not maxResultsPerQuery.
includeCreditsBooleanSongwriting and production credits on every track row, including the rows of trackRows (one small extra request per track). Not added to the track lists inside album and playlist rows.
scrapePreviewUrlsBoolean30-second preview links on tracks. Default true
includeConcertsBooleanUpcoming concerts on artist rows: date, city and line-up — charged as concerts ($0.001 per artist row with concerts).
enrichConcertDetails, concertDetailsLimitBoolean, IntegerAdd venue, country, coordinates, genres and ticket sellers with links and availability (doors-open time when Spotify lists it) to the first N concerts per artist (default 20). No extra charge.
maxAlbumsPerArtist, includeSinglesInteger, BooleanWith trackRows: how many of an artist's newest releases become track rows. Defaults 3, true
🔁 Monitoring
monitorModeBooleanReturn only new rows and rows whose numbers changed since the last run. Pair with a daily schedule.
monitorStoreNameTextMemory for monitor mode; one name per schedule.
📦 Output
maxResultsIntegerMost rows per run. Default 100; 0 = no limit.
maxResultsPerQueryIntegerMost results per search term and type. Default 50; Spotify serves about 1,000 per search.
compactBooleanCore fields only, sized for AI agents and MCP. Add-ons you turn on (concerts, credits, discography, raw) stay on the row.
includeRawBooleanAttach Spotify's full answer under raw. With trackRows, each track row gets Spotify's item for that track (its entry in the album or playlist; a track link gets the full track answer).
⚙️ Advanced
proxyConfigurationProxyNot needed. Default: no proxy.
maxConcurrencyIntegerRequests in flight. Default 6.

Input JSON

{
"urls": [
"https://open.spotify.com/artist/0TnOYISbd1XYRBk9myaseg",
"https://open.spotify.com/album/4m2880jivSbbyEGAKfITCa",
"https://open.spotify.com/playlist/37i9dQZF1DXcBWIGoYBM5M"
],
"maxResults": 50
}

A link always returns exactly that item. Search returns Spotify's own ranking for the keyword, and every result gets its full row with searchTerm and searchRank (profiles carry the name, username and picture the search shows). Do: urls: ["https://open.spotify.com/track/4uLU6hMCjMI75M1A2tKUQC"] · Don't: search for a song title when you already have its link (search can return covers and remixes first).

Use one row per track for play-count reports

With trackRows: true, an album, a playlist or an artist becomes one row per track with its play count, position, album and source. A 10,000-track playlist delivered 1,000 track rows in 8.3 seconds in testing. Leave it off when you want one row per album or playlist with the tracks inside.

Find playlist curators with filters

Search playlists with minFollowers: 200 and excludeSpotifyOwned: true to keep playlists run by people and brands; contactEmails, contactHandles and contactLinks come from the playlist description. Add searchLanguages to find more playlists for the same keyword.

⬆️ Output

Every Spotify item becomes one dataset item. Here is a table view of a 100-track run:

Spotify Scraper output table with Spotify play counts

An artist row (shortened):

{
"type": "artist",
"id": "0TnOYISbd1XYRBk9myaseg",
"url": "https://open.spotify.com/artist/0TnOYISbd1XYRBk9myaseg",
"name": "Pitbull",
"verified": true,
"followers": 13489461,
"monthlyListeners": 78824416,
"worldRank": 17,
"topCities": [{ "city": "Mexico City", "country": "MX", "region": "CMX", "numberOfListeners": 1276357 }],
"topTracks": [{ "name": "On The Floor", "playCount": 1287075338, "durationMs": 284866, "previewUrl": "https://p.scdn.co/mp3-preview/a4069c..." }],
"albumCount": 20,
"singleCount": 181,
"concertCount": 11,
"upcomingRelease": { "name": "PITCOIN", "type": "album", "releaseDate": "2026-10-09" }
}

A playlist track inside a playlist row:

{
"name": "Patient Zero",
"playCount": 73769731,
"durationMs": 225868,
"addedAt": "2026-09-25T04:02:48.872Z",
"bpm": 91.99,
"key": "G",
"mode": "major",
"camelotKey": "9B",
"artists": [{ "name": "Taylor Swift", "url": "https://open.spotify.com/artist/06HL4z0CvFAxyc27GXpf02" }]
}

Each run also saves play_counts.csv in the run's key-value store: one line per track seen (artist, album, track, play count, source), ready for a spreadsheet.

Fields

FieldRowsWhat it isFill on test runs
playCount / streamCounttrackTotal plays as Spotify shows them; playCountText keeps Spotify's raw string100% (100 tracks)
tracks[].playCountalbum, playlistPlay count of every track in the list13/13 album, 50/50 playlist
totalPlayCountalbum, playlistSum over every track, when every track was readalbum 3,108,388,224
monthlyListenersartistMonthly listeners81% of 400 searched artists
followersartist, playlistFollowers / saves100%
worldRankartistRank among the top 500 on Spotify, null otherwise28%
topCitiesartistTop 5 cities with listener counts73%
releaseDatetrack, albumRelease date and releaseDatePrecision100% of tracks and albums
label, copyrightalbumRecord label and copyright lines. Rows from a track link carry the copyright under album.copyright; trackRows rows expanded from an album or artist carry label100% of albums
bpm, key, mode, camelotKeyplaylist tracksTempo and musical key100% / 99.8% of 1,000
previewUrltracks30-second MP3 preview100% of 100 track links
creditsevery track row (includeCredits)Writers, composers, producers, engineers, performers6-42 per track
authors, narrators, genres, rating, priceaudiobookAuthors, narrators, publisher, genres, rating and rating count, price and currency3/3 test audiobooks
concertsartist (add-on)Date, city, line-upartists with shows (Pitbull 11/11)
concerts[].venue, country, latitude, ticketsartist (enrichConcertDetails)Venue, country, coordinates, ticket sellers with links and availabilityfirst N concerts (3/3 with N = 3)
chartchart rowsChart name, rank, previous and peak rank150 chart entries
isNew, changed, previous*, delta*monitor modeWhat changed since the last run (kept with compact too)monitor runs
tracksAdded, tracksRemovedplaylist (monitor mode, includeTracks on)Tracks added to or removed from the playlist since the last run, compared over the whole playlist (up to 10,000 tracks) whatever maxTracksPerItem ismonitor runs

How can I use Spotify data?

  • 🎯 Music marketers — track a release's play counts day by day and report growth per track
  • 📊 Labels and A&R scouts — compare artists by monthly listeners, followers, world rank and top cities before signing
  • 📬 Playlist pitching — find curator playlists by keyword and follower count, with the contact details in their descriptions
  • 🎧 Playlist analysts — see which tracks a playlist added or removed, with play counts, BPM and key
  • 🎤 Promoters — list an artist's upcoming concerts by date, city and line-up; turn on enrichConcertDetails for venues and ticket links
  • 🤖 AI and research teams — feed compact rows into an LLM or a dataset of artists, tracks and charts

How much does it cost to scrape Spotify?

Spotify Scraper is pay-per-result: $2.80 per 1,000 rows ($0.0028 per track, album, artist, playlist, podcast, episode, audiobook or profile row), no start fee. One row per track mode is $0.074 per 1,000 track rows. The concerts add-on is $0.001 per artist row that carries concerts. Inputs that return nothing are not charged.

RowsEntity rowsTrack rows (trackRows)
10$0.028$0.00074
100$0.28$0.0074
1,000$2.80$0.074
10,000$28.00$0.74

There is nothing else to pay: Apify platform usage is included in these prices. Measured on 256 MB: 100 track links in 9.7 s, 100 artists from a search in 14 s, 1,000 track rows from one playlist in 8.3 s.

Integrations, API, scheduling & MCP

  • Schedules: run Spotify Scraper hourly, daily or weekly from the Schedules tab; turn on monitorMode to get only new or changed rows.
  • Webhooks: fire a URL when a run finishes — push rows to your CRM, Slack or a sheet.
  • No-code: Make, Zapier, n8n, Google Sheets, Airtable, Slack via Apify integrations.
  • API: call it from Node.js or Python with apify-client — code on the API tab and the Apify API reference.
  • MCP / AI agents: connect Claude, Cursor or any MCP client through the MCP tab and ask for Spotify play counts in plain language.

More scrapers from TopApi

🎬 TikTok Scraper — videos, hashtags, profiles📹 TikTok Video Scraper — stats by video URL🔎 TikTok User Search Scraper
▶️ YouTube Shorts Scraper — views and channels📸 Instagram Scraper — posts, reels, hashtags👤 Instagram Profile Scraper
📇 Instagram Contact Scraper🐦 Twitter Profile Scraper — X followers and bio📈 SimilarWeb Scraper — website traffic
🌐 Website Content Crawler🧭 All TopApi actors

Limits & empty runs

  • Search depth: Spotify serves about 1,000 results per search term and type; use more terms or searchLanguages to go wider.
  • Playlists: Spotify playlists hold up to 10,000 tracks. Preview URLs come from Spotify's embed player, which lists the first 100 tracks of a playlist (96 of 1,000 track rows had one on the 10,000-track test playlist; every album and track link had one).
  • Numbers Spotify does not publish: monthlyListeners is null for artists with no listeners this month, worldRank is null outside the top 500. Lyrics and audio features (danceability, energy) are not shown to signed-out visitors, so they are not in the rows; bpm and key are available on playlist tracks.
  • Profiles: user profiles are shown only to signed-in visitors; profiles come from search (searchType: users) with name, username and picture.
  • Audiobooks: an audiobook row carries its authors, narrators, publisher, genres, rating, price and duration; chapters are not listed.
  • Empty dataset: the run's status message says why — a link that does not exist (checked twice), filters that removed every row, or nothing new in monitor mode. Nothing is charged for an empty run.

FAQ

How many rows can Spotify Scraper collect in one run?

As many as you set in maxResults (0 = no limit). Each search term returns up to about 1,000 results per type, and one row per track mode reads playlists of up to 10,000 tracks. A run saves its progress, so a restart does not deliver or charge rows twice.

How do I get Spotify play counts for every track of an album or playlist?

Paste the album or playlist link: the row carries every track with its play count (maxTracksPerItem: 0 for all of them). For one row per track, turn on trackRows.

Can I run Spotify Scraper on a schedule to track play counts and monthly listeners?

Yes. Save your input as a task, open Schedules, pick the cadence and turn on monitorMode. Each run returns only rows whose play count, monthly listeners, followers, world rank, track count or playlist tracks changed, with previous* and delta* fields, and bills only those rows.

Can I integrate Spotify Scraper with other apps?

Yes — Make, Zapier, n8n, Google Sheets, Slack and more via Apify integrations, or use webhooks to trigger an action when a run finishes.

Can I use Spotify Scraper with the Apify API?

Yes. The API lets you start runs, fetch datasets and manage schedules. Use apify-client for Node.js or Python; the API tab has ready-to-paste code.

Can I use Spotify Scraper through an MCP server?

Yes. Open the MCP tab, connect your MCP client (Claude Desktop, Cursor, LibreChat…), and ask for Spotify data in plain language. Turn on compact to keep rows small.

Do I need a Spotify account, cookies or an API key?

No. Spotify Scraper reads what Spotify shows to any signed-out visitor; you pass links or keywords and nothing else.

How is Spotify Scraper different from Spotify's official Web API?

The official Web API needs a registered developer app and shows a relative 1-100 popularity score instead of play counts. Spotify Scraper returns the play count Spotify displays, plus monthly listeners, world rank and top cities.

Why did my Spotify Scraper run return no results?

The status message names the cause: a link that is not a track, album, artist, playlist, show, episode or audiobook (user profile links are skipped), an id that does not exist, filters that removed every row, or no changes in monitor mode. None of these is charged.

Spotify Scraper reads only publicly available Spotify pages, the same data a signed-out visitor sees. Results may still contain personal data (for example a playlist owner's name), which is regulated (for example by GDPR); make sure you have a legitimate purpose. See Is web scraping legal?

Your feedback

We keep improving Spotify Scraper. Found a bug or missing a field? Open an issue on the Issues tab.