# Shazam Charts Scraper by Country, City & Genre (`trovevault/shazam-charts-by-country-city`) Actor

Export Shazam Top 200 charts for 70 countries and the world, Top 50 charts for 175 cities and genre charts, with rank movement, new entries and peak positions to spot songs people discover before streaming charts.

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

### Shazam Charts Export

Export Shazam charts for 70 countries, 175 cities and 17 genres as clean rows with rank changes, so labels, music marketers and A\&R teams can spot songs people are discovering before they reach streaming charts.

### What does Shazam Charts Scraper by Country, City & Genre do?

Shazam Charts Scraper by Country, City & Genre exports the official Shazam charts for the markets, cities and genres you choose. Shazam ranks the songs people identified most over the last 7 days, which makes it one of the earliest public signals that a song is catching on.

- Global and country Top 200: the world chart plus 70 national charts
- City Top 50: 175 cities, from Lisbon and Porto to New York City, Paris and São Paulo
- Optional genre charts: 17 global genres plus Pop, Hip-Hop/Rap and Dance in 13 countries
- Rank changes between runs, so a daily schedule shows what is rising

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

| Field | Description |
|---|---|
| `market` | Country name, or Global |
| `chart` | Top 200, Top 50 plus the city name, or a genre name |
| `rank` | Chart position |
| `change` | Positions gained since the previous chart date |
| `artist` | Artist credit, including featured artists |
| `track` | Song title |

### Can I scrape Shazam charts by city?

Yes. Shazam Charts Scraper by Country, City & Genre exports the Top 50 for any of the 175 cities Shazam publishes. Type city names such as Lisbon, Los Angeles or Lagos in the Cities field; the city's country does not need to be in Markets. City charts are where songs often appear first, days or weeks before national charts.

### How does Shazam Charts Scraper by Country, City & Genre work?

1. You pick markets, and optionally cities and genres.
2. The Actor looks up which charts exist for those markets, cities and genres.
3. It downloads each chart from Shazam's official chart export, the same file behind the Download CSV button on shazam.com.
4. Each position becomes one row with the same fields for country, city and genre charts.
5. The Actor compares each chart with the previous chart date and fills `change`.

### Why use Shazam Charts Scraper by Country, City & Genre?

| Feature | Typical Shazam scrapers | Shazam Charts Scraper by Country, City & Genre |
|---|---|---|
| City charts | Not available | 175 city Top 50 charts |
| Genre charts | Rarely available | 17 global genres plus country genres |
| Rank changes | Rank, artist and title only | Change since the previous chart date |
| Input | Country slugs typed by hand | Pick markets from a list, type cities by name |
| Markets | A few countries | 70 countries, Global, or All markets |
| Failed charts | Run fails or bills error rows | Logged in the run summary, never billed |

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

- **Early hit detection**: flag songs entering city charts before they reach the national Top 200.
- **A\&R scouting**: track independent artists climbing city and genre charts.
- **Tour and promo planning**: see which cities identify an artist's songs most and plan shows or ads there.
- **Campaign reporting**: show the daily rank of a single across markets.
- **Trend content**: feed newsletters, social posts and playlist curation with what people are discovering.

Recommendation: schedule the Actor daily. Shazam charts are rolling 7-day charts, so one run per day captures every change.

### How to use Shazam Charts Scraper by Country, City & Genre?

1. Create a free Apify account and open Shazam Charts Scraper by Country, City & Genre.
2. Pick markets, for example Global, United States and Portugal.
3. Optionally type cities, for example Lisbon or New York City.
4. Optionally pick genres in the Genres box.
5. Click Start, then download the results or schedule the run daily.

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

This Actor uses pay-per-event pricing: a small fee per run start and per chart row, and nothing for charts that fail or do not exist. A country Top 200 is 200 rows and a city Top 50 is 50 rows. Check the Pricing tab for the current price per 1,000 rows.

To save, pick specific markets and cities instead of All markets.

### Input

| Field | Description |
|---|---|
| `markets` | Country names, Global, or All markets |
| `cities` | Optional city names, matched ignoring case and accents |
| `genres` | Optional genres, such as Pop, Afrobeats or K-Pop |
| `datasetId`, `runId` | Optional Pipeline Integration fields |

```json
{
    "markets": ["Global", "Portugal"],
    "cities": ["Lisbon", "Porto"]
}
```

```json
{
    "markets": ["Global", "United States"],
    "genres": ["Afrobeats", "K-Pop", "Country"]
}
```

### Output

```json
{
    "market": "Portugal",
    "chart": "Top 50 Lisbon",
    "rank": 1,
    "change": 2,
    "artist": "HUGEL, Imael Angel & Ultra Naté",
    "track": "Movin' To The Sun"
}
```

`change` is empty on the first run and for new entries. A `RUN_SUMMARY` record lists charts that failed or were skipped, for example a genre a country does not publish.

### How to run Shazam Charts Scraper by Country, City & Genre via the API?

```bash
curl -X POST "https://api.apify.com/v2/acts/trovevault~shazam-charts-by-country-city/run-sync-get-dataset-items" \
  -H "Authorization: Bearer $APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"markets": ["Global", "United States"], "cities": ["New York City", "Los Angeles"]}'
```

### What are the limitations?

- Source: Shazam's public chart export on shazam.com. The list of countries, cities and genres is built into the Actor (captured October 2026) because shazam.com does not serve that list to cloud servers; a city Shazam adds later appears after the list is updated.
- Shazam's chart export lists rank, artist and title only; there are no Shazam counts or track IDs in the source.
- Shazam charts cover a rolling 7-day window, so day-to-day movement is smoother than on daily streaming charts.
- `change` starts filling from the second chart date, 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): compare Shazam with Spotify, Apple Music and Deezer 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
- [Deezer Top Charts by Country](https://apify.com/trovevault/deezer-charts-by-country): official Deezer charts with ISRC codes

### FAQ

#### Can I get the Shazam Top 200 for any country?

For the 70 countries Shazam publishes, plus the global chart. Countries without a Shazam chart are skipped and listed in the run summary.

#### Which cities have Shazam charts?

175 cities across countries such as the United States, Brazil, France, Germany, Portugal and Mexico. Type the city name in the Cities field.

#### How often are Shazam charts updated?

Shazam publishes each chart as a rolling 7-day ranking dated by day. Once a day suits daily tracking, and `change` compares against the previous chart date, so extra runs on the same day do not distort it.

#### Can I get historical Shazam charts?

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

#### Why use Shazam charts instead of streaming charts?

People Shazam songs they hear but do not know yet, so Shazam often shows interest before streams grow.

#### Can I use Shazam Charts Scraper by Country, City & Genre 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 Shazam Charts Scraper by Country, City & Genre through an MCP server?

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

#### Which integrations work with this Actor?

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

#### Is scraping Shazam charts legal?

The Actor reads the public chart export Shazam offers on its website and collects no personal data. Check your own use of the data against Shazam's terms.

### What problems can happen?

- **A city is skipped**: the name did not match a Shazam city. Check the spelling; the `RUN_SUMMARY` record lists every skipped name.
- **A genre is skipped for a market**: that country does not publish the genre. Global has all 17 genres.
- **`change` is empty for every row**: this is the first run for that chart, or the song is new. It fills in from the next chart date.

### Your feedback

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

# Actor input Schema

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

Shazam Top 200 markets to export. Global is the worldwide chart. Choose All markets to fetch every country Shazam publishes. Examples: Global and United States, or Portugal and Brazil. Default: Global.

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

Optional cities to export the Shazam Top 50 for, one per line. Names are matched ignoring case and accents, and the city's country does not need to be in Markets. Examples: Lisbon, New York City, Paris, São Paulo. Default: empty.

## `genres` (type: `array`):

Optional genre charts to export for each selected market that publishes them; unavailable combinations are skipped. Examples: Pop and Dance with Global, Country with United States. Default: empty.

## `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"
  ],
  "cities": [
    "Lisbon"
  ]
}
```

# 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"
    ],
    "cities": [
        "Lisbon"
    ]
};

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

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

```

## MCP server setup

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

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/yIC0FAhMHd625vOIM/builds/NrUVsjulnW9XFO7SC/openapi.json
