精华帖子

港股、美股、A 股实时行情数据 API 接口-免费接入

由bqpess5i创建,最终由bqpess5i 被浏览 3 用户

一款支持港股、美股、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 毫秒以内,满足多数实时行情场景需求。

GitHub https://github.com/itick-org

{link}