Spotify Scraper | $2 / 1k | All-In-One avatar

Spotify Scraper | $2 / 1k | All-In-One

Pricing

$1.99 / 1,000 results

Go to Apify Store
Spotify Scraper | $2 / 1k | All-In-One

Spotify Scraper | $2 / 1k | All-In-One

Scrape Spotify and export clean data for tracks, artists, albums, playlists, podcasts and episodes. Get images, artists, links, release dates, popularity, duration and more. Great for discovery tools, trend tracking and catalog audits.

Pricing

$1.99 / 1,000 results

Rating

0.0

(0)

Developer

Fatih Tahta

Fatih Tahta

Maintained by Community

Actor stats

2

Bookmarked

65

Total users

8

Monthly active users

an hour ago

Last modified

Share

Spotify Scraper

Slug: fatihtahta/spotify-scraper

Overview

Spotify Scraper collects structured Spotify search results for songs, artists, playlists, albums, podcasts, podcast episodes, and audiobooks, including stable identifiers, public URLs, ranking metadata, and type-specific descriptive fields. Spotify is a widely used audio platform for music, podcast, and spoken-word discovery, which makes its public catalog data useful for market intelligence, catalog analysis, enrichment, and recurring reporting workflows. The actor is designed for repeatable, automated collection with normalized JSON output that can move directly into analytics stacks, spreadsheets, ETL jobs, and internal applications. It supports both discovery-oriented keyword collection and direct URL-based collection, which helps teams standardize recurring acquisition across different research and monitoring scenarios. The result is a dependable, operationally consistent dataset that is practical for scheduled runs and downstream synchronization.

Why Use This Actor

  • Market research and analytics teams: run structured extraction across songs, artists, albums, playlists, podcasts, or audiobooks to support market intelligence, trend tracking, and operational reporting.
  • Product and content teams: collect repeatable catalog snapshots for discovery analysis, editorial benchmarking, release monitoring, and coverage reviews across Spotify search surfaces.
  • Developers and data engineering teams: ingest normalized JSON records into downstream systems, enrichment pipelines, ETL workflows, search indexes, or warehouse models with minimal transformation.
  • Lead generation and enrichment teams: build targeted datasets of artists, shows, playlists, or catalog entities for partnership research, creator discovery, and record enrichment workflows.
  • Monitoring and competitive tracking teams: schedule recurring runs to detect ranking movement, new releases, playlist visibility, or changes in search result composition over time.

Common Use Cases

  • Market intelligence: compare search-result composition for branded terms, genres, creators, shows, or release names across recurring reporting windows.
  • Lead generation: build targeted lists of artists, playlists, or podcast properties for outreach, curation, sponsorship research, or partnership qualification.
  • Competitive monitoring: track how artists, albums, playlists, or podcasts appear for strategic keywords and monitor result-position changes over time.
  • Catalog and directory building: populate internal music, creator, or audio-content directories with structured public records and canonical Spotify URLs.
  • Data enrichment: append current public Spotify attributes to CRM, BI, research, or analytics datasets using stable identifiers and normalized entity fields.
  • Recurring reporting: schedule periodic runs to refresh dashboards, monitor keyword coverage, and support alerting or trend analysis workflows.
  • Editorial and discovery analysis: review which entities rank for a given query and evaluate search visibility across different content types.

Quick Start

  1. Choose whether you want to collect by free-text queries, direct startUrls, or a combination of both.
  2. Select the appropriate searchType so the run targets the entity class you want, such as songs, artists, playlists, albums, podcasts, podcast episodes, or audiobooks.
  3. Start with a small limit to validate the result shape and confirm the output matches your workflow.
  4. Run the actor in Apify Console.
  5. Inspect the first dataset items and verify the record type, identifiers, and type-specific payload fields you need.
  6. Increase the limit, refine inputs, or schedule recurring runs once the output is validated.

Input Parameters

Use queries for keyword-based discovery or startUrls for direct Spotify search pages.

ParameterTypeDescriptionDefault
queriesarray of stringsOne or more free-text Spotify search queries. Useful for discovery-oriented collection when you want the actor to search by keyword.["Almost Real"]
searchTypestringEntity type to search for. Allowed values: songs, artists, playlists, albums, podcasts, podcast episodes, audiobooks.songs
startUrlsarray of stringsOne or more open.spotify.com search URLs. Useful when you already know the exact Spotify search page or want to work from curated search links.
limitintegerMaximum number of records to collect across all inputs. Minimum value: 10.50000
proxyConfigurationobjectOptional Apify proxy settings used to configure the run environment. In Apify Console, this is managed through the built-in proxy editor.{"useApifyProxy":true,"apifyProxyGroups":["RESIDENTIAL"]}

Choosing Inputs

Use queries when you want keyword-based discovery, broad collection, or repeatable monitoring around search terms such as artist names, genres, release titles, or topical phrases. Use startUrls when you already have known Spotify search pages, want tighter control over the collection scope, or maintain curated search links outside Apify. Narrower inputs usually produce more targeted datasets, while broader queries improve discovery and surface a wider mix of relevant records. If you use limit, start small for validation and increase it only after you confirm that the returned records and record types fit your use case.

Example Inputs

Scenario: Query-driven song discovery

{
"queries": [
"lofi study beats",
"deep focus piano"
],
"searchType": "songs",
"limit": 50
}

Scenario: Direct URL playlist collection

{
"startUrls": [
"https://open.spotify.com/search/workout/playlists",
"https://open.spotify.com/search/running/playlists"
],
"limit": 100
}

Scenario: Broad podcast monitoring with conservative validation limit

{
"queries": [
"science",
"climate",
"economics"
],
"searchType": "podcasts",
"limit": 30
}

Output

9.1 Output destination

The actor writes results to an Apify dataset as JSON records. The dataset is designed for direct consumption by analytics tools, ETL pipelines, and downstream APIs without post-processing. Each item contains a stable record envelope plus a type-specific payload when the output includes multiple entity types.

9.2 Record envelope (all items)

  • type (string, required): Spotify entity type for the record, such as track, artist, album, playlist, or show.
  • id (string, required): Stable Spotify identifier for the entity.
  • url (string, required): Canonical public Spotify URL for the entity.

Recommended idempotency key: type + ":" + id

Use the idempotency key for deduplication and upserts when storing results across repeated runs. This stable envelope makes records easier to merge, deduplicate, and synchronize across warehouses, CRMs, search indexes, and other downstream systems.

9.3 Examples

The examples below include each distinct record type shown in the provided sample outputs.

Example: track (type = "track")

{
"record_type": "track",
"id": "5qes1Ub35CmN8xitZb3Y7u",
"name": "Almost",
"url": "https://open.spotify.com/track/5qes1Ub35CmN8xitZb3Y7u",
"uri": "spotify:track:5qes1Ub35CmN8xitZb3Y7u",
"href": "https://api.spotify.com/v1/tracks/5qes1Ub35CmN8xitZb3Y7u",
"type": "track",
"external_urls": {
"spotify": "https://open.spotify.com/track/5qes1Ub35CmN8xitZb3Y7u"
},
"rank": 1,
"summary": {
"artist_names": [
"Lewis Capaldi"
],
"artists": [
{
"external_urls": {
"spotify": "https://open.spotify.com/artist/4GNC7GD6oZMSxPGyXy4MNB"
},
"href": "https://api.spotify.com/v1/artists/4GNC7GD6oZMSxPGyXy4MNB",
"id": "4GNC7GD6oZMSxPGyXy4MNB",
"name": "Lewis Capaldi",
"type": "artist",
"uri": "spotify:artist:4GNC7GD6oZMSxPGyXy4MNB"
}
],
"album_name": "Almost",
"album": {
"album_type": "single",
"artists": [
{
"external_urls": {
"spotify": "https://open.spotify.com/artist/4GNC7GD6oZMSxPGyXy4MNB"
},
"href": "https://api.spotify.com/v1/artists/4GNC7GD6oZMSxPGyXy4MNB",
"id": "4GNC7GD6oZMSxPGyXy4MNB",
"name": "Lewis Capaldi",
"type": "artist",
"uri": "spotify:artist:4GNC7GD6oZMSxPGyXy4MNB"
}
],
"external_urls": {
"spotify": "https://open.spotify.com/album/5Z3pArkP5MFDBRsjUWd6zC"
},
"href": "https://api.spotify.com/v1/albums/5Z3pArkP5MFDBRsjUWd6zC",
"id": "5Z3pArkP5MFDBRsjUWd6zC",
"images": [
{
"height": 640,
"width": 640,
"url": "https://i.scdn.co/image/ab67616d0000b273e2f35f476c6a0791fca8f1cc"
},
{
"height": 300,
"width": 300,
"url": "https://i.scdn.co/image/ab67616d00001e02e2f35f476c6a0791fca8f1cc"
},
{
"height": 64,
"width": 64,
"url": "https://i.scdn.co/image/ab67616d00004851e2f35f476c6a0791fca8f1cc"
}
],
"is_playable": true,
"name": "Almost",
"release_date": "2025-10-24",
"release_date_precision": "day",
"total_tracks": 3,
"type": "album",
"uri": "spotify:album:5Z3pArkP5MFDBRsjUWd6zC"
},
"release_date": "2025-10-24",
"release_date_precision": "day",
"duration_ms": 220779,
"popularity": null,
"explicit": false,
"external_ids": {
"isrc": "DEUM72505273"
},
"preview_url": null,
"track_number": 1,
"disc_number": 1,
"available_markets": null,
"is_playable": true,
"is_local": false,
"linked_from": null,
"restrictions": null
},
"spotify_data": {
"album": {
"album_type": "single",
"artists": [
{
"external_urls": {
"spotify": "https://open.spotify.com/artist/4GNC7GD6oZMSxPGyXy4MNB"
},
"href": "https://api.spotify.com/v1/artists/4GNC7GD6oZMSxPGyXy4MNB",
"id": "4GNC7GD6oZMSxPGyXy4MNB",
"name": "Lewis Capaldi",
"type": "artist",
"uri": "spotify:artist:4GNC7GD6oZMSxPGyXy4MNB"
}
],
"external_urls": {
"spotify": "https://open.spotify.com/album/5Z3pArkP5MFDBRsjUWd6zC"
},
"href": "https://api.spotify.com/v1/albums/5Z3pArkP5MFDBRsjUWd6zC",
"id": "5Z3pArkP5MFDBRsjUWd6zC",
"images": [
{
"height": 640,
"width": 640,
"url": "https://i.scdn.co/image/ab67616d0000b273e2f35f476c6a0791fca8f1cc"
},
{
"height": 300,
"width": 300,
"url": "https://i.scdn.co/image/ab67616d00001e02e2f35f476c6a0791fca8f1cc"
},
{
"height": 64,
"width": 64,
"url": "https://i.scdn.co/image/ab67616d00004851e2f35f476c6a0791fca8f1cc"
}
],
"is_playable": true,
"name": "Almost",
"release_date": "2025-10-24",
"release_date_precision": "day",
"total_tracks": 3,
"type": "album",
"uri": "spotify:album:5Z3pArkP5MFDBRsjUWd6zC"
},
"artists": [
{
"external_urls": {
"spotify": "https://open.spotify.com/artist/4GNC7GD6oZMSxPGyXy4MNB"
},
"href": "https://api.spotify.com/v1/artists/4GNC7GD6oZMSxPGyXy4MNB",
"id": "4GNC7GD6oZMSxPGyXy4MNB",
"name": "Lewis Capaldi",
"type": "artist",
"uri": "spotify:artist:4GNC7GD6oZMSxPGyXy4MNB"
}
],
"disc_number": 1,
"duration_ms": 220779,
"explicit": false,
"external_ids": {
"isrc": "DEUM72505273"
},
"external_urls": {
"spotify": "https://open.spotify.com/track/5qes1Ub35CmN8xitZb3Y7u"
},
"href": "https://api.spotify.com/v1/tracks/5qes1Ub35CmN8xitZb3Y7u",
"id": "5qes1Ub35CmN8xitZb3Y7u",
"is_local": false,
"is_playable": true,
"name": "Almost",
"track_number": 1,
"type": "track",
"uri": "spotify:track:5qes1Ub35CmN8xitZb3Y7u"
},
"search_result": {
"query": "almost",
"search_type_input": "songs",
"api_type": "track",
"page": 1,
"section": {
"href": "https://api.spotify.com/v1/search?offset=0&limit=10&query=almost&type=track&locale=en-US,en;q%3D0.9",
"limit": 10,
"next": "https://api.spotify.com/v1/search?offset=10&limit=10&query=almost&type=track&locale=en-US,en;q%3D0.9",
"offset": 0,
"previous": null,
"total": 903
},
"item_index_on_page": 0,
"item_offset": 0
}
}

Example: show (type = "show")

{
"record_type": "show",
"id": "5lY4b5PGOvMuOYOjOVEcb9",
"name": "Science Vs",
"url": "https://open.spotify.com/show/5lY4b5PGOvMuOYOjOVEcb9",
"uri": "spotify:show:5lY4b5PGOvMuOYOjOVEcb9",
"href": "https://api.spotify.com/v1/shows/5lY4b5PGOvMuOYOjOVEcb9",
"type": "show",
"external_urls": {
"spotify": "https://open.spotify.com/show/5lY4b5PGOvMuOYOjOVEcb9"
},
"rank": 1,
"summary": {
"publisher": null,
"description": "There are a lot of fads, blogs and strong opinions, but then there’s SCIENCE. Science Vs is the show from Spotify Studios that finds out what’s fact, what’s not, and what’s somewhere in between. We do the hard work of sifting through all the science so you don't have to and cover everything from 5G and ADHD, to Fluoride and Fasting Diets.",
"html_description": "<p>There are a lot of fads, blogs and strong opinions, but then there’s SCIENCE. Science Vs is the show from Spotify Studios that finds out what’s fact, what’s not, and what’s somewhere in between. We do the hard work of sifting through all the science so you don&#39;t have to and cover everything from 5G and ADHD, to Fluoride and Fasting Diets.</p>",
"total_episodes": 327,
"languages": [
"en"
],
"media_type": "mixed",
"images": [
{
"height": 640,
"url": "https://i.scdn.co/image/ab6765630000ba8a5b98e0dd85cfbba8bb930931",
"width": 640
},
{
"height": 300,
"url": "https://i.scdn.co/image/ab67656300005f1f5b98e0dd85cfbba8bb930931",
"width": 300
},
{
"height": 64,
"url": "https://i.scdn.co/image/ab6765630000f68d5b98e0dd85cfbba8bb930931",
"width": 64
}
],
"copyrights": [],
"explicit": false,
"is_externally_hosted": false,
"available_markets": null
},
"spotify_data": {
"copyrights": [],
"description": "There are a lot of fads, blogs and strong opinions, but then there’s SCIENCE. Science Vs is the show from Spotify Studios that finds out what’s fact, what’s not, and what’s somewhere in between. We do the hard work of sifting through all the science so you don't have to and cover everything from 5G and ADHD, to Fluoride and Fasting Diets.",
"html_description": "<p>There are a lot of fads, blogs and strong opinions, but then there’s SCIENCE. Science Vs is the show from Spotify Studios that finds out what’s fact, what’s not, and what’s somewhere in between. We do the hard work of sifting through all the science so you don&#39;t have to and cover everything from 5G and ADHD, to Fluoride and Fasting Diets.</p>",
"explicit": false,
"external_urls": {
"spotify": "https://open.spotify.com/show/5lY4b5PGOvMuOYOjOVEcb9"
},
"href": "https://api.spotify.com/v1/shows/5lY4b5PGOvMuOYOjOVEcb9",
"id": "5lY4b5PGOvMuOYOjOVEcb9",
"images": [
{
"height": 640,
"url": "https://i.scdn.co/image/ab6765630000ba8a5b98e0dd85cfbba8bb930931",
"width": 640
},
{
"height": 300,
"url": "https://i.scdn.co/image/ab67656300005f1f5b98e0dd85cfbba8bb930931",
"width": 300
},
{
"height": 64,
"url": "https://i.scdn.co/image/ab6765630000f68d5b98e0dd85cfbba8bb930931",
"width": 64
}
],
"is_externally_hosted": false,
"languages": [
"en"
],
"media_type": "mixed",
"name": "Science Vs",
"type": "show",
"uri": "spotify:show:5lY4b5PGOvMuOYOjOVEcb9",
"total_episodes": 327
},
"search_result": {
"query": "science",
"search_type_input": "podcasts",
"api_type": "show",
"page": 1,
"section": {
"href": "https://api.spotify.com/v1/search?offset=0&limit=10&query=science&type=show&locale=en-US,en;q%3D0.9",
"limit": 10,
"next": "https://api.spotify.com/v1/search?offset=10&limit=10&query=science&type=show&locale=en-US,en;q%3D0.9",
"offset": 0,
"previous": null,
"total": 19
},
"item_index_on_page": 0,
"item_offset": 0
}
}

Example: playlist (type = "playlist")

{
"record_type": "playlist",
"id": "3U7mEmGXnG3RJ1lrC2Jhvz",
"name": "GYM SONGS🎀 (for girlies) 2026",
"url": "https://open.spotify.com/playlist/3U7mEmGXnG3RJ1lrC2Jhvz",
"uri": "spotify:playlist:3U7mEmGXnG3RJ1lrC2Jhvz",
"href": "https://api.spotify.com/v1/playlists/3U7mEmGXnG3RJ1lrC2Jhvz",
"type": "playlist",
"external_urls": {
"spotify": "https://open.spotify.com/playlist/3U7mEmGXnG3RJ1lrC2Jhvz"
},
"rank": 3,
"summary": {
"description": "✨updated weekly💖 the ultimate 2026 gym playlist for girlies who want to SLAY their workouts! ✨High-energy hits for lifting, cardio, HIIT, running &amp; hot girl walks 💪🔥gym | workout | fitness | motivation | running | 2026 gym songs | pump play | summer body",
"owner": {
"display_name": "The music enthusiast",
"external_urls": {
"spotify": "https://open.spotify.com/user/31azrnkv26gx7xmodxkmitkxwppm"
},
"href": "https://api.spotify.com/v1/users/31azrnkv26gx7xmodxkmitkxwppm",
"id": "31azrnkv26gx7xmodxkmitkxwppm",
"type": "user",
"uri": "spotify:user:31azrnkv26gx7xmodxkmitkxwppm"
},
"images": [
{
"height": null,
"url": "https://image-cdn-ak.spotifycdn.com/image/ab67706c0000d72cd76800ebc5c380025c25202b",
"width": null
}
],
"collaborative": false,
"public": true,
"snapshot_id": "AAAMRiLgxO0tKS0HJO8eNfRjiutq8fQp",
"items": {
"href": "https://api.spotify.com/v1/playlists/3U7mEmGXnG3RJ1lrC2Jhvz/items",
"total": 123
},
"tracks": null
},
"spotify_data": {
"collaborative": false,
"description": "✨updated weekly💖 the ultimate 2026 gym playlist for girlies who want to SLAY their workouts! ✨High-energy hits for lifting, cardio, HIIT, running &amp; hot girl walks 💪🔥gym | workout | fitness | motivation | running | 2026 gym songs | pump play | summer body",
"external_urls": {
"spotify": "https://open.spotify.com/playlist/3U7mEmGXnG3RJ1lrC2Jhvz"
},
"href": "https://api.spotify.com/v1/playlists/3U7mEmGXnG3RJ1lrC2Jhvz",
"id": "3U7mEmGXnG3RJ1lrC2Jhvz",
"images": [
{
"height": null,
"url": "https://image-cdn-ak.spotifycdn.com/image/ab67706c0000d72cd76800ebc5c380025c25202b",
"width": null
}
],
"name": "GYM SONGS🎀 (for girlies) 2026",
"owner": {
"display_name": "The music enthusiast",
"external_urls": {
"spotify": "https://open.spotify.com/user/31azrnkv26gx7xmodxkmitkxwppm"
},
"href": "https://api.spotify.com/v1/users/31azrnkv26gx7xmodxkmitkxwppm",
"id": "31azrnkv26gx7xmodxkmitkxwppm",
"type": "user",
"uri": "spotify:user:31azrnkv26gx7xmodxkmitkxwppm"
},
"primary_color": null,
"public": true,
"snapshot_id": "AAAMRiLgxO0tKS0HJO8eNfRjiutq8fQp",
"items": {
"href": "https://api.spotify.com/v1/playlists/3U7mEmGXnG3RJ1lrC2Jhvz/items",
"total": 123
},
"type": "playlist",
"uri": "spotify:playlist:3U7mEmGXnG3RJ1lrC2Jhvz"
},
"search_result": {
"query": "workout",
"search_type_input": "playlists",
"api_type": "playlist",
"page": 1,
"section": {
"href": "https://api.spotify.com/v1/search?offset=0&limit=10&query=workout&type=playlist&locale=en-US,en;q%3D0.9",
"limit": 10,
"next": "https://api.spotify.com/v1/search?offset=10&limit=10&query=workout&type=playlist&locale=en-US,en;q%3D0.9",
"offset": 0,
"previous": null,
"total": 24
},
"item_index_on_page": 2,
"item_offset": 2
}
}

Example: artist (type = "artist")

{
"record_type": "artist",
"id": "12Chz98pHFMPJEknJQMWvI",
"name": "Muse",
"url": "https://open.spotify.com/artist/12Chz98pHFMPJEknJQMWvI",
"uri": "spotify:artist:12Chz98pHFMPJEknJQMWvI",
"href": "https://api.spotify.com/v1/artists/12Chz98pHFMPJEknJQMWvI",
"type": "artist",
"external_urls": {
"spotify": "https://open.spotify.com/artist/12Chz98pHFMPJEknJQMWvI"
},
"rank": 1,
"summary": {
"genres": null,
"followers": {},
"followers_total": null,
"popularity": null,
"images": [
{
"url": "https://i.scdn.co/image/ab6761610000e5eb001bed1a54fe90023cae1d1b",
"height": 640,
"width": 640
},
{
"url": "https://i.scdn.co/image/ab67616100005174001bed1a54fe90023cae1d1b",
"height": 320,
"width": 320
},
{
"url": "https://i.scdn.co/image/ab6761610000f178001bed1a54fe90023cae1d1b",
"height": 160,
"width": 160
}
]
},
"spotify_data": {
"external_urls": {
"spotify": "https://open.spotify.com/artist/12Chz98pHFMPJEknJQMWvI"
},
"href": "https://api.spotify.com/v1/artists/12Chz98pHFMPJEknJQMWvI",
"id": "12Chz98pHFMPJEknJQMWvI",
"images": [
{
"url": "https://i.scdn.co/image/ab6761610000e5eb001bed1a54fe90023cae1d1b",
"height": 640,
"width": 640
},
{
"url": "https://i.scdn.co/image/ab67616100005174001bed1a54fe90023cae1d1b",
"height": 320,
"width": 320
},
{
"url": "https://i.scdn.co/image/ab6761610000f178001bed1a54fe90023cae1d1b",
"height": 160,
"width": 160
}
],
"name": "Muse",
"type": "artist",
"uri": "spotify:artist:12Chz98pHFMPJEknJQMWvI"
},
"search_result": {
"query": "muse",
"search_type_input": "artists",
"api_type": "artist",
"page": 1,
"section": {
"href": "https://api.spotify.com/v1/search?offset=0&limit=10&query=muse&type=artist&locale=en-US,en;q%3D0.9",
"limit": 10,
"next": "https://api.spotify.com/v1/search?offset=10&limit=10&query=muse&type=artist&locale=en-US,en;q%3D0.9",
"offset": 0,
"previous": null,
"total": 18
},
"item_index_on_page": 0,
"item_offset": 0
}
}

Example: album (type = "album")

{
"record_type": "album",
"id": "2ANVost0y2y52ema1E9xAZ",
"name": "Thriller",
"url": "https://open.spotify.com/album/2ANVost0y2y52ema1E9xAZ",
"uri": "spotify:album:2ANVost0y2y52ema1E9xAZ",
"href": "https://api.spotify.com/v1/albums/2ANVost0y2y52ema1E9xAZ",
"type": "album",
"external_urls": {
"spotify": "https://open.spotify.com/album/2ANVost0y2y52ema1E9xAZ"
},
"rank": 1,
"summary": {
"album_type": "album",
"total_tracks": 9,
"release_date": "1982-11-30",
"release_date_precision": "day",
"images": [
{
"height": 640,
"url": "https://i.scdn.co/image/ab67616d0000b27332a7d87248d1b75463483df5",
"width": 640
},
{
"height": 300,
"url": "https://i.scdn.co/image/ab67616d00001e0232a7d87248d1b75463483df5",
"width": 300
},
{
"height": 64,
"url": "https://i.scdn.co/image/ab67616d0000485132a7d87248d1b75463483df5",
"width": 64
}
],
"artist_names": [
"Michael Jackson"
],
"artists": [
{
"external_urls": {
"spotify": "https://open.spotify.com/artist/3fMbdgg4jU18AjLCKBhRSm"
},
"href": "https://api.spotify.com/v1/artists/3fMbdgg4jU18AjLCKBhRSm",
"id": "3fMbdgg4jU18AjLCKBhRSm",
"name": "Michael Jackson",
"type": "artist",
"uri": "spotify:artist:3fMbdgg4jU18AjLCKBhRSm"
}
],
"available_markets": null,
"restrictions": null
},
"spotify_data": {
"album_type": "album",
"total_tracks": 9,
"external_urls": {
"spotify": "https://open.spotify.com/album/2ANVost0y2y52ema1E9xAZ"
},
"href": "https://api.spotify.com/v1/albums/2ANVost0y2y52ema1E9xAZ",
"id": "2ANVost0y2y52ema1E9xAZ",
"images": [
{
"height": 640,
"url": "https://i.scdn.co/image/ab67616d0000b27332a7d87248d1b75463483df5",
"width": 640
},
{
"height": 300,
"url": "https://i.scdn.co/image/ab67616d00001e0232a7d87248d1b75463483df5",
"width": 300
},
{
"height": 64,
"url": "https://i.scdn.co/image/ab67616d0000485132a7d87248d1b75463483df5",
"width": 64
}
],
"name": "Thriller",
"release_date": "1982-11-30",
"release_date_precision": "day",
"type": "album",
"uri": "spotify:album:2ANVost0y2y52ema1E9xAZ",
"artists": [
{
"external_urls": {
"spotify": "https://open.spotify.com/artist/3fMbdgg4jU18AjLCKBhRSm"
},
"href": "https://api.spotify.com/v1/artists/3fMbdgg4jU18AjLCKBhRSm",
"id": "3fMbdgg4jU18AjLCKBhRSm",
"name": "Michael Jackson",
"type": "artist",
"uri": "spotify:artist:3fMbdgg4jU18AjLCKBhRSm"
}
]
},
"search_result": {
"query": "thriller",
"search_type_input": "albums",
"api_type": "album",
"page": 1,
"section": {
"href": "https://api.spotify.com/v1/search?offset=0&limit=10&query=thriller&type=album&locale=en-US,en;q%3D0.9",
"limit": 10,
"next": "https://api.spotify.com/v1/search?offset=10&limit=10&query=thriller&type=album&locale=en-US,en;q%3D0.9",
"offset": 0,
"previous": null,
"total": 874
},
"item_index_on_page": 0,
"item_offset": 0
}
}

Field Reference

Common Envelope

  • record_type (string, required): Normalized record category.
  • id (string, required): Stable Spotify identifier.
  • name (string, required): Display name of the entity.
  • url (string, required): Canonical public Spotify URL.
  • uri (string, required): Spotify URI for the entity.
  • href (string, required): Canonical API reference URL for the entity.
  • type (string, required): Spotify entity type.
  • external_urls.spotify (string, required): Public Spotify URL.
  • rank (integer, optional): Position of the item within the returned result set.
  • search_result.query (string, required): Source query associated with the record.
  • search_result.search_type_input (string, required): Input-facing search type used for the run.
  • search_result.api_type (string, required): Entity type returned for the result.
  • search_result.page (integer, required): Search results page number.
  • search_result.item_index_on_page (integer, required): Zero-based index within the page.
  • search_result.item_offset (integer, required): Absolute offset for the record in the result set.
  • search_result.section.href (string, required): Source section reference URL.
  • search_result.section.limit (integer, required): Page size used for the section.
  • search_result.section.next (string, optional): Reference URL for the next page.
  • search_result.section.offset (integer, required): Section offset in the result set.
  • search_result.section.previous (string, optional): Reference URL for the previous page.
  • search_result.section.total (integer, required): Total result count reported for the query section.

Track Records

  • summary.artist_names (array of strings, optional): Artist names in display order.
  • summary.artists (array of objects, optional): Artist references associated with the track.
  • summary.album_name (string, optional): Album name.
  • summary.album.album_type (string, optional): Album classification.
  • summary.album.artists (array of objects, optional): Album artist references.
  • summary.album.external_urls.spotify (string, optional): Public album URL.
  • summary.album.href (string, optional): Album API reference URL.
  • summary.album.id (string, optional): Album identifier.
  • summary.album.images (array of objects, optional): Album artwork variants.
  • summary.album.images[].height (integer, optional): Artwork height in pixels.
  • summary.album.images[].width (integer, optional): Artwork width in pixels.
  • summary.album.images[].url (string, optional): Artwork URL.
  • summary.album.is_playable (boolean, optional): Whether the album is marked playable.
  • summary.album.name (string, optional): Album name.
  • summary.album.release_date (string, optional): Album release date.
  • summary.album.release_date_precision (string, optional): Release date precision.
  • summary.album.total_tracks (integer, optional): Total track count.
  • summary.album.type (string, optional): Album entity type.
  • summary.album.uri (string, optional): Album Spotify URI.
  • summary.release_date (string, optional): Track release date.
  • summary.release_date_precision (string, optional): Track release date precision.
  • summary.duration_ms (integer, optional): Duration in milliseconds.
  • summary.popularity (integer, optional): Popularity value when available.
  • summary.explicit (boolean, optional): Explicit-content flag.
  • summary.external_ids.isrc (string, optional): ISRC code.
  • summary.preview_url (string, optional): Preview audio URL.
  • summary.track_number (integer, optional): Track number on the release.
  • summary.disc_number (integer, optional): Disc number on the release.
  • summary.available_markets (array, optional): Available market codes when provided.
  • summary.is_playable (boolean, optional): Whether the track is playable.
  • summary.is_local (boolean, optional): Whether the track is a local item.
  • summary.linked_from (object, optional): Linked-track metadata when provided.
  • summary.restrictions (object, optional): Playback or market restrictions when provided.
  • spotify_data.album (object, optional): Full album payload for the track.
  • spotify_data.artists (array of objects, optional): Full artist payload references.
  • spotify_data.disc_number (integer, optional): Disc number.
  • spotify_data.duration_ms (integer, optional): Duration in milliseconds.
  • spotify_data.explicit (boolean, optional): Explicit-content flag.
  • spotify_data.external_ids.isrc (string, optional): ISRC code.
  • spotify_data.id (string, required): Spotify track identifier.
  • spotify_data.is_local (boolean, optional): Local-track flag.
  • spotify_data.is_playable (boolean, optional): Playable flag.
  • spotify_data.name (string, required): Track name.
  • spotify_data.track_number (integer, optional): Track number.
  • spotify_data.type (string, required): track.
  • spotify_data.uri (string, required): Track Spotify URI.

Show Records

  • summary.publisher (string, optional): Publisher or network name.
  • summary.description (string, optional): Plain-text description.
  • summary.html_description (string, optional): HTML-formatted description.
  • summary.total_episodes (integer, optional): Total episode count.
  • summary.languages (array of strings, optional): Content languages.
  • summary.media_type (string, optional): Show media category.
  • summary.images (array of objects, optional): Artwork variants.
  • summary.images[].height (integer, optional): Artwork height in pixels.
  • summary.images[].width (integer, optional): Artwork width in pixels.
  • summary.images[].url (string, optional): Artwork URL.
  • summary.copyrights (array, optional): Copyright statements when provided.
  • summary.explicit (boolean, optional): Explicit-content flag.
  • summary.is_externally_hosted (boolean, optional): External-hosting indicator.
  • summary.available_markets (array, optional): Available market codes when provided.
  • spotify_data.copyrights (array, optional): Copyright statements.
  • spotify_data.description (string, optional): Plain-text description.
  • spotify_data.html_description (string, optional): HTML-formatted description.
  • spotify_data.explicit (boolean, optional): Explicit-content flag.
  • spotify_data.id (string, required): Spotify show identifier.
  • spotify_data.images (array of objects, optional): Artwork variants.
  • spotify_data.is_externally_hosted (boolean, optional): External-hosting indicator.
  • spotify_data.languages (array of strings, optional): Content languages.
  • spotify_data.media_type (string, optional): Media category.
  • spotify_data.name (string, required): Show name.
  • spotify_data.type (string, required): show.
  • spotify_data.uri (string, required): Show Spotify URI.
  • spotify_data.total_episodes (integer, optional): Total episode count.

Playlist Records

  • summary.description (string, optional): Playlist description.
  • summary.owner.display_name (string, optional): Owner display name.
  • summary.owner.external_urls.spotify (string, optional): Owner Spotify URL.
  • summary.owner.href (string, optional): Owner API reference URL.
  • summary.owner.id (string, optional): Owner identifier.
  • summary.owner.type (string, optional): Owner entity type.
  • summary.owner.uri (string, optional): Owner Spotify URI.
  • summary.images (array of objects, optional): Playlist artwork.
  • summary.images[].height (integer, optional): Artwork height in pixels.
  • summary.images[].width (integer, optional): Artwork width in pixels.
  • summary.images[].url (string, optional): Artwork URL.
  • summary.collaborative (boolean, optional): Collaborative flag.
  • summary.public (boolean, optional): Public visibility flag.
  • summary.snapshot_id (string, optional): Playlist snapshot identifier.
  • summary.items.href (string, optional): Playlist-items reference URL.
  • summary.items.total (integer, optional): Total item count.
  • summary.tracks (object, optional): Expanded track data when available.
  • spotify_data.collaborative (boolean, optional): Collaborative flag.
  • spotify_data.description (string, optional): Playlist description.
  • spotify_data.id (string, required): Spotify playlist identifier.
  • spotify_data.images (array of objects, optional): Playlist artwork.
  • spotify_data.name (string, required): Playlist name.
  • spotify_data.owner (object, optional): Playlist owner reference.
  • spotify_data.primary_color (string, optional): Primary display color when available.
  • spotify_data.public (boolean, optional): Public visibility flag.
  • spotify_data.snapshot_id (string, optional): Playlist snapshot identifier.
  • spotify_data.items.href (string, optional): Playlist-items reference URL.
  • spotify_data.items.total (integer, optional): Total item count.
  • spotify_data.type (string, required): playlist.
  • spotify_data.uri (string, required): Playlist Spotify URI.

Artist Records

  • summary.genres (array of strings, optional): Genre labels when available.
  • summary.followers (object, optional): Raw followers object.
  • summary.followers_total (integer, optional): Follower count when available.
  • summary.popularity (integer, optional): Popularity value when available.
  • summary.images (array of objects, optional): Artist images.
  • summary.images[].url (string, optional): Image URL.
  • summary.images[].height (integer, optional): Image height in pixels.
  • summary.images[].width (integer, optional): Image width in pixels.
  • spotify_data.id (string, required): Spotify artist identifier.
  • spotify_data.images (array of objects, optional): Artist images.
  • spotify_data.name (string, required): Artist name.
  • spotify_data.type (string, required): artist.
  • spotify_data.uri (string, required): Artist Spotify URI.

Album Records

  • summary.album_type (string, optional): Album classification.
  • summary.total_tracks (integer, optional): Total track count.
  • summary.release_date (string, optional): Release date.
  • summary.release_date_precision (string, optional): Release date precision.
  • summary.images (array of objects, optional): Album artwork variants.
  • summary.images[].height (integer, optional): Artwork height in pixels.
  • summary.images[].width (integer, optional): Artwork width in pixels.
  • summary.images[].url (string, optional): Artwork URL.
  • summary.artist_names (array of strings, optional): Artist names in display order.
  • summary.artists (array of objects, optional): Artist references.
  • summary.available_markets (array, optional): Available market codes when provided.
  • summary.restrictions (object, optional): Restrictions object when provided.
  • spotify_data.album_type (string, optional): Album classification.
  • spotify_data.total_tracks (integer, optional): Total track count.
  • spotify_data.id (string, required): Spotify album identifier.
  • spotify_data.images (array of objects, optional): Album artwork variants.
  • spotify_data.name (string, required): Album name.
  • spotify_data.release_date (string, optional): Release date.
  • spotify_data.release_date_precision (string, optional): Release date precision.
  • spotify_data.type (string, required): album.
  • spotify_data.uri (string, required): Album Spotify URI.
  • spotify_data.artists (array of objects, optional): Artist references.

Data Quality, Guarantees, And Handling

  • Structured records: results are normalized into predictable JSON objects for downstream use.
  • Best-effort extraction: fields may vary by region, session, availability, or target-side presentation changes.
  • Optional fields: null-check in downstream code.
  • Deduplication: recommend type + ":" + id.
  • Freshness: results reflect the publicly available data at run time.
  • Repeated runs: use the recommended idempotency key when syncing data into warehouses, CRMs, or search indexes.

Tips For Best Results

  • Start with a small limit to validate record shape and entity coverage before scaling up.
  • Use queries when you want discovery-oriented collection across keywords, names, genres, or release terms.
  • Use startUrls when you already know the Spotify search page you want to collect from.
  • Keep one searchType focus per run when you want cleaner segmentation and simpler downstream normalization.
  • Broader queries improve discovery, while narrower queries usually produce more targeted result sets.
  • Add or refine inputs gradually so you can see how each change affects coverage and result quality.
  • Schedule recurring runs when you need monitoring, trend analysis, or periodic dataset refreshes.

How to Run on Apify

  1. Open the actor in Apify Console.
  2. Configure the available input fields for the target scope.
  3. Set the maximum number of outputs to collect.
  4. Click Start and wait for the run to finish.
  5. Review the dataset and download results in JSON, CSV, Excel, or other supported formats.

Scheduling & Automation

Scheduling

Automated Data Collection

You can schedule recurring runs to keep search-result datasets fresh and aligned with your reporting or monitoring cadence. This is useful for keyword tracking, catalog refreshes, and routine downstream sync jobs.

  • Navigate to Schedules in Apify Console
  • Create a new schedule (daily, weekly, or custom cron)
  • Configure input parameters
  • Enable notifications for run completion
  • Add webhooks for automated processing

Integration Options

  • BI dashboards: monitor keyword coverage, rank movement, content mix, and catalog trends over time.
  • Data warehouses: load normalized JSON records into historical models for reporting, benchmarking, and longitudinal analysis.
  • Webhooks: trigger downstream ingestion, validation, alerting, or synchronization workflows after each run.
  • API access: pull dataset items programmatically into internal services, ETL pipelines, or research applications.
  • Google Sheets or Excel review workflows: export smaller validation runs for analyst review, QA, or editorial checks.
  • Enrichment pipelines: join Spotify entity records with internal CRM, content, or analytics datasets using stable identifiers.

Export Formats And Downstream Use

Apify datasets can be exported or consumed directly by downstream systems depending on how you want to operationalize the results.

  • JSON: for APIs, applications, and data pipelines
  • CSV or Excel: for spreadsheet workflows and manual review
  • API access: for automated ingestion into internal systems
  • BI and warehouses: for reporting, dashboards, and historical analysis

Performance

Estimated run times:

  • Small runs (< 1,000 outputs): ~3–5 minutes
  • Medium runs (1,000–5,000 outputs): ~5–15 minutes
  • Large runs (5,000+ outputs): ~15–30 minutes

Execution time varies based on filters, result volume, and how much information is returned per record. Highly filtered runs can finish faster, while broader discovery runs or more detail-rich records may take longer.

Limitations

  • Result availability depends on what Spotify publicly exposes at run time.
  • Some optional fields may be missing, null, or sparsely populated for certain records.
  • Very broad searches can take longer and may require a higher limit to capture a larger share of matching results.
  • Regional or availability differences can affect which records or fields are visible.
  • Target-side changes may affect field availability, naming, or coverage over time.
  • The returned dataset reflects the selected search inputs and may not represent the full Spotify catalog for a topic.

Troubleshooting

  • No results returned: check the spelling and specificity of your queries, verify that startUrls point to valid Spotify search pages, and confirm that matching public records exist.
  • Fewer results than expected: broaden the query terms, increase limit, or confirm that Spotify has enough matching results for the selected searchType.
  • Some fields are empty: optional fields depend on what each record publicly provides and may vary across entities, regions, or availability conditions.
  • Run takes longer than expected: reduce scope, lower limit for validation, or split broad collection into smaller segments.
  • Output changed: compare the current output with the field reference and include a small sample when reporting an issue.

FAQ

What data does this actor collect?

It collects structured Spotify search results for songs, artists, albums, playlists, podcasts, podcast episodes, and audiobooks, including stable identifiers, URLs, ranking context, and type-specific metadata.

Can I filter by location, category, date, price, or other criteria?

This actor supports queries, startUrls, searchType, limit, and proxyConfiguration. It does not expose separate location, category, date, or price filters in the current input schema.

Why did I receive fewer results than my limit?

limit is a maximum, not a guarantee. If Spotify returns fewer matching public results for your inputs and selected searchType, the dataset will contain fewer records.

Can I schedule recurring runs?

Yes. You can create schedules in Apify Console to run the actor daily, weekly, or on a custom cron interval.

How do I avoid duplicates across runs?

Use type + ":" + id as the recommended idempotency key for deduplication, upserts, and incremental synchronization.

Can I export the data to CSV, Excel, or JSON?

Yes. Apify datasets can be exported in JSON, CSV, Excel, and other supported formats.

Does this actor collect private data?

No. It is intended for collection of publicly available Spotify data only.

What should I include when reporting an issue?

Include the redacted input used, the Apify run ID, the expected behavior, the actual behavior, and a small sample of output if available.

Compliance & Ethics

Responsible Data Collection

This actor collects publicly available Spotify catalog and search-result metadata from https://spotify.com for legitimate business purposes, including:

  • Music, media, and entertainment research and market analysis
  • Catalog monitoring and reporting
  • Content enrichment and discovery workflows

This section is informational and not legal advice. Users are responsible for ensuring their use of the actor and resulting data complies with applicable laws, regulations, and the target site's terms.

Best Practices

  • Use collected data in accordance with applicable laws, regulations, and the target site’s terms
  • Respect individual privacy and personal information
  • Use data responsibly and avoid disruptive or excessive collection
  • Do not use this actor for spamming, harassment, or other harmful purposes
  • Follow relevant data protection requirements where applicable (for example GDPR or CCPA)

Support

For help, use the actor page or open an issue in the associated repository. Include the input used with sensitive values redacted, the run ID, a clear description of expected versus actual behavior, and a small output sample if relevant.