Spotify Charts Scraper - Weekly Top Songs, Albums & Artists avatar

Spotify Charts Scraper - Weekly Top Songs, Albums & Artists

Pricing

$1.50 / 1,000 chart entry trackeds

Go to Apify Store
Spotify Charts Scraper - Weekly Top Songs, Albums & Artists

Spotify Charts Scraper - Weekly Top Songs, Albums & Artists

Get Spotify's official Global Weekly charts as JSON: top songs, top albums and top artists with current rank, previous rank, entry status and Spotify IDs, plus changes since your last run. For labels, artist managers, marketers and music researchers. $0.0015 per chart.

Pricing

$1.50 / 1,000 chart entry trackeds

Rating

0.0

(0)

Developer

SR

SR

Maintained by Community

Actor stats

0

Bookmarked

36

Total users

5

Monthly active users

15 days ago

Last modified

Share

Spotify Charts Scraper: Global Weekly Top Songs, Albums and Artists

This Spotify charts scraper returns the official Global Weekly charts as structured JSON: the top songs, top albums and top artists, each with current rank, previous rank and entry status. Use it to track weekly music rankings, feed a dashboard, or join chart entries to other music data through Spotify identifiers. You do not need a Spotify account or API key.

Which Spotify charts are available?

The available aliases are REGIONAL_GLOBAL_WEEKLY for songs, ALBUM_GLOBAL_WEEKLY for albums and ARTIST_GLOBAL_WEEKLY for artists. The public catalog contains these three global weekly charts. Country charts, city charts, daily charts and historical date selection are not available through this actor. The date field tells you which chart week Spotify returned; fetched_at tells you when the actor collected it. These dates describe different events and should be stored separately.

The default editor input selects the songs chart. Select all three aliases if you want the complete available catalog. Each chart contained 50 entries in the captured response, so a songs run gives you the weekly global top 50. Entry counts come from Spotify and can change; the actor does not invent missing positions or extend a list with unrelated tracks.

Use cases for Spotify charts data

  • Music marketing and labels: see every week which releases entered the global top songs and albums, which artists climbed, and which dropped out.
  • Artist managers and A&R: watch a roster on the artist chart and react when an artist enters or leaves it.
  • Dashboards and newsletters: schedule a weekly run and publish the new chart with rank movements, without copying anything by hand.
  • Research and data journalism: build your own history of the global charts by storing each weekly dataset, then join entries to other sources by Spotify ID.
  • Playlist curators: compare your playlists with what is charting globally right now.

Input

FieldTypeDefaultMeaning
onlyArray of stringsRequired; editor prefill selects songsChart aliases to include
trackDiffsBooleantrueCompare each chart with its preceding saved snapshot

This is the actual input from a successful run collecting all three charts:

{
"only": ["REGIONAL_GLOBAL_WEEKLY", "ALBUM_GLOBAL_WEEKLY", "ARTIST_GLOBAL_WEEKLY"],
"trackDiffs": false
}

Aliases are case sensitive. Leading and trailing spaces are removed. Repeating an alias does not create duplicate rows, and changing input order does not change output order: songs come first, then albums, then artists. An alias with no matching chart produces no row. If every requested alias is unavailable, the run succeeds with an empty dataset and an error record explaining that no charts were returned. Apify requires a non-empty only list before starting a run.

Output

Every dataset row retains the chart's chart_uri, chart_alias, title, description, entity_type, country, chart_type, recurrence, genre, city, date, latest_date and earliest_date. The entries array contains the list's actual contents. Additional fields are chart_id, the identifier from the chart URI; entry_count, the number of nested entries; and fetched_at, the collection time in UTC. For consistent data integrations, rows also expose source, platform, playlist_id, name and track_count.

This is a real dataset row from a run that collected all three charts. The entries array is shortened to its first song here; the full row held 50 entries:

{
"chart_uri": "spotify:chart:7zE64clO2DB2y74QymNWRn",
"chart_alias": "REGIONAL_GLOBAL_WEEKLY",
"title": "Weekly Top Songs: Global",
"description": "Your weekly update of the most played tracks right now.",
"entity_type": "track",
"country": "GLOBAL",
"chart_type": "TOP_TRACK",
"recurrence": "WEEKLY",
"genre": null,
"city": null,
"date": "2026-10-01",
"latest_date": "2026-10-01",
"earliest_date": "2016-12-29",
"entries": [
{
"position": 0,
"current_rank": 1,
"previous_rank": -1,
"peak_rank": 0,
"appearances_on_chart": 0,
"consecutive_appearances": 0,
"entry_status_raw": "NEW_ENTRY",
"entry_status": "new",
"uri": "spotify:track:11hcBLPtbMp4aQI6zGQLub",
"id": "11hcBLPtbMp4aQI6zGQLub",
"name": "Patient Zero",
"image_url": "https://i.scdn.co/image/ab67616d00001e02cf3de6b538d8b1ed73a4d5d1",
"artists": [
{
"name": "Taylor Swift",
"uri": "spotify:artist:06HL4z0CvFAxyc27GXpf02",
"id": "06HL4z0CvFAxyc27GXpf02"
}
],
"release_date": null,
"labels": []
}
],
"chart_id": "7zE64clO2DB2y74QymNWRn",
"entry_count": 50,
"fetched_at": "2026-10-02T22:58:36.178Z",
"source": "spotify-charts",
"platform": "spotify",
"playlist_id": "7zE64clO2DB2y74QymNWRn",
"name": "Weekly Top Songs: Global",
"track_count": 50
}

An entry from the artist chart in the same run has no song-specific fields:

{
"position": 0,
"current_rank": 1,
"previous_rank": 3,
"peak_rank": 0,
"appearances_on_chart": 0,
"consecutive_appearances": 0,
"entry_status_raw": "MOVED_UP",
"entry_status": "moved_up",
"uri": "spotify:artist:06HL4z0CvFAxyc27GXpf02",
"id": "06HL4z0CvFAxyc27GXpf02",
"name": "Taylor Swift",
"image_url": "https://i.scdn.co/image/ab6761610000517412184bdd29403de54cb9d9c7"
}

Each entry includes position, current_rank, previous_rank, peak_rank, appearances_on_chart, consecutive_appearances, entry_status_raw, entry_status, uri, id, name and image_url. Positions start at zero, while current ranks start at one. A previous rank of -1 is a source value for an entry without a previous rank. Song and album entries also include an artists list and release_date; song entries add labels. Artist-chart entries do not acquire those song-specific fields.

The anonymous catalog currently returns zero for peak rank and appearance counters, null for release dates, and empty label lists. These are preserved source values, not verified historical counts. Do not interpret a zero appearance counter as proof that a song has never appeared on a chart.

The actor derives entry_status from Spotify's status and rank movement. It preserves new entries and re-entries, and distinguishes climbers, fallers, smaller upward and downward moves, and unchanged entries. The original status remains in entry_status_raw so you can choose your own classification later.

Changes between runs

With trackDiffs: true, each chart has a diff object. It contains prev_snapshot_id, latest_snapshot_id, is_first_snapshot, added, removed, moved and a summary of added, removed, moved and unchanged entries. Each change identifies the item and its previous and new zero-based positions. Position deltas are new position minus old position; a negative delta means movement toward the top.

The first snapshot lists all entries as added. Every later run compares against the previous saved snapshot for that chart. Running twice within the same chart week can therefore produce a diff with no changes. The comparison is between consecutive runs, not automatically between different chart weeks. Turning tracking off removes the diff field and leaves the saved comparison history untouched.

How this compares to other Spotify chart tools

Most Spotify scrapers in the Store collect artists, playlists or tracks, and treat charts as a side feature. Some chart actors read third-party aggregator sites instead of Spotify's own chart catalog, or charge per song, so one top 50 costs fifty results. This actor reads the official Global Weekly charts, keeps Spotify's chart and entry identifiers, and charges once per chart. It also adds a built-in comparison between runs, so you do not have to store and diff earlier results yourself. If you need daily charts or a specific country, this actor does not provide them; it focuses on the three global weekly charts and returns them complete.

Pricing

The price is $0.0015 per delivered chart row. One songs chart with 50 nested entries is one billable result. All three charts are three results, costing $0.0045 for actor events. The event is named chart_entry, but its quantity follows chart rows, not nested songs. Empty datasets incur no result charge. Apify platform usage is billed separately according to your account plan.

Free-plan runs can deliver up to ten chart rows. The current catalog has only three, so this limit does not reduce the available charts. Paying users retain the same chart selection and result shape.

FAQ

Can I collect daily or country-specific charts?

The available public catalog contains the three Global Weekly aliases listed above. Other aliases do not produce regional or daily data. Check the returned country, recurrence and date before combining these rows with other datasets.

Is a result one song or an entire chart?

A dataset row and billable result are an entire chart. Songs, albums or artists remain inside its entries array. Flatten the array in your own analysis if you want one analytical row per ranked item.

Why are some rank-history fields zero?

The anonymous source leaves those counters at zero. The actor preserves them without claiming they are complete historical measurements. Current and previous ranks, the original entry status, and your own saved snapshots provide separate change signals.

Do I need a Spotify account or API key?

No. The actor reads the public chart catalog. You only need an Apify account to run it, either from the Store page or through the Apify API.

How often are the Spotify charts updated?

The global weekly charts change once a week. Running the actor more often returns the same chart week, which you can verify in the date field. A weekly schedule is usually enough.

Can I download the results?

Use the Apify dataset to download JSON, JSONL, CSV or Excel, or read the dataset through the Apify API. JSON keeps nested entries and diffs together; CSV workflows generally need a separate flattening step for those arrays.