Spotify Scraper — Tracks, Artists, Playlists, Charts avatar

Spotify Scraper — Tracks, Artists, Playlists, Charts

Pricing

from $0.12 / 1,000 scraped items

Go to Apify Store
Spotify Scraper — Tracks, Artists, Playlists, Charts

Spotify Scraper — Tracks, Artists, Playlists, Charts

Fast, cheap, full-coverage Spotify scraper. 50+ data categories including tracks, artists, albums, playlists, concerts, charts (Top 200 / Viral), lyrics, credits, recommendations, AI insights. Pay-per-event — no monthly fee.

Pricing

from $0.12 / 1,000 scraped items

Rating

0.0

(0)

Developer

Eduardo Airaudo

Eduardo Airaudo

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 hours ago

Last modified

Share

Spotify Scraper — Full Coverage, Pay-Per-Event

Extract any public Spotify data: tracks, artists, albums, playlists, users, podcasts, concerts, charts, lyrics, credits, recommendations, AI insights and more. 40+ categories, accepts Spotify IDs, URLs or search keywords.

Built to undercut canadesk/spotify ($10/mo + usage) and canadesk/spotify-plus ($16/mo + usage):

  • $0 monthly rental fee
  • $0.20 per 1,000 result items (pay-per-event)
  • $0.30 per 1,000 single-entity fetches (bulk-fetch)
  • Raw data optional — slim output by default

Features vs. canadesk/spotify

Featurecanadeskcanadesk-plusThis actor
Monthly rental$10$16$0
Tracks / Artists / Albums
Playlists / Users / Podcasts
Lyrics (word-synced + translations)
Track credits (producers, writers)
Artist — appears on / featuring
Artist — discovered on (playlists)
Artist — related / discography richpartial
Concert feed + concert locationspartialpartial
Spotify Charts — Top 200 / Viral
Top 20 by monthly listeners/followers
Recommendations (seed → playlist)
Search suggestions (autocomplete)
Lyrics search
Partner-API rich payloads
Cross-platform enrichment
No 50-result cap
No simultaneous-entry cap

Input

All input fields are documented in the input form.

FieldTypePurpose
modestringget / search / chart
categorystring42 categories (see below)
queriesarrayIDs, URLs, spotify:*:* URIs or search keywords
maxResultsPerQueryint1 – 1000 (default 50)
marketstringISO country (default US)
lyricsLanguagestringISO lang for lyric translations
chartDatestringYYYY-MM-DD for historical charts
concurrencyintParallel requests (1 – 20)
delayMsintPause between requests
includeRawboolAttach raw upstream JSON
enrichWithContraststringytmusic, applemusic, amazonmusic, pandora, gaana, tencent

Categories

Single entities (mode=get): track, track_credits, track_lyrics, album, album_tracks, album_metadata, artist, artist_overview, artist_albums, artist_singles, artist_appears_on, artist_discovered_on, artist_featuring, artist_related, artist_discography_overview, artist_concerts, artist_concert_locations, playlist, playlist_tracks, user_profile, user_followers, recommendations, partner_playlist, partner_track, partner_album, partner_artist_overview, partner_artist_discography.

Search (mode=search): search_multi, search_tracks, search_artists, search_albums, search_playlists, search_users, search_podcasts, search_top_results, search_suggestions, search_lyrics.

Charts (mode=chart): chart_top_200_tracks, chart_viral_tracks, chart_top_artists, chart_top_albums, chart_top_monthly_listeners, chart_top_followers.

Example inputs

Get artist overview from URL

{
"mode": "get",
"category": "artist_overview",
"queries": [
"https://open.spotify.com/artist/06HL4z0CvFAxyc27GXpf02"
]
}

Search tracks

{
"mode": "search",
"category": "search_tracks",
"queries": [
"bohemian rhapsody",
"taylor swift anti-hero"
],
"maxResultsPerQuery": 20,
"market": "US"
}

Top 200 tracks — Mexico

{
"mode": "chart",
"category": "chart_top_200_tracks",
"queries": [
"MX"
],
"chartDate": "2026-04-22"
}

Word-synced lyrics with Spanish translation

{
"mode": "get",
"category": "track_lyrics",
"queries": [
"4iV5W9uYEdYUVa79Axb7Rh"
],
"lyricsLanguage": "es"
}

Output

Each item is a flat JSON object with:

  • category — what was scraped
  • mode — get / search / chart
  • query — original input
  • id, type, name, uri, url — normalized entity fields
  • plus every field returned by the upstream API
  • optional raw — full upstream JSON (includeRaw=true)
  • optional contrast — cross-platform data (enrichWithContrast)

Errors are pushed as { ok: false, error, query, category } so partial failures never break the run.

Pricing (pay-per-event)

EventPriceWhen charged
actor-start$0.00Once per run
result-item$0.0002Per dataset item (≈ $0.20 per 1k rows)
bulk-fetch$0.0003Reserved for single-entity fetches

Example: a run that pushes 10,000 track rows costs $2.00 total. The same run on canadesk/spotify-plus would cost $16/mo rental + their per-result fees.

Environment variables

Set in Apify console → Actor → "Environment" (mark *_KEY vars as secret):

  • SPOTIFY_BYPASS_KEYpreferred. Internal bypass key for the self-hosted proxy. No quotas, no RapidAPI fees.
  • RAPIDAPI_KEY — fallback: a key issued via RapidAPI if bypass is unavailable.
  • RAPIDAPI_HOST — only needed with RAPIDAPI_KEY.
  • SPOTIFY_API_BASE — override upstream. Default: https://spotify-proxy.checkleaked.cc/spotify-data.
  • SPOTIFY_TIMEOUT_MS — request timeout (default 90s).
  • SPOTIFY_MAX_RETRIES — retries on 429/5xx (default 3).

Auth priority: SPOTIFY_BYPASS_KEY > RAPIDAPI_KEY. Neither set → upstream returns 401.

Local development

npm install
npm run build
apify run

Edit storage/key_value_stores/default/INPUT.json to change input between runs.

License

MIT