QQ音乐

通过搜索歌曲获取播放链接、歌词和专辑图

API 文档

  • 接口地址: https://apicx.asia/api/qqmusic
  • 返回格式: JOSN
  • 请求方式: GET
  • 请求示例: https://apicx.asia/api/qqmusic?msg=周杰伦&n=1&br=320&token=你的token

请求参数说明:

名称 必填 类型 说明
token string 登录获取token
msgstring搜索关键词(必填)
nstringn:歌曲索引,从1开始(默认1)
idstringid :歌曲ID(必填)
brstringbr:音质选项,可选值:m4a、128、320、flac(默认320)
示例1string获取歌曲列表(默认):https://apicx.asia/api/qqmusic?msg=周杰伦​&token=你的token
示例2string获取指定歌曲详情:https://apicx.asia/api/qqmusic?msg=周杰伦&n=1&br=320&token=你的token​​
示例3string通过ID获取歌曲详情:https://apicx.asia/api/qqmusic?id=歌曲ID&br=320&token=你的token​​

返回参数说明:

名称 类型 说明
code integer 返回的状态码
data object 返回的数据/数据对象
msg string 返回的消息
time string 请求时间
data.indexnumberindex
data.song_idstringsong_id
data.namestringname
data.artiststringartist
data.albumstringalbum
data.durationstringduration
data.coverstringcover
data.play_urlstringplay_url
data.lyrics.successbooleansuccess
data.lyrics.lyrics[].timenumbertime
data.lyrics.lyrics[].textstringtext
data.lyrics.lyrics[].raw_timestringraw_time
data.lyrics.trans_lyrics[]array空数组
data.lyrics.formattedstringformatted
data.lyrics.formatted_transstringformatted_trans
data.lyrics.combinedstringcombined
data.lyrics.lyric_countnumberlyric_count
data.lyrics.trans_countnumbertrans_count
data.bitratestringbitrate
data.warningsnullwarnings

返回示例:

{
  "code": 200,
  "data": {
    "index": 1,
    "song_id": "0039MnYb0qxYhV",
    "name": "晴天",
    "artist": "周杰伦",
    "album": "叶惠美",
    "duration": "04:29",
    "cover": "https://y.qq.com/music/photo_new/T002R500x500M000000MkMni19ClKG.jpg",
    "play_url": "https://isure.stream.qqmusic.qq.com/M800003Qui1q2u1Zho.mp3?guid=658650575&vkey=F2646B96C819EE8FA84635E5C3CBA33DC1129DA4BEF24708FB41B7389CEC1A2121292764A6276AE80CDB9EBE17B537D743B8A76D68056C41__v2b9aacee&uin=6283354&fromtag=120093&src=M800000bYDlc2XxKLs.mp3",
    "lyrics": {
      "success": true,
      "lyrics": [
        {
          "time": 0,
          "text": "晴天 - 周杰伦 (Jay Chou)",
          "raw_time": "[00:00.00]"
        },
        {
          "time": 2.25,
          "text": "词:周杰伦",
          "raw_time": "[00:02.25]"
        },
        {
          "time": 4.5,
          "text": "曲:周杰伦",
          "raw_time": "[00:04.50]"
        },
        {
          "time": 6.75,
          "text": "编曲:周杰伦",
          "raw_time": "[00:06.75]"
        },
        {
          "time": 9,
          "text": "制作人:周杰伦",
          "raw_time": "[00:09.00]"
        },
        {
          "time": 11.25,
          "text": "合声:周杰伦",
          "raw_time": "[00:11.25]"
        },
        {
          "time": 13.5,
          "text": "合声编写:周杰伦",
          "raw_time": "[00:13.50]"
        },
        {
          "time": 15.75,
          "text": "吉他:蔡科俊Again",
          "raw_time": "[00:15.75]"
        },
        {
          "time": 18,
          "text": "贝斯:陈任佑",
          "raw_time": "[00:18.00]"
        },
        {
          "time": 20.25,
          "text": "鼓:陈柏州",
          "raw_time": "[00:20.25]"
        },
        {
          "time": 22.51,
          "text": "录音助理:刘勇志",
          "raw_time": "[00:22.51]"
        },
        {
          "time": 24.76,
          "text": "录音工程:杨瑞代(Alfa Studio)",
          "raw_time": "[00:24.76]"
        },
        {
          "time": 27.01,
          "text": "混音工程:杨大纬(杨大纬录音工作室)",
          "raw_time": "[00:27.01]"
        },
        {
          "time": 29.26,
          "text": "故事的小黄花",
          "raw_time": "[00:29.26]"
        },
        {
          "time": 32.71,
          "text": "从出生那年就飘着",
          "raw_time": "[00:32.71]"
        },
        {
          "time": 36.24,
          "text": "童年的荡秋千",
          "raw_time": "[00:36.24]"
        },
        {
          "time": 39.75,
          "text": "随记忆一直晃到现在",
          "raw_time": "[00:39.75]"
        },
        {
          "time": 42.91,
          "text": "Re So So Si Do Si La",
          "raw_time": "[00:42.91]"
        },
        {
          "time": 45.93,
          "text": "So La Si Si Si Si La Si La So",
          "raw_time": "[00:45.93]"
        },
        {
          "time": 49.87,
          "text": "吹着前奏望着天空",
          "raw_time": "[00:49.87]"
        },
        {
          "time": 53.2,
          "text": "我想起花瓣试着掉落",
          "raw_time": "[00:53.20]"
        },
        {
          "time": 56.72,
          "text": "为你翘课的那一天",
          "raw_time": "[00:56.72]"
        },
        {
          "time": 58.83,
          "text": "花落的那一天",
          "raw_time": "[00:58.83]"
        },
        {
          "time": 60.6,
          "text": "教室的那一间",
          "raw_time": "[01:00.60]"
        },
        {
          "time": 62.32,
          "text": "我怎么看不见",
          "raw_time": "[01:02.32]"
        },
        {
          "time": 64.12,
          "text": "消失的下雨天",
          "raw_time": "[01:04.12]"
        },
        {
          "time": 65.81,
          "text": "我好想再淋一遍",
          "raw_time": "[01:05.81]"
        },
        {
          "time": 69.99,
          "text": "没想到失去的勇气我还留着",
          "raw_time": "[01:09.99]"
        },
        {
          "time": 76.12,
          "text": "好想再问一遍",
          "raw_time": "[01:16.12]"
        },
        {
          "time": 77.97,
          "text": "你会等待还是离开",
          "raw_time": "[01:17.97]"
        },
        {
          "time": 84.91,
          "text": "刮风这天我试过握着你手",
          "raw_time": "[01:24.91]"
        },
        {
          "time": 90.45,
          "text": "但偏偏雨渐渐大到我看你不见",
          "raw_time": "[01:30.45]"
        },
        {
          "time": 98.88,
          "text": "还要多久我才能在你身边",
          "raw_time": "[01:38.88]"
        },
        {
          "time": 105.44,
          "text": "等到放晴的那天也许我会比较好一点",
          "raw_time": "[01:45.44]"
        },
        {
          "time": 112.87,
          "text": "从前从前有个人爱你很久",
          "raw_time": "[01:52.87]"
        },
        {
          "time": 118.54,
          "text": "但偏偏风渐渐把距离吹得好远",
          "raw_time": "[01:58.54]"
        },
        {
          "time": 126.94,
          "text": "好不容易又能再多爱一天",
          "raw_time": "[02:06.94]"
        },
        {
          "time": 133.5,
          "text": "但故事的最后你好像还是说了拜拜",
          "raw_time": "[02:13.50]"
        },
        {
          "time": 154.9,
          "text": "为你翘课的那一天",
          "raw_time": "[02:34.90]"
        },
        {
          "time": 156.88,
          "text": "花落的那一天",
          "raw_time": "[02:36.88]"
        },
        {
          "time": 158.66,
          "text": "教室的那一间",
          "raw_time": "[02:38.66]"
        },
        {
          "time": 160.39,
          "text": "我怎么看不见",
          "raw_time": "[02:40.39]"
        },
        {
          "time": 162.15,
          "text": "消失的下雨天",
          "raw_time": "[02:42.15]"
        },
        {
          "time": 163.87,
          "text": "我好想再淋一遍",
          "raw_time": "[02:43.87]"
        },
        {
          "time": 168,
          "text": "没想到失去的勇气我还留着",
          "raw_time": "[02:48.00]"
        },
        {
          "time": 174.15,
          "text": "好想再问一遍",
          "raw_time": "[02:54.15]"
        },
        {
          "time": 176.03,
          "text": "你会等待还是离开",
          "raw_time": "[02:56.03]"
        },
        {
          "time": 182.92,
          "text": "刮风这天我试过握着你手",
          "raw_time": "[03:02.92]"
        },
        {
          "time": 188.49,
          "text": "但偏偏雨渐渐大到我看你不见",
          "raw_time": "[03:08.49]"
        },
        {
          "time": 196.94,
          "text": "还要多久我才能在你身边",
          "raw_time": "[03:16.94]"
        },
        {
          "time": 203.43,
          "text": "等到放晴的那天也许我会比较好一点",
          "raw_time": "[03:23.43]"
        },
        {
          "time": 210.87,
          "text": "从前从前有个人爱你很久",
          "raw_time": "[03:30.87]"
        },
        {
          "time": 217.14,
          "text": "偏偏风渐渐把距离吹得好远",
          "raw_time": "[03:37.14]"
        },
        {
          "time": 224.88,
          "text": "好不容易又能再多爱一天",
          "raw_time": "[03:44.88]"
        },
        {
          "time": 231.42,
          "text": "但故事的最后你好像还是说了拜拜",
          "raw_time": "[03:51.42]"
        },
        {
          "time": 238.49,
          "text": "刮风这天我试过握着你手",
          "raw_time": "[03:58.49]"
        },
        {
          "time": 241.97,
          "text": "但偏偏雨渐渐大到我看你不见",
          "raw_time": "[04:01.97]"
        },
        {
          "time": 245.65,
          "text": "还要多久我才能够在你身边",
          "raw_time": "[04:05.65]"
        },
        {
          "time": 249.07,
          "text": "等到放晴那天也许我会比较好一点",
          "raw_time": "[04:09.07]"
        },
        {
          "time": 252.92,
          "text": "从前从前有个人爱你很久",
          "raw_time": "[04:12.92]"
        },
        {
          "time": 255.91,
          "text": "但偏偏雨渐渐把距离吹得好远",
          "raw_time": "[04:15.91]"
        },
        {
          "time": 259.38,
          "text": "好不容易又能再多爱一天",
          "raw_time": "[04:19.38]"
        },
        {
          "time": 262.86,
          "text": "但故事的最后你好像还是说了拜",
          "raw_time": "[04:22.86]"
        }
      ],
      "trans_lyrics": [],
      "formatted": "[00:00.000]晴天 - 周杰伦 (Jay Chou)\n[00:02.250]词:周杰伦\n[00:04.500]曲:周杰伦\n[00:06.750]编曲:周杰伦\n[00:09.000]制作人:周杰伦\n[00:11.250]合声:周杰伦\n[00:13.500]合声编写:周杰伦\n[00:15.750]吉他:蔡科俊Again\n[00:18.000]贝斯:陈任佑\n[00:20.250]鼓:陈柏州\n[00:22.510]录音助理:刘勇志\n[00:24.760]录音工程:杨瑞代(Alfa Studio)\n[00:27.010]混音工程:杨大纬(杨大纬录音工作室)\n[00:29.260]故事的小黄花\n[00:32.710]从出生那年就飘着\n[00:36.240]童年的荡秋千\n[00:39.750]随记忆一直晃到现在\n[00:42.910]Re So So Si Do Si La\n[00:45.930]So La Si Si Si Si La Si La So\n[00:49.870]吹着前奏望着天空\n[00:53.200]我想起花瓣试着掉落\n[00:56.720]为你翘课的那一天\n[00:58.830]花落的那一天\n[01:00.600]教室的那一间\n[01:02.320]我怎么看不见\n[01:04.120]消失的下雨天\n[01:05.810]我好想再淋一遍\n[01:09.990]没想到失去的勇气我还留着\n[01:16.120]好想再问一遍\n[01:17.970]你会等待还是离开\n[01:24.910]刮风这天我试过握着你手\n[01:30.450]但偏偏雨渐渐大到我看你不见\n[01:38.880]还要多久我才能在你身边\n[01:45.440]等到放晴的那天也许我会比较好一点\n[01:52.870]从前从前有个人爱你很久\n[01:58.540]但偏偏风渐渐把距离吹得好远\n[02:06.940]好不容易又能再多爱一天\n[02:13.500]但故事的最后你好像还是说了拜拜\n[02:34.900]为你翘课的那一天\n[02:36.880]花落的那一天\n[02:38.660]教室的那一间\n[02:40.390]我怎么看不见\n[02:42.150]消失的下雨天\n[02:43.870]我好想再淋一遍\n[02:48.000]没想到失去的勇气我还留着\n[02:54.150]好想再问一遍\n[02:56.030]你会等待还是离开\n[03:02.920]刮风这天我试过握着你手\n[03:08.490]但偏偏雨渐渐大到我看你不见\n[03:16.940]还要多久我才能在你身边\n[03:23.430]等到放晴的那天也许我会比较好一点\n[03:30.870]从前从前有个人爱你很久\n[03:37.140]偏偏风渐渐把距离吹得好远\n[03:44.880]好不容易又能再多爱一天\n[03:51.420]但故事的最后你好像还是说了拜拜\n[03:58.490]刮风这天我试过握着你手\n[04:01.970]但偏偏雨渐渐大到我看你不见\n[04:05.650]还要多久我才能够在你身边\n[04:09.070]等到放晴那天也许我会比较好一点\n[04:12.920]从前从前有个人爱你很久\n[04:15.910]但偏偏雨渐渐把距离吹得好远\n[04:19.380]好不容易又能再多爱一天\n[04:22.860]但故事的最后你好像还是说了拜",
      "formatted_trans": "无翻译歌词",
      "combined": "[00:00.000]晴天 - 周杰伦 (Jay Chou)\n[00:02.250]词:周杰伦\n[00:04.500]曲:周杰伦\n[00:06.750]编曲:周杰伦\n[00:09.000]制作人:周杰伦\n[00:11.250]合声:周杰伦\n[00:13.500]合声编写:周杰伦\n[00:15.750]吉他:蔡科俊Again\n[00:18.000]贝斯:陈任佑\n[00:20.250]鼓:陈柏州\n[00:22.510]录音助理:刘勇志\n[00:24.760]录音工程:杨瑞代(Alfa Studio)\n[00:27.010]混音工程:杨大纬(杨大纬录音工作室)\n[00:29.260]故事的小黄花\n[00:32.710]从出生那年就飘着\n[00:36.240]童年的荡秋千\n[00:39.750]随记忆一直晃到现在\n[00:42.910]Re So So Si Do Si La\n[00:45.930]So La Si Si Si Si La Si La So\n[00:49.870]吹着前奏望着天空\n[00:53.200]我想起花瓣试着掉落\n[00:56.720]为你翘课的那一天\n[00:58.830]花落的那一天\n[01:00.600]教室的那一间\n[01:02.320]我怎么看不见\n[01:04.120]消失的下雨天\n[01:05.810]我好想再淋一遍\n[01:09.990]没想到失去的勇气我还留着\n[01:16.120]好想再问一遍\n[01:17.970]你会等待还是离开\n[01:24.910]刮风这天我试过握着你手\n[01:30.450]但偏偏雨渐渐大到我看你不见\n[01:38.880]还要多久我才能在你身边\n[01:45.440]等到放晴的那天也许我会比较好一点\n[01:52.870]从前从前有个人爱你很久\n[01:58.540]但偏偏风渐渐把距离吹得好远\n[02:06.940]好不容易又能再多爱一天\n[02:13.500]但故事的最后你好像还是说了拜拜\n[02:34.900]为你翘课的那一天\n[02:36.880]花落的那一天\n[02:38.660]教室的那一间\n[02:40.390]我怎么看不见\n[02:42.150]消失的下雨天\n[02:43.870]我好想再淋一遍\n[02:48.000]没想到失去的勇气我还留着\n[02:54.150]好想再问一遍\n[02:56.030]你会等待还是离开\n[03:02.920]刮风这天我试过握着你手\n[03:08.490]但偏偏雨渐渐大到我看你不见\n[03:16.940]还要多久我才能在你身边\n[03:23.430]等到放晴的那天也许我会比较好一点\n[03:30.870]从前从前有个人爱你很久\n[03:37.140]偏偏风渐渐把距离吹得好远\n[03:44.880]好不容易又能再多爱一天\n[03:51.420]但故事的最后你好像还是说了拜拜\n[03:58.490]刮风这天我试过握着你手\n[04:01.970]但偏偏雨渐渐大到我看你不见\n[04:05.650]还要多久我才能够在你身边\n[04:09.070]等到放晴那天也许我会比较好一点\n[04:12.920]从前从前有个人爱你很久\n[04:15.910]但偏偏雨渐渐把距离吹得好远\n[04:19.380]好不容易又能再多爱一天\n[04:22.860]但故事的最后你好像还是说了拜",
      "lyric_count": 63,
      "trans_count": 0
    },
    "bitrate": "320",
    "warnings": null
  },
  "timestamp": "2025-11-09 00:06:27",
  "message": "获取成功",
  "cached_time": "2025-11-09 00:06:27"
}

错误码格式说明:

名称 类型 说明
200 string 返回状态码(成功)
500 string 返回的状态码(失败)

代码示例:


<?php
// 初始化cURL会话
$ch = curl_init();
// 设置请求URL,用户中心获取token,自行替换其他参数
curl_setopt($ch, CURLOPT_URL, "https://apicx.asia/api/qqmusic?msg=周杰伦&n=1&br=320&token=你的token");
// 设置请求头
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Authorization: YOUR_TOKEN'
));
// 返回响应而不是直接输出
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// 执行请求并获取响应
$response = curl_exec($ch);
// 关闭cURL会话
curl_close($ch);
// 将响应解析为JSON格式
$data = json_decode($response, true);
// 输出JSON数据
print_r($data);
?>
            

import requests

# 设置请求URL和头部,用户中心获取token,自行替换其他参数
url = "https://apicx.asia/api/qqmusic?msg=周杰伦&n=1&br=320&token=你的token"
headers = {
    'Authorization': 'YOUR_TOKEN'
}

# 发送GET请求
response = requests.get(url, headers=headers)
# 将响应解析为JSON格式
data = response.json()
# 输出JSON数据
print(data)
            

// 发送GET请求,用户中心获取token,自行替换其他参数
fetch("https://apicx.asia/api/qqmusic?msg=周杰伦&n=1&br=320&token=你的token", {
    method: "GET",
    headers: {
        "Authorization": "YOUR_TOKEN"
    }
})
.then(response => response.json()) // 将响应解析为JSON格式
.then(data => console.log(data)) // 输出JSON数据
.catch(error => console.error('Error:', error));
            

import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;

public class Main {
    public static void main(String[] args) throws Exception {
        // 创建URL对象,用户中心获取token,自行替换其他参数
        URL url = new URL("https://apicx.asia/api/qqmusic?msg=周杰伦&n=1&br=320&token=你的token");
        // 打开连接
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        // 设置请求方法
        conn.setRequestMethod("GET");
        // 设置请求头
        conn.setRequestProperty("Authorization", "YOUR_TOKEN");

        // 读取响应
        BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
        String inputLine;
        StringBuffer content = new StringBuffer();
        while ((inputLine = in.readLine()) != null) {
            content.append(inputLine);
        }
        in.close();
        // 输出JSON数据
        System.out.println(content.toString());
    }
}
            

using System;
using System.Net.Http;
using System.Threading.Tasks;

class Program {
    static async Task Main() {
        using (HttpClient client = new HttpClient()) {
            // 设置请求头
            client.DefaultRequestHeaders.Add("Authorization", "YOUR_TOKEN");
            // 发送GET请求,用户中心获取token,自行替换其他参数
            HttpResponseMessage response = await client.GetAsync("https://apicx.asia/api/qqmusic?msg=周杰伦&n=1&br=320&token=你的token");
            // 将响应解析为字符串
            string responseBody = await response.Content.ReadAsStringAsync();
            // 输出JSON数据
            Console.WriteLine(responseBody);
        }
    }
}
            

require 'net/http'
require 'uri'

# 创建URI对象,用户中心获取token,自行替换其他参数
uri = URI.parse("https://apicx.asia/api/qqmusic?msg=周杰伦&n=1&br=320&token=你的token")
# 创建GET请求
request = Net::HTTP::Get.new(uri)
# 设置请求头
request["Authorization"] = "YOUR_TOKEN"

# 发送请求并获取响应
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == "https") do |http|
  http.request(request)
end

# 输出JSON数据
puts response.body
            

package main

import (
    "fmt"
    "io/ioutil"
    "net/http"
)

func main() {
    client := &http.Client{}
    // 创建GET请求,用户中心获取token,自行替换其他参数
    req, err := http.NewRequest("GET", "https://apicx.asia/api/qqmusic?msg=周杰伦&n=1&br=320&token=你的token", nil)
    if err != nil {
        panic(err)
    }
    // 设置请求头
    req.Header.Add("Authorization", "YOUR_TOKEN")

    // 发送请求并获取响应
    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    // 读取响应体
    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        panic(err)
    }
    // 输出JSON数据
    fmt.Println(string(body))
}