Fixerの月100コール上限に達したら——残りの選択肢はこれだ
Fixerの無料プランは月100コールで、ベース通貨はEURに固定され、有料化するまで変換エンドポイントも使えない。どれも小さな文字で隠されているわけではないが、「無料プラン」という見出しだけを読んだ人には意外に映る。ここでは他にどんな選択肢があるかを紹介する。
Fixerの無料プランで開発者を捕まえるものは2つある。1つはコール予算が月100コールという速さで尽きること、もう1つはすべてのレートがEUR基準で返ってくることだ——「任意のベース通貨」はBASIC以上の有料ティアでしか解放されない。それまでは/convertエンドポイントも存在せず、USDからIDRへの変換にはEURベースのレートを取得して自分で算術する必要がある。以下では、Fixerに代わるものは何か、そしてそれぞれが代わりに何を要求するのかを率直に見ていく。
Fixer無料プランの2つの壁
月100コールは1日約3コールに相当する——一度のテストには十分だが、たとえ1つの通貨ペアを毎日確認するだけの実運用アプリには足りない。このコール上限が、多くの人が最初にぶつかる壁である。
2つ目の壁は、無料プランがすべてをEUR基準で返す点である。EUR以外のベースと/convertはどちらもBASICティアが必要なため、USDからIDRへの変換は、両通貨のEURレートを取得して割り算する必要がある。
月100コール・EUR限定プランの代わりになるもの
適切な代替は、どちらの壁がより問題だったかによって決まる。両方を無料で解決するプロバイダーは少ない。
Frankfurter:上限なし、キー不要、1日1回
コール上限がFixerから離れる理由で、1日1回のレートで問題なければ、Frankfurterは上限をまるごと取り除く。オープンソースでAPIキーは不要であり、mcp.frankfurter.devで自社のMCPサーバーも提供している。営業日の16:00 CET前後に公表されるECB参照レートをラップしており、週末の公表はない——土曜日は金曜日の終値を返す。1日1回の公式レートだけが必要なレポートや夜間ジョブにとって、これはFixerの2つのギャップを同時に埋めてくれる。
ExchangeRate-API:これもキー不要、ただし帰属表示の条件あり
ExchangeRate-APIのopen.er-api.comにあるオープンアクセス・エンドポイントは登録不要で、Frankfurterと同様に1日1回更新される。条件は異なり、"Rates By Exchange Rate API"をリンク付きで表示し、生レスポンスを再配布してはならない。上限を超えると429が返り、20分でクリアされる。キー付きのティアも存在し、月1,500リクエストである。
Open Exchange Rates:コール数は10倍、ベースは1つのまま
Open Exchange Ratesは上限を月1,000リクエストの無料に引き上げており、Fixerの100からは実質的な前進である。しかし無料プランはEURではなくUSDに固定されており、時系列と変換リクエストも除外される。有料プランは月12ドルから始まり、ベース制限を完全に取り除く。
exchangerate.host:同じ月100の上限が、今はキーの背後に
同じ壁を別の同一の壁に置き換えないために、名前を挙げておく価値がある。exchangerate.hostは現在APILayerのキーの背後で稼働しており、無料プランは月100リクエストに制限されている——Fixerが与える数字とまったく同じである。Fixerからexchangerate.hostに移動するとEURベース問題は解決するが、コール数問題は解決しない。
exchangerate.devが収まる場所
exchangerate.devの無料プランは、登録にカード不要で月10,000コール、毎分12リクエストを提供する——Fixerの上限の100倍である。どのプランにもベース通貨の制限はなく——カタログ内の465通貨ペアのいずれも、どちらの側からでも問い合わせできる。1999年までさかのぼる日次履歴はすべてのプランで無料であり、アップグレードの背後に隠されていない。
主要通貨ペアは取引週を通じておよそ60秒ごとに更新され、残りはECBとFREDの参照データが支える。各レスポンスにはsource、market_session、noticeフィールドが含まれるため、コードはライブレートと日次フィックスを直接区別できる。/v1/convertエンドポイントは無料で提供され、FixerがBASICまで残すギャップを埋める。
EURを介した中間ステップも、クライアント側の乗算も不要である。derived: falseは、そのペアが第三の通貨を介して三角測量されるのではなく、直接建値されていることを意味する。
実際の移行に関する注意点
プロバイダーの切り替えは1行の変更で済むことは滅多にない。レスポンスのフィールド名は異なる——ratesを返すものもあれば、同じ数値をquotesやconversion_ratesの下にネストするものもある——ため、固定したキーのパスがエラーではなく静かに失敗することがある。
再試行ロジックは、コール上限が低いほど重要になる。1回のタイムアウト後にスロットルなしの再試行ループで月100や1,000の予算を使い果たすのは、月の10日目までにクォータを使い切るありがちな原因である。レスポンスをキャッシュし、リセット期間は厳格な制約として扱うこと。
壁に合わせて修正を選ぶ
コール数が問題であれば、Frankfurterかexchangerate-APIのオープンエンドポイントが無料で上限を取り除く。EURベースが問題であれば、Open Exchange Ratesが月1,000コールでそのギャップを解決する。両方の壁が問題であれば、その組み合わせこそがexchangerate.devを含むキー付きの代替が対象とするものである。