# Apple Music Artist Scraper (`crawl_craft/apple-music-artist-scraper`) Actor

Paste Apple Music artist links or IDs and get one record per artist: profile and bio, top songs, albums with track counts, music videos and playlists. Bulk input, live results, export to JSON, CSV or Excel.

- **URL**: https://apify.com/crawl_craft/apple-music-artist-scraper.md
- **Developed by:** [Crawl Craft](https://apify.com/crawl_craft) (community)
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.70 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
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

### 🚀 What is Apple Music Artist Scraper?

Apple Music Artist Scraper is an Apify Actor that turns artist links or numeric artist IDs into one structured record per artist. Each record holds the profile with biography, top songs, albums and singles, music videos and playlists. Paste a list, press Start, and download the finished dataset as JSON, CSV or Excel without opening artist pages one by one.

Checking artists by hand means endless clicking. This Apple Music scraper does the lookups for you and keeps every artist in its own record, so a list of 100 artists gives you 100 records instead of thousands of loose fragments.

- **Bulk input:** paste artist links, plain IDs or a mix of both in one list, and set a default storefront for the plain IDs.
- **Live results:** the Apple Music artist tool saves each record to the dataset as soon as that artist is finished, so you can watch the run fill up.
- **Misses stay visible:** an artist that cannot be found is returned with `lookupStatus` set to `not_found` and is not charged.
- **Five ready-made views:** artists, top songs, albums, music videos and playlists each get their own table in the Output tab.
- **No login needed:** you do not need an Apple Music account or cookies. Use the Apple Music artist extractor on a short list or a long one.

### 📊 What data can you extract from Apple Music artists?

As an Apple Music data extractor, the Actor returns the fields below for every artist, ready to export as JSON, CSV or Excel. The Apple Music artist profile sits in `artist`, and the other sections are lists that can be empty when the artist page has nothing to show for them.

| Field | What it holds |
|-------|---------------|
| `lookupStatus` | `found`, `not_found` or `invalid_input`. Example value: `found`. |
| `artist` | Profile object with `artistId`, `displayName`, `profileUrl`, `artworkUrl` and `editorialNotes` (the biography). It is `null` when the artist was not found. |
| `topSongs` | Top songs shown on the artist page, each with `songId`, `title`, `artistName`, `durationMs` and `songUrl`. |
| `albums` | Albums and singles, newest year first, each with `albumId`, `title`, `subtitle` (the year), `trackCount` and `albumUrl`. |
| `musicVideos` | Music videos listed on the artist page, each with `videoId`, `title` and `videoUrl`. |
| `playlists` | Playlists featuring the artist, each with `playlistId`, `title` and `playlistUrl`. |

The Apple Music top songs scraper side of the Actor gives you the song title, duration in milliseconds and link for each top song. Used as an Apple Music discography scraper, it lists albums and singles newest first, and every album row carries a track count while `includeAlbumTrackCount` is switched on.

### 💡 Use cases for Apple Music artist data

Goal-driven teams use the Apple Music artist data scraper to answer questions that would otherwise take hours of browsing.

#### Research and discovery

- **Artist research on Apple Music:** paste a shortlist of artists and read `artist.displayName`, `editorialNotes` and the `topSongs` list side by side.
- **Music research:** collect songs, albums, videos and playlists for a group of artists and load the dataset into your own analysis.
- **Build an artist catalogue:** keep one record per artist with `artistId`, `profileUrl` and `artworkUrl` as the base of an internal catalogue.
- **Collect artist discography data:** every album and single comes with `subtitle`, `trackCount` and `albumUrl`, newest first.

#### Tracking and comparison

- **Track new music releases:** run the same artist list on a schedule and compare the `albums` list between runs to spot a new title.
- **Compare artists across countries:** change `storefront` between runs to see the same artist in different country storefronts.
- **Read the Apple Music artist bio:** `editorialNotes` holds the biography text for each found artist.
- **Music catalog enrichment:** attach `songId`, `albumId`, `videoId` and `playlistId` values to the records in your own database.

#### Catalog and data work

- **Top songs by artist:** `topSongs` lists the top songs shown on the artist page, with duration in milliseconds.
- **Music recommendation data:** use songs, albums and playlists per artist as input for recommendation or tagging experiments.
- **Artist music videos:** `musicVideos` gives titles and links for the videos listed on each artist page.
- **Playlists featuring an artist:** `playlists` shows where an artist appears, which helps with playlist discovery.

### 🛠️ How to scrape Apple Music artists

1. Log in to Apify Console, or create an account, and open **Actors**.
2. Open **Apple Music Artist Scraper**.
3. Paste artist links or numeric IDs into **Artist URLs or IDs**, one per line.
4. Choose a **Default storefront** and decide whether to switch on **Include album track counts**.
5. Click **Start** and follow the log: each finished artist shows how many songs, albums, videos and playlists it has.
6. Open the **Output** tab and switch between Artists, Top songs, Albums, Music videos and Playlists.
7. Download the dataset as JSON, CSV or Excel.

#### Run the Apple Music bulk artist scraper on a list

Put every artist on its own line in `urls`. Links and IDs can be mixed, and the same artist in the same storefront is only looked up once. Plain IDs use the value of `storefront`, while a link keeps the country code it already contains. The Apple Music artist crawler looks up only the artists you list.

#### Extract Apple Music artist data for a different country

Set `storefront` to a two-letter country code such as `gb`, `de` or `jp`. The storefront list in the input form suggests 15 common countries, and any two-letter code is accepted.

### 💰 How much does it cost to scrape Apple Music?

Apple Music Artist Scraper uses pay-per-event pricing. One result event is charged for each artist record that is found and returned, and the price per 1,000 results depends on your price tier:

| Price tier | Price per 1,000 results |
|------------|-------------------------|
| Free | $1 |
| Bronze | $0.9 |
| Silver | $0.8 |
| Gold / Platinum / Diamond | $0.7 |

On top of that, each run start is billed as an Actor Start event at $0.00005. For example, a run that returns 1,000 found artists costs $1 at the Free tier or $0.7 at the Gold, Platinum and Diamond tiers, plus the Actor Start event. Artists that are not found, invalid entries and artists that could not be loaded are not charged. See the Pricing tab for current rates.

### ⬇️ Input

The Apple Music artist info scraper needs one thing: a list of artist links or numeric artist IDs in `urls`. Each entry can point to an Apple Music artist page, such as a link that ends in the artist's number, or be the number alone.

![Apple Music artist scraper input form with artist URLs and storefront](IMAGE_URL_PLACEHOLDER)

See the Input tab for every option. This is an example input that matches the pre-filled values of the input form:

```json
{
  "urls": [
    "https://music.apple.com/us/artist/taylor-swift/159260351",
    "1419227"
  ],
  "storefront": "us",
  "includeAlbumTrackCount": true,
  "proxyConfiguration": { "useApifyProxy": false }
}
```

| Field | What it does |
|-------|--------------|
| `urls` | Required. One artist link or numeric artist ID per entry, at least one entry. |
| `storefront` | Two-letter country code used for IDs and for links that do not contain one. The default is `us`. |
| `includeAlbumTrackCount` | Fills the track count of every album. It is on by default, and turning it off makes the run faster. |
| `proxyConfiguration` | Optional proxy settings. The pre-filled setting does not use Apify Proxy. |

### ⬆️ Output

The scraped results are shown as a dataset in the **Storage** tab. The table view doesn't show **all the fields**, so export the dataset to see everything. You can export Apple Music artist data to CSV, JSON or Excel from the dataset.

![Apple Music artist data output table with artist, songs and albums](IMAGE_URL_PLACEHOLDER)

The Apple Music artist profile scraper part of the Actor puts one record in the dataset for each artist. The only example value in the dataset schema is the status of a successful lookup, so that is the example shown here:

```json
{
  "lookupStatus": "found"
}
```

The same record also carries `artist`, `topSongs`, `albums`, `musicVideos` and `playlists` as described in the field table above.

#### Apple Music artist to JSON

Download the dataset as JSON to keep the nested lists together, with songs, albums, videos and playlists inside the artist record. The Apple Music albums scraper output keeps `trackCount` as `null` when track counts are off or an album page could not be read.

#### Run summary

At the end of a normal run the Actor also stores a `RUN_SUMMARY` record in the key-value store with `totalArtists`, `returned`, `charged`, `failures` and `durationSecs`.

### ⚠️ Limitations and error handling

- Each result needs an artist link or numeric ID. A name on its own is not enough, and such an entry is returned with `lookupStatus` set to `invalid_input`.
- An ID that does not exist in the chosen storefront is returned with `lookupStatus` set to `not_found` and `artist` set to `null`. It is not charged.
- If an artist cannot be loaded at all, no record is added for it and nothing is charged. The log says so and suggests running it again later.
- If no artist is collected because the lookups failed, the run ends as failed with a short message in the status line.
- `trackCount` can be `null` when track counts are off or an album page was not available.
- Lists such as `musicVideos` or `playlists` can be empty when the artist page shows none.
- When your maximum charge per run is reached, the run stops cleanly and the log tells you to raise the maximum.

### 🔌 Integrating Apple Music Artist Scraper with other apps

You can start Apple Music Artist Scraper from the Console, run it on a schedule, trigger it through the Apify API and send finished runs to other tools with webhooks.

- Use the Apple Music scraper API call from your own code, and read the dataset items back as JSON. The API tab shows ready-made JavaScript, Python and CLI snippets, and the [Apify API reference](https://docs.apify.com/api/v2) lists every endpoint.
- Treat the Actor as an Apple Music artist API for your own app: send it a list of artists and read the records as soon as the run is done.
- Set up [schedules](https://docs.apify.com/platform/schedules) to repeat Apple Music artist data extraction every day or week with the same artist list.
- Add [webhooks](https://docs.apify.com/platform/integrations/webhooks) to get notified when a run finishes, or connect it to other tools through the [Apify integrations](https://docs.apify.com/platform/integrations).
- AI agents can find and run the Actor through the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp).

The Actor has no built-in monitor or incremental mode. To follow changes, schedule the same input and compare the datasets of two runs.

### 🔗 More Apify Actors by crawl_craft

These Actors from the same account cover other platforms and data types, and they can sit next to this one in a larger research workflow.

| Actor | What it extracts | When to use it |
|-------|------------------|----------------|
| [Apple App Store Review Scraper](https://apify.com/crawl_craft/apple-app-store-review-scraper) | Reviews for any app in every country: stars, text, app version, helpful votes and developer replies. | When you study apps instead of artists. |
| [TikTok Video Scraper](https://apify.com/crawl_craft/tiktok-video-scraper) | Captions, hashtags, views, likes, comments, shares, author and music data from TikTok videos. | When you want to see how a song or artist shows up in short videos. |
| [Instagram Reels Scraper](https://apify.com/crawl_craft/instagram-reels-scraper) | Plays, likes, comments, captions, hashtags, music and video links for Reels. | When you want social reach data for the music side of Reels. |

### ⚖️ Is it legal to scrape Apple Music?

Apple Music Artist Scraper only collects artist information that Apple Music shows publicly on its artist pages, and it does not collect private account data. The results can still contain personal data, such as an artist's name and biography text, so only collect it with a legitimate reason.

Check data protection rules such as the GDPR (Regulation (EU) 2016/679) and the terms of the site before you use the data, and ask a lawyer if you are unsure. Apify explains the topic in its article [Is web scraping legal?](https://blog.apify.com/is-web-scraping-legal/).

### ❓ FAQ

#### How do I extract Apple Music artist data in bulk?

Paste all artist links or IDs into `urls` and start the run. Every artist becomes one record, and you can extract Apple Music artist data for a long list in a single run.

#### Do I need the Apple Music API or a developer token?

No. The input has no token or key field, so you only provide artist links or IDs. You do not need an Apple Music account or cookies either.

#### How do I find Apple Music artist ID numbers?

Open the artist page and look at the end of its link, where the artist's number sits, as in the example input above. You can also run the Actor and get Apple Music artist ID values from the `artistId` field of every found record.

#### Can I scrape Apple Music artists from other countries?

Yes. Set `storefront` to another two-letter country code for plain IDs, or paste links that already contain the country you want. This is the way to scrape Apple Music artists in several storefronts and compare them.

#### Can it look up artists by name?

No. The Apple Music artist lookup works from links and numeric IDs only. An entry that is neither is returned with `lookupStatus` set to `invalid_input`.

#### Why is `trackCount` empty?

Track counts were switched off with `includeAlbumTrackCount`, or the page of that album could not be read. Turn the option on and run again.

#### Do I need a proxy?

The pre-filled setting of `proxyConfiguration` does not use a proxy. Choose one there only if you need a specific proxy for your runs.

#### What happens with a wrong ID?

The artist is returned with `lookupStatus` set to `not_found` and empty lists, and it is not charged.

#### Can I run it on a schedule?

Yes. Create a schedule in Apify Console with your artist list as input, and each run adds a new dataset you can compare with the last one.

#### Can I use it through an MCP server?

Yes. AI agents can find and run Apple Music Artist Scraper through the Apify MCP server linked in the integrations section above.

### 💬 Your feedback

Found a bug or missing a field? Open an issue from the Issues tab on the Actor page and include the run link and the artist ID. For a custom solution, write to hello.crawlcraft@gmail.com.

# Actor input Schema

## `urls` (type: `array`):

One Apple Music artist link or numeric artist ID per line. Links and IDs can be mixed, and you can add as many as you like.

## `storefront` (type: `string`):

Two-letter country code used for artist IDs and for links that do not contain one (for example us, gb, de, jp).

## `includeAlbumTrackCount` (type: `boolean`):

Fill the track count of every album. Turning this off makes the run faster.

## `proxyConfiguration` (type: `object`):

Optional proxy settings for the run. The pre-filled setting does not use Apify Proxy.

## Actor input object example

```json
{
  "urls": [
    "https://music.apple.com/us/artist/taylor-swift/159260351",
    "1419227"
  ],
  "storefront": "us",
  "includeAlbumTrackCount": true,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `artists` (type: `string`):

Artist profiles.

## `topSongs` (type: `string`):

One row per top song.

## `albums` (type: `string`):

One row per album or single.

## `musicVideos` (type: `string`):

One row per music video.

## `playlists` (type: `string`):

One row per playlist.

# 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 = {
    "urls": [
        "https://music.apple.com/us/artist/taylor-swift/159260351",
        "1419227"
    ],
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("crawl_craft/apple-music-artist-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 = {
    "urls": [
        "https://music.apple.com/us/artist/taylor-swift/159260351",
        "1419227",
    ],
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("crawl_craft/apple-music-artist-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 '{
  "urls": [
    "https://music.apple.com/us/artist/taylor-swift/159260351",
    "1419227"
  ],
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call crawl_craft/apple-music-artist-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,crawl_craft/apple-music-artist-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/2gbTK14kzUBifazKI/builds/fKwJePbTdPHSehMNL/openapi.json
