Spotify Artist Scraper avatar

Spotify Artist Scraper

Pricing

from $5.00 / 1,000 artist scrapeds

Go to Apify Store
Spotify Artist Scraper

Spotify Artist Scraper

Scrape Spotify artist data — monthly listeners, followers, world rank, top cities, top tracks, and discography — by URL, ID, or artist name. HTTP-only, no API key. MCP/API-ready.

Pricing

from $5.00 / 1,000 artist scrapeds

Rating

0.0

(0)

Developer

Khadin Akbar

Khadin Akbar

Maintained by Community

Actor stats

0

Bookmarked

20

Total users

12

Monthly active users

17 days ago

Last modified

Share

Spotify Artist Scraper collects one record per Spotify artist from an artist URL, URI, bare artist ID, or artist name. It returns structured artist data such as monthly listeners, followers, world rank, top cities, top tracks, biography, external links, images, and discography summary. The Actor is HTTP-only, uses no API key, and is available on Apify as an Actor usable through Apify MCP.

Best fit and connected workflows

Use this Actor when your workflow starts with a Spotify artist identity and you want a single normalized artist record for analysis, enrichment, or downstream automation.

It fits well when you need to:

  • resolve artist names into Spotify artist records for enrichment workflows
  • compare artists by monthly listeners, followers, and world rank
  • group artist audiences by top cities
  • collect top tracks and discography summary for catalog or trend analysis
  • feed Spotify artist data into AI agents that need compact structured JSON

This Actor returns artists only. If your starting point is a Spotify album, track, playlist, or podcast reference, a different Spotify collection workflow is a better match.

Opening contract

Spotify Artist Scraper is designed for analysts, operators, and AI agents that need one record per artist from Spotify.

Accepted input includes:

  • artist URLs
  • Spotify URIs
  • bare 22-character artist IDs
  • free-text artist names

One record means one resolved Spotify artist profile with fields such as:

  • name, id, uri, and url
  • verified status
  • biography
  • monthlyListeners, followers, and worldRank
  • topCities and topTracks
  • discography summary
  • externalLinks
  • avatarImage and headerImage
  • dataSource and scrapedAt

The outcome is a dataset of structured artist records ready for filtering, joining, and agent reasoning.

Practical scenario

Maya, a music marketing analyst, starts with a list that contains a Spotify artist URL and two artist names from a campaign brief. She runs the Actor with those inputs and receives records containing the artist name, canonical URL, monthly listeners, followers, world rank, top cities, and top tracks.

She uses the topCities field to identify the strongest listener regions and checks the latest release in the discography summary before planning the next playlist and ad targeting step.

Input

FieldTypeDescription
artistsarray of stringsSpotify artist URLs, URIs, or bare artist IDs. Locale URL prefixes such as /intl-de/ are accepted.
artistNamesarray of stringsFree-text artist names resolved to the top-matching Spotify artist via search. One search request is used per name.
maxResultsintegerMaximum number of artist records to return and bill for in one run. Default: 50.
responseFormatstringconcise returns a compact profile with top cities, discography summary, and up to 10 top tracks. detailed returns the full top-track list.
proxyConfigurationobjectProxy settings. Apify automatic proxy is the default. Residential proxy also works if you choose it.

Focused JSON input example

{
"artists": [
"https://open.spotify.com/artist/0TnOYISbd1XYRBk9myaseg"
],
"artistNames": [
"Billie Eilish"
],
"maxResults": 2,
"responseFormat": "concise",
"proxyConfiguration": {
"useApifyProxy": true
}
}

Output

FieldTypeDescription
typestringRecord type, expected to be artist.
idstring or nullSpotify artist ID.
uristring or nullSpotify artist URI.
urlstring or nullCanonical Spotify artist URL.
namestring or nullArtist name.
verifiedboolean or nullVerified profile indicator.
biographystring or nullArtist biography text when present.
monthlyListenersinteger or nullCurrent monthly listener count.
followersinteger or nullTotal followers.
worldRankinteger or nullGlobal popularity rank when available.
topCitiesarray or nullTop listener cities with city, country, region, and listeners.
externalLinksarray or nullLinked external sites or socials.
avatarImagestring or nullProfile image URL.
headerImagestring or nullHeader image URL.
topTracksCountinteger or nullCount of top tracks returned.
topTracksarray or nullTop track records.
discographyobject or nullDiscography summary, including counts and latest release.
popularityDataAvailableboolean or nullIndicates whether popularity data was available.
dataSourcestring or nullSource indicator for the returned record.
scrapedAtstring or nullISO timestamp for when the record was collected.

Illustrative output record

{
"type": "artist",
"id": "0TnOYISbd1XYRBk9myaseg",
"uri": "spotify:artist:0TnOYISbd1XYRBk9myaseg",
"url": "https://open.spotify.com/artist/0TnOYISbd1XYRBk9myaseg",
"name": "Example Artist",
"verified": true,
"monthlyListeners": 41250000,
"followers": 9800000,
"worldRank": 42,
"topCities": [
{
"city": "Mexico City",
"country": "MX",
"region": null,
"listeners": 980000
}
],
"topTracksCount": 10,
"discography": {
"albumCount": 6,
"singleCount": 28,
"compilationCount": 1,
"latest": {
"name": "Latest Release",
"type": "SINGLE",
"date": "2026-05-01"
}
},
"popularityDataAvailable": true,
"dataSource": "partner",
"scrapedAt": "2026-06-20T00:00:00.000Z"
}

How it works

The Actor resolves each artist from the input you provide and returns one dataset record per resolved artist. According to the live contract, it can accept Spotify artist URLs, URIs, bare IDs, and free-text artist names.

Implementation facts supplied by the contract:

  • it is HTTP-only
  • it uses a runtime-extracted Spotify web-player TOTP secret and GraphQL operation hashes
  • it calls Spotify's Partner API for rich popularity data
  • it falls back to the public embed page for baseline metadata when needed
  • it uses Apify automatic proxy by default
  • it supports a concise or detailed response format

Evergreen pricing

This Actor uses Apify pay per event pricing plus Apify platform usage.

Billing is based on:

  • one run start event
  • one artist scraped event for each returned artist record

For example, a run that returns ten artist records includes one start event and ten artist-scraped events. For current pricing details, check the live Pricing tab on the Actor page.

Use with AI agents (MCP)

This Actor is available through Apify MCP as a tool for retrieving structured Spotify artist data. The exact Actor identity is khadinakbar/spotify-artist-scraper.

Tool description: resolve Spotify artist inputs into a single record per artist, suitable for agent reasoning, enrichment, and downstream dataset use.

Scrape these Spotify artists and return structured JSON for each one. I have one artist URL and two artist names. Give me monthly listeners, followers, world rank, top cities, top tracks, and discography summary, then highlight the latest release for each artist.

Output interpretation:

  • use name, url, and id to confirm the artist identity
  • use monthlyListeners, followers, and worldRank for comparisons
  • use topCities to group listener geography
  • use topTracks and discography for catalog review
  • use dataSource and scrapedAt for provenance and freshness

Scope and pagination guidance:

  • concise is compact and agent-friendly
  • detailed returns the full top-track list
  • the Actor returns discography counts plus the latest release in both modes
  • the Actor returns artists only, one record per resolved artist
  • billing follows the returned artist records, so maxResults is useful for cost control

Apify API example

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({
token: process.env.APIFY_TOKEN,
});
const input = {
artists: [
'https://open.spotify.com/artist/0TnOYISbd1XYRBk9myaseg',
],
artistNames: ['Billie Eilish'],
maxResults: 2,
responseFormat: 'concise',
proxyConfiguration: {
useApifyProxy: true,
},
};
const run = await client.actor('khadinakbar/spotify-artist-scraper').call(input);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Best results and outcome guidance

Provide exact Spotify artist URLs or URIs when you already know the artist identity. Use artistNames when you only have a name and want Spotify to resolve the top match.

A few practical choices improve output consistency:

  • use artists for exact matches and deterministic routing
  • use artistNames for discovery-style lookup
  • set maxResults to the number of artist records you want returned
  • choose concise when you want compact records for agents or quick analysis
  • choose detailed when you want the full top-track list

Continue the workflow

Design note

I found that the live dataset contract includes topTracksCount separately from topTracks, which makes it easy to compare summary size and track detail in one record.

FAQ

Can I start with a Spotify artist name instead of a URL?

Yes. Use artistNames when you only have a free-text artist name.

What input format is most precise?

artists with a Spotify artist URL, URI, or bare 22-character artist ID is the most direct route.

The input contract is artist-specific, and the Actor returns artists only.

Can I choose between compact and full track output?

Yes. Use responseFormat: "concise" for a compact record, or responseFormat: "detailed" for the full top-track list.

Which proxy settings are used?

Apify automatic proxy is the default. Residential proxy also works if you choose it in proxyConfiguration.

Responsible use

Use this Actor in line with Spotify's terms and applicable laws. Review how you store, share, and automate the data you collect. Respect source platforms, rate your workflows conservatively, and apply the output only in ways that fit your organizational and legal requirements.