撞上了 Fixer 的 100 次调用上限?看看其他选择
Fixer 的免费套餐每月只有 100 次调用,基础货币被锁定为 EUR,换算端点也要付费才能用。这些都不是藏在细则里的秘密,但只看"免费套餐"这行标题的人常常会被打个措手不及。以下是还有哪些选择。
Fixer 免费套餐上有两件事最容易踩坑:调用额度每月只有 100 次,很快就用完;而且每个汇率都以 EUR 为基础,因为"任意基础货币"要到 BASIC 及以上付费套餐才解锁。在那之前也没有 /convert 端点,所以把 USD 换算成 IDR,得先取到以 EUR 为基础的汇率,再自己做算术。以下是对 Fixer 各替代方案的诚实盘点,以及它们各自的代价。
Fixer 免费套餐上的两堵墙
每月 100 次调用,折算下来大约每天三次——用来测试一次没问题,但支撑不起一个每天哪怕只查一个货币对的正式应用。这个调用上限,是大多数人最先撞上的那堵墙。
第二堵墙:免费套餐所有汇率都以 EUR 报价。USD 换 IDR,意味着要分别取两个货币对 EUR 的汇率再相除,因为非 EUR 基础货币和 /convert 都需要 BASIC 套餐。
什么能替代一个 100 次调用、仅限 EUR 的套餐
选哪个替代方案取决于哪堵墙对你影响更大。能免费同时解决两个问题的服务商不多。
Frankfurter:无上限、无密钥、每天一次
如果让你离开 Fixer 的是调用上限,而每日一次的汇率能接受,Frankfurter 直接取消了这个上限。开源,无需 API 密钥,还自带了 MCP 服务器,位于 mcp.frankfurter.dev。它封装了在营业日约 16:00 CET 发布的 ECB 参考汇率,周末不发布——周六返回的是周五的收盘价。对于一个只需要每天一个官方汇率的报表或夜间任务而言,这一次性解决了 Fixer 的两个短板。
ExchangeRate-API:同样无需密钥,但带署名条款
ExchangeRate-API 在 open.er-api.com 的开放访问端点无需注册,和 Frankfurter 一样每天更新一次。条款有所不同:要展示"Rates By Exchange Rate API"并附回链,且不得转发原始响应。超出限制会返回 429,20 分钟后解除。它也有带密钥的套餐,每月 1,500 次请求。
Open Exchange Rates:调用量翻十倍,但仍是单一基础货币
Open Exchange Rates 把上限提到每月 1,000 次免费请求,相比 Fixer 的 100 次是实打实的提升。但免费套餐固定为 USD 而不是 EUR,时间序列和换算请求同样被排除在外。付费套餐从每月 $12 起,彻底取消基础货币限制。
exchangerate.host:同样的 100 次上限,只是现在要密钥了
值得点名,免得有人从一堵墙撞到另一堵一模一样的墙:exchangerate.host 现在运行在 APILayer 密钥之后,免费套餐上限是每月 100 次请求——和 Fixer 给你的数字完全一样。从 Fixer 换到 exchangerate.host,解决了 EUR 基础货币的问题,但没解决调用次数的问题。
exchangerate.dev 适合放在哪里
exchangerate.dev 的免费版每月提供 10,000 次调用、每分钟 12 个请求,是 Fixer 上限的一百倍,注册无需信用卡。任何套餐都没有基础货币限制——目录中 465 个货币对中的任何一个,都能从任意一侧查询。追溯至 1999 年的每日历史数据在所有套餐上都免费,不需要升级解锁。
主要货币对在交易周内大约每 60 秒更新一次,其余货币对由 ECB 和 FRED 参考数据支撑。每条响应都包含 source、market_session 和 notice 字段,代码可以直接分辨实时汇率和每日定盘价。免费即可使用 /v1/convert 端点,补上了 Fixer 在 BASIC 套餐之前留下的空缺。
没有 EUR 中转步骤,也不用在客户端做乘法。derived: false 表示这个货币对是直接报价,而不是通过第三种货币三角换算得出的。
关于实际迁移的注意事项
换服务商很少是改一行代码就能完成的事。响应字段名不一样——有的返回 rates,有的把同样的数字嵌套在 quotes 或 conversion_rates 下——固定的取值路径可能会悄无声息地失败,而不是报错。
在调用上限低的地方,重试逻辑比在上限高的地方更重要。一次超时后触发一个没有节流的重试循环,很容易在每月的第 10 天前就把 100 次或 1,000 次的额度烧光。请缓存响应,把重置窗口当作硬性约束对待。
对症下药
如果问题是调用次数,Frankfurter 或 ExchangeRate-API 的开放端点可以免费取消这个上限。如果问题是 EUR 基础货币,Open Exchange Rates 在 1,000 次调用内解决了这个缺口。如果两堵墙都挡着你,那正是包括 exchangerate.dev 在内的带密钥方案所要解决的组合问题。