Spotify Track Play Count Scraper avatar

Spotify Track Play Count Scraper

Pricing

Pay per event

Go to Apify Store
Spotify Track Play Count Scraper

Spotify Track Play Count Scraper

🎵 Get exact Spotify track stream counts from public artist, album, and track URLs. Export timestamped rows for release velocity, catalog analysis, and scheduled monitoring—no Spotify API key or login.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

18 hours ago

Last modified

Categories

Share

Extract exact cumulative Spotify play counts from public artist, album, and track URLs.

Spotify Track Play Count Scraper turns each track into a clean, timestamped row for stream monitoring, release analysis, catalog reporting, and scheduled snapshots—without a Spotify developer key or account login.

Paste a Spotify URL, run the Actor, and export the result as JSON, CSV, Excel, XML, or HTML.

  • 🎵 Exact per-track playCount, not an estimate
  • 💿 Artist, album, and individual track URL support
  • ⏱️ One observedAt timestamp for each run snapshot
  • 🧭 Track, album, and artist IDs plus canonical links
  • 🔐 Public data workflow with no user credentials
  • 🔁 Deduplicated output ready for daily or weekly monitoring

What does Spotify Track Play Count Scraper do?

The Actor reads public Spotify catalog URLs and emits one dataset row per track.

For an album URL, it returns the album's track list and exact count for every track.

For a track URL, it resolves the track's album context and returns only the requested track.

For an artist URL, it expands a bounded number of recent albums and optional singles, then returns their track counts.

Every result includes the IDs and names needed to match the same track in a later run.

That makes the output suitable for stream-delta calculations rather than one-off visual inspection.

Who is this Spotify stream count extractor for?

Record labels and distributors

  • 📈 Compare release velocity across singles and albums.
  • 🗓️ Schedule daily snapshots for launch-week reporting.
  • 🧾 Join Spotify IDs to internal catalog or royalty systems.

Artists and managers

  • 🎤 Track how a new release grows between checkpoints.
  • 💡 Find catalog tracks that accelerate after campaigns or placements.
  • 📊 Build simple progress dashboards without manual copying.

Music marketers

  • 📣 Measure count movement around ads, influencer campaigns, and press.
  • 🔎 Compare the response of several promoted tracks.
  • 🧪 Export repeatable observations for campaign attribution analysis.

Chart, royalty, and catalog analysts

  • 🧮 Compute stream deltas from exact cumulative observations.
  • 🧩 Match records by stable Spotify track and artist IDs.
  • 🏷️ Retain content rating, duration, ordering, and playability context.

Why use this Actor?

Spotify's official Web API provides rich catalog metadata but does not expose the exact cumulative play count shown by Spotify's own public client surfaces.

This Actor focuses on that missing metric.

It avoids estimates, popularity-score conversions, and fabricated counts.

If Spotify stops returning a numeric count or changes its public response shape, the Actor reports a clear extraction failure instead of silently guessing.

Other practical benefits include:

  • ⚡ HTTP-first execution with low memory requirements
  • 🔁 Bounded artist expansion for predictable runs
  • 🧹 Global track deduplication across overlapping inputs
  • 🧰 Standard Apify API, schedules, webhooks, and integrations
  • 📦 Consistent flat records for BI tools and spreadsheets

What Spotify data can I extract?

FieldTypeDescription
sourceTypestringInput entity type: artist, album, or track
sourceUrlstringCanonical input Spotify URL
albumIdstringSpotify album ID
albumNamestringAlbum or release name
albumUrlstringCanonical Spotify album URL
trackIdstringStable Spotify track ID
trackNamestringTrack title
trackUrlstringCanonical Spotify track URL
primaryArtistIdstringFirst credited artist ID
primaryArtistNamestringFirst credited artist name
artistIdsarrayIDs of all credited artists
artistNamesarrayNames of all credited artists
playCountnumberExact cumulative play count observed
discNumbernumberDisc position
trackNumbernumberTrack position on the disc
durationMsnumberDuration in milliseconds
contentRatingstringSpotify content label, such as EXPLICIT or NONE
isExplicitbooleanConvenient explicit-content flag
isPlayablebooleanWhether Spotify marks the track playable
observedAtstringUTC ISO timestamp of the snapshot

How to scrape Spotify play counts

  1. Open the Actor input page.
  2. Add one or more public Spotify artist, album, or track URLs.
  3. Keep maxTracks low for the first run.
  4. For artist URLs, select how many recent releases to inspect.
  5. Choose whether to include singles.
  6. Click Start.
  7. Review the Track play counts dataset view.
  8. Export the dataset or connect a webhook, API client, or integration.

A small album normally completes in seconds.

Large artist snapshots take longer because each selected release is inspected separately.

Input parameters

spotifyUrls

Required list of 1–20 URLs from open.spotify.com.

Supported examples:

https://open.spotify.com/album/1XkGORuUX2QGOEIL4EbJKm
https://open.spotify.com/artist/1Xyo4u8uXC1ZmMpatF05PJ
https://open.spotify.com/track/7MXVkk9YMctZqd1Srtv4MB

Playlist, episode, show, user, shortened, and non-Spotify URLs are rejected.

maxTracks

Global cap on unique output rows.

Default: 100.

Use 20 for a cheap first album test and raise it for catalogs.

maxAlbumsPerArtist

Maximum recent album/single releases inspected for each artist URL.

Default: 3; maximum: 20.

includeSingles

When enabled, artist expansion includes singles as well as albums.

Default: true.

Input example

{
"spotifyUrls": [
"https://open.spotify.com/artist/1Xyo4u8uXC1ZmMpatF05PJ"
],
"maxAlbumsPerArtist": 3,
"includeSingles": true,
"maxTracks": 50
}

For one exact track lookup:

{
"spotifyUrls": [
"https://open.spotify.com/track/7MXVkk9YMctZqd1Srtv4MB"
],
"maxTracks": 1
}

Output example

{
"sourceType": "album",
"sourceUrl": "https://open.spotify.com/album/1XkGORuUX2QGOEIL4EbJKm",
"albumId": "1XkGORuUX2QGOEIL4EbJKm",
"albumName": "Favourite Worst Nightmare",
"albumUrl": "https://open.spotify.com/album/1XkGORuUX2QGOEIL4EbJKm",
"trackId": "7f9I5WdyXm5q1XqnSYgQZb",
"trackName": "Brianstorm",
"trackUrl": "https://open.spotify.com/track/7f9I5WdyXm5q1XqnSYgQZb",
"primaryArtistId": "7Ln80lUS6He07XvHI8qqHH",
"primaryArtistName": "Arctic Monkeys",
"artistIds": ["7Ln80lUS6He07XvHI8qqHH"],
"artistNames": ["Arctic Monkeys"],
"playCount": 316003496,
"discNumber": 1,
"trackNumber": 1,
"durationMs": 172866,
"contentRating": "NONE",
"isExplicit": false,
"isPlayable": true,
"observedAt": "2026-07-19T02:00:00.000Z"
}

Play counts change continuously, so the example count is illustrative.

How much does it cost to scrape Spotify play counts?

The Actor uses pay-per-event pricing:

  • A $0.005 one-time start event covers fixed session bootstrap.
  • Each unique track row costs $0.00007793 on FREE, $0.000067765 on BRONZE, $0.000052857 on SILVER, $0.000040659 on GOLD, $0.000027106 on PLATINUM, or $0.000018974 on DIAMOND.
  • Subscription-tier discounts are applied automatically.

At BRONZE pricing, a 12-track album costs about $0.00581 ($0.005 start plus 12 track events). A 100-track snapshot costs about $0.01178.

For cost control, use a single track or small album first.

The default input caps output at 20 tracks in the prefilled example.

Apify's free plan can be used for small evaluations subject to the current platform allowance.

Monitoring Spotify stream growth

A play count is cumulative.

To calculate growth, schedule the Actor and compare two observations with the same trackId:

streamDelta = current.playCount - previous.playCount

You can also calculate average velocity:

streamsPerHour = streamDelta / hoursBetweenObservations

Store each run's dataset in your warehouse or send it through a webhook.

Use observedAt rather than the run start shown in an external scheduler, because observedAt is attached directly to every result.

Artist catalog behavior

Artist URLs intentionally use bounded expansion.

Spotify artists may have many albums, deluxe editions, compilations, and singles.

maxAlbumsPerArtist keeps runtime and output predictable.

The Actor processes albums first, then singles when enabled, and deduplicates release and track IDs.

If you need one historical album, pass that album URL directly instead of increasing the artist limit.

Tips for reliable results

  • ✅ Use canonical open.spotify.com links copied from Spotify.
  • ✅ Start with one URL before submitting a batch.
  • ✅ Use track URLs for exact single-record monitoring.
  • ✅ Use album URLs when release completeness matters.
  • ✅ Keep artist release limits focused on the campaign period.
  • ✅ Join snapshots by trackId, not by title alone.
  • ✅ Treat counts from different observedAt timestamps as separate observations.
  • ❌ Do not send playlist or podcast URLs; they are outside this Actor's scope.

Apify API with cURL

Start a run:

curl -X POST \
"https://api.apify.com/v2/acts/automation-lab~spotify-track-play-count-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"spotifyUrls": ["https://open.spotify.com/track/7MXVkk9YMctZqd1Srtv4MB"],
"maxTracks": 1
}'

Fetch dataset items after the run succeeds:

$curl "https://api.apify.com/v2/datasets/DATASET_ID/items?clean=true&format=json"

Apify API with JavaScript

Install the client:

$npm install apify-client

Run the Actor:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/spotify-track-play-count-scraper').call({
spotifyUrls: ['https://open.spotify.com/album/1XkGORuUX2QGOEIL4EbJKm'],
maxTracks: 20,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Apify API with Python

Install the client:

$pip install apify-client

Run and read results:

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('automation-lab/spotify-track-play-count-scraper').call(run_input={
'spotifyUrls': ['https://open.spotify.com/track/7MXVkk9YMctZqd1Srtv4MB'],
'maxTracks': 1,
})
items = list(client.dataset(run['defaultDatasetId']).iterate_items())
print(items)

Integrations and automation workflows

Google Sheets and Airtable

Schedule daily runs, then send rows to a sheet keyed by trackId and observedAt.

Use a pivot table or formula to calculate changes between snapshots.

Make and Zapier

Trigger the Actor from a release-tracking scenario.

Send tracks whose delta exceeds a threshold to Slack, email, or a campaign dashboard.

Webhooks and data warehouses

Attach an Apify run-succeeded webhook.

Load the dataset into BigQuery, Snowflake, PostgreSQL, or S3 for long-term history.

Tableau, Power BI, and Looker Studio

Read clean CSV/JSON exports and chart play-count velocity by release, artist, or campaign window.

Use with Apify MCP and AI assistants

Connect the Actor to Claude Code:

$claude mcp add --transport http apify "https://mcp.apify.com?tools=automation-lab/spotify-track-play-count-scraper"

For Claude Desktop, Cursor, or VS Code, add this MCP server configuration:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=automation-lab/spotify-track-play-count-scraper"
}
}
}

Example prompts:

  • “Get the exact Spotify play counts for every track on this album URL.”
  • “Snapshot the newest three releases for this artist and sort tracks by play count.”
  • “Look up this track's current count and format the result for my monitoring table.”
  • “Compare this dataset with yesterday's snapshot by Spotify track ID.”

Scheduling daily or weekly snapshots

Create an Apify schedule with stable input URLs and limits.

Daily schedules work well for active launches.

Weekly schedules are often sufficient for back-catalog monitoring.

Keep the input unchanged when you want clean time-series comparisons.

If you alter artist release limits, record that change in your downstream pipeline because the observed catalog set may change.

Data quality and limitations

Counts come from Spotify's current public web-client data surface.

They are observations, not royalty statements and not predictions.

Spotify can update counts at its own cadence.

Regional playability may vary.

Artist expansion is bounded and does not claim to retrieve an unlimited full discography.

Persisted web-client operations are undocumented and can change.

The Actor detects missing response branches and invalid counts so failures are visible.

This Actor accesses public catalog information without logging into a user account.

Web scraping laws and contractual requirements vary by country and use case.

You are responsible for using the data lawfully, respecting applicable terms, protecting personal data, and avoiding harmful or excessive automation.

Do not use the Actor to download audio, bypass access controls, impersonate users, or interfere with Spotify's service.

When in doubt, consult qualified legal counsel.

Troubleshooting

Why did my URL fail validation?

Use a full https://open.spotify.com/artist/..., /album/..., or /track/... URL.

Playlist, shortened, URI-only, and non-Spotify links are not accepted.

Why did an artist return fewer releases than expected?

Check maxAlbumsPerArtist, includeSingles, and maxTracks.

For a specific older release, submit its album URL directly.

Why did the run report Pathfinder compatibility failure?

Spotify may have changed an undocumented public query or response schema.

Retry once with a canonical URL.

If the error continues, share the run with the Actor developer so the operation can be updated; the Actor deliberately does not estimate missing counts.

Why are two play-count snapshots different?

Spotify play counts are cumulative and can update between runs.

Use observedAt to order observations and compute deltas.

FAQ

Does the Actor need a Spotify API key?

No. It bootstraps an anonymous public Spotify session.

Does it require a Spotify account or cookies?

No user login or private cookie is required.

Are play counts exact or estimated?

The playCount value is the exact numeric value returned by Spotify's public web client at observation time.

Can it scrape playlists?

No. This focused Actor supports artist, album, and track URLs.

Can it monitor several artists?

Yes. Add up to 20 supported source URLs and set a sensible global maxTracks cap.

Does it save historical data automatically?

Each run creates a timestamped snapshot dataset.

Use Apify schedules and a downstream sheet, database, or warehouse to retain and compare snapshots.

Can I export to Excel or CSV?

Yes. Apify datasets support Excel, CSV, JSON, XML, and HTML exports.

Start tracking Spotify play counts

Add a Spotify track for a one-row lookup, an album for complete release counts, or an artist for a bounded recent-catalog snapshot.

Start small, verify the rows, then schedule the same input to measure stream growth over time.