QQ Music Scraper avatar

QQ Music Scraper

Pricing

from $3.00 / 1,000 results

Go to Apify Store
QQ Music Scraper

QQ Music Scraper

Scrape QQ Music (y.qq.com, Tencent) without login - search songs, fetch by song URL, top-100 rank charts, album tracks and playlist tracks with cover art, file sizes and pay status.

Pricing

from $3.00 / 1,000 results

Rating

0.0

(0)

Developer

Crawler Bros

Crawler Bros

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

24 days ago

Last modified

Share

Scrapes QQ Music (QQ音乐, Tencent) — without login — via the public c.y.qq.com JSON endpoints.

Data source

Music data comes from the public QQ Music web endpoints (y.qq.com c.y.qq.com FCG JSON APIs) — no login, no API key. See the Notes section for endpoint-level caveats.

What it does

ModeEndpoint (public, no auth)Output
searchc.y.qq.com/soso/fcgi-bin/client_search_cpPaginated song search
bySongUrlfcg_play_single_song.fcg?songmid= (+ optional LRC lyric)Full song record
byToplistfcg_myqq_toplist.fcg + fcg_v8_toplist_cp.fcg?topid=Chart summary + top-100 tracks
byAlbumfcg_v8_album_detail_cp.fcg?albumid=Album + full track list
byPlaylistfcg_ucc_getcdinfo_byids_cp.fcg?disstid=Playlist + full track list

All endpoints verified live (HTTP 200 with real content) from a datacenter network. The musicu.fcg aggregator (used by the SPA) rejects datacenter clients (code 500003), so this actor uses the older plaintext c.y.qq.com FCG endpoints instead — they return the same data.

Output fields

song records (recordType: "song")mid, mediaMid, songId, name, singers[], singer, singerMids[], album, albumId, albumMid, coverUrl, durationSec, pubTimeSec, pubTimeText, vid (MV id), size128, size320, sizeFlac (bytes), payPlay, payDownload, payStatus, lyric (optional, bySongUrl), sourceUrl, scrapedAt.

toplist / album / playlist records — chart/album/playlist summary fields (toplistId, listenCount, trackCount, creatorName, listenerCount, visitCount, creatorAvatarUrl, language, description, tags[], createTimeMs, updateTimeMs, …).

error records (recordType: "error") — invalid URLs, missing songs/albums/playlists (never silently dropped).

Every data record carries sourceUrl, scrapedAt 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
  • containsKeyword (title substring)
  • singerKeyword (primary-singer substring)

Notes

  • Cover URLs are derived from the album mid: https://y.gtimg.cn/music/photo_new/T002R300x300M000{albumMid}.jpg — verified HTTP 200 image/jpeg from a clean shell.
  • Some user playlists return an empty songlist from the public playlist endpoint (their track lists are only served to logged-in users); the actor still emits the playlist info record and 0 tracks rather than failing.
  • Duplicate song URLs in songUrls (mode=bySongUrl) are deduped to a single unique record per song mid. maxItems is a hard cap on ALL emitted records including error records.
  • byArtist is NOT exposed: the singer-track FCG endpoints return HTTP 404 without login/cookies on all tested variants (documented limitation).
  • Auto-escalation: on 403/429 the actor lazily engages the Apify AUTO (datacenter) proxy with exponential backoff.
  • Memory: 1024 MB (Tier 1, plain HTTP).