Python
ご質問や問題がありますか?GitHub Discussionsでお気軽にご相談ください。
SDKは不要です。Frankfurterは標準的なHTTPSを使用し、フラットなJSONを返します。普段お使いのHTTPライブラリで十分です。APIキーもアカウント登録も必要ありません。
クイックスタート
レートを取得して換算:
import requests
res = requests.get("https://api.frankfurter.dev/v2/rate/usd/eur")
data = res.json()
total = 100 * data["rate"] レスポンスはフラットなオブジェクトです: {"date": "2026-07-17", "base": "USD", "quote": "EUR", "rate": 0.8739}。 無効な通貨コードの場合はHTTPステータス422とJSONエラーメッセージが返されます。
丸め誤差のない金銭計算
浮動小数点数(float)は表示には十分ですが、厳密な会計処理には適していません。json.loadsのparse_float引数にDecimalを指定して処理します:
from decimal import Decimal
import requests
res = requests.get("https://api.frankfurter.dev/v2/rate/usd/eur")
data = res.json(parse_float=Decimal)
total = Decimal("100") * data["rate"]複数のレートを一度に取得
/v2/ratesは対象通貨ごとに1行のフラットな配列を返します。辞書内包表記でルックアップ用の辞書に変換できます。quotesを省略すると、利用可能なすべての通貨が返されます。
res = requests.get(
"https://api.frankfurter.dev/v2/rates",
params={"base": "usd", "quotes": "eur,gbp,jpy"},
)
rates = {row["quote"]: row["rate"] for row in res.json()}不変データのキャッシュ
過去のレートは不変であるため、恒久的にキャッシュできます。最新レートの更新は公的機関の公表時(通常、平日に数回程度)に限られるため、短いTTLで十分です。requests-cacheを使えば1行で設定できます:
import requests_cache
session = requests_cache.CachedSession("frankfurter", expire_after=3600)
res = session.get("https://api.frankfurter.dev/v2/rate/usd/eur")特定の公的機関を指定
デフォルトでは全提供元を組み合わせた合成レートが返されます。税務申告などで特定の機関の公認レートが必要な場合はprovidersを指定します。
res = requests.get(
"https://api.frankfurter.dev/v2/rate/usd/eur",
params={"providers": "ecb"},
)
rate = res.json()["rate"]すべての提供元を確認できます。特定の提供元を指定した場合、その機関の公表スケジュールに従うため、最新レートが合成レートより1日遅れる場合があります。