Spotify Artist Scraper - Listeners & Followers
Pricing
from $2.00 / 1,000 results
Spotify Artist Scraper - Listeners & Followers
Look up Spotify artists by ID, URI or open.spotify.com URL and get exact numbers: monthly listeners and follower count as integers rather than the rounded 100.6M the page prints, plus verified status, artist image and the top-tracks list with a play count on every track. No API credentials.
Pricing
from $2.00 / 1,000 results
Rating
0.0
(0)
Developer
String
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Spotify Artist Scraper — exact monthly listeners and followers
This Actor collects public Spotify artist data by artist ID or open.spotify.com URL. It returns
exact monthly listeners, follower count and top-track play counts — 100593317, not the rounded
"100.6M" the artist page displays.
No Spotify account, login, API key or client credentials are used. The anonymous token the Actor reads is the one Spotify's own public embed page hands out.
What it returns
| Field | Type | Notes |
|---|---|---|
artistId | string | Spotify's 22-character artist ID — stable, use it to de-duplicate |
name | string | Artist name |
monthlyListeners | number | Exact, e.g. 100593317 — the page shows "100.6M" |
followerCount | number | Exact integer, not a rounded display figure |
isVerified | boolean | Whether Spotify shows the artist as verified |
topTracks | object[] | { trackId, name, playCount } — playCount is an exact integer, e.g. 2801945011 |
imageUrl | string | Artist avatar, the widest of the sizes Spotify ships |
artistUrl | string | https://open.spotify.com/artist/<artistId> |
sourceUrl, collectedAt | string | Provenance for every row |
Input
{ "artists": ["4gzpq5DPGxSnKTe4SA8HAU", "https://open.spotify.com/artist/06HL4z0CvFAxyc27GXpf02"] }
| Field | Description |
|---|---|
artists | Spotify artist IDs, spotify:artist:<id> URIs or open.spotify.com artist URLs. Required, 1–200. |
maxItems | Cap on dataset items. Default 1000. Free plans stop at 250 requests and 250 results — see below. |
concurrency | Artists fetched in parallel. Default 5. |
An ID, a URI and a full URL for the same artist collapse to one fetch, so a mixed list is never billed twice. A value that is not a 22-character Spotify ID — an artist's name, for example — is rejected before it costs a fetch and is reported as a failure.
How it reads exact figures
The Spotify artist page renders nothing server-side: an ordinary fetch returns the web-player shell,
and a crawler user-agent upgrades that only to Open Graph tags whose listener count is already
rounded for display. The exact figures come from the same queryArtistOverview call the web player
itself makes.
That call needs an anonymous bearer token and a persisted-query hash, both of which the public pages
hand out. This Actor reads them once per run — three fetches in total: the open.spotify.com
shell, the web-player bundle it links, and one /embed/artist/ page — and then issues one request
per artist. The three-fetch bootstrap is per run, not per artist, so it amortises across a large
artist list.
If that bootstrap fails, the run fails as one error rather than reporting every artist as a separately broken target.
Use cases
- A&R and artist scouting, ranked by exact monthly listeners rather than a rounded display figure
- Tracking artist and catalogue growth over time by re-running on a schedule
- Label, distributor and playlist reporting across a roster
- Comparing follower count against monthly listeners to gauge audience conversion
- Enriching a music or rights database with verified status and artist imagery
Reliability
Every field comes from Spotify's own GraphQL response rather than from rendered markup, so a value is either present and exact or absent — the counts do not change between runs for the same artist beyond Spotify's own updates.
An artist ID Spotify does not know answers with an empty record. That is treated as a failed target
and recorded under failures in the run's SUMMARY, rather than reaching the dataset as an all-null
row counted as a success. A run in which every artist failed exits with an error.
Frequently asked questions
Do I need a Spotify account, API key or client credentials? No. This Actor uses the anonymous
access token that Spotify's own public /embed/ page mints server-side, so no login, no developer
app and no client secret is involved.
Are the monthly listeners exact or rounded? Exact. This Actor returns monthlyListeners as an
integer such as 100593317, where the Spotify artist page renders "100.6M". followerCount and
every topTracks[].playCount are exact integers too.
How do I get Spotify artist follower counts? Supply the artist's 22-character Spotify ID (or its
open.spotify.com URL) in the artists input, and each dataset row returns followerCount
alongside monthlyListeners for that artist.
Can I search Spotify by artist name? No. The Spotify Artist Scraper takes artist IDs, URIs or artist URLs — you supply the artists, it does not do discovery. A name is rejected as an invalid target before any fetch is spent on it.
How many artists can one run collect? Up to 200 per run, which is the ceiling on the artists
input.
Does it return albums, full discographies or playlists? No. This Actor returns artist-level fields plus the top-tracks list Spotify shows on the artist page.
Limitations
Artist-level data only: no full discography, no album or playlist listings, no track audio features,
and no search or discovery. genres and popularity are Spotify Web API fields with no counterpart
anywhere in the public web player's data — they are carried in the JSON as [] and null so the
dataset keeps one column set per artist, and they are not part of the table view. Only
spotify.com URLs are accepted.
Free plan limit
Runs started from an Apify free plan stop at 250 requests and 250 results, and the run
reports that it reached the limit. Any paid plan runs the full input and maxItems you set. The
artists input already caps at 200, so in practice a free-plan run is bounded by that ceiling
rather than by the 250 limit.
The limit exists because this Actor fetches through our own infrastructure, which Apify does not cover for free-plan runs. It binds on requests as well as results so that a large input list cannot spend those fetches for rows the run will not return.