Spotify Monthly Listeners Scraper
Pricing
from $5.00 / 1,000 artist scrapeds
Spotify Monthly Listeners Scraper
Get Spotify artist monthly listeners, followers, world rank and top listener cities from an artist URL, ID or name. These figures are not in the official Spotify Web API. No Spotify API key needed.
Pricing
from $5.00 / 1,000 artist scrapeds
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
0
Bookmarked
37
Total users
18
Monthly active users
15 days ago
Last modified
Categories
Share
What is Spotify Monthly Listeners Scraper?
Use this Apify Actor to get Spotify artist monthly listeners, followers, world rank, and top listener cities from an artist URL, artist ID, Spotify URI, or artist name. It accepts a list of artist inputs, returns one dataset record per successfully scraped artist, and produces structured fields that are useful for analytics, routing, and agent workflows. The output includes artist identity fields plus popularity metrics and city data, so each record can be used as a compact snapshot of one artist at run time.
Best fit and connected workflows
This Actor fits workflows that start with an artist name or link and need Spotify artist popularity data in a structured format. It is useful for:
- roster monitoring and artist benchmarking
- audience geography review using top listener cities
- enrichment steps in music marketing or A&R pipelines
- AI agent tasks that need a single tool to resolve an artist and return current Spotify metrics
Because it is an Apify Actor, it can be used through Apify MCP as part of a larger agent flow, while still keeping the task focused on artist-level Spotify data.
Practical scenario
A music marketer is preparing a campaign for a shortlist of artists. They start with a list that includes a plain artist name and a Spotify artist URL. The Actor returns each artist's name, monthly listeners, followers, world rank, and top listener cities. The marketer uses the city list to decide where to concentrate ad spend and uses the world rank and listener counts to compare relative scale across the shortlist. The next action is to export the dataset items into a spreadsheet or pass them into a downstream reporting workflow.
Input
The Actor accepts these input fields:
| Field | Type | Purpose |
|---|---|---|
artists | array of strings | One entry per artist. Accepts a Spotify artist URL, Spotify URI, bare 22-character artist ID, or plain artist name. |
topCitiesLimit | integer | Number of top listener cities to include per artist. Range: 0 to 50. Spotify exposes up to 5 cities publicly. |
maxResults | integer | Hard cap on the number of artists processed and billed in one run. |
proxyConfiguration | object | Proxy used for Spotify requests. Apify Proxy is enabled by default. |
Focused JSON input example
{"artists": ["Taylor Swift","https://open.spotify.com/artist/4q3ewBCX7sLwd24euuV69X","spotify:artist:1Xyo4u8uXC1ZmMpatF05PJ"],"topCitiesLimit": 5,"maxResults": 10,"proxyConfiguration": {"useApifyProxy": true}}
Output
Each dataset item represents one artist that was successfully scraped.
| Field | Type | Meaning |
|---|---|---|
query | string or null | Original input value for the artist. |
resolvedVia | string or null | How the input was resolved, such as URL, URI, ID, or search. |
type | string | Record type returned by Spotify. |
id | string or null | Spotify artist ID. |
uri | string or null | Spotify artist URI. |
url | string or null | Spotify artist URL. |
name | string or null | Artist name returned by Spotify. |
verified | boolean or null | Verified status when available. |
monthlyListeners | integer or null | Monthly listeners value. |
followers | integer or null | Spotify follower count. |
worldRank | integer or null | World rank value when Spotify exposes it. |
topCities | array or null | Top listener cities, ordered by listener count. |
avatarImage | string or null | Artist image URL. |
scrapedAt | string or null | Timestamp for when the record was scraped. |
Illustrative output record
{"query": "Taylor Swift","resolvedVia": "search","type": "artist","id": "06HL4z0CvFAxyc27GXpf02","uri": "spotify:artist:06HL4z0CvFAxyc27GXpf02","url": "https://open.spotify.com/artist/06HL4z0CvFAxyc27GXpf02","name": "Taylor Swift","verified": true,"monthlyListeners": 84213765,"followers": 132847901,"worldRank": 3,"topCities": [{"city": "London","country": "GB","region": "England","listeners": 1284551}],"avatarImage": "https://i.scdn.co/image/...","scrapedAt": "2026-06-20T22:41:09.412Z"}
How it works
The Actor resolves each artist input to a Spotify artist and then queries Spotify's Partner API queryArtistOverview operation. According to the live contract, it is HTTP-only and uses a self-healing TOTP token plus operation hash extracted live from Spotify's web player. The actor does not launch a browser. Names are resolved to the top matching artist, while URLs, URIs, and bare IDs are used directly.
Pricing
Spotify Monthly Listeners Scraper uses Pay per event with Apify platform usage included. The charged events are:
- Actor start
- Artist scraped
An artist is billed when it is successfully returned with monthly listeners, followers, world rank, and top cities. Skipped inputs and non-artist links are not billed. Apify platform usage is included in the event price. For the current pricing details, open the live Pricing tab in the Apify Console.
For a simple example, a run that scrapes twenty artists triggers twenty artist events plus one Actor start event.
Use with AI agents (MCP)
This Actor is available as an Apify Actor usable through Apify MCP. It is designed for agent workflows that need a compact tool call to resolve Spotify artist inputs and retrieve structured artist-level metadata.
Actor identity: khadinakbar/spotify-monthly-listeners-scraper
Tool description: accept a list of Spotify artist URLs, URIs, IDs, or names and return one record per successfully scraped artist with monthly listeners, followers, world rank, top listener cities, and identity fields.
Get the Spotify artist profile for this artist name and return monthly listeners, followers, world rank, top listener cities, and the resolved Spotify URL. Use the artist's own Spotify page when possible.
Output interpretation:
resolvedViashows how the artist was matched.querypreserves the original input.monthlyListeners,followers, andworldRankare the main popularity fields.topCitiesprovides the publicly exposed top listener cities, ordered by listener count.scrapedAtmarks when the record was collected.
Provenance and scope:
- Data comes from Spotify artist data exposed through the actor's HTTP-based scraping flow.
- The scope is artist-level Spotify popularity data only.
Pagination and cost guidance:
- Feed multiple artists in one input array.
- Use
maxResultsto cap the number of processed and billed artists. - Use
topCitiesLimitto control how many city rows are included per artist. - Billing follows the actor's Pay per event contract.
Apify API example
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({token: process.env.APIFY_TOKEN,});const run = await client.actor('khadinakbar/spotify-monthly-listeners-scraper').call({artists: ['Taylor Swift', 'The Weeknd'],topCitiesLimit: 5,maxResults: 10,});const { items } = await client.dataset(run.defaultDatasetId).listItems();for (const item of items) {console.log(`${item.name}: ${item.monthlyListeners} monthly listeners`);}
Best results and outcome guidance
Use exact Spotify artist URLs or artist IDs when you want the most direct match. Use a plain artist name when you want the Actor to resolve the top matching artist on Spotify. Set topCitiesLimit to 0 when you only need core popularity fields and want smaller records. Keep maxResults aligned with the number of artists you intend to process in one run.
Continue the workflow
- Then use Spotify Play Count Scraper to extend Spotify Monthly Listeners Scraper research with a complementary content contract.
- Then use Terabox Video Downloader to extend Spotify Monthly Listeners Scraper with a neighboring creator and media research source when the brief calls for Terabox data.
Design note
I found that the live dataset contract exposes a single flat record per artist, with query, resolvedVia, monthlyListeners, followers, worldRank, topCities, and scrapedAt among the fields, which makes the Actor straightforward to consume in downstream workflows.
FAQ
Can I paste a Spotify artist URL, URI, or ID?
Yes. The Actor accepts all three, along with a plain artist name.
What happens with a Spotify album or playlist link?
The input schema is for artist entries. Artist URLs, URIs, IDs, and names are the intended inputs.
How many top listener cities can I request?
The topCitiesLimit field accepts 0 to 50, while Spotify exposes up to 5 cities publicly.
What does resolvedVia tell me?
It shows whether the artist was resolved from a URL, URI, ID, or search input.
Is this Actor usable through Apify MCP?
Yes. It is an Apify Actor that is MCP-ready and designed for agent workflows.
Can I use this for multiple artists in one run?
Yes. Pass an array of artist inputs and control the run with maxResults.
Responsible use
Use the data in ways that respect Spotify's terms, applicable laws, and your own data-handling requirements. This Actor collects publicly exposed Spotify artist information and returns it in structured form for legitimate research, operations, automation, and agent workflows.
Call over HTTP
Copy the authenticated URL from the Actor’s Endpoints tab. Send POST /artists with Authorization: Bearer <your Apify token> and a JSON body, for example:
{"artists":["0TnOYISbd1XYRBk9myaseg"],"maxResults":1,"topCitiesLimit":5,"maxCostUsd":0.005}
Use artists for artist IDs, URLs, URIs or names. maxResults defaults to50; topCitiesLimit defaults to5 and accepts0 through50. Zero omits cities. The same native overview parser, fields and proxy route rotation are used; unavailable values stay null. No new plan-specific free quota or paid feature gate is introduced. Existing normal-run limits and options remain available.
Each useful returned artist uses the existing artist-scraped event at $0.005 before discounts. Valid empty or failed lookups do not incur that result event. Shared HTTP adds no manual startup event to every request. Normal-run startup pricing ($0.00005) and platform-usage settings are unchanged.
The optional maxCostUsd must cover the maximum requested output count at the listed event price before lookup begins. Use maxResults to request a smaller maximum. This request budget is separate from your Console-wide maximum charge, which pooled billing does not currently enforce per request. X-Actor-Event-Count and X-Actor-Estimated-Charge-Usd describe the response; they are not final payout receipts.
Responses contain count, results and summary. Equivalent references are deduplicated. HTTP accepts up to10,000 entries per array, a1MiB uncompressed JSON body and a16MiB result budget, with up to four active requests per instance. The work deadline is four minutes; long/large jobs use normal runs with Dataset exports. A whole-result size error returns no billable result body; it does not silently strip fields.
HTTP rows and caller input are returned directly and are not saved in a shared Dataset/KV or caller run history. Save the JSON yourself. The service stores aggregate counters only. A502 BILLING_UNCONFIRMED withholds results and must not be retried automatically. A503 asks clients to retry later. Readiness and schema endpoints do no lookup or manual billing.
Shared-pool funding follows Apify’s beta rules: Apify covers free-pool platform usage; paid-pool platform usage is deducted from creator payout. This does not change normal-run pricing.