台股大盤 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 小時)。
  • 已實現的部分是報酬指數對價格指數的差;預估用已公告的股利加上去年同期的樣板。