# Spotify Artist Scraper (`codenest/spotify-artist-scraper`) Actor

Extract Spotify artist insights by keywords or URLs. Scrape monthly listeners, global rank, follower counts, top listener cities, biography, social links, full discography, and track playcounts. Fast export to JSON/CSV with zero login or API keys needed.

- **URL**: https://apify.com/codenest/spotify-artist-scraper.md
- **Developed by:** [CodeNest](https://apify.com/codenest) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 artist search results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## 🎤 Spotify Artist Scraper: Monthly Listeners, Stats & Full Profile

[![Apify Actor](https://img.shields.io/badge/Apify-Actor-orange?style=flat-square\&logo=apify)](https://apify.com)
[![Pricing](https://img.shields.io/badge/Pricing-Pay--Per--Event-brightgreen?style=flat-square)](https://apify.com)
[![No API Key Needed](https://img.shields.io/badge/Spotify%20API-Not%20Required-1DB954?style=flat-square\&logo=spotify)](https://open.spotify.com)
[![Output Formats](https://img.shields.io/badge/Export-JSON%20|%20CSV%20|%20Excel-blue?style=flat-square)](https://apify.com)
[![SEO & A\&R Ready](https://img.shields.io/badge/Analytics-Monthly%20Listeners%20%26%20Rank-purple?style=flat-square)](https://apify.com)

> **The ultimate Spotify Artist Scraper.** Extract deep Spotify artist analytics that the official Spotify Web API doesn't provide: **monthly listeners, global world rank, top listener cities, follower statistics, verified badges, biography, social media links, gallery photos, and full discographies** without requiring Spotify developer accounts or OAuth tokens.

***

### 🌟 Why Use This Spotify Artist Scraper?

Spotify's official Web API **does not provide monthly listeners, global rankings, or top geographic listener cities**. This actor unlocks complete public artist intelligence at scale:

| Data Point | Official Spotify API | 🎤 This Scraper |
|---|:---:|:---:|
| **Monthly Listeners** | ❌ Not available | ✅ **Exact live monthly listener counts** |
| **Global World Rank** | ❌ Not available | ✅ **Official global listener rank** |
| **Top 5 Listener Cities** | ❌ Not available | ✅ **City, Country, Region & Listener breakdown** |
| **Biography & Autobiography** | ⚠️ Partial | ✅ **Full bio text & author attribution** |
| **Social & External Links** | ❌ Not available | ✅ **Instagram, Twitter/X, Facebook, Wikipedia** |
| **High-Res Gallery Photos** | ⚠️ Limited | ✅ **Full artist visual gallery & banner headers** |
| **Discography Overview** | ⚠️ Strict rate limits | ✅ **Albums, Singles, EPs & Popular releases** |
| **Popular Tracks & Playcounts** | ⚠️ No playcounts | ✅ **Top 10 tracks with stream playcounts** |
| **Authentication & Tokens** | ❌ Mandatory OAuth | ✅ **Zero setup — No API key or login required** |

***

### 🚀 Key Features

- **🔍 Dual Input Flexibility**: Search artists globally by keyword (e.g. `Pop`, `Drake`, `Indie Rock`) or paste specific Spotify artist URLs and URIs (`https://open.spotify.com/artist/...` or `spotify:artist:...`).
- **📈 Comprehensive Artist Analytics**: Scrape real-time monthly listener numbers, follower metrics, and world rankings to track viral momentum.
- **🌍 Geographic Audience Insights**: Discover which cities and countries stream an artist most (Mexico City, London, São Paulo, Santiago, Los Angeles, etc.).
- **📸 High-Resolution Visuals**: Retrieve artist avatar pictures, banner header covers, and full image galleries in multiple resolutions.
- **🎵 Full Discography & Music Videos**: Extract latest releases, studio albums, singles, EPs, popular tracks with exact playcounts, and related music videos.
- **🔗 Verified Social Links**: Instantly collect verified social media links (Instagram, Twitter/X, Facebook, Wikipedia) and website URLs.
- **💳 Transparent Pay-Per-Event (PPE)**: Ultra-cost-effective event pricing with zero wasteful subscription fees. Pay only for what you scrape!
- **⚡ Built-in Rotating Proxies**: Uses automated residential IP rotation with automatic retries to bypass geo-blocks and rate limits.

***

### 🎯 Use Cases

- **🎵 A\&R & Record Label Talent Scouting**: Discover trending indie and underground artists with skyrocketing monthly listeners before competitors notice.
- **📊 Music Marketing & Brand Sponsorships**: Find where an artist’s listeners are physically located to plan hyper-targeted tour dates, festival lineups, and influencer brand campaigns.
- **🎧 Playlist Curators & DJ Discovery**: Analyze top popular tracks, playcounts, and related artists ("Fans also like") to build cohesive viral playlists.
- **📈 Industry Competitor Intelligence**: Monitor monthly listener trajectories, world rank shifts, and release schedules across major and independent labels.
- **🤖 Music AI & Data Pipelines**: Fuel machine learning models and recommendation engines with clean, standardized artist metadata.

***

### ⚙️ Input Parameters

Configure your scraper run through the Apify Console or API:

| Parameter | Type | Default | Description |
|---|---|:---:|---|
| `keyword` | `array` | `["Rock"]` | **Search Keyword(s)**. Search terms to discover artists across Spotify. Each term executes a separate search query. |
| `spotifyUris` | `array` | `[]` | **Spotify Artist URIs / URLs**. Direct Spotify artist URLs or URIs (e.g., `https://open.spotify.com/artist/6XyY86QOPPrYVGvF9ch6wz` or `spotify:artist:6XyY86QOPPrYVGvF9ch6wz`). |
| `artists_search_limit` | `integer` | `30` | **Search Limit**. Maximum number of artist results to retrieve per keyword search. |
| `artists_fetchDetails` | `boolean` | `false` | **Fetch Full Artist Details**. When `false`, extracts essential profile info instantly. When `true`, enriches every search result with deep discography, monthly listeners, top cities, bio, and gallery visuals. *(Note: Direct URLs always fetch complete rich details).* |

***

### 📋 Output Format & Sample Data

The Actor produces clean, structured JSON ready for CSV, Excel, or database export.

#### 🔹 Basic Mode Sample (Fast Keyword Search):

```json
{
  "id": "5bHjVR4F2Tfq4Ha6x7K6wU",
  "name": "Rockabye Baby!",
  "url": "https://open.spotify.com/artist/5bHjVR4F2Tfq4Ha6x7K6wU",
  "avatar": "https://i.scdn.co/image/ab6761610000e5ebf471421dfc01e99a9fdf6843",
  "searchQuery": "rock",
  "uri": "spotify:artist:5bHjVR4F2Tfq4Ha6x7K6wU",
  "profile": {
    "name": "Rockabye Baby!"
  }
}
```

#### 🔹 Full Enriched Mode Sample (Full Analytics):

```json
{
  "id": "6XyY86QOPPrYVGvF9ch6wz",
  "name": "Linkin Park",
  "followers": 36483870,
  "monthlyListeners": 57346888,
  "worldRank": 41,
  "verified": true,
  "url": "https://open.spotify.com/artist/6XyY86QOPPrYVGvF9ch6wz",
  "avatar": "https://i.scdn.co/image/ab6761610000e5eb527d95dabbe8b8b527e8136f",
  "biography": {
    "text": "LINKIN PARK is the magnetic hub of an emotional and cultural community...",
    "type": "AUTOBIOGRAPHY"
  },
  "topCities": {
    "items": [
      { "city": "São Paulo", "country": "BR", "numberOfListeners": 1069669 },
      { "city": "London", "country": "GB", "numberOfListeners": 820904 },
      { "city": "Mexico City", "country": "MX", "numberOfListeners": 791050 }
    ]
  },
  "externalLinks": {
    "items": [
      { "name": "INSTAGRAM", "url": "https://instagram.com/linkinpark" },
      { "name": "TWITTER", "url": "https://twitter.com/linkinpark" },
      { "name": "WIKIPEDIA", "url": "https://en.wikipedia.org/wiki/Linkin_Park" }
    ]
  },
  "Popular Tracks": {
    "items": [
      {
        "track": {
          "id": "60a0Rd6pjrkxjPbaKzXjfq",
          "name": "In the End",
          "playcount": "3420971377",
          "duration": { "totalMilliseconds": 216880 }
        }
      }
    ]
  },
  "Discography-Albums": {
    "totalCount": 26,
    "items": [ ... ]
  },
  "Fans also like": {
    "totalCount": 41,
    "items": [ ... ]
  }
}
```

***

### 💰 Pay-Per-Event (PPE) Pricing

This scraper uses transparent Pay-Per-Event monetization. You only pay for what you extract:

| Event Name | Event Code | Price per Unit | Description |
|---|---|---|---|
| **Artist Search Result** | `search-result` | **$0.0025 USD** | Charged for each basic artist record returned from keyword search. |
| **Detail Enrichment** | `detail` | **$0.0025 USD** | Additional charge when **Fetch Full Artist Details** is ON to enrich search results with monthly listeners, discography, and analytics ($0.0050 total). |
| **Direct Artist Profile** | `artist-profile` | **$0.0050 USD** | Charged for each complete artist profile extracted directly from a Spotify artist URL or URI. |

> 🎁 **Free Plan Tier**: Users without an active Apify paid subscription can test up to **3 artists per run** completely free!

***

### ❓ Frequently Asked Questions (FAQ)

##### Can I get Spotify monthly listeners from the official Spotify Web API?

No. Spotify does not expose monthly listeners, world ranks, or top listener cities in their official Web API. This actor is the easiest and most reliable way to extract those metrics.

##### Does this actor require a Spotify account or proxy?

No! You do not need any Spotify login, developer credentials, or external proxies. Everything is handled out of the box.

##### How do I export my data to Excel or CSV?

Once the run finishes, navigate to the **Dataset** tab in Apify Console and click **Export**. You can download your data in CSV, Excel (XLSX), JSON, XML, or HTML table format.

##### Can I schedule recurring daily or weekly monitoring?

Yes! Use Apify's **Schedules** feature to automatically run this scraper daily or weekly, tracking monthly listener growth and rankings over time.

***

### 🔗 Related Spotify Scrapers

- [Spotify Albums Search and Scraper](https://apify.com)
- [Spotify Tracks Search and Scraper](https://apify.com)
- [Spotify Playlists Search and Scraper](https://apify.com)

# Actor input Schema

## `keyword` (type: `array`):

One or more search terms to find artists on Spotify. Each keyword runs as a separate search.

💡 Leave empty and fill Spotify URIs below to use Get Details mode instead.

## `spotifyUris` (type: `array`):

One or more Spotify artist URIs or URLs to fetch full metadata.
Examples: spotify:artist:ID · https://open.spotify.com/artist/ID

⚠️ Only artist URIs/URLs are accepted. Other types will be skipped.
💡 Leave empty and fill Search Keywords above to use Search mode instead.

## `artists_search_limit` (type: `integer`):

Maximum number of artist results to return per keyword.

## `artists_fetchDetails` (type: `boolean`):

💡 Search mode only — when using Artist URIs/URLs, full details are always fetched automatically.

✅ When ON — runs queryArtistOverview for every search result. You get: monthly listeners, full discography (albums/singles/compilations), related artists, biography, gallery images, top listener cities, verified status, and merch links.

❌ When OFF — you only get basic search data: artist name, image, and URI. You will NOT get monthly listeners, discography, biography, related artists, or any overview data.

⚠️ Slower — one extra API call per search result

## Actor input object example

```json
{
  "keyword": [
    "Rock",
    "Sun"
  ],
  "spotifyUris": [
    "spotify:artist:06HL4z0CvFAxyc27GXpf02",
    "https://open.spotify.com/artist/6XyY86QOPPrYVGvF9ch6wz"
  ],
  "artists_search_limit": 30,
  "artists_fetchDetails": false
}
```

# Actor output Schema

## `overview` (type: `string`):

Tabular overview of scraped Spotify artists with name, followers, listeners, and links.

## `allResults` (type: `string`):

Complete dataset containing all artist profiles, full discography, metrics, and analytics.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "keyword": [
        "Rock",
        "Sun"
    ],
    "spotifyUris": [
        "spotify:artist:06HL4z0CvFAxyc27GXpf02",
        "https://open.spotify.com/artist/6XyY86QOPPrYVGvF9ch6wz"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("codenest/spotify-artist-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "keyword": [
        "Rock",
        "Sun",
    ],
    "spotifyUris": [
        "spotify:artist:06HL4z0CvFAxyc27GXpf02",
        "https://open.spotify.com/artist/6XyY86QOPPrYVGvF9ch6wz",
    ],
}

# Run the Actor and wait for it to finish
run = client.actor("codenest/spotify-artist-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "keyword": [
    "Rock",
    "Sun"
  ],
  "spotifyUris": [
    "spotify:artist:06HL4z0CvFAxyc27GXpf02",
    "https://open.spotify.com/artist/6XyY86QOPPrYVGvF9ch6wz"
  ]
}' |
apify call codenest/spotify-artist-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,codenest/spotify-artist-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/g3WGr84rCBSz5P9yU/builds/mEQwt9uRY7OskPweV/openapi.json
