Spotify Scraper
Pricing
from $2.00 / 1,000 results
Spotify Scraper
Scrape Spotify play counts, streams, monthly listeners, followers, world rank, top cities, and biographies. Six modes: artist, track, album, playlist, search, and playlist discovery (find playlists by keyword with save counts). 180+ markets: K-pop, J-pop, Latin, Afrobeats. $2.79/1K on Starter.
Pricing
from $2.00 / 1,000 results
Rating
0.0
(0)
Developer
Sourabh Kumar
Maintained by CommunityActor stats
0
Bookmarked
188
Total users
77
Monthly active users
a day ago
Last modified
Categories
Share

Spotify Scraper: play counts, monthly listeners, tracks, albums & playlists
Scrape any Spotify artist, track, album, playlist, or keyword search in seconds, or find thousands of playlists by keyword with their save counts. No Spotify developer app, no OAuth, no login, no proxy setup. You get the numbers other scrapers can't touch: exact play counts, monthly listeners, followers, world rank, and top cities.
$2.79 per 1,000 results on the Starter plan ($3.00 on Free). No per-run fee. One actor, six modes.
Works for artists from every Spotify market (180+ countries). K-pop 🇰🇷, J-pop 🇯🇵, Latin 🇲🇽🇧🇷🇨🇴, Afrobeats 🇳🇬🇬🇭, Bollywood 🇮🇳, French rap 🇫🇷, German hip-hop 🇩🇪, Arabic 🇸🇦🇦🇪, C-pop 🇨🇳🇹🇼, Russian 🇷🇺: all in native script.
| Quick facts | |
|---|---|
| Price | $2.79 per 1,000 results on Starter, $3.00 on Free, $2.00 on Business. No per-run fee |
| Modes | Artist, track, album, playlist, search, playlist discovery |
| Speed | 2 to 5 seconds per artist, about 15 minutes for 500 artists |
| Login or API key | Not needed |
| Output | JSON, CSV, Excel, API, webhooks |
| Languages | Every Spotify market and script |

Jump to: How it works · Modes with examples · Find playlists to pitch · Pricing · All fields · FAQ
Spotify Scraper is an independent tool. It is not affiliated with, endorsed by, or connected to Spotify AB.
How to scrape Spotify: step by step

- Create a free Apify account. Takes 30 seconds, no card needed.
- Open Spotify Scraper in the Apify Console.
- Paste Spotify URLs,
spotify:URIs, or bare IDs. Or pick search mode and type a keyword. Country links likeintl-ko/work too (see all). - Click Start. Single entities finish in seconds; big batches in minutes.
- Export as JSON, CSV, or Excel, or fetch results via the API. What each row looks like: sample output per mode.
Why this scraper?


- 🎯 Exact play counts on every track, down to the single play: the number people actually search for.
- 📊 Monthly listeners and top 5 cities on every artist record, plus world rank for artists inside Spotify's global ranking (roughly the top 500): fields the official API doesn't expose.
- 🧰 One actor, six modes (artist, track, album, playlist, search, playlist discovery) instead of stitching 3 to 6 separate scrapers together.
- 🔎 Find playlists by keyword, filtered by saves. Up to about 1,000 playlists per keyword, each with its save count and owner, so you can pitch to curators instead of guessing.
- 🔑 No app registration, no OAuth, no API keys. Paste a URL and click Start.
- ⚡ No browser. A single artist finishes in 2 to 5 seconds; a batch of 500 artists takes about 15 minutes.
- 🛡️ Built-in fallback keeps runs alive when Spotify hiccups, so batches don't die midway.
- 💸 Bad input costs $0. Deleted artists, private playlists, and typo'd URLs log a warning and are never billed.
- 🌍 Every market, every script. Hangul, Kanji, Cyrillic, Arabic, Devanagari returned untouched.
Spotify Scraper vs. the official Web API

| Concern | Spotify Web API | Other Spotify actors | This actor |
|---|---|---|---|
| App registration | Required, manual approval for extended quota | Not needed | Not needed |
| Per-track play count | ❌ Not exposed | Partial (play-count-only actors) | ✅ Every track |
| Monthly listeners, world rank, top cities | ❌ Not available | ❌ Mostly not available | ✅ All three |
popularity, genres | Deprecated Feb 2026 (returns stale data) | Some still return dead fields | Skipped on purpose |
| Audio features (tempo, key, danceability) | Locked to pre-Nov-2024 grandfathered apps | Rarely available, and pricier when offered | Not included (honestly unavailable) |
| Number of actors to install | N/A | Often split into 3 to 6 separate scrapers | One actor, six modes |
| Per-run start fee | N/A | $5 on many competitors | $0 |
| Price per 1,000 results | Free (but rate-limited) | $3 to $5 | $2.79 on Starter |
Locale URLs (intl-ko, intl-ja, etc.) | N/A | Often break | Handled |
The short version: if you want play counts, followers, world rank, and top cities in one actor without juggling app keys or stitching six scrapers together, this is built for that. What it does not return: Limitations.
Scraping modes
Each mode below shows what you get, an input you can paste, and an output example.
Go to a mode: Artist · Track · Album · Playlist · Search · Playlist discovery
🎤 Artist mode

Per-artist record with every demand-side metric Spotify shows the public: monthly listeners (active 30-day), followers, world rank, top 5 cities with per-city listener counts, top 10 tracks with exact play counts, related artists ("fans also like"), full biography in native language, external links (Instagram, Facebook, Wikipedia, TikTok), and discography counts. Set includeDiscography: true for full album, single, compilation, and popular-release lists.
🎤 Artist: settings
| Setting | Default | What it does |
|---|---|---|
Modemode | auto | Set to artist, or leave empty: an artist URL sets it. |
Spotify URLs or IDsspotifyUrls | (none) | Full URLs, spotify: URIs, or bare 22-character IDs. |
Include artist discographyincludeDiscography | false | Include full album, single, compilation, and popular-release lists instead of just counts. |
Max resultsmaxResults | 50 | 0 means unlimited. |
🎤 Artist: example input
{ "mode": "artist", "spotifyUrls": ["3TVXtAsR1Inumwj472S9r4"], "maxResults": 1 }
List every BLACKPINK album, single, and compilation (feed the album IDs to album mode for track listings and labels):
{ "mode": "artist", "spotifyUrls": ["41MozSoPIsD1dJM0CLPjZF"], "includeDiscography": true, "maxResults": 1 }
Bulk compare K-pop followers and world rank:
{"mode": "artist","spotifyUrls": ["3Nrfpe0tUJi4K4DXYWgMUX","41MozSoPIsD1dJM0CLPjZF","6HvZYsbFfjnjFrWF950C9d","2dIgFjalVxs4ThymZ67YCE","7nqOGRxlXj7N2JYbgNEjYH"],"maxResults": 5}

🎤 Artist: example output

Artist record (Drake, real values 2026-10-08)
{"type": "artist","spotifyId": "3TVXtAsR1Inumwj472S9r4","name": "Drake","monthlyListeners": 94598855,"followers": 117796261,"worldRank": 8,"biography": "Canadian rapper and vocalist Drake has retained a bigger-than-life commercial presence...","imageUrl": "https://i.scdn.co/image/ab6761610000e5eb4293385d324db8558179afd9","headerImageUrl": "https://image-cdn-fa.spotifycdn.com/image/ab6761860000eab1a76cf626917521176d2f7723","externalLinks": [],"topCities": [{"city": "London", "country": "GB", "region": "ENG", "listeners": 2026128},{"city": "Los Angeles", "country": "US", "region": "CA", "listeners": 1424617},{"city": "New York City", "country": "US", "region": "NY", "listeners": 1403247},{"city": "Chicago", "country": "US", "region": "IL", "listeners": 1283319},{"city": "Dallas", "country": "US", "region": "TX", "listeners": 1120837}],"topTracks": [{"spotifyId": "514joG57v4yKTsfQmz7stz", "name": "Janice STFU", "durationMs": 237344, "playCount": 359613936, "explicit": true, "previewUrl": "https://p.scdn.co/mp3-preview/1de9b315e1aa811aedaf905b1058b668b2d3146e"},{"spotifyId": "1zi7xx7UVEFkmKfv06H8x0", "name": "One Dance", "durationMs": 173986, "playCount": 4502463260, "explicit": false, "previewUrl": "https://p.scdn.co/mp3-preview/0ee5843f6060102ce4ac239c856c452439e3d9d2"}],"topTracksCount": 10,"relatedArtists": [{"spotifyId": "1RyvyyTE3xzB2ZywiAwp0i", "name": "Future", "imageUrl": "https://i.scdn.co/image/ab6761610000e5eb2c472c891062acb4f3068583"},{"spotifyId": "0Y5tJX1MQlPlqiwlOH1tJY", "name": "Travis Scott", "imageUrl": "https://i.scdn.co/image/ab6761610000e5eb19c2790744c792d05570bb71"}],"discography": {"albumsCount": 22, "singlesCount": 65, "compilationsCount": 0, "albums": [], "singles": [], "popularReleases": [], "compilations": []},"spotifyUrl": "https://open.spotify.com/artist/3TVXtAsR1Inumwj472S9r4","dataSource": "partner"}
All input fields: Input · Fields per mode: Field availability by mode · Back to all modes
🎵 Track mode

Exact play count, all artists (primary and featured, each with Spotify ID), album context (name, type, release date, label, copyright C and P lines), disc number, track number, content rating (EXPLICIT / NONE), duration, 30-second preview MP3 URL, and cover image.
🎵 Track: settings
| Setting | Default | What it does |
|---|---|---|
Modemode | auto | Set to track, or leave empty: a track URL sets it. |
Spotify URLs or IDsspotifyUrls | (none) | Full URLs, spotify: URIs, or bare 22-character IDs. |
Max resultsmaxResults | 50 | 0 means unlimited. |
🎵 Track: example input
{ "mode": "track", "spotifyUrls": ["https://open.spotify.com/track/0VjIjW4GlUZAMYd2vXMi3b"], "maxResults": 1 }

🎵 Track: example output
Track record (Blinding Lights, 5.62 billion plays)
{"type": "track","spotifyId": "0VjIjW4GlUZAMYd2vXMi3b","name": "Blinding Lights","artists": [{ "name": "The Weeknd", "spotifyId": "1Xyo4u8uXC1ZmMpatF05PJ", "isPrimary": true }],"album": {"spotifyId": "4yP0hdKOZPNshxUOjY0cZj","name": "After Hours","type": "ALBUM","releaseDate": "2020-03-20T00:00:00Z","label": "Republic Records","copyright": [{ "text": "© 2020 The Weeknd XO, Inc., marketed by Republic Records, a division of UMG Recordings, Inc.", "type": "C" },{ "text": "℗ 2020 The Weeknd XO, Inc., marketed by Republic Records, a division of UMG Recordings, Inc.", "type": "P" }]},"durationMs": 200040,"playCount": 5622156475,"trackNumber": 9,"discNumber": 1,"contentRating": "NONE","explicit": false,"previewUrl": "https://p.scdn.co/mp3-preview/...","releaseDate": "2020-03-20T00:00:00Z","imageUrl": "https://i.scdn.co/image/...","spotifyUrl": "https://open.spotify.com/track/0VjIjW4GlUZAMYd2vXMi3b","dataSource": "partner","releaseDatePrecision": "DAY"}
All input fields: Input · Fields per mode: Field availability by mode · Back to all modes
💿 Album mode

Name, album type (ALBUM / SINGLE / COMPILATION), label (e.g., "Republic Records"), copyright lines, release date, and the full track listing: each track with play count, track and disc number, duration, content rating, and all artists. Multi-artist albums supported.
💿 Album: settings
| Setting | Default | What it does |
|---|---|---|
Modemode | auto | Set to album, or leave empty: an album URL sets it. |
Spotify URLs or IDsspotifyUrls | (none) | Full URLs, spotify: URIs, or bare 22-character IDs. |
Max resultsmaxResults | 50 | 0 means unlimited. |
💿 Album: example input
{ "mode": "album", "spotifyUrls": ["https://open.spotify.com/album/4yP0hdKOZPNshxUOjY0cZj"], "maxResults": 1 }

💿 Album: example output
Album record (After Hours, real values 2026-10-10, 2 of its 14 tracks shown)
{"type": "album","spotifyId": "4yP0hdKOZPNshxUOjY0cZj","name": "After Hours","albumType": "ALBUM","artists": [{"name": "The Weeknd", "spotifyId": "1Xyo4u8uXC1ZmMpatF05PJ"}],"artist": "The Weeknd","releaseDate": "2020-03-20T00:00:00Z","label": "Republic Records","copyright": [{"text": "© 2020 The Weeknd XO, Inc., marketed by Republic Records, a division of UMG Recordings, Inc.", "type": "C"}, {"text": "℗ 2020 The Weeknd XO, Inc., marketed by Republic Records, a division of UMG Recordings, Inc.", "type": "P"}],"trackCount": 14,"tracks": [{"spotifyId": "6b5P51m8xx2XA6U7sdNZ5E", "name": "Alone Again", "trackNumber": 1, "discNumber": 1, "durationMs": 250053, "playCount": 232408609, "contentRating": "EXPLICIT", "explicit": true, "artists": [{"name": "The Weeknd", "spotifyId": "1Xyo4u8uXC1ZmMpatF05PJ"}]},{"spotifyId": "2K9Ovn1o2bTGqbsABGC6m3", "name": "Too Late", "trackNumber": 2, "discNumber": 1, "durationMs": 239973, "playCount": 231219421, "contentRating": "EXPLICIT", "explicit": true, "artists": [{"name": "The Weeknd", "spotifyId": "1Xyo4u8uXC1ZmMpatF05PJ"}]}],"imageUrl": "https://i.scdn.co/image/ab67616d0000b2738863bc11d2aa12b54f5aeb36","spotifyUrl": "https://open.spotify.com/album/4yP0hdKOZPNshxUOjY0cZj","dataSource": "partner","releaseDatePrecision": "DAY"}
All input fields: Input · Fields per mode: Field availability by mode · Back to all modes
📜 Playlist mode

Name, save count, owner, description, item count, and the full track listing paginated automatically up to 500 tracks. Per track: name, artists, album, duration, play count, content rating, the addedAt timestamp (great for tracking editorial adds), and itemType (track, episode or localFile).
📜 Playlist: settings
| Setting | Default | What it does |
|---|---|---|
Modemode | auto | Set to playlist, or leave empty: a playlist URL sets it. |
Spotify URLs or IDsspotifyUrls | (none) | Full URLs, spotify: URIs, or bare 22-character IDs. |
Max resultsmaxResults | 50 | 0 means unlimited. |
📜 Playlist: example input
{ "mode": "playlist", "spotifyUrls": ["37i9dQZF1DXcBWIGoYBM5M"], "maxResults": 1 }

📜 Playlist: example output
Playlist record (Today's Top Hits, 33.7M saves, real values 2026-10-08)
{"type": "playlist","spotifyId": "37i9dQZF1DXcBWIGoYBM5M","name": "Today’s Top Hits","description": "The hottest 50. Cover: Taylor Swift","owner": "Spotify","itemCount": 50,"saveCount": 33756415,"tracks": [{"spotifyId": "11hcBLPtbMp4aQI6zGQLub", "name": "Patient Zero", "artists": [{"name": "Taylor Swift", "spotifyId": "06HL4z0CvFAxyc27GXpf02"}], "album": {"spotifyId": "4hF2gTGuPYlykYuphDxi8J", "name": "The Life of a Showgirl: The Encore", "releaseDate": null}, "durationMs": 225868, "playCount": 69816683, "contentRating": "NONE", "explicit": false, "addedAt": "2026-09-25T04:02:48.872Z", "itemType": "track"}],"imageUrl": "https://i.scdn.co/image/ab67706f0000000271992d3b45eb1297df9c6bf7","spotifyUrl": "https://open.spotify.com/playlist/37i9dQZF1DXcBWIGoYBM5M","dataSource": "partner"}
All input fields: Input · Fields per mode: Field availability by mode · Back to all modes
🔍 Search mode

One request returns matching tracks, artists, albums, and playlists in a single grouped record. Accepts any Unicode input.
🔍 Search: settings
| Setting | Default | What it does |
|---|---|---|
Modemode | required | Set to search. |
Search termsearchTerm | "" | The keyword to search. Any Unicode. |
Max resultsmaxResults | 50 | Number of items per category (up to 50). |
🔍 Search: example input
{ "mode": "search", "searchTerm": "米津玄師", "maxResults": 10 }

🔍 Search: example output
Search record (query "drake", real values 2026-10-08)
{"type": "search","query": "drake","tracks": [{"spotifyId": "6DCZcSspjsKoFjzjrWoCdn", "name": "God's Plan", "artists": ["Drake"], "album": "Scorpion", "playCount": null, "durationMs": 198973, "spotifyUrl": "https://open.spotify.com/track/6DCZcSspjsKoFjzjrWoCdn"}],"artists": [{"spotifyId": "3TVXtAsR1Inumwj472S9r4", "name": "Drake", "imageUrl": "https://i.scdn.co/image/ab6761610000e5eb4293385d324db8558179afd9", "spotifyUrl": "https://open.spotify.com/artist/3TVXtAsR1Inumwj472S9r4"}],"albums": [{"spotifyId": "4gvyJRNQPBb1kOWqwZjUYI", "name": "HABIBTI (FOMO)", "artist": "Drake", "albumType": "ALBUM", "imageUrl": "https://i.scdn.co/image/ab67616d0000b2732685b70af798b4f272c00d8a", "spotifyUrl": "https://open.spotify.com/album/4gvyJRNQPBb1kOWqwZjUYI"}],"playlists": [{"spotifyId": "6SFx39GsC05tDIFlTMUsIK", "name": "BEST OF DRAKE ", "owner": "anac.ac1996", "description": "", "imageUrl": "https://mosaic.scdn.co/640/ab67616d00001e022090f4f6cc406e6d3c306733ab67616d00001e0267ffd8d6bbf399430ba9c044ab67616d00001e02d6adfbd3f091d6f2b9af6507ab67616d00001e02f9a9abe8ed9ffaba55412384", "spotifyUrl": "https://open.spotify.com/playlist/6SFx39GsC05tDIFlTMUsIK"}],"dataSource": "partner"}
All input fields: Input · Fields per mode: Field availability by mode · Back to all modes
🔎 Playlist discovery mode

Give it keywords, get back one row per playlist with its save count and owner. Built for artists and labels looking for playlists to pitch to.
- Each keyword is searched up to about 1,000 playlists deep. Different keywords mostly find different playlists, so a list of keywords is how you scale.
- Minimum saves: only playlists with at least this many saves are returned, and only those are charged.
- Skip these playlists: paste the
spotifyIdcolumn from earlier runs and those playlists are never returned or charged again. Repeats across keywords in the same run are removed automatically. - Spotify-owned or not: every row says whether Spotify itself runs the playlist (its editorial, algorithmic, genre and chart accounts). Tick "Skip Spotify-owned playlists" to keep only playlists run by people and brands.
- Owner and contact hints: owner name, username and profile link. When the curator wrote an email, an Instagram/TikTok handle, or a link (a submission form such as SubmitHub or sbmt.to, a website, Linktree) in the description, it is pulled into
contactEmails,contactHandlesandcontactLinks. Spotify does not publish curator emails, so most rows have none: in our 70-keyword indie test about 1 in 9 rows had at least one. - Search countries (optional): Spotify shows a different mix of playlists in each country, so you can repeat every keyword as if searching from up to 10 countries (US, UK, Canada, Mexico, Brazil, Germany and more). A playlist found in several countries comes back once, is charged once, and
searchCountrieslists every country that found it. Your "Skip these playlists" list applies to all of them. - Search languages (optional): repeats each keyword in other Spotify languages. This adds far fewer playlists than countries do: in our tests each language added about 5% new playlists, against 25 to 50% for each country.

🔎 Playlist discovery: settings
| Setting | Default | What it does |
|---|---|---|
Modemode | required | Set to playlistDiscovery. |
Search termssearchTerms | [] | Keywords to search. If empty, searchTerm is used. |
Minimum savesminSaves | 0 | Only return (and charge for) playlists with at least this many saves. |
Skip Spotify-owned playlistsexcludeSpotifyOwned | false | Leave out playlists Spotify itself runs. |
Skip these playlistsexcludePlaylistIds | [] | Playlist URLs or IDs to skip. |
Search countriessearchCountries | [] | Optional country codes (US, GB, MX, ...), up to 10, to repeat each keyword from. Empty searches once from the United States. |
Search languagessearchLanguages | [] | Optional language codes (en, de, ja, ...) to repeat each keyword in. |
Max resultsmaxResults | 50 | 0 means unlimited. |
🔎 Playlist discovery: example input
{"mode": "playlistDiscovery","searchTerms": ["indie rock", "bedroom pop", "shoegaze", "chill indie"],"minSaves": 200,"excludeSpotifyOwned": true,"maxResults": 0}

What to expect: in our tests, 30 keywords across many genres returned 12,395 playlists with 200+ saves in 20 minutes (about 400 per keyword). Within one genre, keywords overlap: 70 indie rock keywords returned 9,883 playlists in 34 minutes (about 140 per keyword), and near-duplicate keywords such as "indie rock uk" added almost nothing. Varied keywords (sub-genres, moods, eras, scenes) find the most new playlists. Results for the same keyword are stable when you repeat a search, so use new keywords to find new playlists. Always set a minimum saves value: a vague or misspelled keyword still returns loosely related playlists, and with a minimum of 0 you pay for all of them.
Countries roughly double what the same keywords find. 10 indie keywords with 45,000+ saves found 89 playlists from the US alone and 171 across 8 countries (about 18 minutes). 5 keywords with 1,000+ saves went from 1,052 to 2,245.
🔎 Playlist discovery: example output
Playlist discovery record (real row, query "post punk", 8 countries searched)
{"type": "playlistDiscovery","spotifyId": "5GAHZbCRGu6NtqM2JhlaCH","name": "80s New Wave & Alternative","saveCount": 190829,"owner": "Troy @ TavernTails","ownerUsername": "1297830857","ownerProfileUrl": "https://open.spotify.com/user/1297830857","isSpotifyOwned": false,"description": "https://twitch.tv/taverntails","contactEmails": [],"contactHandles": [],"contactLinks": ["https://twitch.tv/taverntails"],"searchTerm": "post punk","searchLanguage": null,"searchRank": 25,"imageUrl": "https://image-cdn-ak.spotifycdn.com/image/ab67706c0000d72c9e1e96192e75a9240fb4b69c","spotifyUrl": "https://open.spotify.com/playlist/5GAHZbCRGu6NtqM2JhlaCH","dataSource": "partner","searchCountries": ["US", "CA", "GB", "MX", "BR", "DE", "FR"]}
All input fields: Input · Fields per mode: Field availability by mode · Back to all modes
How much does Spotify Scraper cost?

Spotify Scraper charges $2.00 to $3.00 per 1,000 results depending on your Apify plan: $3.00 on Free, $2.79 on Starter, $2.50 on Scale, $2.00 on Business. No per-run fee, no subscription. The Free plan's $5 monthly credit covers about 1,666 results; the $29 Starter plan about 10,394 results per month.
Failed lookups are never billed (details). Pay-per-use. Pause whenever. One run or ten million, same price per result.
Global & multi-language support

Spotify publishes names and metadata in the artist's native script. This scraper returns them untouched: no transliteration, no dropped characters. It handles Hangul, Kanji, Katakana, Hiragana, Simplified and Traditional Chinese, Cyrillic, Arabic, Hebrew, Devanagari, Gurmukhi, Tamil, Thai, Greek, and every other Unicode script Spotify indexes.
Locale URLs supported
Paste any country-prefixed Spotify link, the scraper auto-strips the locale:
https://open.spotify.com/intl-ko/artist/...(Korean)https://open.spotify.com/intl-ja/artist/...(Japanese)https://open.spotify.com/intl-de/artist/...(German)https://open.spotify.com/intl-fr/artist/...(French)https://open.spotify.com/intl-es/artist/...(Spanish)https://open.spotify.com/intl-pt/artist/...(Portuguese / Brazilian)https://open.spotify.com/intl-it/artist/...(Italian)https://open.spotify.com/intl-tr/artist/...(Turkish)https://open.spotify.com/intl-ar/artist/...(Arabic)https://open.spotify.com/intl-hi/artist/...(Hindi)- ...every other
intl-XX/locale variant
Search accepts any language
{ "mode": "search", "searchTerm": "米津玄師" } // J-pop{ "mode": "search", "searchTerm": "أم كلثوم" } // Arabic{ "mode": "search", "searchTerm": "방탄소년단" } // Korean (BTS in Hangul){ "mode": "search", "searchTerm": "Bad Bunny" } // Latin{ "mode": "search", "searchTerm": "Rammstein" } // German
Top artist IDs by region (paste these to try)
| Region | Artists & IDs |
|---|---|
| 🇰🇷 K-pop | BTS 3Nrfpe0tUJi4K4DXYWgMUX · BLACKPINK 41MozSoPIsD1dJM0CLPjZF · Stray Kids 2dIgFjalVxs4ThymZ67YCE · NewJeans 6HvZYsbFfjnjFrWF950C9d · SEVENTEEN 7nqOGRxlXj7N2JYbgNEjYH · TWICE 7n2Ycct7Beij7Dj7meI4X0 |
| 🇯🇵 J-pop | YOASOBI 64tJ2EAv1R6UaZqc4iOCyj · Ado 6mEQK9m2krja6X1cfsAjfl · Kenshi Yonezu 1snhtMLeb2DYoMOcVbb8iB · Official HIGE DANdism 5Vo1hnCRmCM6M4thZCInCj · Aimyon 5kVZa4lFUmAQlBogl1fkd6 |
| 🇲🇽🇧🇷🇨🇴 Latin | Bad Bunny 4q3ewBCX7sLwd24euuV69X · Karol G 790FomKkXshlbRYZFtlgla · Peso Pluma 12GqGscKJx3aE4t07u7eVZ · Feid 2LRoIwlKmHjgvigdNGBHNo · Rauw Alejandro 1mcTU81TzQhprhouKaTkpq · Anitta 7FNnA9vBm6EKceENgCGRMb |
| 🇳🇬🇬🇭🇿🇦 Afrobeats | Burna Boy 3wcj11K77LjEY1PkEazffa · Wizkid 3tVQdUvClmAT7URs9V3rsp · Tyla 3SozjO3Lat463tQICI9LcE · Asake 3a1tBryiczPAZpgoZN9Rzg · Rema 46pWGuE3dSwY3bMMXGBvVS · Davido 0Y3agQaa6g2r0YmHPOO9rh |
| 🇮🇳 Bollywood & Indian | Arijit Singh 4YRxDV8wJFPHPTeXepOstw · AP Dhillon 6LEG9Ld1aLImEFEVHdWNSB · Diljit Dosanjh 2FKWNmZWDBZR4dE5KX4plR · Shreya Ghoshal 0oOet2f43PA68X5RxKobEy |
| 🇫🇷 French | Aya Nakamura 7IlRNXHjoOCgEAWN5qYksg · Orelsan 4FpJcNgOvIpSBeJgRg3OfN · PNL 3NH8t45zOTqzlZgBvZRjvB |
| 🇩🇪 German | Apache 207 1qQLhymHXFPtP5U8KNKsm6 · Rammstein 6wWVKhxIU2cEi0K81v7HvP · RAF Camora 0Dvx6p8JDyzeOPGmaCIH1L |
| 🇨🇳🇹🇼 C-pop | Jay Chou 2elBjNSdBE2Y3f0j1mjrql · JJ Lin 7Dx7RhX0mFuXhCOUgB01uM · Jolin Tsai 1r9DuPTHiQ7hnRRZ99B8nL |
| 🇸🇦🇦🇪🇪🇬 Arabic / MENA | Amr Diab 5abSRg0xN1NV3gLbuvX24M · Fairuz 0dwFxqYkvZLSA6U6XfQcDV · Elissa 68rvMwPL0yMbYR5cv0pzCR |
Every one of these returns monthly listeners, followers, top 5 cities, biography, top 10 tracks with play counts, related artists, and discography counts. World rank is filled only for artists inside Spotify's global ranking (roughly the top 500) and is null for the rest.
Input
{"mode": "artist","spotifyUrls": ["https://open.spotify.com/artist/3TVXtAsR1Inumwj472S9r4","spotify:artist:06HL4z0CvFAxyc27GXpf02","1Xyo4u8uXC1ZmMpatF05PJ"],"maxResults": 5,"includeDiscography": true}
| Field | Type | Default | Notes |
|---|---|---|---|
mode | string | "artist" | One of artist, track, album, playlist, search, playlistDiscovery. Auto-detected from URL if omitted. |
spotifyUrls | string[] | (none) | Full URLs, spotify: URIs, or bare 22-character IDs. Used by artist, track, album, and playlist modes. |
searchTerm | string | "" | Search mode, and playlist discovery when searchTerms is empty. Any Unicode. |
maxResults | integer | 50 | 0 means unlimited. In search mode it is the number of items per category (up to 50). |
includeDiscography | boolean | false | Artist mode: include full album, single, compilation, and popular-release lists instead of just counts. |
searchTerms | string[] | [] | Playlist discovery: keywords to search. |
minSaves | integer | 0 | Playlist discovery: only return (and charge for) playlists with at least this many saves. |
searchLanguages | string[] | [] | Playlist discovery: optional language codes (en, de, ja, ...) to repeat each keyword in. |
searchCountries | string[] | [] | Playlist discovery: optional country codes (US, GB, MX, ...), up to 10, to repeat each keyword from. Empty searches once from the United States. |
excludePlaylistIds | string[] | [] | Playlist discovery: playlist URLs or IDs to skip. |
excludeSpotifyOwned | boolean | false | Playlist discovery: leave out playlists Spotify itself runs. |
Output
Every mode has a real output example next to its input in Scraping modes. Export results as JSON, CSV or Excel, or read them through the Apify API.
Field availability by mode
| Field | artist | track | album | playlist | search | playlist discovery |
|---|---|---|---|---|---|---|
name, spotifyId, spotifyUrl, imageUrl | ✅ | ✅ | ✅ | ✅ | (per item; tracks have no image) | ✅ |
monthlyListeners, followers, worldRank, biography, topCities | ✅ | - | - | - | - | - |
topTracks, relatedArtists, discography, externalLinks, headerImageUrl | ✅ | - | - | - | - | - |
playCount, durationMs, explicit | (top tracks) | ✅ | ✅ (per track) | ✅ (per track) | (tracks: durationMs; playCount is null) | - |
previewUrl | (top tracks) | ✅ | - | - | - | - |
trackNumber, contentRating | - | ✅ | ✅ (per track) | (contentRating per track) | - | - |
discNumber | - | ✅ | ✅ (per track) | - | - | - |
artists | - | ✅ | ✅ | ✅ (per track) | (tracks: names; albums use artist) | - |
album | - | ✅ (object) | - | ✅ (per track) | (per track, name only) | - |
releaseDate, releaseDatePrecision | (discography) | ✅ | ✅ | - | - | - |
albumType, label, copyright, trackCount, tracks | - | (album object: label, copyright) | ✅ | - | - | - |
saveCount, owner, description | - | - | - | ✅ | (playlists: owner, description) | ✅ |
itemCount, addedAt, itemType | - | - | - | ✅ (addedAt, itemType per track) | - | - |
ownerUsername, ownerProfileUrl, isSpotifyOwned, contactEmails, contactHandles, contactLinks | - | - | - | - | - | ✅ |
searchTerm, searchLanguage, searchRank, searchCountries | - | - | - | - | - | ✅ |
tracks, artists, albums, playlists, query (grouped results) | - | - | - | - | ✅ | - |
Use cases
- 🇰🇷 K-pop analytics. BTS, BLACKPINK, NewJeans, Stray Kids, SEVENTEEN, TWICE, ATEEZ: monthly listeners, world rank, and top cities for fandom mapping, plus per-song play counts.
- 🇯🇵 J-pop & anime OST pipeline. YOASOBI, Ado, Kenshi Yonezu, Official HIGE DANdism, Aimyon: release calendars for anime content sites.
- 🇲🇽🇧🇷🇨🇴 Latin music trend tracking. Bad Bunny, Karol G, Peso Pluma, Feid, Rauw Alejandro, Anitta: reggaeton, corridos tumbados, funk carioca.
- 🇳🇬🇬🇭🇿🇦 Afrobeats discovery. Burna Boy, Wizkid, Davido, Tyla, Asake, Rema: top cities (Lagos, London) and regional chart data.
- 🇮🇳 Bollywood & Indian music. Arijit Singh, AP Dhillon, Diljit Dosanjh, Shreya Ghoshal: Hindi, Punjabi, Tamil, Telugu catalogs in native script.
- 🇫🇷🇩🇪🇮🇹🇪🇸 European markets. French rap, German hip-hop, Italian pop, Spanish flamenco-pop: native-script names preserved.
- 🇨🇳🇹🇼🇭🇰 C-pop & Chinese markets. Jay Chou, JJ Lin, Jolin Tsai: Simplified and Traditional Chinese names for Mandarin-language analytics.
- 🇸🇦🇦🇪🇪🇬 Arabic music research. MENA artists, Khaleeji, Egyptian pop, Rai in Arabic script.
- 📜 Editorial playlist monitoring. Today's Top Hits, RapCaviar, Viva Latino, Tomorrow's Hits: track save counts and per-track play movement daily.
- 📡 Regional chart scraping. Daily Top 50 per country (France, Japan, Brazil, Germany, Korea, Mexico), Viral 50, Global Top 50, RADAR editorial lists.
- 💿 Artist catalog audits. Every album, single, and compilation for a roster; run the album IDs through album mode for full track listings, labels, and copyright lines for rights workflows.
- 🎧 A&R and sync licensing. Surface breakout artists in any language market before they chart globally, with cover art, release dates, and labels for clearance.
- 📈 Competitor benchmarking. Compare followers, monthly listeners, world rank, and top cities across a label's roster or a DSP playlist.
- 📊 Market research dashboards. Feed monthly listener and follower trends into Looker, Tableau, or Metabase.
- 🗞️ Newsletter and content automation. Push Spotify metadata into Google Sheets, Airtable, Webflow, Ghost, or any webhook-driven pipeline.
Limitations
- No
popularity,genres, or audio features. Spotify deprecatedpopularityandgenresin Feb 2026, and audio features (tempo, key, danceability) are locked to legacy developer apps. Any scraper still returning these hands you stale or fake numbers. I'd rather ship nothing than fake it. - No ISRC or UPC yet. Both require a registered Spotify developer app. An opt-in enrichment flag is planned; follow the Issues tab for the ship date.
- Playlists return up to 500 tracks each, paginated automatically.
- Album track listings cap at 1,000 tracks, paginated automatically.
- Year-only release dates. Spotify only knows the year for some older releases;
releaseDatethen reads as January 1 of that year andreleaseDatePrecisionisYEAR(otherwiseMONTHorDAY). Check it before trusting the day. - Playlist tracks have no album release date (
album.releaseDateis null): Spotify does not include it in playlist data. - Search returns up to 50 items per category (tracks, artists, albums, playlists) per query. Search results carry no play counts. For more playlists, use playlist discovery mode.
- Playlist discovery reaches about 1,000 playlists per keyword (Spotify's own search limit), usually 900 to 990 after removing repeats. Use more keywords or more search countries for more playlists.
- Each search country adds run time. 10 keywords across 8 countries took about 18 minutes. Raise the run timeout for long keyword lists.
- No curator emails from Spotify. Contact details appear only when the curator wrote them in the playlist description.
- Public data only. The actor sees what a logged-out visitor sees: no private playlists, no user listening history.
Other scrapers you might like
| Apple Podcast Scraper | Google Play Store Scraper | Apple App Store Scraper |
| Threads Scraper | Shopify Scraper | SimilarWeb Traffic Scraper |
Frequently asked questions
Is it legal to scrape Spotify?
Scraping public data is generally allowed in the US and most of the EU, as long as you don't collect personal data that falls under GDPR or CCPA without a lawful basis. This actor only touches publicly accessible Spotify pages: the same pages a logged-out visitor sees in a browser. You're responsible for how you use the output. Apify has a detailed breakdown: Is web scraping legal?.
How does it compare to Spotify's official Web API?
The official Web API requires you to register a developer app, manage OAuth, handle rate limits, and live with deprecations. It also doesn't expose per-track play counts, monthly listeners, world rank, or top cities. This actor gives you those fields with zero setup (full comparison). The tradeoff: no ISRC, UPC, or audio features, which live behind the official API.
What happens on bad URLs, deleted artists, or private playlists?
The run succeeds with zero results for that specific URL plus a warning line in the log. You're billed $0 for failed lookups. No run-level failures on input mistakes. And if the run hits its maximum cost limit, it stops cleanly and keeps the results already delivered.
Does it work on K-pop, J-pop, Arabic, Hindi, and other non-Latin scripts?
Yes. Names come back in whatever script Spotify publishes: Hangul, Kanji, Cyrillic, Arabic, Devanagari, Thai, Hebrew, Simplified and Traditional Chinese. intl-ko/, intl-ja/, intl-de/, intl-ar/, and every other locale prefix is accepted. BTS (3Nrfpe0tUJi4K4DXYWgMUX), Arijit Singh (4YRxDV8wJFPHPTeXepOstw), and Amr Diab (5abSRg0xN1NV3gLbuvX24M) all return monthly listeners, top cities, top tracks, and biography. More IDs to try: top artists by region.
How fast is it?
2 to 5 seconds per entity at default memory (512 MB). A batch of 500 artists takes about 15 minutes. Long playlist discovery runs take longer: see Limitations. Playlists of up to 500 tracks paginate automatically in a single run.
What's the rate limit?
None you have to manage. The actor paces requests and retries on its own. No Spotify API quota to track and no OAuth to babysit.
Can I integrate Spotify Scraper with other tools?
Push results straight into Make, Zapier, Slack, Airbyte, GitHub, Google Sheets, Google Drive, and any webhook consumer. The Apify platform treats every actor as a webhook source. See Apify integrations.
Can I use it with the Apify API?
Yes. Minimal start-run call:
curl -X POST "https://api.apify.com/v2/acts/sourabhbgp~spotify-scraper/runs?token=APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"mode":"artist","spotifyUrls":["3TVXtAsR1Inumwj472S9r4"],"maxResults":1}'
Full docs: Apify API reference.
Can I use it through an MCP server (Claude Desktop, Cursor)?
Yes. Apify ships an MCP server that exposes every actor as a tool. Setup: Apify MCP docs.
Your feedback
Ran into a bug, want a new field, or need a different market covered? Drop a note in the Issues tab. Every report goes to a human and fixes usually ship the same week.
