Frankfurterは、98の中央銀行および公的機関から 206の通貨の日次為替レートを追跡しています。 データは1948年まで遡ります。

パブリックAPIはapi.frankfurter.devで利用可能で、 APIキーは不要です。完全な制御が必要な場合は、オープンソースとして セルフホストも可能です。

AIエージェントをご利用の場合は、llms.txtを参照させるか、 MCPサーバーを接続してください。

為替レート

最新の為替レートを取得:

curl https://api.frankfurter.dev/v2/rates

baseで基準通貨を変更:

curl https://api.frankfurter.dev/v2/rates?base=usd

quotesで対象通貨を絞り込み:

curl https://api.frankfurter.dev/v2/rates?quotes=usd,gbp

過去のレート

特定の日付のレートを取得:

curl https://api.frankfurter.dev/v2/rates?date=1999-01-04

時系列データ

fromtoで期間を指定してレートを取得:

curl https://api.frankfurter.dev/v2/rates?from=2026-01-01&quotes=usd

ヒント: 必要な通貨のみを指定してください。長期データにはNDJSONを使用すると、行単位でストリーミング受信できます。

グループ化

groupで時系列データを集約。指定可能な値: weekmonth

curl https://api.frankfurter.dev/v2/rates?from=2026-01-01&group=month

提供元での絞り込み

providersで特定の公的機関のみを指定:

curl https://api.frankfurter.dev/v2/rates?providers=ecb

デフォルトでは全提供元のデータを組み合わせた合成レートが返されます。特定機関のみのデータが必要な場合はprovidersを使用するか、各機関のエンドポイントを直接呼び出します。

提供元の明示

expand=providersを指定すると、各合成レートの算出に寄与した提供元を確認できます:

curl https://api.frankfurter.dev/v2/rates?expand=providers

各項目に提供元の識別子を含むproviders配列が追加されます。ペッグ制(固定相場制)の通貨は公的データではなくペッグ関係から算出されるため、この配列は含まれません。

CSV形式での取得

レートはCSV形式でも利用可能です。パスの末尾に.csvを追加するか、Acceptヘッダーにtext/csvを設定します。

curl https://api.frankfurter.dev/v2/rates.csv

NDJSON形式での取得

大容量のデータには、Acceptヘッダーにapplication/x-ndjsonを指定してNDJSON形式を使用できます。各行が独立したJSONオブジェクトとしてストリーミング処理されます。

curl https://api.frankfurter.dev/v2/rates?from=2026-01-01

単一通貨ペアのレート

1つの通貨ペアのレートを取得:

curl https://api.frankfurter.dev/v2/rate/eur/usd

通貨一覧

利用可能な通貨と提供元の一覧を取得:

curl https://api.frankfurter.dev/v2/currencies

scope=allを指定すると、過去の通貨も含めて取得できます:

curl https://api.frankfurter.dev/v2/currencies?scope=all

単一通貨の詳細

特定の通貨の詳細情報と提供元を取得:

curl https://api.frankfurter.dev/v2/currency/eur

提供元一覧

APIの背後にあるデータ提供機関の一覧を取得:

curl https://api.frankfurter.dev/v2/providers

特定の提供元の詳細情報を取得:

curl https://api.frankfurter.dev/v2/providers/ecb

提供元ごとのレート

特定の提供元から直接レートを取得します。/v2/ratesと同様のパラメータが利用可能です。

curl https://api.frankfurter.dev/v2/providers/ecb/rates

特定の通貨ペアを取得:

curl https://api.frankfurter.dev/v2/providers/ecb/rate/eur/usd

期間を指定して取得。date、期間指定(fromおよびto)、グループ化、.csvndjson形式もサポートされています。

curl https://api.frankfurter.dev/v2/providers/ecb/rates?date=2024-05-15

通貨の換算

個別の換算エンドポイントはありません。レートを取得し、数行のコードで換算します:

function convert(base, quote, amount) {
  const api = "https://api.frankfurter.dev";
  return fetch(`${api}/v2/rate/${base}/${quote}`)
    .then((r) => r.json())
    .then((d) => (amount * d.rate).toFixed(2));
}

convert("eur", "usd", 10).then((result) =>
  alert(`10 EUR = ${result} USD`)
);

エラーレスポンス

APIは標準のHTTPステータスコードとJSONボディを返します。

{
  "message": "Could not find currency ABC"
}
400
無効なパラメータまたは不正なリクエスト。
404
指定された通貨、レート、またはリソースが見つかりません。
422
リクエストは構文的に正しいですが、処理できません。

セルフホスト

Dockerを使用してFrankfurterを独自にセルフホストできます。詳細なデプロイガイドで本番運用の設定やAPIキーの管理を解説しています。

よくある質問(FAQ)

Frankfurterはどのような用途に適していますか?
SaaSの課金、Eコマース、税務報告、ERPや会計システム、1948年以降の時系列データを用いた研究に適しています。リアルタイム取引やデイトレードなど秒単位の価格変動を伴う用途には適していません。
商用利用は可能ですか?
はい、商用利用可能です。基礎となるデータには各提供元の利用規約が適用されます。
利用制限やクォータはありますか?
クォータはありません。過度なリクエストへのレート制限はありますが、月間や日ごとの上限はありません。大量のリクエストを行う場合は、キャッシュの活用、セルフホスト、またはデータセットの直接取得を推奨します。
GraphQLに対応していますか?
対応していません。REST APIが極めてシンプルであるため、GraphQLは複雑さを増すだけで、高速なエッジキャッシュを妨げてしまいます。basequotesfrom/toなどのクエリパラメータで必要なデータを過不足なく取得できます。
v1 APIは終了しますか?
終了しません。v1は非推奨ですが、恒久的に利用可能です。詳細はv1ドキュメントをご覧ください。ECBデータは/v2/providers/ecb/ratesでも取得できます。
プライバシーへの配慮はどうなっていますか?
Frankfurterは個人情報、IPアドレス、リクエストされたURLを一切保存しません。セルフホストのPlausible Analyticsインスタンスを通じて匿名の統計集計値のみを記録します。
App StoreやGoogle Playのプライバシー申告に記載する必要がありますか?
不要です。リクエストは完全匿名でログも残りません。AppleおよびGoogle Playのガイドラインにおいて「収集されないデータ」に分類されます。
バグ報告や質問はどこで行えますか?
バグの報告や新機能・新データ元の提案はGitHub Issuesへ、質問やコミュニティ制作ツールの共有はDiscussionsへお寄せください。
レートの精度はどの程度ですか?
コンプライアンス要件がある場合は、特定の機関で絞り込んで公式基準レートを取得してください。一般的な用途では、合成レートで十分に機能します。
仲値(ミッドマーケット)、買値(Bid)、売値(Ask)のどれですか?
仲値(ミッドマーケット)を返します。提供元が基準レートではなく買値と売値を公表している場合、Frankfurterは両方を保存し、その平均値を算出します。
すべてのレートは毎日更新されますか?
ほぼすべてが日次更新です。例外は英国歳入関税庁HMRC(月次)と米国財務省UST(四半期)の2機関のみです。これらのレートは数週間または数か月間有効であるため、合成フィードには含めず、各機関を直接指定した場合にのみ取得できます。
一部の旧通貨と新通貨で期間が重複しているのはなぜですか?
一部の公的機関が新通貨のデータを前身通貨の期間まで遡って提供しているためです(例: TRLは2010年終了ですが、TRYは1996年から存在します)。データは変更せず保持し、合成時に重複をフィルタリングします。
なぜ「Frankfurter」という名前なのですか?
すべてが始まった欧州中央銀行がフランクフルトにあるためです。
European Central Bank and Main riverfront, Frankfurt