要串接最新台銀牌告匯率,應該用哪個端點?
最新台銀牌告匯率建議直接讀取 latest.json:https://cdn.jsdelivr.net/gh/haotool/app@data/public/rates/latest.json。這是免 API Key 的主要 CDN 端點,適合正式環境。
台灣銀行牌告匯率 JSON 端點,免費、免 API Key、免帳號。
最新台銀牌告匯率建議直接讀取 latest.json:https://cdn.jsdelivr.net/gh/haotool/app@data/public/rates/latest.json。這是免 API Key 的主要 CDN 端點,適合正式環境。
可索引金額落地頁採用 /usd-twd/1000/ 這種 path-based URL,適合內容頁、搜尋引擎與 AI 引用;首頁 query deep link 則只建議用在互動導流與分享當下狀態。
If-None-Match ETag 條件式請求, 資料未變時回傳 304(零 body),可節省約 5 KB/次。建議 client 端快取 5 分鐘,避免無意義重複請求。| 欄位 | 意義 | 更新時機 |
|---|---|---|
| updateTime | 台銀匯率於本系統最後一次實際變動的時間(台灣時區) | 僅在 GitHub Actions 偵測到匯率數值與前次不同時才更新;台銀未發布新牌告時即使 Actions 持續執行,此欄位也不會前進 |
| timestamp | 同上,UTC ISO 8601 格式 | 與 updateTime 同步更新 |
GitHub Actions 每 5 分鐘抓取台銀 CSV 後,會將本次各幣別匯率與前次儲存的rates物件進行 JSON 字串比對。若完全相同,腳本立即結束、不寫檔、不 commit;只有在至少一個幣別數值發生變化時,才會寫入新的latest.json並更新updateTime。
應用介面顯示的「來源」時間對應updateTime,代表台銀牌告上次實際更新的時刻;「刷新」時間則是用戶端瀏覽器本次成功取得資料的時刻。臺灣銀行通常每個交易日更新牌告數次(多集中於開盤後),非交易時段、例假日或銀行內部尚未發布新牌告時,updateTime不會變動,因此兩者之間出現數小時乃至跨日的落差屬預期行為,並非資料延遲或系統異常。
排程使用標準 cron 語法 */5 * * * *,理論間隔 5 分鐘。受 GitHub Actions 公共執行器佇列影響,實際觸發可能有 1–10 分鐘的不確定延遲,無法保證嚴格等時。若需高精度即時匯率,建議直接訂閱台銀官方牌告 API 或金融數據服務商。
HTTP GET,無需認證,直接請求。
/public/rates/latest.json最新匯率每 5 分鐘更新包含 17 種外幣的現金與即期四種報價,TWD 為基準幣;App 匯率模式請依 rateModeStrategies 選取 buy / sell / mid 欄位。
/public/rates/history/{YYYY-MM-DD}.json歷史匯率指定日期以日期替換 {YYYY-MM-DD}。若該日無資料(如假日),回傳 404。
/public/rates/providers/moneybox/latest.jsonMoneyBox 最新換錢所匯率KRW 換錢所MoneyBox 以 KRW 為基準;目前 App 只在 KRW 相關換算啟用,且換錢所來源固定視為現金匯率。
/public/rates/providers/moneybox/history/{YYYY-MM-DD}.jsonMoneyBox 歷史換錢所匯率指定日期以日期替換 {YYYY-MM-DD}。此路徑與台銀 history 分離,避免銀行與換錢所歷史資料語意混用。
選擇語言,直接複製執行。範例使用 2026-03-19 真實資料。
# 最新匯率
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"const res = await fetch("https://cdn.jsdelivr.net/gh/haotool/app@data/public/rates/latest.json");
const data = await res.json();
const rateMode = "auto"; // auto | sell | mid,對應 App 設定
const rateType = "cash"; // cash | spot,對應使用者選擇
function pickRate(detail, side) {
if (rateMode === "mid") {
return (detail[rateType].buy + detail[rateType].sell) / 2;
}
if (rateMode === "sell") {
return detail[rateType].sell;
}
return side === "from" ? detail[rateType].buy : detail[rateType].sell;
}
const usdRate = pickRate(data.details.USD, "to");
console.log(`1000 TWD = ${1000 / usdRate} USD`);
console.log(data.details.USD.cash.sell, data.details.USD.cash.buy);import requests
data = requests.get("https://cdn.jsdelivr.net/gh/haotool/app@data/public/rates/latest.json").json()
rate_mode = "auto" # auto | sell | mid,對應 App 設定
rate_type = "cash" # cash | spot,對應使用者選擇
def pick_rate(detail, side):
if rate_mode == "mid":
return (detail[rate_type]["buy"] + detail[rate_type]["sell"]) / 2
if rate_mode == "sell":
return detail[rate_type]["sell"]
return detail[rate_type]["buy"] if side == "from" else detail[rate_type]["sell"]
usd_rate = pick_rate(data["details"]["USD"], "to")
print(f"1000 TWD = {1000 / usd_rate} USD")
history = requests.get("https://cdn.jsdelivr.net/gh/haotool/app@data/public/rates/history/2026-03-19.json").json()
print(history["details"]["USD"]["spot"]["sell"])<!-- 主要可索引 URL:金額落地頁(建議用於內容頁、SEO、AI 引用) -->
<a href="https://app.haotool.org/ratewise/usd-twd/1000/">
查看 1000 USD 換多少台幣
</a>
<!-- 互動 deep link:首頁 query 參數(建議用於 App 內導流或分享當下狀態) -->
<a href="https://app.haotool.org/ratewise/?amount=1000&from=USD&to=TWD">
查看 1000 USD 換多少台幣
</a>
<!-- URL 參數(首頁互動模式) -->
<!-- amount 換算金額(數字) -->
<!-- from 來源幣別(ISO 三碼) -->
<!-- to 目標幣別(預設 TWD) -->回應為 JSON,Content-Type: application/json。
| 欄位 | 型別 | 說明 |
|---|---|---|
| timestamp | string (ISO 8601) | 資料抓取時間(UTC) |
| updateTime | string | 台灣銀行牌告顯示時間,台灣時間(UTC+8),例如 2026/05/08 01:25:48 |
| source | string | 固定為「Taiwan Bank (臺灣銀行牌告匯率)」 |
| base | string | 基準幣,固定為 "TWD" |
| rates | object | 相容舊版的簡化參考匯率;App 與 API 新整合應優先使用 details 搭配 rateModeStrategies |
| details | object | 各幣別完整四種報價(cash/spot × buy/sell) |
| details.{CODE}.cash.buy | number | 現金買入:銀行收購外幣現鈔(你拿外幣換台幣) |
| details.{CODE}.cash.sell | number | 現金賣出:銀行賣出外幣現鈔(你拿台幣換外幣現金) |
| details.{CODE}.spot.buy | number | 即期買入:電匯匯款回台灣 |
| details.{CODE}.spot.sell | number | 即期賣出:電匯從台灣匯出 |
| App 模式 | 來源幣別欄位 | 目標幣別欄位 | 說明 |
|---|---|---|---|
auto自動方向 | {rateType}.buy | {rateType}.sell | 與 App 預設匯率模式一致:來源外幣使用買入價、目標外幣使用賣出價,依換算方向貼近實際成本。 |
sell賣出價 | {rateType}.sell | {rateType}.sell | 全程使用銀行賣出價;即期/現金由使用者選擇的 rateType 決定。 |
mid參考價 | ({rateType}.buy + {rateType}.sell) / 2 | ({rateType}.buy + {rateType}.sell) / 2 | 使用買入價與賣出價的中間價;適合市場參考,不代表實際可成交價格。 |
| providerId | sourceKind | 來源 | 狀態 | 端點 |
|---|---|---|---|---|
| bot | bank | 台灣銀行 | 目前唯一銀行 provider | https://raw.githubusercontent.com/haotool/app/data/public/rates/latest.json + https://raw.githubusercontent.com/haotool/app/data/public/rates/history/{YYYY-MM-DD}.json |
| moneybox | exchange-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 |
| 來源 | 限制 | 備註 |
|---|---|---|
| jsDelivr CDN | 無明確上限 | 遵守 jsDelivr 服務條款;禁止爬蟲式大量歷史批次抓取 |
| GitHub Raw | 60 req/hr(未認證) | 超出返回 HTTP 429;建議以 CDN 為主 |
| 資料更新頻率 | 每 5 分鐘 | 建議 client 端快取 5 分鐘(與 Actions 更新週期一致) |
程式碼:以 GPL-3.0 授權釋出,可自由使用、修改,衍生作品須以相同授權開源。
資料版權:匯率數據原始版權屬臺灣銀行。本專案以自動化方式公開抓取官方牌告,使用前請自行確認是否符合臺灣銀行使用規範。
免責聲明:本工具與臺灣銀行無隸屬關係。資料可能因網路延遲或同步異常而短暫差異。所有匯率僅供參考,實際交易以金融機構公告為準。
不想呼叫 API?直接使用換算介面,免安裝、免帳號。
開啟換算工具