QQ音乐

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

API 文档

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

请求参数说明:

名称 必填 类型 说明
token string 登录获取token
msgstringmsg
nintn
brintbr

返回参数说明:

名称 类型 说明
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": 10,
    "song_id": "000oW8J53xPhZA",
    "name": "明明就",
    "artist": "周杰伦",
    "album": "十二新作",
    "duration": "04:20",
    "cover": "http://y.gtimg.cn/music/photo_new/T002R500x500M000003Ow85E3pnoqi_1.jpg",
    "play_url": "https://isure.stream.qqmusic.qq.com/M800001mxHU44PEhTP.mp3?guid=61027056&vkey=0CBD593D71F49A40D468B4B71449CAD26B309BA9475B03063ED426B0EC0362C7F27CB20EC0B37E169BDB97CA156F74800D226DB7F6B48288__v2b94c26a&uin=947768885&fromtag=120093",
    "lyrics": {
      "success": true,
      "lyrics": [
        {
          "time": 0,
          "text": "明明就 - 周杰伦 (Jay Chou)",
          "raw_time": "[00:00.00]"
        },
        {
          "time": 4.89,
          "text": "词:方文山",
          "raw_time": "[00:04.89]"
        },
        {
          "time": 9.78,
          "text": "曲:周杰伦",
          "raw_time": "[00:09.78]"
        },
        {
          "time": 14.67,
          "text": "编曲:黄雨勳",
          "raw_time": "[00:14.67]"
        },
        {
          "time": 19.57,
          "text": "糖果罐里好多颜色",
          "raw_time": "[00:19.57]"
        },
        {
          "time": 23.77,
          "text": "微笑却不甜了",
          "raw_time": "[00:23.77]"
        },
        {
          "time": 28.06,
          "text": "你的某些快乐",
          "raw_time": "[00:28.06]"
        },
        {
          "time": 31.31,
          "text": "在没有我的时刻",
          "raw_time": "[00:31.31]"
        },
        {
          "time": 36.55,
          "text": "中古世纪的城市里",
          "raw_time": "[00:36.55]"
        },
        {
          "time": 40.83,
          "text": "我想就走到这",
          "raw_time": "[00:40.83]"
        },
        {
          "time": 45.12,
          "text": "海鸥不再眷恋大海",
          "raw_time": "[00:45.12]"
        },
        {
          "time": 49.31,
          "text": "可以飞更远",
          "raw_time": "[00:49.31]"
        },
        {
          "time": 52,
          "text": "远方传来风笛",
          "raw_time": "[00:52.00]"
        },
        {
          "time": 56.24,
          "text": "我只在意有你的消息",
          "raw_time": "[00:56.24]"
        },
        {
          "time": 60.52,
          "text": "城堡为爱守着秘密",
          "raw_time": "[01:00.52]"
        },
        {
          "time": 64.69,
          "text": "而我为你守着回忆",
          "raw_time": "[01:04.69]"
        },
        {
          "time": 68.46,
          "text": "明明就 不习惯 牵手",
          "raw_time": "[01:08.46]"
        },
        {
          "time": 72.62,
          "text": "为何却主动把手勾",
          "raw_time": "[01:12.62]"
        },
        {
          "time": 76.86,
          "text": "你的心事太多",
          "raw_time": "[01:16.86]"
        },
        {
          "time": 80.58,
          "text": "我不会戳破",
          "raw_time": "[01:20.58]"
        },
        {
          "time": 85.41,
          "text": "明明就 他比较 温柔",
          "raw_time": "[01:25.41]"
        },
        {
          "time": 89.63,
          "text": "也许他能给你更多",
          "raw_time": "[01:29.63]"
        },
        {
          "time": 94.95,
          "text": "不用抉择 我会自动变朋友",
          "raw_time": "[01:34.95]"
        },
        {
          "time": 117.29,
          "text": "糖果罐里好多颜色",
          "raw_time": "[01:57.29]"
        },
        {
          "time": 121.51,
          "text": "微笑却不甜了",
          "raw_time": "[02:01.51]"
        },
        {
          "time": 125.75,
          "text": "你的某些快乐",
          "raw_time": "[02:05.75]"
        },
        {
          "time": 128.99,
          "text": "在没有我的时刻",
          "raw_time": "[02:08.99]"
        },
        {
          "time": 134.28,
          "text": "中古世纪的城市里",
          "raw_time": "[02:14.28]"
        },
        {
          "time": 138.5,
          "text": "我想就走到这",
          "raw_time": "[02:18.50]"
        },
        {
          "time": 142.83,
          "text": "海鸥不再眷恋大海",
          "raw_time": "[02:22.83]"
        },
        {
          "time": 146.96,
          "text": "可以飞更远",
          "raw_time": "[02:26.96]"
        },
        {
          "time": 149.7,
          "text": "远方传来风笛",
          "raw_time": "[02:29.70]"
        },
        {
          "time": 153.92,
          "text": "我只在意有你的消息",
          "raw_time": "[02:33.92]"
        },
        {
          "time": 158.2,
          "text": "城堡为爱守着秘密",
          "raw_time": "[02:38.20]"
        },
        {
          "time": 162.38,
          "text": "而我为你守着回忆",
          "raw_time": "[02:42.38]"
        },
        {
          "time": 166.13,
          "text": "明明就 不习惯 牵手",
          "raw_time": "[02:46.13]"
        },
        {
          "time": 170.34,
          "text": "为何却主动把手勾",
          "raw_time": "[02:50.34]"
        },
        {
          "time": 174.53,
          "text": "你的心事太多 我不会戳破",
          "raw_time": "[02:54.53]"
        },
        {
          "time": 183.06,
          "text": "明明就 他比较 温柔",
          "raw_time": "[03:03.06]"
        },
        {
          "time": 187.31,
          "text": "也许他能给你更多",
          "raw_time": "[03:07.31]"
        },
        {
          "time": 192.67,
          "text": "不用抉择 我会自动变朋友",
          "raw_time": "[03:12.67]"
        },
        {
          "time": 215.77,
          "text": "明明就 明明就",
          "raw_time": "[03:35.77]"
        },
        {
          "time": 217.72,
          "text": "明明就 他比较 温柔",
          "raw_time": "[03:37.72]"
        },
        {
          "time": 221.79,
          "text": "也许他能给你更多",
          "raw_time": "[03:41.79]"
        },
        {
          "time": 226.63,
          "text": "不用抉择 我会自动变朋友",
          "raw_time": "[03:46.63]"
        }
      ],
      "trans_lyrics": [],
      "formatted": "[00:00.000]明明就 - 周杰伦 (Jay Chou)\n[00:04.890]词:方文山\n[00:09.780]曲:周杰伦\n[00:14.670]编曲:黄雨勳\n[00:19.570]糖果罐里好多颜色\n[00:23.770]微笑却不甜了\n[00:28.060]你的某些快乐\n[00:31.310]在没有我的时刻\n[00:36.550]中古世纪的城市里\n[00:40.830]我想就走到这\n[00:45.120]海鸥不再眷恋大海\n[00:49.310]可以飞更远\n[00:52.000]远方传来风笛\n[00:56.240]我只在意有你的消息\n[01:00.520]城堡为爱守着秘密\n[01:04.690]而我为你守着回忆\n[01:08.460]明明就 不习惯 牵手\n[01:12.620]为何却主动把手勾\n[01:16.860]你的心事太多\n[01:20.580]我不会戳破\n[01:25.410]明明就 他比较 温柔\n[01:29.630]也许他能给你更多\n[01:34.950]不用抉择 我会自动变朋友\n[01:57.290]糖果罐里好多颜色\n[02:01.510]微笑却不甜了\n[02:05.750]你的某些快乐\n[02:08.990]在没有我的时刻\n[02:14.280]中古世纪的城市里\n[02:18.500]我想就走到这\n[02:22.830]海鸥不再眷恋大海\n[02:26.960]可以飞更远\n[02:29.700]远方传来风笛\n[02:33.920]我只在意有你的消息\n[02:38.200]城堡为爱守着秘密\n[02:42.380]而我为你守着回忆\n[02:46.130]明明就 不习惯 牵手\n[02:50.340]为何却主动把手勾\n[02:54.530]你的心事太多 我不会戳破\n[03:03.060]明明就 他比较 温柔\n[03:07.310]也许他能给你更多\n[03:12.670]不用抉择 我会自动变朋友\n[03:35.770]明明就 明明就\n[03:37.720]明明就 他比较 温柔\n[03:41.790]也许他能给你更多\n[03:46.630]不用抉择 我会自动变朋友",
      "formatted_trans": "无翻译歌词",
      "combined": "[00:00.000]明明就 - 周杰伦 (Jay Chou)\n[00:04.890]词:方文山\n[00:09.780]曲:周杰伦\n[00:14.670]编曲:黄雨勳\n[00:19.570]糖果罐里好多颜色\n[00:23.770]微笑却不甜了\n[00:28.060]你的某些快乐\n[00:31.310]在没有我的时刻\n[00:36.550]中古世纪的城市里\n[00:40.830]我想就走到这\n[00:45.120]海鸥不再眷恋大海\n[00:49.310]可以飞更远\n[00:52.000]远方传来风笛\n[00:56.240]我只在意有你的消息\n[01:00.520]城堡为爱守着秘密\n[01:04.690]而我为你守着回忆\n[01:08.460]明明就 不习惯 牵手\n[01:12.620]为何却主动把手勾\n[01:16.860]你的心事太多\n[01:20.580]我不会戳破\n[01:25.410]明明就 他比较 温柔\n[01:29.630]也许他能给你更多\n[01:34.950]不用抉择 我会自动变朋友\n[01:57.290]糖果罐里好多颜色\n[02:01.510]微笑却不甜了\n[02:05.750]你的某些快乐\n[02:08.990]在没有我的时刻\n[02:14.280]中古世纪的城市里\n[02:18.500]我想就走到这\n[02:22.830]海鸥不再眷恋大海\n[02:26.960]可以飞更远\n[02:29.700]远方传来风笛\n[02:33.920]我只在意有你的消息\n[02:38.200]城堡为爱守着秘密\n[02:42.380]而我为你守着回忆\n[02:46.130]明明就 不习惯 牵手\n[02:50.340]为何却主动把手勾\n[02:54.530]你的心事太多 我不会戳破\n[03:03.060]明明就 他比较 温柔\n[03:07.310]也许他能给你更多\n[03:12.670]不用抉择 我会自动变朋友\n[03:35.770]明明就 明明就\n[03:37.720]明明就 他比较 温柔\n[03:41.790]也许他能给你更多\n[03:46.630]不用抉择 我会自动变朋友",
      "lyric_count": 45,
      "trans_count": 0
    },
    "bitrate": "320",
    "warnings": null
  },
  "timestamp": "2026-02-04 18:54:09",
  "message": "获取成功",
  "cached_time": "2026-02-04 18:54:09"
}

错误码格式说明:

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

代码示例:


<?php
// 初始化cURL会话
$ch = curl_init();
// 设置请求URL,用户中心获取token,自行替换其他参数
curl_setopt($ch, CURLOPT_URL, "https://apicx.asia/api/qqmusic?msg=周杰伦&n=10&br=320");
// 设置请求头
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=10&br=320"
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=10&br=320", {
    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=10&br=320");
        // 打开连接
        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=10&br=320");
            // 将响应解析为字符串
            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=10&br=320")
# 创建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=10&br=320", 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))
}