Spotify Scraper — Artists, Tracks & Playlists
Pricing
from $5.00 / 1,000 result scrapeds
Spotify Scraper — Artists, Tracks & Playlists
Scrape Spotify artists, albums, tracks, playlists, podcasts, episodes, and search with play counts and monthly listeners. HTTP-only, no API key. MCP/API-ready.
Pricing
from $5.00 / 1,000 result scrapeds
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
0
Bookmarked
44
Total users
18
Monthly active users
10 days ago
Last modified
Categories
Share
Spotify Scraper — All-in-One
Spotify Scraper - All-in-One is an Apify Actor for artists, albums, tracks, playlists, podcast shows, episodes, and keyword search. It accepts Spotify URLs, URIs, or 22-character IDs, plus free-text search queries. Each record in the dataset represents one Spotify entity or one search-result item, and the returned fields surface identity, popularity, ownership, release, and listing details such as monthly listeners, followers, play count, world rank, publisher, track lists, and episode lists. The Actor works without a Spotify API key and is usable through Apify API and Apify MCP.
Best fit and connected workflows
This Actor fits workflows that start with a Spotify link or a catalog query and end with structured records ready for analysis, enrichment, or agent use.
Typical routing patterns include:
- Artist monitoring from an artist URL, URI, or ID, with monthly listeners, followers, world rank, biography, and top tracks.
- Album and playlist review from a Spotify link, with track listings, labels, release dates, and follower counts where available.
- Podcast research from a show or episode reference, with publisher, description, ratings, and episode listings for shows.
- Catalog discovery from keyword search, where each query returns top results across artists, albums, tracks, playlists, shows, and episodes.
- AI agent tool calls through Apify MCP, where concise records are useful for fast retrieval and detailed mode expands nested listings.
Practical scenario
A music analyst has a Spotify artist URL and wants a quick snapshot before a meeting. They enter the artist link, keep concise output, and run the Actor. The dataset record returns the artist name, monthly listeners, followers, world rank, top tracks, biography, data source, and scrape timestamp. The analyst uses those fields to compare the artist with a recent campaign list, then decides whether to pull the album and playlist records for a deeper check in the next run.
Input
| Field | Type | Purpose |
|---|---|---|
| Spotify URLs, URIs, or IDs | array | Scrapes Spotify references from full links, Spotify URIs, or bare 22-character IDs. Entity type is auto-detected from the reference. |
| Search queries | array | Searches Spotify by keyword and returns top results across entity types. |
| Default type for bare IDs | string | Assumes a type for bare IDs with no URL or URI context. |
| Search results per type | integer | Controls how many results of each type keyword search returns. |
| Max results | integer | Caps the total number of result records produced and billed in the run. |
| Response format | string | concise returns the core record plus the first nested items; detailed expands nested listings. |
| Proxy configuration | object | Proxy settings for requests, with Residential proxy enabled by default. |
Focused input example
{"spotifyUrls": ["https://open.spotify.com/artist/3TVXtAsR1Inumwj472S9r4","spotify:album:4yP0hdKOZPNshxUOjY0cZj"],"searchQueries": ["arctic monkeys"],"defaultType": "artist","searchResultsPerType": 5,"maxResults": 10,"responseFormat": "concise"}
Output
Each dataset item is one scraped Spotify entity or one search-result item. The schema includes flat fields for quick processing and nested arrays for tracks, episodes, artists, and top cities where present.
| Field | Type | Purpose |
|---|---|---|
| type | string | Entity type such as artist, album, track, playlist, show, or episode. |
| id | string or null | Spotify entity ID. |
| uri | string or null | Spotify URI. |
| url | string or null | Open Spotify URL. |
| name | string or null | Entity name. |
| verified | boolean or null | Verification status where available. |
| biography | string or null | Artist biography text. |
| monthlyListeners | integer or null | Monthly listener count. |
| followers | integer or null | Follower count. |
| worldRank | integer or null | Spotify world rank for supported records. |
| playcount | integer or null | Play count for supported entities and items. |
| durationMs | integer or null | Duration in milliseconds. |
| explicit | boolean or null | Explicit content flag. |
| label | string or null | Label for album records where present. |
| releaseDate | string or null | Release date. |
| totalTracks | integer or null | Total track count. |
| totalEpisodes | integer or null | Total episode count. |
| publisher | string or null | Publisher for podcast records. |
| description | string or null | Description text. |
| coverArt | string or null | Cover image URL. |
| avatarImage | string or null | Artist image URL. |
| topCities | array or null | Top listener cities for artist records. |
| topTracks | array or null | Top tracks for artist records. |
| tracks | array or null | Track listing for albums and playlists. |
| episodes | array or null | Episode listing for podcast shows. |
| artists | array or null | Related artists where present. |
| owner | object or null | Owner information for playlists. |
| rating | object or null | Rating data where present. |
| popularityDataAvailable | boolean or null | Indicates whether popularity data was available. |
| dataSource | string or null | Source of the record, such as partner or embed. |
| scrapedAt | string | Timestamp of the scrape. |
Illustrative output record
{"type": "artist","id": "3TVXtAsR1Inumwj472S9r4","uri": "spotify:artist:3TVXtAsR1Inumwj472S9r4","url": "https://open.spotify.com/artist/3TVXtAsR1Inumwj472S9r4","name": "Drake","verified": true,"monthlyListeners": 98722254,"followers": 111849680,"worldRank": 9,"topCities": [{"city": "London","country": "GB","listeners": 2284030}],"topTracks": [{"name": "One Dance","playcount": 2900000000,"durationMs": 173986}],"popularityDataAvailable": true,"dataSource": "partner","scrapedAt": "2026-05-30T18:20:00.000Z"}
How it works
This Actor scrapes Spotify artists, albums, tracks, playlists, podcast shows, episodes, and keyword search results through HTTP requests. The live contract states that it is HTTP-only and uses no API key. The manifest also notes self-healing token and operation hashes extracted from the web player, plus a partner API popularity path with an embed fallback. The Actor auto-detects entity type from URLs, URIs, and bare IDs, and keyword search returns top results across supported entity types.
Pricing
Spotify Scraper — All-in-One uses Pay per event pricing on the Apify platform. The primary charged event is Result scraped, which is billed per result record, meaning each Spotify entity or search-result item counts as one billed result. Nested track and episode listings are included in the parent record and are charged as part of that single result.
There is also an Apify platform usage charge at Actor start. To see the current live pricing details, open the Pricing tab in the Actor console.
Example in words: if a execution produces twenty result records, the run is billed for twenty result scraped events, plus the Apify platform usage associated with starting the Actor.
Use with AI agents (MCP)
This Actor is available as an Apify Actor usable through Apify MCP. In agent workflows, it works as a retrieval tool for Spotify entity lookups and catalog search, returning structured records with provenance fields such as dataSource and scrapedAt.
Actor identity: khadinakbar/spotify-all-in-one-scraper
Find the Spotify artist from this URL, return the core record in concise mode, and include monthly listeners, followers, world rank, top tracks, data source, and scrape timestamp for downstream analysis.
When used through MCP, concise output is a strong fit for fast tool calls. Detailed output expands nested track, playlist, or episode listings and can take longer to complete. Search requests return top results per entity type, so one query can yield artists, albums, tracks, playlists, shows, and episodes in a single run. Cost is tied to result records, so maxResults helps keep runs predictable.
Best results and outcome guidance
Use full Spotify URLs, URIs, or IDs when you already know the exact entity. Use search queries when discovery across entity types is the goal. For playlists and podcast shows, detailed mode is useful when you want the full track or episode listing. For quick scans, concise mode usually provides the main entity fields and the first nested items in a compact record. If you are comparing records over time, keep the same input shape and output format so changes in followers, play counts, and monthly listeners are easier to read.
Continue the workflow
- Then use Spotify Artist Scraper to extend Spotify Scraper — All-in-One research with a complementary enrichment contract.
- Then use Spotify Monthly Listeners Scraper to extend Spotify Scraper — All-in-One research with a complementary content contract.
Design note
I found that the dataset schema always requires type, name, and scrapedAt, which makes every record suitable for deterministic downstream processing even when optional popularity fields are absent.
FAQ
Can I scrape artists, albums, tracks, playlists, shows, and episodes in one run?
Yes. The Actor auto-detects entity type from each Spotify URL, URI, or bare ID, and search queries can return multiple entity types together.
How should I choose between URLs and search queries?
Use Spotify references for exact entities. Use search queries for keyword-based discovery across the catalog.
What is the difference between concise and detailed output?
Concise returns the core record and the first nested items. Detailed expands nested track, playlist, or episode listings.
How does this Actor support AI workflows?
It is MCP-ready, returns structured JSON, and exposes stable fields such as type, name, dataSource, and scrapedAt for tool use.
How do I keep run size predictable?
Set maxResults to a clear cap and tune searchResultsPerType for keyword searches.
Apify API example
import { ApifyClient } from 'apify-client';const client = new ApifyClient({token: process.env.APIFY_TOKEN,});const input = {spotifyUrls: ['https://open.spotify.com/artist/3TVXtAsR1Inumwj472S9r4'],responseFormat: 'concise',maxResults: 1,};const run = await client.actor('khadinakbar/spotify-all-in-one-scraper').call(input);const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Responsible use
Use the Actor for lawful research, analytics, catalog enrichment, and automation workflows that respect Spotify's terms and applicable laws. Review the returned records before using them in published analysis or customer-facing systems, especially when you rely on popularity fields, search results, or nested listings.