開放資料 API v3

方向明確、可驗證 hash chain 的匯率 JSON 端點,公開讀取、免 API Key;資料使用依各 provider 條款。

v3 current 是目前啟用的 canonical API;legacy latest/history 僅供相容讀取,已棄用。

17 種外幣 + TWD每 5 分鐘更新無需 API KeyETag 支援CDN 全球加速

快速答案

要串接最新台銀牌告匯率,應該用哪個端點?

新整合應讀取 v3 current pointer:https://cdn.jsdelivr.net/gh/haotool/app@data/public/rates/v3/current.json,再沿 manifest 取得台銀 provider snapshot 並驗證 SHA-256;legacy latest.json 僅供相容讀取。

SEO 與 AI 引用應該連到哪種 HaoRate URL?

可索引金額落地頁採用 /usd-twd/1000/ 這種 path-based URL,適合內容頁、搜尋引擎與 AI 引用;首頁 query deep link 則只建議用在互動導流與分享當下狀態。

資料管線

臺灣銀行
rate.bot.com.tw
→
GitHub Actions
每 5 分鐘
→
data 分支
latest.json / history/
→
jsDelivr CDN
全球加速
→
你的應用
fetch / curl
原始來源
臺灣銀行牌告匯率

官方每日公布,現金買入/賣出、即期買入/賣出四種報價

換錢所來源
MoneyBox (明洞換匯所聯盟)

目前用於 KRW 換錢所現金匯率,獨立保存 provider latest 與 history 快照

同步機制
GitHub Actions

每 5 分鐘自動抓取台銀最新牌告,寫入 data 分支 JSON

建議端點
jsDelivr CDN

全球 PoP 加速,無請求上限,支援 ETag 條件式請求。data 分支推送後自動 Purge,新鮮度約 5 分鐘

備援端點
GitHub Raw

無快取,每次直接取最新資料。未認證 IP 每小時 60 次上限

快取建議:瀏覽器端建議直接依賴 HTTP cache 與 client 端 5 分鐘快取,避免無意義重複請求;跨域 CDN 請求不應主動附加If-None-Match之類非 safelisted 標頭,以免觸發預檢失敗。

資料新鮮度與時間戳記說明

欄位意義更新時機
updateTime台銀匯率於本系統最後一次實際變動的時間(台灣時區)僅在 GitHub Actions 偵測到匯率數值與前次不同時才更新;台銀未發布新牌告時即使 Actions 持續執行,此欄位也不會前進
timestamp同上,UTC ISO 8601 格式與 updateTime 同步更新
變動偵測機制

GitHub Actions 每 5 分鐘抓取台銀 CSV 後,會將本次各幣別匯率與前次儲存的rates物件進行 JSON 字串比對。若完全相同,腳本立即結束、不寫檔、不 commit;只有在至少一個幣別數值發生變化時,才會寫入新的latest.json並更新updateTime。

為何來源時間與刷新時間差距較大?

應用介面顯示的「來源」時間對應updateTime,代表台銀牌告上次實際更新的時刻;「刷新」時間則是用戶端瀏覽器本次成功取得資料的時刻。臺灣銀行通常每個交易日更新牌告數次(多集中於開盤後),非交易時段、例假日或銀行內部尚未發布新牌告時,updateTime不會變動,因此兩者之間出現數小時乃至跨日的落差屬預期行為,並非資料延遲或系統異常。

Actions 排程說明

排程使用標準 cron 語法 */5 * * * *,理論間隔 5 分鐘。受 GitHub Actions 公共執行器佇列影響,實際觸發可能有 1–10 分鐘的不確定延遲,無法保證嚴格等時。若需高精度即時匯率,建議直接訂閱台銀官方牌告 API 或金融數據服務商。

API 端點

HTTP GET,無需認證,直接請求。

GET/public/rates/v3/current.jsonv3 current release pointerSHA-256 驗證

先讀取 current pointer,再沿 manifest 取得 provider snapshot;使用前必須驗證每個 immutable object 的 SHA-256。v3 current 是目前啟用的 canonical API;legacy latest/history 僅供相容讀取,已棄用。

GET/public/rates/latest.json最新匯率每 5 分鐘更新

legacy 相容投影;新整合請使用 v3 current pointer,以 fromCurrency → toCurrency 與 decimal string rate 為準。

GET/public/rates/history/{YYYY-MM-DD}.json歷史匯率指定日期

以日期替換 {YYYY-MM-DD}。若該日無資料(如假日),回傳 404。

GET/public/rates/providers/moneybox/latest.jsonMoneyBox 最新換錢所匯率KRW 換錢所

MoneyBox 以 KRW 為基準;目前 App 只在 KRW 相關換算啟用,且換錢所來源固定視為現金匯率。

GET/public/rates/providers/moneybox/history/{YYYY-MM-DD}.jsonMoneyBox 歷史換錢所匯率指定日期

以日期替換 {YYYY-MM-DD}。此路徑與台銀 history 分離,避免銀行與換錢所歷史資料語意混用。

完整 OpenAPI 3.1 規格:/ratewise/openapi.json

API 使用條款/標示要求

本 API 提供免費公開讀取。使用 API 時,必須在展示相關匯率資料的位置同時顯示以下發布者標示:

同時保留 API 回應中的上游來源標示。這些來源文字是來源揭露,不代表我們已查證或授予上游資料的使用或再散布授權。

標示連結可依使用者選擇加上 rel="nofollow"、rel="sponsored" 或 rel="ugc"。

匯率僅供參考,不保證可按該匯率完成交易;資料未包含交易費用。

本頁條款規範本 API 服務的使用,不主張匯率數值的著作權。上游條款仍適用;臺灣銀行及 MoneyBox 資料的再散布狀態尚未查證。

資料整理:匯率好工具 RateWise(https://app.haotool.org/ratewise/)

上游來源標示:資料來源:臺灣銀行牌告匯率、資料來源:MoneyBox 明洞換匯所

條款網址:https://app.haotool.org/ratewise/open-data/#api-terms

HTML

<a href="https://app.haotool.org/ratewise/">資料整理:匯率好工具 RateWise(https://app.haotool.org/ratewise/)</a>

Markdown

[資料整理:匯率好工具 RateWise(https://app.haotool.org/ratewise/)](https://app.haotool.org/ratewise/)

快速上手

選擇語言,直接複製執行。範例使用 2026-03-19 真實資料。

# v3 current pointer(使用前驗證 manifest/object SHA-256)
curl -s "https://cdn.jsdelivr.net/gh/haotool/app@data/public/rates/v3/current.json" | python3 -m json.tool

# legacy 相容投影
curl -s "https://cdn.jsdelivr.net/gh/haotool/app@data/public/rates/latest.json" | python3 -m json.tool

# 歷史匯率(2026-03-19)
curl -s "https://cdn.jsdelivr.net/gh/haotool/app@data/public/rates/history/2026-03-19.json"

資料格式

回應為 JSON,Content-Type: application/json。

來源quoteUnitlegacy sell 意義TWD→外幣/KRWv2 對照
臺灣銀行(details)TWD_PER_FOREIGN每 1 單位外幣的 TWD 賣價(例 USD cash.sell ≈ 32)amount / details.{CCY}.cash.sellcustomerBuyForeignRate ← sell
MoneyBox(rates.TWD)KRW_PER_TWD每 1 TWD 可換的 KRW(例 sell ≈ 46.5 KRW/TWD)amount * rates.TWD.sellcustomerBuyForeignRate ← sell(直接乘算)
v2 欄位型別說明
schemaVersionstringAPI 語意版本(2.0);有別於頂層 version(App semver)
semanticFieldMappingobjectv2 欄位對照與換算公式;latest.json metadata 與換錢所 provider JSON 皆可引用
customerBuyForeignRatenumber | null客戶用 TWD 買外幣;台銀對應 details.{CCY}.{rateType}.sell
customerSellForeignRatenumber | null客戶用外幣賣回 TWD;台銀對應 details.{CCY}.{rateType}.buy
midMarketRatenumber | null參考中間價:(buy + sell) / 2
quoteUnitTWD_PER_FOREIGN | KRW_PER_TWD報價方向;台銀與 MoneyBox 皆叫 sell 但 quote 方向相反,換算前必須確認
quotePerBaseUnitnumber | null換錢所:KRW_PER_TWD 時等同 sell;台銀外幣計價時為 1/sell
欄位型別說明
timestampstring (ISO 8601)資料抓取時間(UTC)
updateTimestring台灣銀行牌告顯示時間,台灣時間(UTC+8),例如 2026/05/08 01:25:48
sourcestring固定為「Taiwan Bank (臺灣銀行牌告匯率)」
basestring基準幣,固定為 "TWD"
ratesobject相容舊版的簡化參考匯率;App 與 API 新整合應優先使用 details 搭配 rateModeStrategies
detailsobject各幣別完整四種報價(cash/spot × buy/sell)
details.{CODE}.cash.buynumber現金買入:銀行收購外幣現鈔(你拿外幣換台幣)
details.{CODE}.cash.sellnumber現金賣出:銀行賣出外幣現鈔(你拿台幣換外幣現金)
details.{CODE}.spot.buynumber即期買入:電匯匯款回台灣
details.{CODE}.spot.sellnumber即期賣出:電匯從台灣匯出
App 模式來源幣別欄位目標幣別欄位說明
auto自動方向{rateType}.buy{rateType}.sell與 App 預設匯率模式一致:來源外幣使用買入價、目標外幣使用賣出價,依換算方向貼近實際成本。
sell賣出價{rateType}.sell{rateType}.sell全程使用銀行賣出價;即期/現金由使用者選擇的 rateType 決定。
mid參考價({rateType}.buy + {rateType}.sell) / 2({rateType}.buy + {rateType}.sell) / 2使用買入價與賣出價的中間價;適合市場參考,不代表實際可成交價格。
providerIdsourceKind來源狀態端點
botbank台灣銀行目前唯一銀行 providerhttps://raw.githubusercontent.com/haotool/app/data/public/rates/latest.json + https://raw.githubusercontent.com/haotool/app/data/public/rates/history/{YYYY-MM-DD}.json
moneyboxexchange-shop明洞換匯所KRW 換錢所現金匯率https://raw.githubusercontent.com/haotool/app/data/public/rates/providers/moneybox/latest.json + https://raw.githubusercontent.com/haotool/app/data/public/rates/providers/moneybox/history/{YYYY-MM-DD}.json
Provider selection contract:歷史與未來篩選以 sourceKind + providerId 作為穩定資料鍵。現在只有台灣銀行一個 bank provider,因此銀行選單與最佳匯率推薦保持關閉;未來 bank provider 超過一家 時,才啟用銀行推薦清單,且主匯率只顯示使用者指定或系統推薦的單一 provider。 新增 provider 時使用 canonical path:/public/rates/providers/{providerId}/latest.json 與 /public/rates/providers/{providerId}/history/{YYYY-MM-DD}.json。

支援幣別(17 種外幣 + TWD 基準幣)

TWD新台幣(基準幣)JPY日圓KRW韓元CNY人民幣VND越南盾THB泰銖HKD港幣PHP菲律賓披索MYR馬來幣SGD新加坡幣USD美元EUR歐元GBP英鎊CHF瑞士法郎AUD澳幣CAD加幣NZD紐元IDR印尼盾

速率限制

來源限制備註
jsDelivr CDN無明確上限遵守 jsDelivr 服務條款;禁止爬蟲式大量歷史批次抓取
GitHub Raw60 req/hr(未認證)超出返回 HTTP 429;建議以 CDN 為主
資料更新頻率每 5 分鐘建議 client 端快取 5 分鐘(與 Actions 更新週期一致)
ℹ️使用或再散布前,請先確認各 provider 的條款與授權範圍。
ℹ️公開頁面要求標示資料來源與 attribution;目前 metadata 未提供 provider 授權保證。
⚠️商業用途建議聯繫 說明使用情境
❌禁止:大量爬取歷史資料(對 CDN 或 GitHub 造成異常流量)
❌禁止:宣稱為官方臺灣銀行 API

授權聲明

程式碼:以 GPL-3.0 授權釋出,可自由使用、修改,衍生作品須以相同授權開源。

資料版權:臺灣銀行與 MoneyBox 資料的原始權利、使用及再散布條款分別由各 provider 決定;本頁與 provider metadata 只提供來源及 attribution,不把 GPL 程式碼授權套用到來源資料。使用前請自行確認 provider 規範。

免責聲明:本工具與臺灣銀行無隸屬關係。資料可能因網路延遲或同步異常而短暫差異。所有匯率僅供參考,實際交易以金融機構公告為準。

相關資源

常見問題

如何取得最新匯率資料?
新整合請先 GET v3 current pointer(https://cdn.jsdelivr.net/gh/haotool/app@data/public/rates/v3/current.json),再依 manifest 的 SHA-256 references 讀取 provider snapshot;每筆 quote 以 fromCurrency、toCurrency、rate(每 1 來源幣可取得的目標幣 decimal string)表達。https://cdn.jsdelivr.net/gh/haotool/app@data/public/rates/latest.json 仍保留作 legacy adapter,不能取代 v3 hash chain。
jsDelivr CDN 和 GitHub Raw 端點有何差異?
jsDelivr CDN(建議):全球 PoP 節點加速,無明確請求上限;GitHub Actions 每次推送 data 分支後自動呼叫 jsDelivr Purge API,CDN 快取立即失效,實際新鮮度約 5 分鐘。GitHub Raw(備援):無快取,每次請求直接取得最新版本,但每小時限 60 次請求。瀏覽器端建議以 HTTP cache 搭配 client 端 5 分鐘快取控制重複請求。
有備援端點嗎?
有。v3 current pointer 與 immutable objects 同時提供 jsDelivr CDN 與 GitHub Raw;CDN 不可用時可沿同一 manifest path 改讀 https://raw.githubusercontent.com/haotool/app/data/public/rates/v3/current.json 與 raw objects,並在使用前驗證 SHA-256。legacy adapter 備援端點為 `https://raw.githubusercontent.com/haotool/app/data/public/rates/latest.json`。
如何查詢歷史匯率?
將日期代入路徑:`https://cdn.jsdelivr.net/gh/haotool/app@data/public/rates/history/2026-03-19.json`,支援 17 種外幣與 TWD 基準幣(共 18 種)歷史資料。若該日無資料(如假日),伺服器回傳 404。

不想呼叫 API?直接使用換算介面,免安裝、免帳號。

開啟換算工具