台股大盘 API

5 个端点

最后更新 2026-10
Base URL
https://api.blave.org
认证
每个请求都要带 api-key 与 secret-key 请求头
权限
API plan or Blave Agent plan
频率限制
每组密钥、每个 IP 各 5 分钟 500 次

通用规则

全市场的每日序列(没有 stock_id)。start/end 是选填的 YYYY-MM-DD;不带就回完整历史。不要拿个股端点加总来代替,涵盖范围与单位都不同。

加权指数日K

GET/studio/market/twmarket/index/<index_id>
数据起始
1999-01-05
更新频率
每日

参数

名称说明可用值默认
index_id
string · path必填
只支持 TAIEXTAIEX(不分大小写)
start
string · query
起始日YYYY-MM-DD1999-01-05
end
string · query
结束日YYYY-MM-DD今天

范例

Python
body = requests.get(f"{BASE_URL}/studio/market/twmarket/index/TAIEX", headers=headers,                    params={"start": "2024-01-01", "end": "2024-12-31"}, timeout=60).json()# {"index_id": "TAIEX", "data": [{"date": "2024-01-02", "open": 17939.79, "high": 17956.74, "low": 17784.97, "close": 17853.76}, ...]}

回应

{"index_id": "TAIEX", "data": [{"date", "open", "high", "low", "close"}]};价格单位是指数点数。没有成交量,请用 /twmarket/turnover。

错误

状态码回应内容情况
400{"error": "Unsupported index"}不是 TAIEX
404错误信息没有数据
503{"error": "Market data is not ready on this server. Please retry later."}/上游频率限制数据库还没准备好/上游无法连线

备注

  • 序列是 TWSE 官方公布的指数。
  • 服务器缓存:5 分钟。

全市场成交量值

GET/studio/market/twmarket/turnover
数据起始
1990-01-04
更新频率
每日

参数

名称说明可用值默认
start
string · query
起始日YYYY-MM-DD1990-01-04
end
string · query
结束日YYYY-MM-DD今天

范例

Python
data = requests.get(f"{BASE_URL}/studio/market/twmarket/turnover", headers=headers,                    params={"start": "2024-01-01"}, timeout=60).json()["data"]# [{"date": "2024-01-02", "volume": 6411778806.0, "value": 301290668897.0, "trades": 2267660.0}, ...]

回应

{"data": [...]}.

字段单位说明
date—交易日
volume股成交股数
value元成交金额
trades笔成交笔数

错误

404 没有数据;503 数据库还没准备好或上游频率限制。

备注

  • 数字是 TWSE 官方公布的市场成交统计。
  • 服务器缓存:5 分钟。

全市场三大法人买卖超

GET/studio/market/twmarket/institutional
数据起始
2004-04-07
更新频率
每日

参数

名称说明可用值默认
start
string · query
起始日YYYY-MM-DD2004-04-07
end
string · query
结束日YYYY-MM-DD今天

范例

Python
data = requests.get(f"{BASE_URL}/studio/market/twmarket/institutional", headers=headers,                    params={"start": "2024-01-01"}, timeout=60).json()["data"]# [{"date": "2024-01-02", "foreign": 1047078183.0, "investment_trust": 189637635.0,#   "dealer": -4448119903.0, "total": -3211404085.0}, ...]

回应

{"data": [{"date", "foreign", "investment_trust", "dealer", "total"}]};所有数值都是净额(买 − 卖),单位为元。

错误

404 没有数据;503 上游频率限制。

备注

  • 全市场层。foreign 是外资及陆资,不含外资自营商的自行买卖(外资自营商);dealer 是自营商(自行买卖 + 避险),TWSE 已经把外资自营商算在里面。个股端点(GET /studio/market/twstock/institutional/<stock_id>)是另一层:它回各类别的原始字段,不做任何归并。两者不要混用。
  • 每一天 foreign + investment_trust + dealer 都等于 total,也就是交易所公布的三大法人合计。外资自营商不是独立字段:它只出现在权证/ETN 上,而 Blave 不提供这些商品,且 2024-08-16 之后每天都是 0。
  • 服务器缓存:5 分钟。

全市场融资融券余额

GET/studio/market/twmarket/margin
数据起始
2001-01-03
更新频率
每日

参数

名称说明可用值默认
start
string · query
起始日YYYY-MM-DD2001-01-03
end
string · query
结束日YYYY-MM-DD今天

范例

Python
data = requests.get(f"{BASE_URL}/studio/market/twmarket/margin", headers=headers,                    params={"start": "2024-01-01"}, timeout=60).json()["data"]# [{"date": "2024-01-02", "margin_balance": 8012561, "margin_balance_prev": 7999081,#   "margin_balance_value": 248424271000, "short_balance": 369678, "short_balance_prev": 359738}, ...]

回应

{"data": [...]}.

字段单位说明
date—交易日
margin_balance / margin_balance_prev张融资余额,今日/前一日
margin_balance_value元融资余额金额
short_balance / short_balance_prev张融券余额,今日/前一日

错误

404 没有数据;503 上游频率限制。

备注

  • 服务器缓存:5 分钟。

加权指数每日除息点数

GET/studio/market/twmarket/dividend_points
数据起始
2003-01-02(已实现);预估最远到今天 + 120 天
更新频率
每日,台北时间约 17:00(已实现)

参数

名称说明可用值默认
start
string · query
起始日严格 YYYY-MM-DD2003-01-02
end
string · query
结束日期;超过时默默截到今天 + 120 天严格 YYYY-MM-DD今天 + 120 天

范例

Python
import pandas as pdpayload = requests.get(f"{BASE_URL}/studio/market/twmarket/dividend_points", headers=headers,                       params={"start": "2026-08-01"}, timeout=60).json()# {"data": [{"date": "2026-08-03", "points": 2.853, "estimated": false}, ...,#           {"date": "2026-08-28", "points": 3.846, "estimated": true}, ...],#  "meta": {"estimated_coverage": 0.9999, "degraded": false}}df = pd.DataFrame(payload["data"])future_div = df[df["estimated"]].set_index("date")["points"]# fair basis at t for settlement T: futures_price - (spot_index - future_div.loc[t_plus_1:T].sum())

回应

{"data": [{"date", "points", "estimated"}], "meta": {"estimated_coverage", "degraded"}}.

字段类型说明
data[].datestring日期
data[].pointsfloat当天因除息而蒸发的指数点数
data[].estimatedboolfalse = 已实现(由报酬指数与价格指数的差距算出;非除息日 ≈ 0);true = 预估(未来的平日,没有事件的日子补 0)
meta.estimated_coveragefloat | null预估时读得到输入数据的成分股,占 TAIEX 权重的比例;没有预估列时为 null
meta.degradedbooltrue = 预估的涵盖率明显不足,请当成下限

错误

状态码回应内容情况
400{"error": "Invalid start date, expected YYYY-MM-DD"}(或 end)日期格式错误
404{"error": "No TAIEX index data available"}数据库是空的,上游也没有数据
503错误信息预估涵盖率低于 90%、数据库还没准备好,或上游频率限制

备注

  • 台北时间约 17:00 以前,最新的已实现列是前一个交易日。
  • 约 2 周以后的预估主要靠去年同期的样板。
  • 预估列一律从明天回到 end,即使 start 比明天晚也一样,请在用户端自行筛选。
  • 服务器缓存:5 分钟(预估的输入数据 1 小时)。
  • 已实现的部分是报酬指数对价格指数的差;预估用已公告的股利加上去年同期的样板。