# Deezer Top Charts by Country (`trovevault/deezer-charts-by-country`) Actor

Export the official Deezer Top 100 chart for 70+ countries and worldwide, with ISRC codes, Deezer track IDs, popularity scores, audio previews and rank movement between runs.

- **URL**: https://apify.com/trovevault/deezer-charts-by-country.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

### Deezer Top Charts Export

Export the official Deezer Top charts for 69 countries and worldwide, with ISRC codes and rank changes between runs, for music data teams, labels and distributors.

### What does Deezer Top Charts by Country do?

Deezer Top Charts by Country exports the official "Top" chart Deezer publishes for each market, up to 100 positions. Every track comes with its ISRC code, so you can join Deezer chart positions to royalty statements, distributor reports or other platforms without fuzzy title matching.

- Worldwide chart and 69 country charts, from France, Brazil and Germany to Nigeria, Indonesia and Mexico
- ISRC code on every track, the international ID for recordings
- Rank changes between runs, so a daily schedule shows what is rising and falling
- Reads Deezer's current list of country charts on every run

### What data can you extract from Deezer charts?

| Field | Description |
|---|---|
| `market` | Country name, or Global |
| `rank` | Chart position |
| `change` | Positions gained since the previous chart |
| `artist` | Main artist |
| `track` | Track title |
| `album` | Album title |
| `isrc` | International Standard Recording Code |
| `deezerUrl` | Deezer track link |

### Can I get Deezer charts with ISRC codes?

Yes. Deezer Top Charts by Country reads the official Deezer API, which returns the ISRC of every charting track. That makes Deezer the easiest chart to join with your catalog, your distributor data, or Spotify and Apple Music data matched by ISRC.

### How does Deezer Top Charts by Country work?

1. You pick markets, including Global for Deezer's Top Worldwide chart.
2. The Actor reads the list of official "Top <Country>" charts from the Deezer Charts profile.
3. It loads each chart through the public Deezer API, with no key or login.
4. Each position becomes one row with the ISRC and the Deezer link.
5. The Actor compares each chart with its previous version and fills `change`.

### Why use Deezer Top Charts by Country?

| Feature | Typical Deezer scrapers | Deezer Top Charts by Country |
|---|---|---|
| Country charts | Global chart only, or one playlist URL at a time | 69 official country charts, or All markets |
| ISRC codes | Often missing | On every track |
| Rank changes | Rank only | Change since the previous chart |
| API limits | Runs fail when Deezer throttles | Requests are spaced and retried automatically |
| Data source | Scraped pages | Official public Deezer API |
| Failed charts | Run fails or bills error rows | Logged in the run summary, never billed |

### What can you do with Deezer chart data?

- **Royalty and catalog analytics**: join chart positions to your catalog by ISRC.
- **Market monitoring**: follow 69 markets with one consistent schema, from Algeria and Senegal to Ukraine and Venezuela.
- **Release tracking**: see when a single enters the Top 100 in each market.
- **Distributor reporting**: give artists a daily view of their Deezer chart positions.
- **Cross-platform research**: combine with Spotify, Apple Music and Shazam charts.

Recommendation: schedule the Actor daily. Repeated runs on the same chart version keep `change` stable, so extra runs do not distort it.

### How to use Deezer Top Charts by Country?

1. Create a free Apify account and open Deezer Top Charts by Country.
2. Pick markets, for example Global, France and Brazil, or All markets.
3. Click Start.
4. Download the results as JSON, CSV or Excel.
5. Schedule the run daily to build a chart history.

### How much will it cost to scrape Deezer charts?

This Actor uses pay-per-event pricing: a small fee per run start and per chart row, and nothing for charts that fail. One country's full chart is 100 rows, and All markets is about 7,000 rows. Check the Pricing tab for the current price per 1,000 rows.

### Input

| Field | Description |
|---|---|
| `markets` | Country names, Global, or All markets |
| `datasetId`, `runId` | Optional Pipeline Integration fields |

```json
{
    "markets": ["Global", "France", "Brazil", "Germany"]
}
```

```json
{
    "markets": ["Portugal"],
    "datasetId": "aBcD1234efGh5678i"
}
```

### Output

```json
{
    "market": "Global",
    "rank": 1,
    "change": 1,
    "artist": "STELLA LEFTY",
    "track": "Boston",
    "album": "Boston",
    "isrc": "QZJ842603468",
    "deezerUrl": "https://www.deezer.com/track/3895241341"
}
```

`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 Deezer Top Charts by Country via the API?

```bash
curl -X POST "https://api.apify.com/v2/acts/trovevault~deezer-charts-by-country/run-sync-get-dataset-items" \
  -H "Authorization: Bearer $APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"markets": ["Global", "France"]}'
```

### What are the limitations?

- Source: the public Deezer API and the official "Top <Country>" playlists of the Deezer Charts profile. If Deezer renames or removes one of those playlists, that market is skipped and listed in the run summary.
- Deezer charts have up to 100 positions and no stream counts.
- Deezer refreshes its charts on its own schedule, so two runs on the same day can return the same chart.
- `change` starts filling from the second chart version, because the first run has no baseline.

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

- [Cross-Platform Music Chart Tracker](https://apify.com/trovevault/cross-platform-music-chart-tracker): Deezer, Spotify, Apple Music and Shazam in one row per song
- [Spotify Daily Top 200 Charts by Country](https://apify.com/trovevault/spotify-daily-top-200-charts-by-country): daily Spotify charts with stream counts
- [Apple Music & iTunes Top Charts by Country](https://apify.com/trovevault/apple-music-itunes-charts-by-country): Apple Music and iTunes charts for 170 countries
- [Shazam Charts Scraper by Country, City & Genre](https://apify.com/trovevault/shazam-charts-by-country-city): country, city and genre discovery charts

### FAQ

#### Which countries have Deezer charts?

69 countries, including France, Germany, Brazil, Mexico, the United Kingdom, the United States, Nigeria and South Africa, plus the worldwide chart. The run summary lists any market without a chart.

#### How often are Deezer charts updated?

Deezer refreshes its charts on its own schedule. Once a day suits daily tracking, and `change` compares against the previous chart version, so extra runs on the same day do not distort it.

#### Can I get historical Deezer charts?

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

#### Does Deezer Top Charts by Country need a Deezer account or API key?

No. It reads the public Deezer API, which needs no login or key.

#### Can I match Deezer tracks to Spotify or Apple Music?

Yes, by ISRC, or use the Cross-Platform Music Chart Tracker, which matches songs across platforms for you.

#### Can I use Deezer Top Charts by Country 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 Deezer Top Charts by Country through an MCP server?

Yes. Add it to the Apify MCP server so AI agents such as Claude or ChatGPT can pull Deezer charts on demand.

#### Which integrations work with this Actor?

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

#### Is scraping Deezer charts legal?

The Actor reads Deezer's public API and public chart playlists and collects no personal data. Check your own use of the data against Deezer's terms.

### What problems can happen?

- **A market is skipped**: Deezer does not publish a chart for it. The `RUN_SUMMARY` record names the market and the reason.
- **A chart failed**: usually a temporary Deezer API limit after several retries. Run again; the failed chart is not billed.
- **`change` is empty for every row**: this is the first run for that market, or the chart is new. It fills in from the next chart version.

### Your feedback

Missing a market or field? Open an issue in the Issues tab, with the run ID if a chart failed.

# Actor input Schema

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

Deezer chart markets to export. Global is Deezer's Top Worldwide chart. Choose All markets to fetch every country chart. Examples: France and Germany, where Deezer is strongest, or Global and Brazil. Default: Global.

## `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": [
    "Global"
  ]
}
```

# 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": [
        "Global"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("trovevault/deezer-charts-by-country").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": ["Global"] }

# Run the Actor and wait for it to finish
run = client.actor("trovevault/deezer-charts-by-country").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": [
    "Global"
  ]
}' |
apify call trovevault/deezer-charts-by-country --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,trovevault/deezer-charts-by-country"
        }
    }
}
```

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/qFKvLIUu6FqkL4NqK/builds/sBUQW27ErPtrsqF75/openapi.json
