5 个端点
https://api.blave.orgapi-key 与 secret-key 请求头API plan or Blave Agent plan全市场的每日序列(没有 stock_id)。start/end 是选填的 YYYY-MM-DD;不带就回完整历史。不要拿个股端点加总来代替,涵盖范围与单位都不同。
/studio/market/twmarket/index/<index_id> | 名称 | 说明 | 可用值 | 默认 |
|---|---|---|---|
index_idstring · path必填 | 只支持 TAIEX | TAIEX(不分大小写) | |
startstring · query | 起始日 | YYYY-MM-DD | 1999-01-05 |
endstring · query | 结束日 | YYYY-MM-DD | 今天 |
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."}/上游频率限制 | 数据库还没准备好/上游无法连线 |
/studio/market/twmarket/turnover | 名称 | 说明 | 可用值 | 默认 |
|---|---|---|---|
startstring · query | 起始日 | YYYY-MM-DD | 1990-01-04 |
endstring · query | 结束日 | YYYY-MM-DD | 今天 |
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 数据库还没准备好或上游频率限制。
/studio/market/twmarket/institutional | 名称 | 说明 | 可用值 | 默认 |
|---|---|---|---|
startstring · query | 起始日 | YYYY-MM-DD | 2004-04-07 |
endstring · query | 结束日 | YYYY-MM-DD | 今天 |
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。/studio/market/twmarket/margin | 名称 | 说明 | 可用值 | 默认 |
|---|---|---|---|
startstring · query | 起始日 | YYYY-MM-DD | 2001-01-03 |
endstring · query | 结束日 | YYYY-MM-DD | 今天 |
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 上游频率限制。
/studio/market/twmarket/dividend_points | 名称 | 说明 | 可用值 | 默认 |
|---|---|---|---|
startstring · query | 起始日 | 严格 YYYY-MM-DD | 2003-01-02 |
endstring · query | 结束日期;超过时默默截到今天 + 120 天 | 严格 YYYY-MM-DD | 今天 + 120 天 |
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[].date | string | 日期 |
data[].points | float | 当天因除息而蒸发的指数点数 |
data[].estimated | bool | false = 已实现(由报酬指数与价格指数的差距算出;非除息日 ≈ 0);true = 预估(未来的平日,没有事件的日子补 0) |
meta.estimated_coverage | float | null | 预估时读得到输入数据的成分股,占 TAIEX 权重的比例;没有预估列时为 null |
meta.degraded | bool | true = 预估的涵盖率明显不足,请当成下限 |
| 状态码 | 回应内容 | 情况 |
|---|---|---|
| 400 | {"error": "Invalid start date, expected YYYY-MM-DD"}(或 end) | 日期格式错误 |
| 404 | {"error": "No TAIEX index data available"} | 数据库是空的,上游也没有数据 |
| 503 | 错误信息 | 预估涵盖率低于 90%、数据库还没准备好,或上游频率限制 |
end,即使 start 比明天晚也一样,请在用户端自行筛选。