Spotify Profile Scraper
Pricing
Pay per usage
Spotify Profile Scraper
Scrapes public Spotify user profiles: display name, follower/following counts, profile image, and the public playlist library.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
Lukas Lunes
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
1
Monthly active users
11 days ago
Last modified
Categories
Share
Apify actor that scrapes public Spotify user profiles — display name, profile image, follower/following counts, and the public playlist library.
Built for Vana's data-pipe light-scrape path (the no-login, public-data lane —
the analog of the Instagram profile scraper).
Input
| Field | Type | Default | Description |
|---|---|---|---|
profileUrls | string[] | — (required) | Spotify user profiles: full URL (https://open.spotify.com/user/<id>), URI (spotify:user:<id>), or bare handle. |
playlistLimit | integer | 100 | Max public playlists returned per profile (1–200). |
proxyConfiguration | object | Apify Proxy | Proxy used to reach Spotify. |
{"profileUrls": ["https://open.spotify.com/user/spotify", "barackobama"],"playlistLimit": 100}
Output
One dataset item per profile:
{"user_id": "barackobama","uri": "spotify:user:barackobama","display_name": "Barack Obama","profile_image": "https://i.scdn.co/image/5c5cc54bd034019326ff5f2e1dc51dcd83656efd","followers_count": 360080,"following_count": null,"is_verified": true,"total_public_playlists_count": 4,"public_playlists_returned": 4,"public_playlists": [{"uri": "spotify:playlist:3DYdRhM1VrOkNNPPaYnkLc","playlist_id": "3DYdRhM1VrOkNNPPaYnkLc","name": "Official Inauguration Playlist","image_url": "https://i.scdn.co/image/...","followers_count": 11937,"owner_name": "Barack Obama","owner_uri": "spotify:user:barackobama"}],"recently_played_artists": [],"source_url": "https://open.spotify.com/user/barackobama","scraped_at": "2026-05-22T12:00:00.000Z","_method": "api"}
Failed profiles produce an item with an error field (profile_not_found,
profile_unavailable, invalid_input, scrape_failed) instead of crashing the run.
recently_played_artists is best-effort — present only for profiles that expose
it; brand/label accounts return [].
How it works (robustness)
Two independent failure domains, so one Spotify change rarely breaks both:
- Path A (primary) — a real Chromium (CDP/Playwright) loads
open.spotify.com; the web player fetches its own anonymous auth tokens, which the actor intercepts off the network. It then calls one stable internal JSON endpoint,user-profile-view/v3/profile/{id}. No TOTP secret, no GraphQL persisted-query hashes — nothing brittle to maintain. - Path B (fallback) — if the API or tokens fail, the actor loads the profile
page and reads the DOM via stable
data-testidattributes only.
The _method field on each item records which path produced it.
Local development
npm install# put test input in storage/key_value_stores/default/INPUT.jsonnode src/main.js# results land in storage/datasets/default/