港股、美股、A 股实时行情数据 API 接口-免费接入
由bqpess5i创建,最终由bqpess5i 被浏览 9 用户
一款支持港股、美股、A 股多市场的免费股票行情数据接口服务,能够提供股票基础信息、实时 Tick 数据、实时报价、历史 K 线及批量 K 线等多维度数据,数据返回格式统一为 JSON,接入便捷,满足各类金融数据应用开发需求。本文将详细介绍该 API 的接口规范、使用方法及数据字段说明。
一、通用请求规范
1.1 必要请求头
所有 API 接口请求均需携带以下请求头,用于身份验证及数据格式指定,否则将导致请求失败:
{
"accept": "application/json",
"token": "your_token"
}
获取 token 方式,请参考 官网文档。
1.2 市场标识说明
接口通过“region”参数区分目标市场,各市场对应的标识及股票代码规则如下,请求时需准确匹配:
| 市场 | region 参数值 | 股票代码规则 | 示例 |
|---|---|---|---|
| 港股 | HK | 5 位数字 | 700(腾讯控股)、9988(阿里巴巴) |
| 美股 | US | 1-4 位字母 | AAPL(苹果)、TSLA(特斯拉) |
| A 股 | SZ、SH | 沪市 60 开头、深市 00/30 开头 | 601398(工商银行)、300750(宁德时代) |
二、核心接口详情
2.1 股票基础信息接口
用于获取单只股票的基础信息,包括公司名称、所属行业、市值、市盈率等核心数据,为行情分析提供基础支撑。
2.1.1 请求地址
https://api.itick.org/stock/info
2.1.2 请求参数
| 参数名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| type | string | 是 | 资产类型,股票填“stock” |
| region | string | 是 | 市场标识,参考 1.2 节 |
| code | string | 是 | 股票代码,需与 region 匹配 |
2.1.3 调用代码示例(Python)
使用 requests 库发送 GET 请求,需提前安装:pip install requests
import requests
# 接口请求地址
url = "https://api.itick.org/stock/info"
# 必要请求头
headers = {
"accept": "application/json",
"token": "your_token"
}
# 请求参数
params = {
"type": "stock", # 资产类型为股票
"region": "HK", # 港股市场
"code": "700" # 腾讯控股股票代码
}
try:
# 发送GET请求
response = requests.get(url, headers=headers, params=params)
# 解析JSON响应
result = response.json()
# 打印请求结果
if result["code"] == 0:
print("请求成功,股票信息:", result["data"])
else:
print("请求失败,错误信息:", result["msg"])
except Exception as e:
print("请求异常:", str(e))
2.1.3 响应数据示例(港股-腾讯控股)
{
"code": 0,
"msg": "ok",
"data": {
"c": "700",
"n": "騰訊控股",
"t": "stock",
"e": "HKEX",
"s": "Technology Services",
"i": "Packaged Software",
"l": "騰訊控股",
"r": "HKD",
"bd": "Tencent Holdings Ltd. provides value-added services...",
"wu": "http://www.tencent.com",
"mcb": 5380057843750,
"tso": 9087935546,
"pet": 24.562762020141466,
"fcc": "HKD"
}
}
2.1.4 响应字段解析
| 字段名 | 类型 | 说明 |
|---|---|---|
| code | int | 请求状态码,0 表示成功 |
| msg | string | 状态描述,成功时为“ok” |
| c | string | 股票代码 |
| n | string | 股票中文名称 |
| t | string | 资产类型 |
| e | string | 所属交易所代码(HKEX=港交所) |
| s | string | 所属行业大类 |
| i | string | 所属行业细分 |
| r | string | 交易货币单位 |
| bd | string | 公司业务描述 |
| wu | string | 公司官网地址 |
| mcb | number | 总市值 |
| tso | number | 总股本 |
| pet | number | 市盈率(TTM) |
| fcc | string | 财务报告货币单位 |
2.2 实时 Tick 数据接口
提供股票实时成交明细(Tick 数据),包含最新成交价格、成交量及成交时间,数据更新延迟低,适用于实时行情展示。
2.2.1 请求地址
https://api.itick.org/stock/tick
2.2.2 请求参数
| 参数名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| region | string | 是 | 市场标识,参考 1.2 节 |
| code | string | 是 | 股票代码,需与 region 匹配 |
2.2.3 调用代码示例(Python)
import requests
# 接口请求地址
url = "https://api.itick.org/stock/tick"
# 必要请求头
headers = {
"accept": "application/json",
"token": "your_token"
}
# 请求参数(港股腾讯控股)
params = {
"region": "HK",
"code": "700"
}
try:
response = requests.get(url, headers=headers, params=params)
result = response.json()
if result["code"] == 0:
print("实时Tick数据:", {
"股票代码": result["data"]["s"],
"最新成交价": result["data"]["ld"],
"成交时间": result["data"]["t"],
"成交量": result["data"]["v"]
})
else:
print("请求失败:", result["msg"])
except Exception as e:
print("异常信息:", str(e))
2.2.3 响应数据示例
{
"code": 0,
"msg": null,
"data": {
"s": "700",
"ld": 567,
"t": 1754554087000,
"v": 1134500
}
}
2.2.4 响应字段解析
| 字段名 | 类型 | 说明 |
|---|---|---|
| s | string | 股票代码 |
| ld | number | 最新成交价格 |
| t | number | 成交时间戳(毫秒级,UTC 时间) |
| v | number | 成交数量(股) |
2.3 实时报价接口
获取股票实时行情快照,包含开盘价、最高价、最低价、最新价、成交量等核心行情数据,是行情分析的核心接口。
2.3.1 请求地址
https://api.itick.org/stock/quote
2.3.2 请求参数
与“实时 Tick 数据接口”一致,仅需传入 region 和 code 参数。
2.3.3 调用代码示例(Python)
import requests
# 实时报价接口地址
url = "https://api.itick.org/stock/quote"
# 请求头(固定格式)
headers = {
"accept": "application/json",
"token": "your_token"
}
# 示例:请求美股苹果公司实时报价
params = {
"region": "US", # 美股市场
"code": "AAPL" # 苹果股票代码
}
try:
response = requests.get(url, headers=headers, params=params)
response.raise_for_status() # 检查HTTP请求状态
result = response.json()
if result["code"] == 0:
quote_data = result["data"]
# 格式化输出关键行情数据
print(f"股票代码:{quote_data['s']}")
print(f"开盘价:{quote_data['o']}")
print(f"最高价:{quote_data['h']}")
print(f"最低价:{quote_data['l']}")
print(f"最新价:{quote_data['ld']}")
print(f"当日成交量:{quote_data['v']}")
print(f"当日成交金额:{quote_data['tu']}")
except requests.exceptions.RequestException as e:
print("HTTP请求异常:", e)
except KeyError as e:
print("响应数据字段缺失:", e)
2.3.3 响应数据示例
{
"code": 0,
"msg": null,
"data": {
"s": "700",
"ld": 567,
"o": 571,
"h": 572,
"l": 560.5,
"t": 1754554089000,
"v": 16940382,
"tu": 9595241622.71,
"ts": 0
}
}
2.3.4 响应字段解析
| 字段名 | 类型 | 说明 |
|---|---|---|
| o | number | 当日开盘价 |
| h | number | 当日最高价 |
| l | number | 当日最低价 |
| tu | number | 当日成交金额 |
| ts | number | 涨跌幅(未启用时为 0) |
2.4 历史 K 线接口
获取单只股票的历史 K 线数据,支持不同周期类型,可用于技术分析、趋势研判等场景。
2.4.1 请求地址
https://api.itick.org/stock/kline
2.4.2 请求参数
| 参数名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| region | string | 是 | 市场标识,参考 1.2 节 |
| code | string | 是 | 股票代码 |
| kType | int | 是 | K 线周期类型(8=日 K,其他周期可参考 API 补充文档) |
| limit | int | 是 | 返回数据条数,最大支持 1000 条 |
2.4.3 调用代码示例(Python)
import requests
import time
# 历史K线接口地址
url = "https://api.itick.org/stock/kline"
headers = {
"accept": "application/json",
"token": "your_token"
}
# 请求参数:A股宁德时代(300750)的最近10条日K线数据
params = {
"region": "CN",
"code": "300750",
"kType": 8, # 8代表日K线
"limit": 10 # 返回最近10条数据
}
try:
response = requests.get(url, headers=headers, params=params)
result = response.json()
if result["code"] == 0:
kline_data = result["data"]
print(f"宁德时代(300750)最近10条日K线数据:\n")
# 遍历K线数据并格式化输出
for kline in kline_data:
# 将时间戳转换为本地日期格式
kline_time = time.strftime("%Y-%m-%d", time.localtime(kline["t"]/1000))
print(f"日期:{kline_time}")
print(f"开盘价:{kline['o']} | 最高价:{kline['h']} | 最低价:{kline['l']} | 收盘价:{kline['c']}")
print(f"成交量:{kline['v']} | 成交金额:{kline['tu']}\n")
except Exception as e:
print("请求失败:", str(e))
2.4.3 响应数据示例
{
"code": 0,
"msg": null,
"data": [
{
"tu": 56119888070.5,
"c": 534.5,
"t": 1741239000000,
"v": 104799385,
"h": 536,
"l": 534.5,
"o": 535
}
]
}
2.4.4 响应字段解析
| 字段名 | 类型 | 说明 |
|---|---|---|
| o | number | 该周期开盘价 |
| h | number | 该周期最高价 |
| l | number | 该周期最低价 |
| c | number | 该周期收盘价 |
| t | number | 该周期时间戳(毫秒级,UTC 时间) |
| v | number | 该周期成交量 |
| tu | number | 该周期成交金额 |
2.5 批量历史 K 线接口
支持同时获取多只股票的历史 K 线数据,减少请求次数,提升开发效率,参数及返回格式与单只 K 线接口兼容。
2.5.1 请求地址
https://api.itick.org/stock/klines
2.5.2 请求参数
| 参数名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| region | string | 是 | 市场标识,多只股票需属于同一市场 |
| codes | string | 是 | 股票代码列表,用英文逗号分隔,如“700,9988” |
| kType | int | 是 | K 线周期类型,与单只 K 线接口一致 |
| limit | int | 是 | 单只股票返回数据条数 |
2.5.3 调用代码示例(Python)
import requests
import time
# 批量历史K线接口地址
url = "https://api.itick.org/stock/klines"
headers = {
"accept": "application/json",
"token": "your_token"
}
# 请求参数:港股腾讯(700)和阿里(9988)的最近5条日K线
params = {
"region": "HK",
"codes": "700,9988", # 多只股票代码用英文逗号分隔
"kType": 8,
"limit": 5
}
try:
response = requests.get(url, headers=headers, params=params)
result = response.json()
if result["code"] == 0:
stock_klines = result["data"]
# 遍历不同股票的K线数据
for stock_code, klines in stock_klines.items():
stock_name = "腾讯控股" if stock_code == "700" else "阿里巴巴"
print(f"=== {stock_name}({stock_code})最近5条日K线 ===")
for kline in klines:
kline_date = time.strftime("%Y-%m-%d", time.localtime(kline["t"]/1000))
print(f"日期:{kline_date} | 开:{kline['o']} | 高:{kline['h']} | 低:{kline['l']} | 收:{kline['c']}")
print("\n")
except Exception as e:
print("批量获取K线失败:", str(e))
2.5.3 响应数据示例
{
"code": 0,
"msg": null,
"data": {
"700": [
{
"tu": 56119888070.5,
"c": 534.5,
"t": 1741239000000,
"v": 104799385,
"h": 536,
"l": 534.5,
"o": 535
}
],
"9988": [
{
"tu": 75404622753.1,
"c": 140.1,
"t": 1741239000000,
"v": 538602171,
"h": 140.3,
"l": 139.8,
"o": 139.9
}
]
}
}
2.6 实时行情 WebSocket 接口
通过 WebSocket 协议实现行情数据推送,支持多只股票同时订阅,实时性优于 HTTP 轮询,适用于高频行情场景。
2.6.1 连接地址
wss://api.itick.org/stock
2.6.2 订阅参数
连接建立后需发送订阅请求,指定目标股票及数据类型:
{
"ac": "subscribe",
"params": "AAPL$US,TSLA$US,601398$CN",
"types": "depth,quote"
}
| 参数名 | 说明 |
|---|---|
| ac | 操作类型,订阅填“subscribe” |
| params | 订阅股票列表,格式为“代码$市场”,多只用逗号分隔 |
| types | 订阅数据类型,支持“tick”(实时成交)、“quote”(实时报价)、“depth”(盘口) |
2.6.3 调用代码示例(Python)
使用 websockets 库实现 WebSocket 连接,需提前安装:pip install websockets
import asyncio
import websockets
import json
# WebSocket连接地址
WS_URL = "wss://api.itick.org/stock"
# 订阅请求数据
subscribe_msg = {
"ac": "subscribe",
"params": "AAPL$US,700$HK,601398$SZ", # 订阅美股苹果、港股腾讯、A股工行
"types": "tick,quote" # 订阅实时成交和实时报价
}
async def subscribe_stock_data():
async with websockets.connect(WS_URL) as websocket:
# 发送订阅请求
await websocket.send(json.dumps(subscribe_msg))
print("已发送订阅请求,等待行情数据推送...\n")
# 循环接收推送数据
while True:
response = await websocket.recv()
# 解析响应数据
data = json.loads(response)
if data["code"] == 1:
tick_data = data["data"]
stock_code = tick_data["s"]
data_type = tick_data["type"]
print(f"=== 股票:{stock_code} | 数据类型:{data_type} ===")
if data_type == "tick":
print(f"最新成交价:{tick_data['ld']}")
print(f"成交量:{tick_data['v']}")
print(f"成交时间:{tick_data['t']}")
elif data_type == "quote":
print(f"开盘价:{tick_data['o']} | 最高价:{tick_data['h']} | 最低价:{tick_data['l']}")
print(f"最新价:{tick_data['ld']} | 成交金额:{tick_data['tu']}")
print("-" * 50 + "\n")
if __name__ == "__main__":
try:
# 运行异步WebSocket客户端
asyncio.run(subscribe_stock_data())
except KeyboardInterrupt:
print("程序已终止")
except Exception as e:
print("WebSocket连接异常:", str(e))
2.6.3 响应内容示例
实时 Tick 响应
{
"code": 1,
"data": {
"s": "AAPL.US",
"ld": 225.215,
"v": 16742235,
"t": 1731689407000,
"type": "tick"
}
}
实时报价响应
{
"code": 1,
"data": {
"s": "AAPL.US",
"ld": 225.215,
"o": 226.27,
"h": 226.92,
"l": 224.44,
"t": 1731689407000,
"v": 16742235,
"tu": 3774688301.452,
"ts": 0,
"type": "quote"
}
}
三、接入注意事项
-
Token 有效性:登录官方网站获取专属 Token,避免因共用导致的访问限制。
-
请求频率限制:免费版 API 存在一定的请求频率限制(建议每秒不超过 5 次),高频请求需联系官方升级权限。
-
数据格式处理:时间戳字段为毫秒级 UTC 时间,需根据业务需求转换为本地时间;价格、金额等数值字段建议保留 2 位小数展示。
-
市场差异适配:不同市场的股票代码规则、交易时间及货币单位存在差异(如 A 股用人民币,港股用港币),需在应用中针对性适配。
-
异常处理:当响应 code 不为 0 时,可通过 msg 字段获取错误信息,建议实现重试机制(如网络超时)及降级策略(如无数据时展示缓存内容)。
四、常见问题
4.1 接口支持的 K 线周期有哪些?
目前 kType 参数支持多种周期,核心包括:1(1 分钟 K)、2(5 分钟 K)、3(15 分钟 K)、4(30 分钟 K)、5(60 分钟 K)、6(2 小时 K)、7(4 小时 K)、8(日 K)、9(周 K)、10(月 K),完整周期列表可参考 官方 API 文档。
4.2 能否同时订阅不同市场的股票?
支持,WebSocket 订阅时 params 参数中可包含多市场股票,只需按"代码$市场"格式正确填写即可,如"AAPL$US,700$HK,300750$CN"。
4.3 数据延迟情况如何?
HTTP 接口数据延迟约 200 毫秒,WebSocket 接口延迟可低至 50 毫秒以内,满足多数实时行情场景需求。