# NetEase Cloud Music Scraper - Songs, Charts & Hot Comments (`apricot_blackberry/netease-music-scraper`) Actor

Get NetEase Cloud Music (网易云音乐) data and its legendary hot comments — the fan-culture goldmine other music scrapers skip entirely. Song search, charts, playlists, and 热评, all cookie-free with no login.

- **URL**: https://apify.com/apricot\_blackberry/netease-music-scraper.md
- **Developed by:** [Creator Fusion](https://apify.com/apricot_blackberry) (community)
- **Categories:** Social media, AI, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.00 / 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.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## NetEase Cloud Music Scraper — Songs, Charts & Hot Comments

**Cookie-free NetEase Cloud Music / 网易云音乐 scraper.** Four modes:

1. **Top charts** — pull NetEase's toplists (飙升榜, 热歌榜, 新歌榜, …). No input, no login.
2. **Search** — songs, artists, albums by keyword.
3. **Song details** — full metadata by song id or URL, optionally with **hot comments (热评)**.
4. **Playlist details** — playlist metadata + its track list.

The **hot comments** are the headline feature — NetEase's comment culture is legendary, and the top comments on a popular song rack up hundreds of thousands of likes. That's rich sentiment / fan-culture data most music scrapers never touch.

No account, no session cookie, no CAPTCHA. Typed JSON, one dataset per run.

### Quick start

Top charts (just press Start):

```json
{}
```

Search + hot comments:

```json
{ "keywords": ["周杰伦"], "includeComments": true }
```

### Output (by rowType)

- **chart**: `chartId`, `name`, `description`, `updateFrequency`, `playCount`, `trackCount`, `url`.
- **song / playlist-track**: `songId`, `name`, `artists[]`, `album`, `durationMs`, `cover`, `url`.
- **playlist**: `playlistId`, `name`, `creator`, `trackCount`, `playCount`, `subscribedCount`, `url`.
- **comment**: `songId`, `user`, `likedCount`, `content`, `time`.

### Why this one

- **Cookie-free** — pure public-API extraction, no login token.
- **Hot comments included** — unique, high-engagement Chinese-language sentiment data.
- **Agent-ready** — `rowType` discriminator on every row + a SUMMARY in the key-value store.
- **Self-healing** — direct first (free); on rate-limit/failure it retries through Apify residential proxy with a fresh rotating session before giving up, so proxy is billed only when needed.

***

### 中文说明（网易云音乐数据采集）

**无需登录 Cookie 的网易云音乐采集工具：**

1. **排行榜** — 拉取飙升榜、热歌榜、新歌榜等，无需任何输入。
2. **搜索** — 按关键词搜歌曲、歌手、专辑。
3. **歌曲详情** — 按歌曲 id 或链接获取完整信息，可选附带**热评**。
4. **歌单详情** — 歌单信息 + 歌曲列表。

**热评**是核心亮点——网易云的评论文化独一无二，热门歌曲的热评点赞常达数十万，是极佳的中文情感/粉丝文化数据。

```json
{ "keywords": ["邓紫棋"], "includeComments": true }
```

Apify 平台在中国大陆及台湾地区可正常访问，每月 $5 免费额度，无需信用卡即可试用。

***

### For AI agents

```bash
curl -X POST "https://api.apify.com/v2/acts/apricot_blackberry~netease-music-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" -d '{}'
```

Empty input returns the top charts (never an error). Filter on `rowType` (`chart` / `song` / `playlist` / `playlist-track` / `comment`).

### Honest limits

- Song **audio/download URLs** require NetEase's encrypted `weapi` and are not included — this Actor returns metadata, charts, playlists, and comments.
- Age-restricted or region-locked tracks may return partial metadata.

# Actor input Schema

## `mode` (type: `string`):

Auto-detected: keywords -> search; song ids/URLs -> song details; playlist ids/URLs -> playlist details; nothing -> top charts.

## `keywords` (type: `array`):

Song, artist, or album keywords to search for.

## `songIds` (type: `array`):

NetEase song ids or URLs, e.g. https://music.163.com/song?id=347230

## `playlistIds` (type: `array`):

NetEase playlist ids or URLs, e.g. https://music.163.com/playlist?id=3778678

## `includeComments` (type: `boolean`):

For search/song modes, also pull each song's hot comments (nickname, like count, content) — NetEase's famous comment culture.

## `maxComments` (type: `integer`):

Cap on comments per song when comments are enabled.

## `maxItems` (type: `integer`):

Cap on rows per run.

## `delayBetweenRequests` (type: `integer`):

Pause between API calls.

## `navigationTimeoutMs` (type: `integer`):

Per-request timeout in milliseconds.

## `maxProxyRetries` (type: `integer`):

If a direct request fails or is rate-limited, retry through Apify residential proxy with a fresh rotating session, up to this many times, before giving up. 0 disables proxy fallback.

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

Self-healing: DIRECT first (free), then Apify residential proxy with a fresh rotating session only if a request fails — so you pay for proxy only when it's needed. Set your own proxy here to override. Proxy data is billed to your Apify account.

## Actor input object example

```json
{
  "keywords": [
    "周杰伦"
  ],
  "songIds": [],
  "playlistIds": [],
  "includeComments": false,
  "maxComments": 20,
  "maxItems": 100,
  "delayBetweenRequests": 500,
  "navigationTimeoutMs": 25000,
  "maxProxyRetries": 3
}
```

# 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 = {
    "keywords": [
        "周杰伦"
    ],
    "songIds": [],
    "playlistIds": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("apricot_blackberry/netease-music-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 = {
    "keywords": ["周杰伦"],
    "songIds": [],
    "playlistIds": [],
}

# Run the Actor and wait for it to finish
run = client.actor("apricot_blackberry/netease-music-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 '{
  "keywords": [
    "周杰伦"
  ],
  "songIds": [],
  "playlistIds": []
}' |
apify call apricot_blackberry/netease-music-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,apricot_blackberry/netease-music-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/OosohmxvzWr7xYupM/builds/cOIGFupmydXsvNTUK/openapi.json
