# Spotify Charts Scraper: Top 200 Streams, Artists & Albums (`eduair94/spotify-charts-scraper`) Actor

Spotify Charts by country: the Top 200 with daily streams, top artists and top albums, daily or weekly, plus weekly city charts. Rank change, peak and days on chart; optional play counts and genres.

- **URL**: https://apify.com/eduair94/spotify-charts-scraper.md
- **Developed by:** [Eduardo Airaudo](https://apify.com/eduair94) (community)
- **Categories:** Social media, News, Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.30 / 1,000 chart entries

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

## Spotify Charts Scraper

Spotify Charts as clean data: the Top 200 songs with their daily streams and the top artists of the world and 72 countries, and the top albums of the world and 52 of those countries, daily or weekly, plus weekly city charts. Every row is one chart entry with its rank, rank change, peak and days on chart. Run it once, schedule it as a daily chart feed, and export to JSON, CSV or Excel. No Spotify account and no API key.

> Unofficial; not affiliated with Spotify. This Actor reads the rankings shown on Spotify Charts.

### What does Spotify Charts Scraper do?

Spotify Charts Scraper exports three Spotify Charts for the markets you choose:

- **Top 200** (`top200`): the most-streamed songs of a day or a week, up to 200, each with the streams it got in that day or week (`streams`).
- **Top artists** (`topArtists`): the most-streamed artists, up to 200.
- **Top albums** (`topAlbums`): the most-streamed albums of the week, up to 200.

Smaller markets list fewer entries: on 30 October 2026 Luxembourg's Top 200 had 55 songs and its top artists chart 67 artists.

Every chart entry comes with its movement: the previous rank and the change since the previous chart, the peak position and when it was reached, when and at which rank it first entered, its status (new entry, re-entry, up, down, no change) and how many days or weeks it has spent on the chart. Songs and albums also carry their artists, label, release date, cover and Spotify link. On request, every Top 200 song gets its all-time play count and Spotify's genres, moods and tempo.

### Spotify Top 200 with daily streams

The Top 200 ranks songs by streams, and that number is in every row: on 30 October 2026 the global number one, Housewife by Tate McRae, had 6,118,911 streams in one day. Ask for `weekly` and `streams` holds the week's total instead.

Pick `global` for the worldwide chart or any of the 72 countries below, and choose how deep to go with **Max entries per chart** (`maxRowsPerChart`): 200 for the whole chart, 50 for the top 50, 10 for the top 10. Each chart is one request, so the global and US Top 200 arrive in about two seconds.

### Top artists and top albums

The top artists chart (`topArtists`) ranks artists by their streams of the day or week; Spotify Charts has it daily and weekly for the world and all 72 countries. The top albums chart (`topAlbums`) ranks albums by their weekly streams; Spotify Charts has it weekly only, so a daily run uses the latest weekly album chart and says so in its log, and only for the world and 52 of the 72 countries (the list follows the table below). Spotify gives no stream counts on these two charts, so `streams` is empty there, while every other column is filled in.

### Countries, cities and weekly charts

Enter countries in **Countries** (`countries`) by code (`US`, `gb`) or by name (`Brazil`, `México`). These 72 countries have a Top 200 and a top artists chart:

| Country | Code | Country | Code | Country | Code |
| --- | --- | --- | --- | --- | --- |
| Argentina | AR | Honduras | HN | Paraguay | PY |
| Australia | AU | Hong Kong | HK | Peru | PE |
| Austria | AT | Hungary | HU | Philippines | PH |
| Belarus | BY | Iceland | IS | Poland | PL |
| Belgium | BE | India | IN | Portugal | PT |
| Bolivia | BO | Indonesia | ID | Romania | RO |
| Brazil | BR | Ireland | IE | Saudi Arabia | SA |
| Bulgaria | BG | Israel | IL | Singapore | SG |
| Canada | CA | Italy | IT | Slovakia | SK |
| Chile | CL | Japan | JP | South Africa | ZA |
| Colombia | CO | Kazakhstan | KZ | South Korea | KR |
| Costa Rica | CR | Latvia | LV | Spain | ES |
| Czech Republic | CZ | Lithuania | LT | Sweden | SE |
| Denmark | DK | Luxembourg | LU | Switzerland | CH |
| Dominican Republic | DO | Malaysia | MY | Taiwan | TW |
| Ecuador | EC | Mexico | MX | Thailand | TH |
| Egypt | EG | Morocco | MA | Turkey | TR |
| El Salvador | SV | Netherlands | NL | Ukraine | UA |
| Estonia | EE | New Zealand | NZ | United Arab Emirates | AE |
| Finland | FI | Nicaragua | NI | United Kingdom | GB |
| France | FR | Nigeria | NG | United States | US |
| Germany | DE | Norway | NO | Uruguay | UY |
| Greece | GR | Pakistan | PK | Venezuela | VE |
| Guatemala | GT | Panama | PA | Vietnam | VN |

**Top albums** exist for the world and every country above except these 20: Bolivia, Bulgaria, Costa Rica, Egypt, El Salvador, Estonia, Greece, Honduras, Iceland, Latvia, Lithuania, Luxembourg, Morocco, Nicaragua, Paraguay, Portugal, Saudi Arabia, South Korea, United Arab Emirates and Uruguay. Their top albums are reported in ERRORS without a request and never charged; their Top 200 and top artists are delivered as usual.

**City charts.** Spotify Charts also ranks the songs of selected cities every week, such as São Paulo, Mexico City, Los Angeles and Jakarta. Enter up to 20 in **Cities** (`cities`) by name. The Actor sends the name in lower case without spaces or accents (São Paulo → `saopaulo`, Mexico City → `mexicocity`), the form Spotify Charts uses for these four; if Spotify Charts knows a city by another name, enter that name. City charts list up to 100 songs, without stream counts, and come weekly whatever **Period** says. A city Spotify Charts does not chart is reported in ERRORS and never charged.

**Weekly charts.** Set **Period** (`period`) to `weekly` for the charts of a whole week. A weekly chart covers the seven days up to its date, which is always a Thursday.

### Historical charts by date

Leave **Chart date** (`date`) empty for the latest charts, or pick a past day to get that day's charts (or, with `weekly`, that week's). Every row carries the chart's own date in `date`. When Spotify skipped the day you asked for, you get its nearest earlier chart, up to a week before, dated as such; a chart further away is not delivered and not charged.

How far back each chart goes:

| Chart | First chart |
| --- | --- |
| Top 200, daily | 1 January 2017 |
| Top 200, weekly | 29 December 2016 |
| Top albums (weekly) | 22 October 2020 |
| Top artists, daily and weekly | 21 October 2021 |

A date before a chart's first one is reported in ERRORS without a request and never charged. Some countries and the city charts start later; a date before their first chart is reported in ERRORS too.

To build a history, run the Actor once per date: a task with a different date per run, or one schedule that reads the latest chart every day.

### Schedule a daily chart export

1. Fill in your markets and charts and save the input as a task.
2. Schedule the task daily in Apify (Spotify updates the daily charts once a day).
3. Send every new dataset to Google Sheets, Slack, a webhook or your database with Apify integrations.

The latest daily chart is usually the one from two days before (on a Sunday morning the newest is Friday's), so a daily schedule always gets a new chart. If Spotify Charts stops updating a chart, the Actor refuses to deliver the stale one: a latest daily chart older than 10 days, or a weekly one older than 21 days, is reported in ERRORS and never charged.

### Input

| Field | What it does | Default |
| --- | --- | --- |
| `countries` | Markets, one per line: `global`, a 2-letter country code or a country name. Each market is one chart per chart type. | global |
| `chartTypes` | The charts to export for every market: `top200`, `topArtists`, `topAlbums`. | top200 |
| `period` | `daily` or `weekly`. Top albums and city charts are always weekly. | daily |
| `maxRowsPerChart` | Entries kept from the top of each chart, 1 to 200. | 200 |
| `cities` | Cities for their weekly Top 200, one per line, up to 20. | empty |
| `date` | A past chart date (YYYY-MM-DD); empty for the latest charts. | empty |
| `includePlayCounts` | Adds each Top 200 song's all-time play count (`playCount`). | false |
| `includeGenres` | Adds each Top 200 song's `genres`, `moods` and `tempo`. | false |

The form starts with the top 50 of the global and US Top 200; set **Max entries per chart** to 200 for the whole charts. Example input:

```json
{
    "countries": ["global", "us", "Brazil", "MX"],
    "chartTypes": ["top200", "topArtists"],
    "period": "daily",
    "maxRowsPerChart": 200,
    "cities": ["São Paulo"],
    "includePlayCounts": true
}
```

### Output

One row per chart entry, in rank order within each chart. The global Top 200 of 30 October 2026, number two, with both extras on:

```json
{
    "chartType": "top200",
    "country": "GLOBAL",
    "city": null,
    "period": "daily",
    "date": "2026-10-30",
    "rank": 2,
    "previousRank": 2,
    "rankChange": 0,
    "peakRank": 1,
    "peakDate": "2026-08-27",
    "entryRank": 189,
    "entryDate": "2026-08-12",
    "entryStatus": "NO_CHANGE",
    "appearancesOnChart": 80,
    "consecutiveAppearancesOnChart": 80,
    "streams": 5370997,
    "id": "3h5T5JypYU7huFiVYhv1dr",
    "name": "BbY WOW",
    "artists": ["KAROL G", "Judeline", "rusowsky"],
    "artistIds": ["790FomKkXshlbRYZFtlgla", "1H6X7yhnXZg73f9bssaj1Q", "1XEVu7gdRFfzEFqsPrancH"],
    "label": "Bichota/Interscope Records",
    "releaseDate": "2026-08-07",
    "imageUrl": "https://i.scdn.co/image/ab67616d00001e0221deb742375f88edfb2e7368",
    "url": "https://open.spotify.com/track/3h5T5JypYU7huFiVYhv1dr",
    "playCount": 409777638,
    "genres": ["reggaeton", "latin", "trap latino", "club"],
    "moods": ["happy", "pump up"],
    "tempo": 60,
    "scrapedAt": "2026-11-01T07:52:34.958Z"
}
```

The song entered the global chart at number 189 on 12 August 2026, reached number one on 27 August and has now been on it 80 days in a row.

| Field | Meaning |
| --- | --- |
| `chartType` | The chart: `top200`, `topArtists` or `topAlbums`. |
| `country`, `city` | The market: `GLOBAL` or a country code; for a city chart the city instead. |
| `period`, `date` | `daily` or `weekly`, and the chart's date (weekly charts are dated on a Thursday). |
| `rank` | Position on the chart. |
| `previousRank`, `rankChange` | Position on the previous chart and the places gained (negative: lost). Empty for new entries and re-entries. |
| `peakRank`, `peakDate` | Best position ever reached on this chart, and when it was first reached. |
| `entryRank`, `entryDate` | Position and date of the first appearance on this chart. |
| `entryStatus` | `NEW_ENTRY`, `RE_ENTRY`, `MOVED_UP`, `MOVED_DOWN` or `NO_CHANGE`. |
| `appearancesOnChart`, `consecutiveAppearancesOnChart` | Days (daily charts) or weeks (weekly charts) on the chart in total, and in a row. |
| `streams` | Streams in the chart's day or week (Top 200 country and global charts). |
| `id`, `name`, `url`, `imageUrl` | The song, artist or album: Spotify ID, name, Spotify link and cover or picture. |
| `artists`, `artistIds` | Credited artists of a song or album, and their Spotify IDs. |
| `label`, `releaseDate` | Record label and release date of a song or album. |
| `playCount` | With `includePlayCounts`: the song's all-time Spotify play count (empty when it did not arrive). |
| `genres`, `moods`, `tempo` | With `includeGenres`: Spotify's genre and mood descriptors of the song, strongest first, and its tempo in BPM (empty when they did not arrive). |
| `scrapedAt` | When the chart was read. |

The Output tab has three views: **Charts** (rank, song, streams and movement), **Rank movement** (where every entry came from) and **Play counts and genres** (the extras). The CSV link leaves out the `artistIds` lists.

### How much does it cost to scrape Spotify charts?

You pay per chart entry delivered. Your price follows your Apify plan:

| Apify plan | Per chart entry | Per 1,000 chart entries |
| --- | --- | --- |
| Free | $0.0005 | $0.50 |
| Bronze | $0.00045 | $0.45 |
| Silver | $0.0004 | $0.40 |
| Gold, Platinum and Diamond | $0.0003 | $0.30 |

Each run also has Apify's start fee of $0.00005 (5 thousandths of a cent), and Apify covers the first 5 seconds of every run's compute. Play counts and genres cost nothing extra. There is no monthly rental and no charge for platform usage.

| Example (Free plan) | Chart entries | Cost |
| --- | --- | --- |
| The prefilled run: top 50 of the global and US Top 200 | 100 | $0.05 + $0.00005 start |
| The global Top 200 every day for 30 days | 6,000 | $3.00 |
| The Top 200 of every market once (global and 72 countries) | up to 14,600 | up to $7.30 ($4.38 on Gold) |
| The top 10 of every market every day for 30 days | 21,900 | $10.95 |

Never charged: charts Spotify has not published, outdated charts, unknown countries and cities, dates before a chart's history, and repeated inputs. Set a maximum cost per run and the Actor stops at that amount without going over.

### FAQ

#### When are Spotify charts updated?

Daily charts once a day, each covering one day; the newest is usually two days old. Weekly charts cover the seven days up to a Thursday and appear a day or two after it. Top albums are weekly only, and so are city charts.

#### Which countries does Spotify Charts cover?

The world (`global`) and the 72 countries in the table above have a Top 200 and a top artists chart; the world and 52 of those countries also have top albums. Other countries have no chart on Spotify Charts; a code or name outside the list is reported in ERRORS and never charged.

#### Can I get the Viral 50?

No. This Actor does not offer the viral charts: it could not read current ones reliably when it was published. It offers the Top 200, the top artists and the top albums, which are updated every day or week.

#### Why is `streams` empty?

Spotify publishes stream counts only on the Top 200 of a country or of the world. City charts, the top artists and the top albums rank by streams without showing them.

#### Why are `previousRank` and `rankChange` empty?

The entry was not on the previous chart: it is a new entry (`NEW_ENTRY`) or came back (`RE_ENTRY`).

#### What does a `playCount` of 0 mean?

Fewer than 1,000 plays: Spotify shows 0 until a song passes 1,000 plays. Songs on a chart are almost always far past that, so expect large numbers here.

#### Why are `playCount` or `genres` empty?

Each song's play count, genres, moods and tempo are looked up while the chart is read. A song Spotify had none for this time gets an empty field (RUN_SUMMARY counts them in `entriesWithoutPlayCount`). When they do not arrive for a whole chart, the Actor asks for that chart again about 15 seconds later; if they still do not arrive, it delivers the chart without them and says so in the run's status and in RUN_SUMMARY (`chartsWithoutExtras` and `warnings`). Play counts and genres cost nothing extra either way.

#### What happens when Spotify has not published a chart yet?

You get the latest chart Spotify has, with its own date in `date`. A chart that has stopped updating (a daily chart more than 10 days old, a weekly one more than 21) is not delivered and not charged, and the run says why in ERRORS.

#### Do I need a Spotify account or API key?

No. You only need an Apify account. Spotify's own Web API has no charts at all.

#### Is it legal to scrape Spotify charts?

Spotify Charts rankings are aggregate figures: ranks and stream counts of songs, artists and albums, with no personal data. Check that your use of the data complies with Spotify's terms and the laws that apply to you.

### Use it from the Apify API or MCP

Start a run, wait for it and get the chart entries in one call (synchronous calls wait up to 5 minutes):

```bash
curl -X POST "https://api.apify.com/v2/acts/eduair94~spotify-charts-scraper/run-sync-get-dataset-items?maxTotalChargeUsd=1" \
  -H "Authorization: Bearer $APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"countries": ["global", "us"], "chartTypes": ["top200"], "maxRowsPerChart": 10}'
```

JavaScript, with the `apify-client` package:

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

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('eduair94/spotify-charts-scraper').call({
    countries: ['global', 'GB'],
    chartTypes: ['top200', 'topArtists'],
    period: 'weekly',
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
for (const entry of items) console.log(entry.country, entry.rank, entry.name, entry.streams);
```

Python, with the `apify-client` package:

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("eduair94/spotify-charts-scraper").call(
    run_input={"countries": ["BR", "MX"], "cities": ["São Paulo"], "includeGenres": True}
)
for entry in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(entry["date"], entry["rank"], entry["name"], entry.get("genres"))
```

AI agents can call it too: add the Actor to Apify's MCP server and ask for a country's Spotify Top 200 in plain language.

### Use cases

- **Label and artist marketing**: daily chart positions and streams of your releases in every market, straight into a dashboard or a Slack channel.
- **Chart tracking and reporting**: a dated, ready-to-chart history of the Top 200, top artists and top albums for weekly reports.
- **Music journalism**: new entries, record streams and long chart runs by country, with the numbers to back the story.
- **A\&R and trend scouting**: songs climbing city and country charts before they break globally, with their genres and moods.
- **Market research**: compare what each country streams, or how a genre performs across markets.

### Related Spotify scrapers

- [Spotify Scraper: Play Counts, Monthly Listeners & Playlists](https://apify.com/eduair94/spotify-scraper): tracks, albums, artists, playlists, lyrics and podcasts by link or keyword, with play counts on every track.
- [Spotify Play Count Scraper](https://apify.com/eduair94/spotify-play-count-scraper): stream counts for every track of an album, a playlist or an artist's whole discography.
- [Spotify Monthly Listeners Scraper](https://apify.com/eduair94/spotify-monthly-listeners-scraper): monthly listeners, followers, world rank and top cities, 50 artists per request.
- [Spotify Playlist Scraper](https://apify.com/eduair94/spotify-playlist-scraper): whole playlists with every track's play count, priced per playlist, with change tracking.
- [Spotify Artist Scraper](https://apify.com/eduair94/spotify-artist-scraper): full artist profiles with biography, social links, top tracks and related artists.

# Actor input Schema

## `countries` (type: `array`):

One market per line: `global` for the worldwide chart, a 2-letter country code such as US, GB or BR, or a country name such as Brazil. Each market gives one chart per chart type. Spotify Charts covers 72 countries with the Top 200 and the top artists, and 52 of them with the top albums (the README lists them); a chart it does not publish is reported in ERRORS and never charged.

## `chartTypes` (type: `array`):

The charts to export for every market: the Top 200 songs (with streams), the top artists and the top albums. Spotify Charts has the top albums weekly only, and for 52 of the 72 countries.

## `period` (type: `string`):

Daily charts (one per day) or weekly charts (one per week, dated on the Thursday that ends it). Top albums and city charts are always weekly.

## `maxRowsPerChart` (type: `integer`):

Entries kept from the top of each chart: 200 is the whole chart (smaller markets list fewer, city charts up to 100), 50 the top 50, 10 the top 10. You pay only for the entries delivered.

## `cities` (type: `array`):

Up to 20 cities, one per line, for their weekly Top 200 (up to 100 entries, no stream counts), such as São Paulo, Mexico City, Los Angeles or Jakarta. The name is sent in lower case without spaces or accents (saopaulo). Spotify Charts has city charts weekly only and for selected cities; one it does not chart is reported in ERRORS and never charged.

## `date` (type: `string`):

Leave empty for the latest charts. A date (YYYY-MM-DD) gives the chart of that day, or for weekly charts the chart of that week. History: the Top 200 since 2017, top albums since 2020-10-22, top artists since 2021-10-21; an earlier date is reported in ERRORS and never charged.

## `includePlayCounts` (type: `boolean`):

Add `playCount`, each song's all-time Spotify play count (streams since release, not just this chart's day or week).

## `includeGenres` (type: `boolean`):

Add `genres`, `moods` and `tempo` (beats per minute) from Spotify's own descriptors of each song.

## Actor input object example

```json
{
  "countries": [
    "global",
    "us"
  ],
  "chartTypes": [
    "top200"
  ],
  "period": "daily",
  "maxRowsPerChart": 50,
  "includePlayCounts": false,
  "includeGenres": false
}
```

# Actor output Schema

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

Every chart entry of this run, chart by chart.

## `resultsCsv` (type: `string`):

The same entries as CSV for spreadsheets, without the artist ID lists.

## `runSummary` (type: `string`):

Charts requested and delivered, chart entries delivered, failed charts and the run outcome. Failed charts are never charged.

## `errors` (type: `string`):

Each chart (or country or city entered) that delivered no entries, with the reason; written only when one failed. Never charged.

# 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 = {
    "countries": [
        "global",
        "us"
    ],
    "chartTypes": [
        "top200"
    ],
    "maxRowsPerChart": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("eduair94/spotify-charts-scraper").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 = {
    "countries": [
        "global",
        "us",
    ],
    "chartTypes": ["top200"],
    "maxRowsPerChart": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("eduair94/spotify-charts-scraper").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 '{
  "countries": [
    "global",
    "us"
  ],
  "chartTypes": [
    "top200"
  ],
  "maxRowsPerChart": 50
}' |
apify call eduair94/spotify-charts-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,eduair94/spotify-charts-scraper"
        }
    }
}
```

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/nKIwhIwugZPNWQ5wL/builds/REfipQ4MaHkiXgMLp/openapi.json
