怎么用香港行情数据API接口获取实时报价
做港股的行情页面、自选股列表或者价格提醒,最基础的一件事就是取到一只或者一批股票的实时报价。这篇教学方案用我们的香港行情数据API接口,以腾讯控股(HK00700)和阿里巴巴(HK09988)为例,三步取到最新价、涨跌幅、成交量和五档买卖盘,文末有可以直接运行的完整代码。

准备工作
- 一把密钥。能用哪些市场是开通账号时确定的,申请时说明要用香港的行情。
- 接入地址。HTTP 的接入地址写在开发文档的通用规则里,下文用「HTTP 接入地址」代替。
- 市场代码:港股写
market=HK。其它市场的取值见国家与市场参数。
第一步:确认产品代码
港股的产品代码是「HK + 5 位数字」,例如腾讯控股是 HK00700,不是 700,也不是 00700。代码以产品列表接口返回的原值为准:
GET /api/all_symbol?market=HK
返回的是一个数组,每个产品一项(港股有三千五百多项)。其中腾讯控股这一项是:
{
"status": 0,
"interval": null,
"market": "HK",
"code": "HK00700",
"message": "SUCCESS",
"data": {
"code": "HK00700",
"contract": "00700",
"name": "腾讯控股",
"Market": "HK",
"Varieties": "stock"
}
}
code 就是后面要用的产品代码。列表比较大,建议取一次存下来,不用每次都请求。
第二步:请求实时报价
用到的接口是单个 / 多个产品完整行情。请求头带 Authorization: 你的密钥,多个产品用英文逗号隔开:
GET /api/mini_prices?market=HK&symbol=HK00700,HK09988
返回的是一个数组,每个查到的产品一项,行情在 data 里。下面是其中腾讯控股这一项(阿里巴巴那一项写法相同):
{
"status": 0,
"interval": null,
"market": "HK",
"code": "HK00700",
"message": "SUCCESS",
"data": {
"Market": "HK",
"varieties": "stock",
"contract": "00700",
"code": "HK00700",
"name": "腾讯控股",
"open": "415.0",
"high": "425.8",
"low": "414.8",
"price": "424.8",
"close": "411.4",
"amount": "8610388000.0",
"volume": "20422500.0",
"tick": "1791533286",
"turnoverRate": "0.2243",
"amplitude": "2.674",
"mcc": "3867023353111.2",
"marketValue": "3867023353111.2",
"LYR": "0.0",
"PBR": "2.953",
"up": "3.257",
"change": "13.4",
"position": "23152",
"YDP": "1",
"settle": "0",
"YS": "0",
"average": "421.613",
"NV": "2063600.0",
"internalOrder": "10482281",
"exteriorOrder": "9981619",
"raisingLimit": "423.5",
"limitDown": "346.5",
"QR": "0",
"MT": "0",
"dealTransaction": "1791533286,424.8,2063600,-1,0",
"B1": "424.8",
"B2": "424.6",
"B3": "424.4",
"B4": "424.2",
"B5": "424.0",
"S1": "425.0",
"S2": "425.2",
"S3": "425.4",
"S4": "425.6",
"S5": "425.8",
"B1V": "16100",
"B2V": "80000",
"B3V": "87900",
"B4V": "124500",
"B5V": "45700",
"S1V": "908200",
"S2V": "65300",
"S3V": "10000",
"S4V": "52000",
"S5V": "41700"
}
}
第三步:读出要用的字段
港股返回的行情有五十多个字段,常用的是这些,完整的含义见行情字段说明:
price:最新价;open、high、low:今开、今高、今低close:昨收,是昨日收盘价,不是今天的收盘价change、up:涨跌、涨跌幅。up是百分比数值,3.257表示 3.257%volume、amount:当日累计的成交量、成交额B1~B5、B1V~B5V:买一到买五的价和量;S1~S5、S1V~S5V:卖一到卖五的价和量turnoverRate、amplitude、average:换手率、振幅、均价tick:这条行情的时间,Unix 秒
有两点要注意:
- 数值是文本。 港股的行情字段都是带引号的字符串(如
"424.8"),计算之前先转成数字。不同市场同一个字段可能是数字、也可能是字符串,统一转换一次最稳妥。 - 查不到的产品不会出现在返回里,也不报错。 例如请求
HK00700,00700,HK99999,返回里只有HK00700一项。所以要逐个核对请求的产品有没有返回。
完整示例代码
下面的代码用 Node.js 18 及以上版本可以直接运行(自带 fetch),把开头两项换成自己的即可。
// 运行:node quote.js(Node.js 18 及以上)
const KEY = '你的密钥';
const HTTP_BASE = 'HTTP 接入地址'; // 见开发文档「概览 · 通用规则」,以 /api/ 结尾
// 取同一个市场里一批产品的报价,返回「产品代码 → 行情」
async function quotes(market, symbols) {
const query = new URLSearchParams({ market, symbol: symbols.join(',') });
const res = await fetch(`${HTTP_BASE}mini_prices?${query}`, { headers: { Authorization: KEY } });
const text = await res.text();
const list = JSON.parse(text);
if (!Array.isArray(list)) throw new Error(`取不到报价:${text}`);
const found = {};
for (const item of list) if (item.status === 0) found[item.code] = item.data;
return found;
}
const wanted = ['HK00700', 'HK09988'];
quotes('HK', wanted).then((found) => {
for (const code of wanted) {
const q = found[code];
if (!q) { console.log(code, '没有查到,请核对产品代码'); continue; }
const time = new Date(Number(q.tick) * 1000).toISOString().replace('T', ' ').slice(0, 19);
console.log(code, q.name, '最新价', Number(q.price), '涨跌', Number(q.change), `(${Number(q.up)}%)`,
'买一', Number(q.B1), '卖一', Number(q.S1), '时间(UTC)', time);
}
}).catch((e) => console.error(e.message));
运行后的输出:
HK00700 腾讯控股 最新价 424.8 涨跌 13.4 (3.257%) 买一 424.8 卖一 425 时间(UTC) 2026-10-09 08:08:06
HK09988 阿里巴巴-SW 最新价 107 涨跌 2.7 (2.589%) 买一 107 卖一 107.1 时间(UTC) 2026-10-09 08:08:06
常见问题
一次最多能查多少个产品? 一次请求只能查一个市场,最多 200 个产品;不同市场的分开请求。调用次数怎么计算,见文档里单个 / 多个产品完整行情的「调用次数」一节。
市场代码写 HK 还是 HKEX? 港股写 HK。HKEX 是香港期货的市场代码,用它查股票代码会得到空数组。
收盘以后取到的是什么? 是最后一条行情,tick 是它的时间。示例里的数据取自 2026 年 10 月 9 日收盘后。
需要价格一变就收到怎么办? 不用反复请求这个接口,改用 WebSocket 订阅产品,行情变化时会主动推送,推送的字段和这里相同。
其它国家和市场
报价接口不分市场,把 market 换成对应的市场代码、产品代码换成那个市场产品列表里的代码即可,例如美国 NASDAQ、日本 TSE、韩国 KRX、印度 NSE。全部取值见国家与市场参数。想画 K 线图,可以接着看怎么用日本行情数据API接口获取历史K线;想先拿到一个市场的全部代码,看怎么用韩国行情数据API接口获取股票列表。