Tutorial/Pythonクイックスタート

Pythonで為替レートを取得する方法

数行のコードでライブ・過去の為替レートをPythonで読む。キーなしで始められ、登録後は月10,000コール。すべてのレスポンスがレートの鮮度を教えてくれる。

MMexchangerate.dev·Jun 19, 2026·5分で読了

Pythonで為替レートを取得する最短ルートは/v1/latest/USDへのGETリクエストだ。31通貨のレートと2つの鮮度フィールド(sourcemarket_session)を含むJSONが返る。最初のコールにAPIキーは不要。

Key points
/v1/latest/{base}への1回のGETで31通貨のレートがJSONで返る。
すべてのレスポンスがsourcemarket_sessionを持ち、各レートの鮮度がわかる。
無料枠は月10,000コール・毎分12リクエストで、カード不要。
レートはインディケーティブ値で、参照・分析向け — ディーリングクォートではない。

最初のコール — 依存パッケージなし

標準ライブラリ以外は何も要らない。1回のコールならurllib.requestで足りる:

python · standard librarycopy
import json
import urllib.request

url = "https://api.exchangerate.dev/v1/latest/USD"
with urllib.request.urlopen(url) as resp:
    data = json.load(resp)

print(data["rates"]["EUR"])     # 0.87531
print(data["source"])            # ecb_daily
print(data["market_session"])    # open

これはキーなしで動く。匿名コールはIPアドレスごとに上限があるため、簡単な試験を超えるなら無料キーを取得する。

requestsとAPIキーで

ほとんどのプロジェクトはすでにrequestsを使っている。キーはベアラートークンとして渡す:

python · requestscopy
import requests

API = "https://api.exchangerate.dev/v1"
KEY = "exr_live_..."   # free key at https://exchangerate.dev/signup

resp = requests.get(
    f"{API}/latest/USD",
    headers={"Authorization": f"Bearer {KEY}"},
    timeout=10,
)
resp.raise_for_status()
data = resp.json()

print(data["rates"]["GBP"], data["market_session"])

無料キーで上限は月10,000コール・毎分12リクエストに上がる。Authorizationを設定できないプラットフォーム向けにX-API-Keyヘッダーも使える。

金額を換算する

レート一覧ではなく換算が必要なら/v1/convertを呼ぶ。レートと換算額が一緒に返る:

python · convert 100 USD to EURcopy
r = requests.get(
    f"{API}/convert/USD/EUR/100",
    headers={"Authorization": f"Bearer {KEY}"},
).json()

print(r["rate"])         # 0.87572
print(r["converted"])    # 87.57

レートの鮮度を知る

すべてのレスポンスにある2つのフィールドが、いま見ているものを教えてくれる。sourceはデータの種別:集約スポットのlive、欧州中央銀行参照フィックスのecb_daily、米連邦準備制度日次系列のfred_dailymarket_sessionopenweekend、既知の平日休場を示すinterbank_closedのいずれかだ。

フィールド値意味動くタイミング
source: live集約されたスポットのコンセンサス値取引週の日中(約60秒間隔)
source: ecb_daily公式な参照フィックス営業日に1回
market_session: weekend土曜または日曜(インターバンク休場)参照フィックスは金曜値を維持、ライブフィードは停止
インディケーティブ値 — 決済には使えない
レートは参照、分析、表示向けに公開されている。ディーリングクォートではなく、取引の決済に使ってはならない。すべてのレスポンスのnoticeフィールドにその旨が記載されている。

過去の特定日を読む

パスに日付を入れれば1999年まで遡って任意の日を照会できる。レスポンスにはis_forward_filledが追加され、週末や祝日などその日にレートが公表されなかった場合にtrueになる:

python · rate on a past datecopy
r = requests.get(
    f"{API}/2026-03-14/USD",
    headers={"Authorization": f"Bearer {KEY}"},
).json()

print(r["rates"]["JPY"], r["is_forward_filled"])

日付範囲全体の系列を1コールで取るには、start_dateend_dateを付けて/v1/rangeを使う。詳細は別のガイドで扱っている。

MM
exchangerate.dev
FXデータを扱う開発者向けの統合ガイド。

Keep reading

TutorialJavaScriptとNode.jsによる通貨換算Read Guide過去の為替レートと時系列を1コールでRead Referencesourceとmarket_sessionの読み方Read
他の比較exchangerate.dev vs Fixerexchangerate.dev vs Open Exchange Ratesexchangerate.dev vs Currencylayer
学ぶReading source and market_session in your pipelineIndicative vs executable FX rates: what a rates API actually gives youECB reference rates, explained
ライブレートEUR/USDGBP/USDUSD/JPY