證交所即時資訊API

by 1月 06, 202017 Comments

API功能

於盤中取得個股、指數之價格、成交量、五檔...等即時資訊,詳細回傳資料如資料名稱對照表

API格式

目前的證交所即時資訊API的URL格式(JSON格式)為:
https://mis.twse.com.tw/stock/api/getStockInfo.jsp?ex_ch=參數&json=1&delay=0

參數 = 上市別_證券代碼.tw[_日期]
PartDescription
上市別必需參數
上市為tse
上櫃為otc
證券代碼必需參數
例如:
  • 台積電 : 2330.tw
  • 環球晶 : 6488.tw
  • 上市加權指數 : t00.tw
  • 櫃買指數 : o00.tw
日期選用參數,格式YYYYMMDD(已失效)
註:若要一次取得多個即時資料,參數請用「|」分隔
例如:取得台積電與環球晶,參數=tse _2330.tw|otc_6488.tw

API範例

台積電即時資訊

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=otc_6488.tw&json=1&delay=0

2019年12月11日的台積電資訊(日期功能已失效)

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

上市加權指數即時資訊

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

櫃買指數即時資訊

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

取得台積電與環球晶即時資訊:

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

API回傳資料

成功取得資訊時,應該會取得如下的JSON格式資料

{  "msgArray":
  [
    {
      "ts":"0",
      "tk0":"2330.tw_tse_20200106_B_9999280689",
      "tk1":"2330.tw_tse_20200106_B_9999280433",
      "tlong":"1578282160000",
      "f":"1122_1149_759_705_625_",
      "ex":"tse",
      "g":"1400_1778_678_1226_873_",
      "d":"20200106",
      "it":"12",
      "b":"332.50_332.00_331.50_331.00_330.50_",
      "c":"2330",
      "mt":"868332",
      "a":"333.00_333.50_334.00_334.50_335.00_",
      "n":"台積電",
      "o":"333.00",
      "l":"332.50",
      "h":"334.50",
      "ip":"0",
      "i":"24",
      "w":"306.00",
      "v":"29121",
      "u":"373.00",
      "t":"11:42:40",
      "s":"4",
      "pz":"333.00",
      "tv":"4",
      "p":"0",
      "nf":"台灣積體電路製造股份有限公司",
      "ch":"2330.tw",
      "z":"333.00",
      "y":"339.50",
      "ps":"2304"
    }
  ],
  "userDelay":5000,
  "rtmessage":"OK",
  "referer":"",
  "queryTime":
  {
    "sysTime":"11:42:44",
    "sessionLatestTime":-1,
    "sysDate":"20200106",
    "sessionFromTime":-1,
    "stockInfoItem":2607,
    "showChart":false,
    "sessionStr":"UserSession",
    "stockInfo":388257
  },
  "rtcode":"0000"
}
資料名稱對照表
NameDescription
tlongepoch毫秒數
f揭示賣量(配合「a」,以_分隔資料)
ex上市別(上市:tse,上櫃:otc,空白:已下市或下櫃)
g揭示買量(配合「b」,以_分隔資料)
d最近交易日期(YYYYMMDD)
b揭示買價(從高到低,以_分隔資料)
c股票代號
a揭示賣價(從低到高,以_分隔資料)
n公司簡稱
o開盤
l最低
h最高
w跌停價
v累積成交量
u漲停價
t最近成交時刻(HH:MM:SS)
tv當盤成交量
nf公司全名
z當盤成交價
y昨收

相關問題

使用限制

本API來源為證交所基本市況報導網站根據經驗每5秒請求不得超過3次,否則有可能會被鎖IP,請特別留意。

本文為學術研究經驗分享,請在合理、合法情況下使用,如因資料不正確或使用上有任何損害或損失,本站不負法律責任。

如何繞過瀏覽器跨域(CORS)限制?

有跨域(CORS)問題,可參考利用Google Apps Script繞過瀏覽器跨域(CORS)限制

證券代碼表

https://www.twse.com.tw/exchangeReport/MI_INDEX?response=json&type=ALLBUT0999[&date=日期]

日期為選用參數格式為YYYYMMDD,省略為最新交易日資料

範例

17留言

  1. 請問一下,他改日期的功能失效了嗎,我有照您的作法但還是出現今天的資訊
    https://mis.twse.com.tw/stock/api/getStockInfo.jsp?ex_ch=tse_2330.tw_20191212&json=1&delay=0

    回覆刪除
    回覆
    1. 日期功能好像失效了,
      不過現在很多證券商都有提供API,也提供線上免費開戶,建議可以用看看。
      證券商限制比較寬,不用擔心不小心被鎖IP,功能也比較齊全

      刪除
  2. 用這個API開發app要交錢給證交所嗎?

    回覆刪除
    回覆
    1. 免費的,不過日期功能失效,其它應該都還可以使用
      使用時,有5秒內不能超過3次的限制,請求太頻繁會被鎖IP一段時間喔!

      刪除
  3. 請問https://mis.twse.com.tw/stock/api/getStockInfo.jsp?ex_ch=參數&json=1&delay=0,哪裡可以查到參數表?謝謝

    回覆刪除
    回覆
    1. 這個API可以用關鍵字查詢,以下範例為查詢2330,您再研究看看;如果還是沒辦法,可以用0~9,a~z逐一做為關鍵字查詢,然後再比對移去重複項
      https://mis.twse.com.tw/stock/api/getStockNames.jsp?n=2330

      另外一個方法,像我比較懶,是直接去證交所查詢代碼,但沒辦法查詢指數
      https://isin.twse.com.tw/isin/class_i.jsp?kind=1
      「市場別」選「上市」或「上櫃」
      「有價證券別」選「股票」

      刪除
    2. 這裡有參數表
      https://www.twse.com.tw/exchangeReport/MI_INDEX?response=json&type=ALLBUT0999&date=20220527

      刪除
  4. 網頁初學者請問:這個API會被CORS擋嗎

    回覆刪除
    回覆
    1. 會喔
      若不確定,可以開啟chrome 開發人員工具(F12),在"主控台"分頁輸入以下javascript測試

      fetch('https://mis.twse.com.tw/stock/api/getStockInfo.jsp?ex_ch=tse_2330.tw&json=1&delay=0')
      .then((response) => {
      return response.text();
      })
      .then( (response) => {
      console.log(response);
      })
      .catch((error) => {
      console.log(`Error: ${error}`);
      })

      刪除
    2. 感謝站主即時回復
      本來想用這個做一個簡單的專題QQ

      刪除
    3. 那應該可以利用google試算表的巨集功能,一個中繼站的概念,我沒試過,理論上應該可以,我假日可以幫忙試試看
      詳細方法:
      透過試算表定時取得資料,用試算表的doGet()回傳javascript程式碼,程式碼為var test={"msgArray":[{"tv":"6725","ps":"6725", ...};// <-API取得的資料
      在網頁內寫<script src="試算表部屬頁面的網址"></script>,網頁內的test變數就會取得資料了
      因留言系統限制<>請改半形符號<>

      刪除
    4. 媽 原來這世界上有好人XD
      如此一來太麻煩站主了
      有找到部分的API可以使用
      內容為盤後或前一個交易日資訊
      做一個在資策會培訓的期中專題內容也夠用了
      還是萬分感謝站主

      刪除
    5. 測試ok,供您參考
      https://zys-notes.blogspot.com/2023/02/google-apps-scriptcors.html

      刪除
    6. 各大證券公司很多都是三竹資訊公司做的,API都一樣
      可以參考我這篇的方法用chrome的開發人員工具找
      https://zys-notes.blogspot.com/2019/12/excel-vba-http-getpost.html

      刪除
  5. 作者已經移除這則留言。

    回覆刪除

<