
Instagram Reel Scraper
scrape.ly/store/echofield/instagram-reel-scraperSocial mediaVideos
1 monthly user

Scrape NetEase Cloud Music (网易云音乐) charts and public playlists: ranks, rank changes, tracks, artists, albums, popularity, release dates and optional lyrics. Search playlists by keyword. No login needed.
Get the official NetEase Cloud Music (网易云音乐) charts and any public playlist as clean, ranked track data: rank and rank change, track, artists, album, popularity, release date, access type and optional lyrics. Paste chart names, playlist IDs or links, or search playlists by keyword. No login, no cookies, results in seconds.
| Field | What it does |
|---|---|
playlistIds | Playlist IDs, playlist or chart links, share links, or chart names (飙升榜, 新歌榜, 原创榜, 热歌榜, Soaring, New, Original, Hot, 韩语榜 ...) |
allToplists | Scrape every official chart (about 60 toplists) |
searchQueries | Keywords to search playlists for |
maxTracksPerPlaylist | Top N tracks of each playlist (empty or 0 = all) |
maxItems | Maximum track rows for the whole run (default 30, 0 = no limit) |
minPopularity, releasedAfter, releasedBefore | Filters on the tracks |
maxPlaylistsPerQuery | Playlists scraped per search keyword (default 5) |
includeLyrics | Add lyrics, LRC and translated lyrics |
{
"playlistIds": ["19723756", "新歌榜", "https://music.163.com/#/playlist?id=3778678"],
"maxTracksPerPlaylist": 10,
"maxItems": 30
}
One row per track of each chart or playlist, in chart order.
| Field | Description |
|---|---|
playlistName, playlistId, playlistType | Chart or playlist the row belongs to (toplist or playlist) |
rankPosition, lastRankPosition, rankChange, isNewEntry | Position now, in the previous chart edition, places gained, new on the chart |
trackId, trackName, trackAlias, trackTranslation | Track ID and titles |
artists, artistIds, artistList | Artists (pipe separated, and as a list with page links) |
albumId, albumName, albumCoverUrl, albumUrl | Album |
durationMs, duration | Length |
publishDate, publishTimeMs | Release date |
popularityScore | NetEase popularity (0-100) |
accessType, hasLossless, hasHiRes, isExplicit, mvId | Free, VIP or paid album; audio quality; explicit flag; music video |
playlistPlayCount, playlistSubscribedCount, playlistTrackCount, playlistCreator, playlistUpdatedAt, chartUpdateFrequency | Playlist stats |
addedAt, snapshottedAt, trackShareUrl | When the track was added, when it was scraped, track page |
lyrics, lyricsLrc, lyricsTranslation, isInstrumental | With Include lyrics |
{
"playlistId": 19723756,
"playlistName": "飙升榜",
"playlistType": "toplist",
"playlistUrl": "https://music.163.com/playlist?id=19723756",
"playlistCreator": "网易云音乐",
"playlistTrackCount": 100,
"playlistPlayCount": 6514980864,
"playlistSubscribedCount": 4216581,
"playlistUpdatedAt": "2026-10-21T03:46:51.816Z",
"chartUpdateFrequency": "刚刚更新",
"rankPosition": 1,
"lastRankPosition": 1,
"rankChange": 0,
"isNewEntry": false,
"trackId": 3450569159,
"trackName": "FIRESTARTER",
"durationMs": 187280,
"duration": "3:07",
"artists": "K/DA|英雄联盟|i-dle|Mimi Webb|Sophie Powers|曺薇娟|田小娟",
"artistIds": "30611063|1047337|14055085|32817039|47787223|15249075|12073588",
"albumId": 404666951,
"albumName": "FIRESTARTER",
"albumCoverUrl": "https://p1.music.126.net/9R6YxeIwMLT7nHy8W7-P-g==/109951174131850898.jpg",
"publishDate": "2026-10-17",
"trackShareUrl": "https://music.163.com/song?id=3450569159",
"isExplicit": false,
"popularityScore": 100,
"accessType": "free",
"hasLossless": true,
"mvId": 34809638,
"addedAt": "2026-10-20T00:34:53.449Z",
"snapshottedAt": "2026-10-21T05:26:48.354Z"
}
Pay per event: $0.07 per run plus $0.90 per 1,000 tracks. Lyrics add $1.00 per 1,000 tracks that have lyrics (only when Include lyrics is on). Platform usage (compute and proxy) is billed on top and is tiny for this scraper.
You set a maximum charge per run, and the scraper stops cleanly when it is reached.
Is it legal? The scraper only reads public chart and playlist pages that anyone can open without an account. Check that your use of the data respects NetEase's terms and copyright law in your country.
Do I need a NetEase account or a proxy? No account. The default datacenter proxy works; switch to residential only if your runs get blocked.
How many tracks can I get? Every track of a playlist, including playlists with 10,000 tracks. Official charts hold 10 to 200 tracks each.
Why are some fields empty? NetEase leaves some data blank: older or imported tracks often have no release date, many songs have no alias or translation, and rank change only exists for charts that publish a previous edition. New entries have no last rank.
Which charts are there? Turn on All official charts to get all of them, or use names: 飙升榜 (Soaring), 新歌榜 (New), 原创榜 (Original), 热歌榜 (Hot), plus genre and language charts such as 网易云韩语榜, 网易云日语榜, 网易云中文说唱榜, 美国Billboard榜, UK排行榜周榜, 日本Oricon榜.
Can I schedule it or use the API? Yes. Schedule daily runs to build a chart history, and start runs or read results through the API or integrations.
Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
playlistIdsarrayOptionalPlaylists or charts
Playlist IDs, playlist or chart links (e.g. https://music.163.com/#/playlist?id=3778678 or https://music.163.com/#/discover/toplist?id=19723756), share links, or official chart names (e.g. 飙升榜, 热歌榜, Hot, New, Soaring, Original). One per line.
allToplistsbooleanOptionaldefault falseAll official charts
Scrape every official NetEase chart (about 60 toplists: Soaring, New, Original, Hot, Korean, Japanese, Billboard, UK, Oricon, ACG, rap, electronic and more).
searchQueriesarrayOptionalSearch playlists by keyword
Keywords to search NetEase playlists for (e.g. 华语经典, lofi, K-pop). The top playlists of each search are scraped.
maxTracksPerPlaylistintegerOptionalMax tracks per playlist
Top N tracks of each playlist or chart, in chart order. Leave empty or 0 for every track.
maxItemsintegerOptionaldefault 30Max tracks in total
Maximum number of track rows for the whole run. 0 means no limit.
minPopularityintegerOptionalMinimum popularity
Only keep tracks with at least this NetEase popularity score (0-100).
releasedAfterstringOptionalReleased on or after
Only keep tracks published on or after this date (YYYY-MM-DD). Tracks without a publish date are skipped when a date filter is set.
releasedBeforestringOptionalReleased on or before
Only keep tracks published on or before this date (YYYY-MM-DD).
maxPlaylistsPerQueryintegerOptionaldefault 5Max playlists per search query
How many of the top search results to scrape for each keyword.
includeLyricsbooleanOptionaldefault falseInclude lyrics
Add the lyrics (plain text and time-synced LRC) and the translated lyrics when NetEase has them. Charged as an extra event per track with lyrics.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy configuration
Datacenter proxies work for NetEase Cloud Music. Switch to residential only if requests get blocked.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| playlistId | number | null | NetEase playlist ID |
| playlistName | string | null | Playlist or chart name, e.g. 飙升榜 |
| playlistType | string | null | toplist (official chart) or playlist |
| playlistUrl | string | null | Playlist page |
| playlistCoverUrl | string | null | Playlist cover image |
| playlistDescription | string | null | Playlist description |
| playlistCreator | string | null | Playlist creator nickname |
| playlistCreatorId | number | null | Playlist creator user ID |
| playlistTags | array | null | Playlist tags |
| playlistTrackCount | number | null | Tracks in the playlist |
| playlistPlayCount | number | null | Playlist play count |
| playlistSubscribedCount | number | null | Users who saved the playlist |
| playlistShareCount | number | null | Times the playlist was shared |
| playlistCommentCount | number | null | Comments on the playlist |
| playlistCreatedAt | string | null | Playlist creation time (ISO 8601) |
| playlistUpdatedAt | string | null | Last playlist update (ISO 8601) |
| chartUpdateFrequency | string | null | How often the chart updates (charts only) |
| searchQuery | string | null | Search keyword that found the playlist |
| rankPosition | number | null | Position in the playlist or chart (1 = top) |
| lastRankPosition | number | null | Position in the previous chart edition (charts only) |
| rankChange | number | null | Places gained since the previous edition (negative = dropped) |
| isNewEntry | boolean | null | New on the chart this edition |
| trackId | number | null | NetEase track ID |
| trackName | string | null | Track title |
| trackAlias | string | null | Alias titles, comma separated |
| trackTranslation | string | null | Translated title |
| durationMs | number | null | Duration in milliseconds |
| duration | string | null | Duration as m:ss |
| artists | string | null | Artist names separated by | |
| artistIds | string | null | Artist IDs separated by | |
| artistList | array | null | Artists with ID, name and page URL |
| albumId | number | null | Album ID |
| albumName | string | null | Album title |
| albumCoverUrl | string | null | Album cover image |
| albumUrl | string | null | Album page |
| publishTimeMs | number | null | Publish time (ms since epoch) |
| publishDate | string | null | Publish date (YYYY-MM-DD) |
| trackShareUrl | string | null | Track page |
| isExplicit | boolean | null | Marked explicit |
| popularityScore | number | null | NetEase popularity score (0-100) |
| accessType | string | null | free, vip or paid-album |
| hasLossless | boolean | null | Lossless (SQ) audio available |
| hasHiRes | boolean | null | Hi-Res audio available |
| mvId | number | null | Music video ID |
| addedAt | string | null | When the track was added to the playlist (ISO 8601) |
| lyrics | string | null | Lyrics as plain text (with Include lyrics) |
| lyricsLrc | string | null | Time-synced LRC lyrics (with Include lyrics) |
| lyricsTranslation | string | null | Translated lyrics (with Include lyrics) |
| isInstrumental | boolean | null | NetEase marks the track as having no lyrics (with Include lyrics) |
| snapshottedAt | string | null | When the row was scraped (ISO 8601) |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Lyrics | Lyrics added to a track (only with Include lyrics, only for tracks that have lyrics). | $0.001 |
| Track | One track row of a chart or playlist. | $0.0009 |
| Run start | Charged once when a run starts. | $0.07 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('echofield/netease-music-scraper').call({
"playlistIds": [
"19723756",
"3779629",
"3778678"
],
"maxTracksPerPlaylist": 10,
"maxItems": 30,
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"DATACENTER"
]
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run echofield/netease-music-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=echofield/netease-music-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
Inputs the developer prepared for common jobs. Open one to see its input, then copy it to your account to run it as-is or adjust it.
Chart names and a toplist link, with rank changes since the last edition.
Top tracks of the two best playlist matches for a keyword.
First 20 tracks of a popular user playlist from its music.163.com link.
Popularity of 90+ and release date filters on the Hot chart.
Track rows plus plain-text, LRC and translated lyrics.
The top track of each official NetEase chart.
Top 5 of the Korean and Japanese charts through a China residential proxy.
Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.