博客 / 詳情

返回

港股、美股、A 股實時行情數據 API 接口-免費接入

港股、美股、A 股實時行情數據 API 接口-免費接入

一款支持港股、美股、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

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.