
Instagram Reel Scraper
scrape.ly/store/echofield/instagram-reel-scraperSocial mediaVideos
1 monthly user

Get exact Spotify play counts (stream counts) for tracks, albums, artists and playlists, plus monthly listeners, followers, world rank, top cities, ISRC, popularity, release dates and preview URLs. Paste links or search by keyword. No login needed.
Get the exact Spotify play count of any track, every track on an album or playlist, and an artist's top tracks, plus monthly listeners, followers, world rank, top cities, ISRC codes, popularity, release dates and 30-second preview links. Paste Spotify links or search by keyword. No login, no Spotify API key, results in seconds.
1,242,312,006), not the 0–100 popularity score of the official API.PLAY_COUNTS.csv with one row per track is saved next to the dataset.spotify: URIs) into Spotify URLs or URIs, and/or add Search queries.PLAY_COUNTS.csv from the run's storage, or read everything through the API.| Field | What it does |
|---|---|
urls | Track, album, artist or playlist links (open.spotify.com/..., country links like /intl-de/ and embed links work) or URIs. |
searchQueries, searchType, maxSearchResults | Keyword search for tracks, albums, artists or playlists. |
maxItems | Total results for the run (default 20, 0 = no limit). |
followAlbums, followSingles, followCompilations, followPopularReleases | For artist links, also scrape those releases as album results. |
maxPlaylistTracks | Cut long playlists (default 1,000). |
includeIsrc, includePreviewUrls | Add ISRC / popularity / UPC, and preview MP3 links (both on by default). |
saveCsv | Save the flat PLAY_COUNTS.csv (on by default). |
{
"urls": [
"https://open.spotify.com/album/1XkGORuUX2QGOEIL4EbJKm",
"https://open.spotify.com/artist/7Ln80lUS6He07XvHI8qqHH",
"spotify:track:2x8evxqUlF0eRabbW2JBJd"
],
"followAlbums": true,
"maxItems": 50
}
One row per track, album, artist or playlist. _type tells you which. The Overview table shows name, play count, total plays, monthly listeners, followers and links; the Tracks table unwinds albums and playlists into one row per track.
| Field | Meaning |
|---|---|
_type, _url | track, album, artist or playlist, and the input link |
id, name, url, uri | Spotify ID, name and links |
streamCount | Exact play count (tracks; also inside tracks and topTracks) |
duration, contentRating, trackNumber, discNumber | Track length in ms, explicit or none, position |
isrc, popularity, languages, previewUrl | ISRC code, 0–100 popularity, performance language, 30-second MP3 |
artists, album, releaseDate | Credited artists and the album (with label, cover art and track list) |
tracks, totalTracks, totalStreams | Albums and playlists: every track with plays, and the sum of plays |
label, copyright, upc, moreAlbums, coverArt | Album details |
monthlyListeners, followers, worldRank, verified, topCities | Artist stats |
topTracks, albums, singles, compilations, popularReleases, latest | Artist top tracks (with plays) and full discography |
biography, externalLinks, relatedArtists, headerImage | Artist profile |
owner, description, followers | Playlists; playlist tracks also carry addedAt, bpm, key and camelotKey |
source, scrapedAt | Which search or artist led to the result, and when it was scraped |
A track result (trimmed):
{
"_url": "https://open.spotify.com/track/2x8evxqUlF0eRabbW2JBJd",
"_type": "track",
"id": "2x8evxqUlF0eRabbW2JBJd",
"name": "Fluorescent Adolescent",
"streamCount": 1242312006,
"duration": 183893,
"contentRating": "none",
"trackNumber": 5,
"artists": [{"id": "7Ln80lUS6He07XvHI8qqHH", "name": "Arctic Monkeys", "url": "https://open.spotify.com/artist/7Ln80lUS6He07XvHI8qqHH"}],
"releaseDate": "2007-04-22",
"album": {"id": "1XkGORuUX2QGOEIL4EbJKm", "name": "Favourite Worst Nightmare", "type": "album", "label": "Domino Recording Co", "totalTracks": 12},
"isrc": "GBCEL0700067",
"popularity": 79,
"languages": ["en"],
"previewUrl": "https://p.scdn.co/mp3-preview/bd2ab6609fef9aa8cc35c75739d89dc5a72bfc80",
"url": "https://open.spotify.com/track/2x8evxqUlF0eRabbW2JBJd",
"scrapedAt": "2026-10-14T17:55:45Z"
}
An artist result (trimmed):
{
"_type": "artist",
"name": "Arctic Monkeys",
"verified": true,
"followers": 35922025,
"monthlyListeners": 56855554,
"worldRank": 42,
"topCities": [{"country": "GB", "region": "ENG", "city": "London", "numberOfListeners": 1024052}],
"topTracks": [{"name": "I Wanna Be Yours", "streamCount": 4051718932, "isrc": "GBCEL1300373", "popularity": 93}],
"totalAlbums": 8,
"totalSingles": 28,
"url": "https://open.spotify.com/artist/7Ln80lUS6He07XvHI8qqHH"
}
You pay $2.50 per 1,000 results ($0.0025 per track, album, artist or playlist) plus a small amount of platform usage (compute, and proxy traffic only if the proxy is needed; typically well under $0.01 for a few dozen results). An album or playlist counts as one result no matter how many tracks it holds.
Example: 1,000 track links ≈ $2.50 in result fees plus a few cents of compute.
Is it legal to scrape Spotify? The scraper only reads public pages that anyone can open without logging in. You are responsible for how you use the data; check Spotify's terms and your local laws, and don't republish copyrighted content.
Do I need a Spotify account, API key or proxy? No. The scraper connects to Spotify directly, which keeps runs fast and proxy traffic near zero, and switches to the datacenter proxy from the Proxy section automatically if Spotify starts rate-limiting.
How many results can I get? As many links as you like. Search returns up to about 1,000 matches per query; playlists are read up to maxPlaylistTracks; albums and artist discographies are read in full.
Why is a field empty? Spotify doesn't publish every value for every item: some tracks have no preview, small artists have no world rank, and newly released tracks can show no play count yet.
Is the play count the same as in the Spotify app? Yes, it is the same total that the Spotify desktop and web player show. Spotify refreshes it periodically, so schedule runs to follow the trend.
Can I schedule runs or use the API? Yes. Schedule the scraper daily to track growth, or start it and fetch results through the API and integrations.
note); PLAY_COUNTS.csv still lists every track.Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
urlsarrayOptionalSpotify URLs or URIs
Track, album, artist or playlist links from open.spotify.com, or URIs like spotify:album:1XkGORuUX2QGOEIL4EbJKm. Each link becomes one result with exact play counts.
searchQueriesarrayOptionalSearch queries
Optional. Search Spotify by keyword and scrape the matching tracks, albums, artists or playlists (pick the type below).
maxItemsintegerOptionaldefault 20Max results
Maximum number of results (tracks, albums, artists and playlists together) for the whole run. 0 means no limit.
searchTypeenumOptionaldefault "tracks"Search for
What the search queries return.
maxSearchResultsintegerOptionaldefault 20Max results per search query
How many matches to scrape for each search query (Spotify returns up to about 1,000).
followAlbumsbooleanOptionaldefault falseFollow albums
For artist links, also scrape every album with per-track play counts (one extra result per album).
followSinglesbooleanOptionaldefault falseFollow singles and EPs
For artist links, also scrape every single and EP.
followCompilationsbooleanOptionaldefault falseFollow compilations
For artist links, also scrape every compilation.
followPopularReleasesbooleanOptionaldefault falseFollow popular releases
For artist links, also scrape the releases Spotify lists as popular.
maxPlaylistTracksintegerOptionaldefault 1000Max tracks per playlist
Playlists longer than this are cut.
includeIsrcbooleanOptionaldefault trueAdd ISRC and popularity
Add each track's ISRC code, popularity score (0-100), performance language and the album's UPC and label. Turn off for slightly faster runs.
includePreviewUrlsbooleanOptionaldefault trueAdd 30-second preview URLs
Add the MP3 preview link for each track when Spotify has one.
saveCsvbooleanOptionaldefault trueSave PLAY_COUNTS.csv
Also save a flat CSV with one row per track (artist, album, track, play count, ISRC) to the run's key-value store.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy configuration
The scraper connects to Spotify directly and switches to this proxy automatically if Spotify rate-limits the run. Datacenter is enough.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| _type | any | Type |
| name | any | Name |
| streamCount | any | Play count |
| totalStreams | any | Total plays (album / playlist) |
| monthlyListeners | any | Monthly listeners |
| followers | any | Followers |
| worldRank | any | World rank |
| releaseDate | any | Release date |
| totalTracks | any | Tracks |
| popularity | any | Popularity |
| isrc | any | ISRC |
| url | any | Spotify URL |
| _url | any | Input |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Result | One Spotify track, album, artist or playlist saved to the dataset (with play counts for all its tracks). | $0.0025 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('echofield/spotify-scraper').call({
"urls": [
"https://open.spotify.com/album/1XkGORuUX2QGOEIL4EbJKm",
"https://open.spotify.com/artist/7Ln80lUS6He07XvHI8qqHH",
"https://open.spotify.com/track/2x8evxqUlF0eRabbW2JBJd",
"https://open.spotify.com/playlist/37i9dQZF1DXcBWIGoYBM5M"
],
"maxItems": 20,
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"DATACENTER"
]
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run echofield/spotify-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=echofield/spotify-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
Inputs the developer prepared for common jobs. Open one to see its input, then copy it to your account to run it as-is or adjust it.
An artist's albums with per-track play counts.
Tracks matching a search term with artists and popularity.
One playlist with its first 20 tracks.
Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.