# Cross-Platform Music Chart Tracker (`trovevault/cross-platform-music-chart-tracker`) Actor

Compare Spotify, Apple Music, Shazam and Deezer charts in one dataset: one row per song per country with its rank on each platform, a consensus rank, rank movement and signals such as songs Shazam picks up before streaming.

- **URL**: https://apify.com/trovevault/cross-platform-music-chart-tracker.md
- **Developed by:** [Trove Vault](https://apify.com/trovevault) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.85 / 1,000 songs

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### Cross-Platform Music Chart Export

Compare Spotify, Apple Music, Shazam and Deezer charts in one dataset, with one row per song per market, its rank on every platform and a combined rank, for labels, music marketers and A\&R teams.

### What does Cross-Platform Music Chart Tracker do?

Cross-Platform Music Chart Tracker fetches the current charts from four platforms for each market you pick, recognizes the same song across them, and returns one comparable row for every song that charts on at least two platforms. Instead of four spreadsheets with different spellings, you get a single table that answers "where is this song charting, and is it rising?"

- Spotify daily Top 200, with daily stream counts
- Apple Music Top 100 songs
- Shazam Top 200 of songs people identified in the last 7 days
- Deezer official Top 100
- A combined rank that weighs every platform equally, with changes between runs

### What data can you extract with Cross-Platform Music Chart Tracker?

| Field | Description |
|---|---|
| `market` | Country name, or Global |
| `rank` | Combined rank across the compared platforms |
| `change` | Combined positions gained since the previous run date |
| `artist` | Artist credit |
| `track` | Song title |
| `platforms` | Number of platforms where the song charts (2 or more) |
| `spotifyRank` | Spotify daily rank |
| `appleMusicRank` | Apple Music rank |
| `shazamRank` | Shazam rank |
| `deezerRank` | Deezer rank |
| `spotifyDailyStreams` | Spotify streams on the chart date |
| `spotifyUrl` | Spotify track link |

### Can I compare Spotify, Apple Music, Shazam and Deezer charts in one place?

Yes. That is what Cross-Platform Music Chart Tracker is built for. Pick markets and platforms, and every song gets one row with its position on each chart. Songs are matched on normalized titles and artists, so "Dracula (with JENNIE)" by Tame Impala on one platform and "Dracula" by JENNIE & Tame Impala on another become the same row.

### How does Cross-Platform Music Chart Tracker work?

1. For each market, the Actor fetches the Spotify, Apple Music, Shazam and Deezer charts in parallel.
2. Titles and artists are normalized (accents, featured artists and remaster notes removed) to match the same song across platforms. Live, remix and long versions stay separate, because they are different recordings.
3. Songs that chart on only one platform are left out, so every row is a real cross-platform comparison. Each platform scores a song from 1.0 for #1 down to near 0 for its last position, and 0 when the song is absent. The average across platforms gives the combined rank.
4. The Actor compares the combined rank with the previous run date and fills `change`.
5. Rows land in a dataset you can export or send to other tools.

### Why use Cross-Platform Music Chart Tracker?

| Feature | Single-platform chart scrapers | Cross-Platform Music Chart Tracker |
|---|---|---|
| Platforms per run | One | Spotify, Apple Music, Shazam and Deezer |
| Song matching | You match titles yourself | Built in, tolerant to credits and featured artists |
| Combined ranking | None | One rank across all platforms |
| Rank changes | Rank only, if any | Change of the combined rank between runs |
| Markets | One at a time | Many markets, Global, or All markets |
| Cost of analytics tools | Paid music analytics subscriptions | Pay per chart row |

### What can you do with cross-platform chart data?

- **Spot breakouts early**: a song high on Shazam but low or absent on Spotify is a candidate for playlist pitching or ad spend.
- **Release reports**: one table per market with every platform's rank for each priority single.
- **A\&R scouting**: filter for songs with `platforms` of 3 or more in smaller markets.
- **Market comparison**: see which platform drives a song in Brazil versus France versus the US.
- **Dashboards**: feed Google Sheets, Looker Studio or a data warehouse with a daily cross-platform table.

Recommendation: schedule Cross-Platform Music Chart Tracker daily for 3 to 10 markets.

### How to use Cross-Platform Music Chart Tracker?

1. Create a free Apify account and open Cross-Platform Music Chart Tracker.
2. Pick markets, for example Global, United States and Portugal.
3. Keep all four platforms selected, or choose the ones you follow.
4. Click Start.
5. Download the results or schedule the run daily.

### How much will it cost to track music charts across platforms?

This Actor uses pay-per-event pricing: a small fee per run start and per output row, and nothing for charts that fail. One row covers a song on every platform; a market with all four charts typically returns about 100 rows. Check the Pricing tab for the current price per 1,000 rows.

To save, select only the markets and platforms you follow.

### Input

| Field | Description |
|---|---|
| `markets` | Country names, Global, or All markets |
| `platforms` | Spotify, Apple Music, Shazam, Deezer |
| `datasetId`, `runId` | Optional Pipeline Integration fields |

```json
{
    "markets": ["Global", "United States", "Portugal"],
    "platforms": ["Spotify", "Apple Music", "Shazam", "Deezer"]
}
```

```json
{
    "markets": ["Brazil", "Mexico", "Colombia"],
    "platforms": ["Spotify", "Shazam"]
}
```

### Output

```json
{
    "market": "Global",
    "rank": 1,
    "change": 1,
    "artist": "KAROL G, Judeline, rusowsky",
    "track": "BbY WOW",
    "platforms": 3,
    "spotifyRank": 1,
    "shazamRank": 4,
    "deezerRank": 5,
    "spotifyDailyStreams": 5602174,
    "spotifyUrl": "https://open.spotify.com/track/3h5T5JypYU7huFiVYhv1dr"
}
```

A platform column only appears when that platform has a chart in the market, so Global rows have no `appleMusicRank` (Apple Music has no global chart). `spotifyDailyStreams` and `spotifyUrl` appear when the song is on Spotify. `change` is empty on the first run and for new entries. A `RUN_SUMMARY` record lists charts that failed or were skipped.

### How to run Cross-Platform Music Chart Tracker via the API?

```bash
curl -X POST "https://api.apify.com/v2/acts/trovevault~cross-platform-music-chart-tracker/run-sync-get-dataset-items" \
  -H "Authorization: Bearer $APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"markets": ["United States", "United Kingdom"], "platforms": ["Spotify", "Shazam"]}'
```

### What are the limitations?

- Sources: kworb.net for Spotify (a public mirror of Spotify's daily charts, usually one or two days behind the other platforms), Apple's public RSS feeds, Shazam's public chart export and the public Deezer API.
- Matching is based on titles and artists; rare songs with identical titles by overlapping artists can merge, and heavily retitled releases can stay apart.
- Shazam charts cover a rolling 7-day window, while the others are daily.
- `change` starts filling from the second run date, because the first run has no baseline.

### Are there other music chart tools in Apify Store?

- [Spotify Daily Top 200 Charts by Country](https://apify.com/trovevault/spotify-daily-top-200-charts-by-country): full Spotify charts with stream counts
- [Apple Music & iTunes Top Charts by Country](https://apify.com/trovevault/apple-music-itunes-charts-by-country): albums, iTunes sales and genre charts too
- [Shazam Charts Scraper by Country, City & Genre](https://apify.com/trovevault/shazam-charts-by-country-city): 175 city charts and genre charts
- [Deezer Top Charts by Country](https://apify.com/trovevault/deezer-charts-by-country): full Deezer charts with ISRC codes

### FAQ

#### Which countries does Cross-Platform Music Chart Tracker support?

Any country with at least one of the four charts. Most large markets have all four; others compare whichever platforms publish a chart there.

#### How is the combined rank calculated?

Each platform gives a song a score from 1.0 (#1) down to near 0 (last position), or 0 if absent. The average across platforms ranks the songs that chart on at least two platforms.

#### Why is a song missing that I see on Spotify?

It charts on only one of the compared platforms. Use the single-platform Actors listed above for full charts.

#### Can I get historical cross-platform charts?

The Actor exports current charts. Schedule it daily with a Target Dataset ID to build your own history.

#### Can I use Cross-Platform Music Chart Tracker with the Apify API?

Yes. Start runs and read the dataset with the Apify API or the JavaScript and Python clients, as in the curl example above.

#### Can I use Cross-Platform Music Chart Tracker through an MCP server?

Yes. Add it to the Apify MCP server so AI agents such as Claude or ChatGPT can answer questions like "what is charting in Brazil across platforms today?"

#### Which integrations work with this Actor?

Any Apify integration: Google Sheets, Slack, Zapier, Make, n8n, webhooks and LangChain.

#### Is scraping music charts legal?

The Actor reads public chart pages, feeds and APIs and collects no personal data. Check your own use of the data against each platform's terms.

### What problems can happen?

- **A platform is missing for a market**: that platform publishes no chart there (for example Apple Music for Global). The `RUN_SUMMARY` record lists it.
- **A song appears twice**: one platform lists a different version, such as a live or long version. Those are kept apart on purpose.

### Your feedback

Want another platform, such as YouTube or TikTok? Open an issue in the Issues tab.

# Actor input Schema

## `markets` (type: `array`):

Markets to compare across platforms. Global uses the Spotify, Shazam and Deezer worldwide charts (Apple Music has no global chart). Examples: Global and United States, or Portugal, Spain and France. Default: Global.

## `platforms` (type: `array`):

Charts to compare: Spotify daily Top 200, Apple Music Top 100, Shazam Top 200 and Deezer Top 100. Example: Spotify and Shazam to see which discoveries turn into streams. Default: all four.

## `datasetId` (type: `string`):

Optional Apify dataset that receives a copy of every chart row in addition to the run's default dataset. What it does: appends this run's rows to an existing dataset, so scheduled daily runs accumulate in one place. Format: pick a dataset from your account, or pass its 17-character ID (letters and digits) through the API. Examples: a dataset named music-charts-daily, or aBcD1234efGh5678i. Default: empty, which writes only to the run's default dataset.

## `runId` (type: `string`):

Optional parent Apify run ID written into every output row as the runId field. What it does: stamps each row with an upstream run identifier so results trace back through a pipeline. Format: a 17-character Apify run ID (letters and digits), found in the run URL or run detail. Examples: aBcD1234efGh5678i, or leave empty to skip. Default: empty, which leaves runId unset on output rows.

## Actor input object example

```json
{
  "markets": [
    "Portugal"
  ],
  "platforms": [
    "Spotify",
    "Apple Music",
    "Shazam",
    "Deezer"
  ]
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "markets": [
        "Portugal"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("trovevault/cross-platform-music-chart-tracker").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "markets": ["Portugal"] }

# Run the Actor and wait for it to finish
run = client.actor("trovevault/cross-platform-music-chart-tracker").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "markets": [
    "Portugal"
  ]
}' |
apify call trovevault/cross-platform-music-chart-tracker --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,trovevault/cross-platform-music-chart-tracker"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/pqRW9rtwacM5Zukxg/builds/OPeySeR0mJRiOtFWa/openapi.json
