NetEase Music Scraper
Pricing
from $3.00 / 1,000 results
NetEase Music Scraper
Scrape NetEase Cloud Music (music.163.com) without login - search song suggestions, fetch songs by URL, artist top songs, browse playlists, and pull top-100 charts with cover art and full metadata.
Pricing
from $3.00 / 1,000 results
Rating
0.0
(0)
Developer
Crawler Bros
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Scrapes NetEase Cloud Music (网易云音乐) — China's largest music streaming platform — without login.
Data source
Music data and lyrics come from the public NetEase Cloud Music web endpoints (music.163.com /api/...) — no login, no API key. See the Notes section for endpoint-level caveats.
What it does
| Mode | Endpoint (public, no auth) | Output |
|---|---|---|
search | /api/search/get?type=1&s=&limit=&offset= | Song search (paginated, deduped) |
bySongUrl | /api/song/detail/?id=&ids= (+ optional LRC lyric) | Full song record incl. popularity, score, mv id |
byArtist | /api/artist/top/song?id=&offset= | Artist top songs (paginated) |
byArtistAlbums | /api/artist/albums/{id}?limit=&offset= | Artist album discography (paginated) |
byPlaylist | /api/playlist/list?cat=&order=&offset= | Playlist browse (paginated) |
byToplist | /api/toplist/detail + /api/playlist/detail?id= | Chart summary + top-100 tracks |
All endpoints verified live (HTTP 200 with real content) from a datacenter network. The web search endpoint /api/search/get/web returns AES-encrypted payloads (anti-bot), so search uses the plaintext /api/search/get endpoint instead (paginated up to maxItems, deduped by song id). The album-detail endpoint (/api/album/*) is no longer served publicly — album metadata is exposed via byArtistAlbums, and album tracks via playlist/artist/toplist modes.
Output fields
song records (recordType: "song") — songId, name, alias[], artists[], artist, albumId, album, durationSec, coverUrl, popularity, score, fee, mvid, publishTimeMs, commentThreadId, playedNum, starredNum, copyright, copyrightId, disc, trackNo, position, single, mp3Url, transName, lyric (optional, bySongUrl), sourceUrl, scrapedAt.
album records (recordType: "album", mode=byArtistAlbums) — albumId, name, coverUrl, trackCount, publishTimeMs, company, type, subType, paid, onSale, artists[], artist, sourceUrl.
playlist records — playlistId, name, coverUrl, playCount, trackCount, creatorName, creatorId, creatorAvatarUrl, tags[], description, subscribedCount, commentCount, shareCount, totalDurationMs, updateTimeMs, sourceUrl.
toplist records — toplistId, name, playCount, trackCount, subscribedCount, updateFrequency, description, coverUrl, sourceUrl.
error records (recordType: "error") — emitted for invalid URLs / missing songs / unknown toplists (errorCode, errorMessage, inputValue). Invalid inputs are never silently dropped.
Every data record carries sourceUrl, scrapedAt (UTC ISO) and recordType; error records carry inputValue in place of sourceUrl (the offending input, not a page URL). Null/empty fields are stripped before push.
Filters
minDurationSec/maxDurationSec— song length windowminPopularity— 0–100 popularity floorcontainsKeyword— case-insensitive substring on title
Notes
- Cover images are normalized to
https://p*.music.126.net/...and verify HTTP 200 withimage/*content-type from a clean shell (no Referer needed). playlistOrder=newis exposed in the schema but the upstream/api/playlist/listendpoint ignores theorderparam from datacenter IPs (HTTP 200, emptyplaylistsfor every tested category) — the actor fail-softs with a status message and 0 records. Use the defaulthotorder for playlist browsing.- Search results (mode=search) can omit
popularityfor some songs; theminPopularityfilter drops records whose popularity is unknown rather than passing them (a record with unknown popularity cannot satisfy a popularity floor). - Paginated modes stop examining after 500 records; if filters match nothing, the run ends cleanly with 0 records and a status message (inverted
minDurationSec > maxDurationSecis rejected up front). The upstream/api/artist/top/songendpoint ignores theoffsetparam (it always returns the same ~50 top songs withmore: true), sobyArtistdedupes by song id and stops paginating once a page adds no new songs — the output never contains duplicate records. - Duplicate song URLs in
songUrls(mode=bySongUrl) are deduped to a single unique record per song id. maxItemsis a hard cap on ALL emitted records includingerrorrecords.- Auto-escalation: on HTTP 403/429 the actor lazily engages the Apify AUTO (datacenter) proxy and retries with exponential backoff.
- Memory: 1024 MB (Tier 1, plain HTTP).