證交所 API 參數紀錄...上班看盤?

更新 發佈閱讀 16 分鐘

前言

這篇原本紀錄於 2022-08。

幾年前嘗試開發網站時,相關功能特別打過證交所的 API;後來開發給同事用的「上班看報價」腳本同樣也是打這個 API,不過這幾年一直沒有找到官方文件,所以相關欄位還是紀錄了一篇,近期也搬移過來。(除舊 + 佈新 + 回顧,為什麼 blog 又得再搬一次家? )

現在這個年代應該是已經不需要附上完整的腳本了,ChatGPT 產一產就好;倒是一樣希望大家愛用 terminal,是個輕鬆高效的好東西。

另外本篇說明主要學習指令與 API 用途,不包含任何投資建議;及如果需要更正確即時的資料還是要向其他更正式的管道取得。

說明

Request 參數

其中會帶上參數:


範例

例如大家最了解的台積電:

https://mis.twse.com.tw/stock/api/getStockInfo.jsp?ex_ch=tse_2330.tw&json=1&delay=0


想一次查詢多個標的,就用 | 分隔代碼:

https://mis.twse.com.tw/stock/api/getStockInfo.jsp?ex_ch=tse_2330.tw|tse_2317.tw|tse_2308.tw&json=1&delay=0



Response 參數

  • msgArray:主要資料回傳的 key

裡面資料的 key 如下 (方格子居然沒有支援表格 layout,我用 code block 紀錄):

欄位簡寫    說明

tv 當盤成交量

ps 未知

pz 未知

bp 未知

a 五檔賣價 (低到高、底線分隔)

b 五檔買價 (低到高、底線分隔)

c 標的 (股票、債券) 代碼

d 最近交易日期 (YYYYmmdd)

ch 未知

tlong epoch time (毫秒)

f 五檔賣量、配合 a 欄位

ip 未知

g 五檔買量、配合 b 欄位

mt 未知

h 最高價

it 未知

l 最低價

n 公司簡稱

o 開盤價

p 未知

ex 上市或上櫃 (tse / otc)

s 未知

t 最新成交時間點

u 漲停價

v 累積成交量

w 跌停價

nf 公司全名

y 昨收價

z 當盤成交價

ts 未知


因為沒有找到相關的 API 文件,某些欄位不太確定是什麼意思。

還是附上原本的表格好了,code block 還是有點難讀:

raw-image



使用方式

一般程式語言

如果你在開發程式,Python、JS、Golang、Rust...,就直接用對應的套件解析回傳的 JSON 就可以了。


Terminal 快速查看

打開你的 terminal (終端機),mac 可以在 Spotlight 中搜尋:

raw-image


然後輸入:

curl -s "https://mis.twse.com.tw/stock/api/getStockInfo.jsp?ex_ch=tse_2330.tw|tse_2317.tw|tse_2308.tw&json=1&delay=0"

(你可以在 mac 中搜尋「終端機」;我是下載 iTerm2)

類似這樣

raw-image


你可能需要另外安裝 jq 才能快速處理 JSON 格式的資料 (安裝方式)。

有用 jq 的話就會得到比較漂亮的結果:

[
{
"@": "2330.tw",
"tv": "25947",
"ps": "26115",
"pid": "9.tse.tw|14452",
"pz": "1270.0000",
"bp": "0",
"fv": "54",
"oa": "1280.0000",
"ob": "1275.0000",
"m%": "000000",
"^": "20250919",
"key": "tse_2330.tw_20250919",
"a": "1270.0000_1275.0000_1280.0000_1285.0000_1290.0000_",
"b": "1265.0000_1260.0000_1255.0000_1250.0000_1245.0000_",
"c": "2330",
"#": "13.tse.tw|2639",
"d": "20250919",
"%": "14:30:00",
"ch": "2330.tw",
"tlong": "1758263400000",
"ot": "14:30:00",
"f": "198_221_169_1163_3259_",
"g": "2291_1839_613_626_1692_",
"ip": "0",
"mt": "000000",
"ov": "51316",
"h": "1290.0000",
"i": "24",
"it": "12",
"oz": "1275.0000",
"l": "1265.0000",
"n": "台積電",
"o": "1285.0000",
"p": "0",
"ex": "tse",
"s": "25947",
"t": "13:30:00",
"u": "1410.0000",
"v": "44808",
"w": "1160.0000",
"nf": "台灣積體電路製造股份有限公司",
"y": "1285.0000",
"z": "1265.0000",
"ts": "0"
},
{
"@": "2317.tw",
"tv": "17697",
"ps": "17685",
"pid": "9.tse.tw|14445",
"pz": "214.0000",
"bp": "0",
"fv": "180",
"oa": "214.5000",
"ob": "214.0000",
"m%": "000000",
"^": "20250919",
"key": "tse_2317.tw_20250919",
"a": "214.5000_215.0000_215.5000_216.0000_216.5000_",
"b": "214.0000_213.5000_213.0000_212.5000_212.0000_",
"c": "2317",
"#": "13.tse.tw|3090",
"d": "20250919",
"%": "14:30:00",
"ch": "2317.tw",
"tlong": "1758263400000",
"ot": "14:30:00",
"f": "54_556_837_2751_2646_",
"g": "1372_2230_2087_1926_2712_",
"ip": "0",
"mt": "000000",
"ov": "45409",
"h": "217.0000",
"i": "31",
"it": "12",
"oz": "214.0000",
"l": "214.0000",
"n": "鴻海",
"o": "216.5000",
"p": "0",
"ex": "tse",
"s": "17697",
"t": "13:30:00",
"u": "236.5000",
"v": "56136",
"w": "193.5000",
"nf": "鴻海精密工業股份有限公司",
"y": "215.0000",
"z": "214.0000",
"ts": "0"
},
{
"@": "2308.tw",
"tv": "4147",
"ps": "4146",
"pid": "9.tse.tw|14440",
"pz": "888.0000",
"bp": "0",
"fv": "57",
"oa": "894.0000",
"ob": "893.0000",
"m%": "000000",
"^": "20250919",
"key": "tse_2308.tw_20250919",
"a": "889.0000_890.0000_891.0000_892.0000_893.0000_",
"b": "888.0000_887.0000_886.0000_885.0000_884.0000_",
"c": "2308",
"#": "13.tse.tw|2445",
"d": "20250919",
"%": "14:30:00",
"ch": "2308.tw",
"tlong": "1758263400000",
"ot": "14:30:00",
"f": "3_16_31_19_25_",
"g": "378_237_247_391_167_",
"ip": "0",
"mt": "000000",
"ov": "7182",
"h": "909.0000",
"i": "28",
"it": "12",
"oz": "893.0000",
"l": "885.0000",
"n": "台達電",
"o": "894.0000",
"p": "0",
"ex": "tse",
"s": "4147",
"t": "13:30:00",
"u": "981.0000",
"v": "19500",
"w": "803.0000",
"nf": "台達電子工業股份有限公司",
"y": "892.0000",
"z": "888.0000",
"ts": "0"
}
]

看起來過去三年,欄位有新增了一些:@^%...,不過應該還是只能依據資料去大致猜測他的意思。


上班看盤?

雖然原本腳本寫的比較詳細、功能也比較多,不過我相信現在靠 ChatGPT 大家都可以快速產出一個喜歡的版本。這邊我只留最單純的 loop 指令讓大家看看自動刷新報價的感覺:

while true; do 
curl -s "https://mis.twse.com.tw/stock/api/getStockInfo.jsp?ex_ch=tse_2330.tw|tse_2317.tw|tse_2308.tw&json=1&delay=0" | jq -r '.msgArray[] | "\(.c): \(.z)"'
sleep 3
clear
done

於是每 3 秒你的螢幕上就會出現 (現在是 2025-09-20 週六的結果)

2330: 1265.0000
2317: 214.0000
2308: 888.0000


從上面的表格我們可以知道:c 代表的是「股票代碼」、z 是當盤收盤價。

這兩個應該是大家最需要的資料,所以範例就先拿這兩個內容當作示範,可以依據自己的喜好調整欄位。如果你的股票代碼相對少、也想低調一點,可以只顯示 z 就好:

# 這邊省略了其他部分,只關注 jq 語法

jq -r '.msgArray[].z'

這樣就沒人知道你在做什麼。


String Interpolation

另外,jq 的這個 "\(............)" 語法叫做 string interpolation,可以用來控制你想要的顯示格式。特別要注意的是,他只有左側有跳脫符號。

例如假設資料是:

{
"prefix": "Hi",
"name": "ktc",
"counts": 13
}


可以在這個基礎上加一些調整:

echo ${MY_JSON_DATA} | jq -r  '"\(.prefix) \(.name | ascii_upcase)"'

# Hi KTC

echo ${MY_JSON_DATA} | jq -r '"Counts = \(.counts + 1)"'

# Counts = 14


所以如果你想讓結果顯示地清楚一點,你可以在你的報價指令中再新增:「代碼」、「當盤成交價」等說明。


補充:

大約三年前測試的時候,這支證交所 API 大約有以下限制:

  1. 報價約莫 10 秒左右才更新一次。
  2. 一次取多檔報價的上限約在 120 檔。
  3. 數秒內不能打超過 N 次 (有點忘記 ratelimit 的具體限制)

當時如果要更新全部的 1500 檔股票報價,大約需要 25 ~ 35 秒左右。

所以指令的部分只適合我們這種一般人加減使用。

最後,Terminal 以及指令是超方便的東西,希望大家愛用!


留言
avatar-img
留言分享你的想法!
avatar-img
我是ktc
1會員
7內容數
我最愛的就兩件事:打造網頁服務、以及期貨市場。 因此這裡會紀錄一些網頁服務相關的技術文章;偶而記錄一些海期的心得。
我是ktc的其他內容
2025/09/18
學會在 Google Sheet 中使用自訂數字格式,輕鬆美化貨幣 (美元、臺幣) 顯示,並解決數字對齊問題。本文詳細解說各個格式符號的含義與用法,包含正負數、零值與文字的處理,讓你的試算表更專業、易讀。
Thumbnail
2025/09/18
學會在 Google Sheet 中使用自訂數字格式,輕鬆美化貨幣 (美元、臺幣) 顯示,並解決數字對齊問題。本文詳細解說各個格式符號的含義與用法,包含正負數、零值與文字的處理,讓你的試算表更專業、易讀。
Thumbnail
2025/09/10
幾年下來陸續在網路上看到不少優文;每隔幾個月,不管是交易順利或是遇到瓶頸,都會再看一次這三篇,每次都會有不同的感覺。很感謝各路前輩。 三篇分別是:「操盤手的五個階段」、「期貨最大的風險在於『無知』」、「成功者的交易心法 - 黃毅雄」
2025/09/10
幾年下來陸續在網路上看到不少優文;每隔幾個月,不管是交易順利或是遇到瓶頸,都會再看一次這三篇,每次都會有不同的感覺。很感謝各路前輩。 三篇分別是:「操盤手的五個階段」、「期貨最大的風險在於『無知』」、「成功者的交易心法 - 黃毅雄」
2025/09/08
分享 UTF-8 的詳細編碼設計,巧思不斷錯過可惜。
Thumbnail
2025/09/08
分享 UTF-8 的詳細編碼設計,巧思不斷錯過可惜。
Thumbnail
看更多
你可能也想看
Thumbnail
對於剛接觸Python程式的使用者來說,要一口氣學會爬蟲可能相對困難,但若想即時且輕鬆獲得台股相關數據,你可以利用證交所所提供的API進行數據蒐集。只需要簡單幾行程式碼,就能輕鬆抓到台股上千支股票的每日資訊,是不是棒呆了!!
Thumbnail
對於剛接觸Python程式的使用者來說,要一口氣學會爬蟲可能相對困難,但若想即時且輕鬆獲得台股相關數據,你可以利用證交所所提供的API進行數據蒐集。只需要簡單幾行程式碼,就能輕鬆抓到台股上千支股票的每日資訊,是不是棒呆了!!
Thumbnail
印象中是開始工作2000年就開始股票操作,但股票交易app只有顯示出2009年開始的交易記錄, 看著2009-2024,看到這15年間的交易記錄,真的就是對當時自己有多大交易的盲點, 現在我可是清清楚楚的可以點出來,自己對自己的旁觀者清,當局者迷。
Thumbnail
印象中是開始工作2000年就開始股票操作,但股票交易app只有顯示出2009年開始的交易記錄, 看著2009-2024,看到這15年間的交易記錄,真的就是對當時自己有多大交易的盲點, 現在我可是清清楚楚的可以點出來,自己對自己的旁觀者清,當局者迷。
Thumbnail
台股籌碼的盤勢觀察中,主要以現貨、期貨和選擇權等不同的籌碼面向進行每日的分析,以掌握市場的變化。同時,透過指數貢獻度的觀察,清楚地了解盤勢的控盤走向。此外也將技術面和主力籌碼面結合,以篩選出市場中的重點股,這有助於更全面地理解市場動態。
Thumbnail
台股籌碼的盤勢觀察中,主要以現貨、期貨和選擇權等不同的籌碼面向進行每日的分析,以掌握市場的變化。同時,透過指數貢獻度的觀察,清楚地了解盤勢的控盤走向。此外也將技術面和主力籌碼面結合,以篩選出市場中的重點股,這有助於更全面地理解市場動態。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News