TWSE BWIBBU_d 端點直取台股本益比與殖利率 — 官方 API 欄位機制、涵蓋範圍邊界與 DividendYear 民國年解讀
台股上市公司的本益比(PE)、股價淨值比(PB)、殖利率,多數散戶習慣從第三方財經網站查閱。TWSE(台灣證券交易所)官方開放資料 API 有一個端點 BWIBBU_d,每個交易日收盤後同步更新這三個估值指標,資料直接來自交易所,不經第三方轉載。本文整理 BWIBBU_d 的欄位機制、涵蓋範圍邊界、曆法混用陷阱,以及空值的真實原因。
① BWIBBU_d 是什麼
GET https://openapi.twse.com.tw/v1/exchangeReport/BWIBBU_d
回傳內容:全體上市公司當日本益比、殖利率、股價淨值比。資料來源為 TWSE 官方交易系統,每交易日收盤後更新。
此端點在 TWSE OpenAPI 體系中屬於 exchangeReport 路徑,與籌碼端點(如 T86 法人買賣超)平行,資料面向不同:T86 回答「法人在買什麼」,BWIBBU_d 回答「這支股票現在貴不貴、股利多少」。
對存股族而言,此端點可直接作為即時估值數據來源,不需倚賴第三方網站的資料轉載延遲。對工程師而言,這是建立估值監控自動化流程的權威資料來源。floviq 系列盤前自動化推播模板(portaly.cc/floviq)聚焦法人籌碼與大盤行情層;估值類端點屬不同維度的資料來源。
② 三個估值欄位
實際呼叫端點(快照日 2026-05-23,回傳 Date: "20260522" 為最後交易日)可確認三個估值欄位同時出現在每一筆 JSON 物件中:
| Key 名稱 | 含義 | 計算基礎 |
|---|---|---|
PEratio | 本益比 | 收盤價 ÷ 每股盈餘(EPS) |
PBratio | 股價淨值比 | 收盤價 ÷ 每股淨值 |
DividendYield | 殖利率 | 年度股利 ÷ 收盤價(%) |
三個欄位在同一筆回傳物件內提供,存股族常見的「估值全貌」——貴不貴(PE/PB)加上股利夠不夠高(殖利率)——單次 API 呼叫一次取得。
以下為欄位結構示意,數值以佔位符號呈現,非任何個股當日真實市場數字:
{
"Date": "20260522",
"Code": "XXXX",
"Name": "[個股名稱]",
"ClosePrice": "XX.XX",
"DividendYield": "X.XX",
"DividendYear": "114",
"PEratio": "XX.XX",
"PBratio": "X.XX",
"FiscalYearQuarter": "2026Q1"
}
注意:所有欄位均為字串型別("type": "string"),包含 PEratio、PBratio、DividendYield。計算前需明確轉型,不可假設為數值。
③ 涵蓋範圍邊界
此端點的涵蓋範圍有明確邊界,與財經網站顯示的「全股市」不同。
涵蓋:
- TWSE 上市公司(集中市場主板)
- 近期一次呼叫約 1,000 餘檔,筆數隨掛牌異動每日滾動
不涵蓋:
- ETF(
00*系列如 0050、0056、00878 等,完全不在此端點的回傳內) - 上櫃股票(TPEx 櫃買市場,需另查櫃買中心端點)
- 未上市 / 未掛牌公司
ETF 不在此端點,不是「ETF 在這裡但 PEratio 空值」。ETF 代號在此端點的回傳陣列中根本找不到對應的資料列。ETF 估值評估走折溢價(相對淨值的折價與溢價)邏輯,非 PE/PB 框架,需查 ETF 專屬端點。
上櫃股票的估值資料需查詢 TPEx(證券櫃買中心)自有端點,與此端點是不同資料源,不可混用。TWSE 與 TPEx 兩市場分工詳見 台股 = TWSE + TPEx 兩個獨立市場。
④ DividendYear 民國年與同一筆回傳的曆法並存
BWIBBU_d 的曆法問題是工程師最容易踩到的解析陷阱。同一筆 JSON 物件內同時出現兩種曆法、三種日期表示:
| 欄位 | 值(最後交易日 2026-05-22 資料) | 曆法 / 格式 | 含義 |
|---|---|---|---|
Date | "20260522" | 西元,8 碼 YYYYMMDD | 資料日期(最後交易日) |
DividendYear | "114" | 民國年,3 碼純數字 | 股利對應財年(114 = 2025 AD) |
FiscalYearQuarter | "2026Q1" | 西元年 + 季度 | 財報期間 |
三個欄位命名都帶有「日期」語意,但格式互不相同。Date 是西元 8 碼,DividendYear 是民國 3 碼純年份,FiscalYearQuarter 是西元年加季度字串。若用同一個 parseDate() 函式處理,"114" 會被誤解為西元 114 年,"2026Q1" 直接丟進 new Date() 會回傳 Invalid Date,過程不報錯但結果是錯的。
民國年轉西元只需加 1911:
// DividendYear: "114" → 2025 AD
const dividendYearAD = parseInt(data.DividendYear) + 1911; // = 2025
曆法並存的根源在於 BWIBBU_d 的資料由多個底層系統拼接:Date 欄位走交易系統的西元格式,DividendYear 沿用公司財務申報的民國年格式,FiscalYearQuarter 對齊國際財報準則的年度與季度標示。三個系統的曆法在同一筆回傳合併輸出,沒有統一轉換。
此曆法並存現象在 TWSE OpenAPI 體系中不只此端點,五端點的日期格式差異整體分析見 TWSE OpenAPI 日期格式陷阱。
⑤ 空值 PEratio 的真實原因
每次呼叫的回傳裡,都有相當比例(近期一次約兩成多)的資料列其 PEratio 為空字串 "",實際筆數每日滾動。
空值有多重成因,不可一律推定為虧損股。最常見的原因是該公司近四季每股參考稅後純益為 0 或負數(虧損股,本益比失去判讀意義);此外,未申報格式化財務報告或資料不完整者(如剛掛牌、延遲申報之公司),TWSE 同樣不計算本益比而回傳空字串。
這些空值資料列均為 TWSE 上市公司,不是 ETF(ETF 根本不在此端點)。本益比的計算前提是正的每股參考稅後純益,當該值為 0 或負即失去判讀意義。實務上空值的資料列中部分公司仍有配息紀錄,可見空值並非單一成因。
處理建議:
// 空值檢查 · 避免空字串除法
const pe = data.PEratio;
if (!pe || pe === "") {
// 虧損股 · 無有效 PE · 略過或標記
return null;
}
const peValue = parseFloat(pe);
DividendYield 與 DividendYear 也可能為空字串,對應的情況是當年度無股利配發紀錄。
⑥ DividendYear 的正確解讀
存股族使用殖利率欄位時,DividendYear 提供了判讀殖利率的時間維度,有一個容易誤讀的地方。
DividendYear: "114"(= 2025 AD)代表的是股利所對應的盈餘年度(114 = 2025 年盈餘),不是本年度預測。依 TWSE 官方定義,股利年度即「該公司以該年度之盈餘分派股利」,該股利通常於次年(此例 115 / 2026 年)實際發放。殖利率計算使用的分子是此已確定的歷史股利,分母是當前收盤價。因此:
DividendYield反映的是「以現在的股價,買進並領取該筆已確定歷史股利所能得到的報酬率」- 不代表今年一定會配同樣的股利
- 須注意
DividendYear標示的是盈餘所屬年度,與股利實際發放年度可能差一年,判讀時間軸時不可混為一談
確認 DividendYear 的值,可以判斷殖利率數字對應的是哪一年度的股利,避免誤讀為即時或預測資料。
對需要在盤前自動化流程中標注殖利率時間維度的使用者,DividendYear 的民國年值在進入流程前需轉成西元年再標注,避免使用者讀到 "114" 誤解為西元世紀初。盤前自動化推播類模板入口見 portaly.cc/floviq。
⑦ See also
- TWSE OpenAPI 日期格式陷阱 — 五端點曆法差異完整分析,BWIBBU_d 的三種日期格式在此為分類項之一
- 台股除權息機制與散戶三大誤解 — 殖利率的計算基礎與除息日程,與 BWIBBU_d 殖利率欄位搭配閱讀
- 外資、投信、自營商 — 三類法人資金的性質差別 — 籌碼(T86)與估值(BWIBBU_d)兩個維度的判讀互補
- TWSE OpenAPI Swagger:https://openapi.twse.com.tw/
修正紀錄
先前版本有以下更正(2026-05-31):
- §⑤:空值 PEratio 唯一原因為虧損股 → 空值有多重成因,不限虧損股。
- §⑥:DividendYear 為上一財年配息紀錄 → 為股利所對應的盈餘年度,通常於次年發放。
- §②:JSON 範例改為佔位符號,不附具體個股數值。
※ 本文描述 TWSE BWIBBU_d 端點欄位機制、涵蓋範圍邊界與曆法格式實況 · 不構成投資建議,投資請自行評估風險。
資料來源:TWSE BWIBBU_d(資料快照 2026-05-23,最後交易日 Date=20260522)
如果這篇對你有用: