# Spotify Artist Stats & Monthly Listeners (`cyber1nj3ct0r/spotify-artist-stats`) Actor

Get a Spotify artist's monthly listeners, followers and top tracks with play counts from the public artist page. Also returns releases, playlists, related artists, concerts, biography and links, one row per artist. No Spotify login or API key needed.

- **URL**: https://apify.com/cyber1nj3ct0r/spotify-artist-stats.md
- **Developed by:** [Sanira Botheju](https://apify.com/cyber1nj3ct0r) (community)
- **Categories:** Social media, For creators, Marketing
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.60 / 1,000 artists

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

### What does Spotify Artist Stats do?

Spotify Artist Stats reads the public Spotify page of each artist you give it and turns it into one row per artist: **monthly listeners (as an exact number), followers, top tracks with play counts, latest release, albums and singles, playlists, related artists, upcoming concerts, biography and social links**. Export the table to Excel, CSV or JSON, or send it on to another app. No Spotify login, no cookies and no Spotify API key are needed.

- Give artist links, Spotify URIs or bare ids, a mix is fine. A link copied from the Spotify app works as it is
- The exact monthly listeners and followers numbers, not the rounded "105.4M" the page headline shows
- The page's popular tracks with their total play counts
- Releases (latest release, newest albums, singles and EPs, compilations), the playlists that feature the artist, related artists ("Fans also like"), music videos and upcoming concerts
- Run it every day on a schedule to build a history of an artist's listeners and followers, which Spotify itself does not show
- Reads each page once, two at a time and slowly, and waits when Spotify asks it to

### What data do you get?

| Field | Example |
|---|---|
| Artist | `Taylor Swift`, with Spotify id and page address |
| Monthly listeners | `105412748` |
| Followers | `165777383` |
| Top tracks | name, address, play count, album, artists, explicit flag |
| Latest release | `Patient Zero`, single, 2026 |
| Albums, singles, compilations | name, type, year, address, cover (the newest 8 of each) |
| Playlists | the artist's own playlists and the playlists featuring the artist |
| Related artists | name, id, address, picture |
| Concerts | title, venue, city, date and time of the upcoming concerts the page shows |
| Biography and links | plain text, and the artist's Instagram, Facebook, X and other links |
| Market | the country Spotify assumed, for example `US` |

### How to get Spotify monthly listeners for many artists

1. In Spotify, open an artist, press the three dots, then **Share**, then **Copy link to artist**. Paste the links under **Artists**, one per line. Spotify URIs (`spotify:artist:...`) and the 22-character ids work too.
2. Press **Start**.
3. Export the **Artists** table as Excel or CSV, or connect the results to Google Sheets, Make, Zapier or n8n.

### How much does it cost to scrape Spotify artists?

You pay for results, not for time: **$2.00 per 1,000 artists**. Apify subscribers on the Silver plan pay $1.80 and on the Gold plan $1.60 per 1,000 artists. Each run also has a start fee of $0.00005.

| Artists | Cost |
|---|---|
| 100 | $0.20 |
| 1,000 | $2.00 |
| 10,000 | $20.00 |
| 100,000 | $200.00 |

Apify's free plan includes $5 of credit each month, which covers about 2,500 artists. An artist named twice in the list is read and charged once. A row that reports a problem (an artist that does not exist, an entry that is not a Spotify artist) is a result too and counts like any other. Set a maximum cost for the run in Apify Console and the tool stops there and keeps what it has read.

### Input

The only required field is **Artists**: Spotify artist links, URIs or ids, one per line.

- **Time limit per request** and **User-Agent** are under More options. Leave the User-Agent empty to use the tool's own name, which tells Spotify what is visiting.

Looking an artist up by name is not supported, because Spotify's search results are not part of the pages this tool reads. Copy the artist's link instead.

### Output example

One artist, shortened (the lists hold more entries):

```json
{
    "artistId": "06HL4z0CvFAxyc27GXpf02",
    "name": "Taylor Swift",
    "url": "https://open.spotify.com/artist/06HL4z0CvFAxyc27GXpf02",
    "monthlyListeners": 105412748,
    "followers": 165777383,
    "topTracks": [
        {"rank": 1, "name": "Patient Zero", "trackId": "11hcBLPtbMp4aQI6zGQLub", "url": "https://open.spotify.com/track/11hcBLPtbMp4aQI6zGQLub", "playCount": 115251839, "album": "The Life of a Showgirl: The Encore", "albumUrl": "https://open.spotify.com/album/4hF2gTGuPYlykYuphDxi8J", "artists": ["Taylor Swift"], "explicit": false},
        {"rank": 2, "name": "The Fate of Ophelia", "trackId": "53iuhJlwXhSER5J2IYYv1W", "url": "https://open.spotify.com/track/53iuhJlwXhSER5J2IYYv1W", "playCount": 1746267826, "album": "The Life of a Showgirl", "albumUrl": "https://open.spotify.com/album/4a6NzYL1YHRUgx9e3YZI6I", "artists": ["Taylor Swift"], "explicit": false}
    ],
    "latestRelease": {"name": "Patient Zero", "type": "single", "year": 2026, "url": "https://open.spotify.com/album/3rU7c934ngxDXPfjgXyzyu", "imageUrl": "https://i.scdn.co/image/ab67616d0000b27316bc19366517944ef91c6654"},
    "biography": "And, baby, that’s sh0w business f0r y0u ❤️‍🔥",
    "imageUrl": "https://i.scdn.co/image/ab6761610000e5eb12184bdd29403de54cb9d9c7",
    "albumCount": 8,
    "singleCount": 8,
    "compilationCount": 1,
    "albums": [
        {"name": "The Life of a Showgirl: The Encore", "type": "album", "year": 2026, "url": "https://open.spotify.com/album/4hF2gTGuPYlykYuphDxi8J", "imageUrl": "https://i.scdn.co/image/ab67616d0000b273cf3de6b538d8b1ed73a4d5d1"}
    ],
    "featuredPlaylists": [
        {"name": "This Is Taylor Swift", "playlistId": "37i9dQZF1DX5KpP2LN299J", "url": "https://open.spotify.com/playlist/37i9dQZF1DX5KpP2LN299J", "imageUrl": "https://i.scdn.co/image/ab67706f00000002fb24bccb89a4fbbd3fdf201b"}
    ],
    "relatedArtists": [
        {"name": "Olivia Rodrigo", "artistId": "1McMsnEElThX1knmY4oliG", "url": "https://open.spotify.com/artist/1McMsnEElThX1knmY4oliG", "imageUrl": "https://i.scdn.co/image/ab6761610000e5ebb14eb4dcfd2f3858bed06e44"}
    ],
    "upcomingConcertCount": 0,
    "concerts": [],
    "externalLinks": [
        {"name": "instagram", "url": "https://instagram.com/taylorswift"}
    ],
    "market": "US",
    "fetchedAt": "2026-10-23T10:09:58.000Z",
    "source": "https://open.spotify.com/artist/06HL4z0CvFAxyc27GXpf02",
    "error": null
}
```

The row also holds `images`, `popularReleases`, `singles`, `compilations`, `appearsOn`, `artistPlaylists` and `musicVideos`. `market` is the country Spotify assumed for the request: on Apify it is the United States (`US`), where the servers run. Listener and follower counts are worldwide totals.

When an entry cannot be read, its row has an `error` with a code and a message and every other column empty: `INVALID_INPUT` (not a Spotify artist link, URI or id; a link to an album or track gets its own message), `ARTIST_NOT_FOUND` (Spotify has no artist with that id), `RATE_LIMITED`, `ACCESS_DENIED`, `HTTP_ERROR`, `PAGE_NOT_READABLE` or a network error such as `TIMEOUT`.

### What can you use it for?

- Track artists' monthly listeners and followers over time: schedule a daily run and keep the results
- Benchmark artists, labels and rosters against each other in one spreadsheet
- Find which playlists feature an artist and which artists are related to them
- Build artist research and A\&R shortlists from a list of links
- Feed artist figures into dashboards, reports and your own apps

### Use it from the API

```bash
curl -X POST "https://api.apify.com/v2/acts/cyber1nj3ct0r~spotify-artist-stats/run-sync-get-dataset-items?token=YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"artists": ["https://open.spotify.com/artist/06HL4z0CvFAxyc27GXpf02", "3MQiZHolUMVtX01IeM3j8S"]}'
```

The same works from Python, JavaScript, Make, Zapier and n8n through Apify's integrations.

### FAQ

#### Which country's numbers do I get?

Spotify decides the market from the address of the machine that asks, so on Apify it is where the server runs, not where you are. Every row says which market the page was served for in `market`. Monthly listeners and followers are worldwide totals. Which releases and playlists a page shows, and the order of the popular tracks, can differ by market.

#### How up to date are the numbers?

They are what the artist's page shows at the moment of the run, noted in `fetchedAt`. Monthly listeners count the people who listened in the last 28 days.

#### Why only five top tracks, and why are they not in order of play count?

The artist page lists five tracks as popular, in the order it shows them, which is not always the order of play counts. `playCount` is the track's total plays. The lists of albums, singles and compilations hold the newest 8 of each (`albumCount` of 8 means 8 or more), and the page shows up to 4 upcoming concerts (`upcomingConcertCount` has the total).

#### Why are there no top cities, world rank, verified badge or genres?

They are not part of the artist page this tool reads, so it does not return them rather than guess. Everything in the table comes from the page itself.

#### Why does a biography say \[removed]?

Artists sometimes write an e-mail address or a phone number into their biography. This tool returns statistics and public profile data, not contact details, so those are replaced by `[removed]`.

#### Is it allowed to read Spotify's pages?

The tool reads only public artist pages that Spotify's robots.txt allows, one page per artist, slowly and under its own name, without logging in. Spotify's Terms of Use and User Guidelines limit automated access to its service. Spotify's User Guidelines also rule out using its content to train machine learning or AI models. You are responsible for how you use the tool and the data and for checking that your use is allowed.

#### What happens if Spotify limits the requests?

When Spotify answers "too many requests", the tool waits as long as Spotify asks (up to a minute) and tries again, three times at most per artist. If Spotify limits, refuses or sends a page the tool cannot read for three artists in a row, the run stops and keeps what it has; run it again later with fewer artists. The tool does not use proxies and does not try to get round blocks.

#### Something does not work

Open an issue on the **Issues** tab with the artist link you tried. Spotify changes its pages from time to time; every report is read and answered.

# Actor input Schema

## `artists` (type: `array`):

Spotify artists, one per line: the link from the Spotify app or web player (<code>https://open.spotify.com/artist/06HL4z0CvFAxyc27GXpf02</code>), the URI (<code>spotify:artist:06HL4z0CvFAxyc27GXpf02</code>) or just the 22-character id. To find a link, open the artist in Spotify, then Share, Copy link to artist. Searching by name is not supported.

## `requestTimeoutSecs` (type: `integer`):

How long to wait for one artist page before giving up.

## `userAgent` (type: `string`):

The name the tool sends with each request. Leave empty to use the tool's own name, which tells Spotify what is visiting. Set your own only if you have permission to use it.

## Actor input object example

```json
{
  "artists": [
    "https://open.spotify.com/artist/06HL4z0CvFAxyc27GXpf02"
  ],
  "requestTimeoutSecs": 30
}
```

# Actor output Schema

## `artists` (type: `string`):

One record per artist: monthly listeners, followers, top tracks with play counts, releases, playlists, related artists, concerts and links.

## `summary` (type: `string`):

Each entry you gave: the artist found, and whether it could be read.

# 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 = {
    "artists": [
        "https://open.spotify.com/artist/06HL4z0CvFAxyc27GXpf02"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("cyber1nj3ct0r/spotify-artist-stats").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 = { "artists": ["https://open.spotify.com/artist/06HL4z0CvFAxyc27GXpf02"] }

# Run the Actor and wait for it to finish
run = client.actor("cyber1nj3ct0r/spotify-artist-stats").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 '{
  "artists": [
    "https://open.spotify.com/artist/06HL4z0CvFAxyc27GXpf02"
  ]
}' |
apify call cyber1nj3ct0r/spotify-artist-stats --silent --output-dataset

```

## MCP server setup

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

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/GmVhdooPL3SsUdnDa/builds/uZMhUe2ILgM5HEG5d/openapi.json
