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 比明天晚也一樣,請在用戶端自行篩選。