Comparison/对比

撞上了 Fixer 的 100 次调用上限?看看其他选择

Fixer 的免费套餐每月只有 100 次调用,基础货币被锁定为 EUR,换算端点也要付费才能用。这些都不是藏在细则里的秘密,但只看"免费套餐"这行标题的人常常会被打个措手不及。以下是还有哪些选择。

ERexchangerate.dev·Aug 1, 2026·7 分钟阅读

Fixer 免费套餐上有两件事最容易踩坑:调用额度每月只有 100 次,很快就用完;而且每个汇率都以 EUR 为基础,因为"任意基础货币"要到 BASIC 及以上付费套餐才解锁。在那之前也没有 /convert 端点,所以把 USD 换算成 IDR,得先取到以 EUR 为基础的汇率,再自己做算术。以下是对 Fixer 各替代方案的诚实盘点,以及它们各自的代价。

Key points
Fixer 免费套餐:每月 100 次调用,仅限 EUR 基础货币,换算端点要到 BASIC 套餐才开放。
Frankfurter 没有调用上限,也完全无需密钥,但只提供每日一次的 ECB 汇率——也没有基础货币限制,因为 ECB 汇率是对所有报价货币发布的。
ExchangeRate-API 的开放访问端点同样无需密钥,每天一次,附带强制署名要求。
Open Exchange Rates 每月提供 1,000 次免费调用,比 Fixer 的 100 次是个提升,但它自己的免费套餐锁定 USD。
exchangerate.host 现在也在 APILayer 密钥之后,免费额度是每月 100 次请求——和 Fixer 一样的上限,值得留意,免得从一堵 100 次的墙撞到另一堵。
以下所有限额均于 2026 年 8 月核实;服务商会在不预先通知的情况下修改免费套餐,使用前请自行确认当前数字。

Fixer 免费套餐上的两堵墙

每月 100 次调用,折算下来大约每天三次——用来测试一次没问题,但支撑不起一个每天哪怕只查一个货币对的正式应用。这个调用上限,是大多数人最先撞上的那堵墙。

第二堵墙:免费套餐所有汇率都以 EUR 报价。USD 换 IDR,意味着要分别取两个货币对 EUR 的汇率再相除,因为非 EUR 基础货币和 /convert 都需要 BASIC 套餐。

使用前请先核实
这个领域的免费套餐条款经常变动。这里的每个数字都是在 2026 年 8 月从服务商自己的定价或文档页面读取的——在把代码写死在某个具体配额上之前,请先查看当前页面。

什么能替代一个 100 次调用、仅限 EUR 的套餐

选哪个替代方案取决于哪堵墙对你影响更大。能免费同时解决两个问题的服务商不多。

服务商免费套餐基础货币
Fixer(作为参照)每月 100 次调用仅限 EUR;任意基础货币需要 BASIC 套餐
Frankfurter不限量,无需密钥任意货币——ECB 汇率报价范围广,不锁定单一基础货币
ExchangeRate-API(开放访问)无需密钥,每天一次,需署名任意货币
Open Exchange Rates每月 1,000 次请求免费套餐仅限 USD
exchangerate.host(APILayer)每月 100 次请求,需要密钥任意货币,但和 Fixer 一样的 100 次上限

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 参考数据支撑。每条响应都包含 sourcemarket_sessionnotice 字段,代码可以直接分辨实时汇率和每日定盘价。免费即可使用 /v1/convert 端点,补上了 Fixer 在 BASIC 套餐之前留下的空缺。

curl · exchangerate.dev conversion, USD to IDRcopy
curl "https://api.exchangerate.dev/v1/convert/USD/IDR/250" \
  -H "Authorization: Bearer exr_live_..."

# {
#   "from": "USD",
#   "to": "IDR",
#   "amount": 250,
#   "rate": 16412.3,
#   "converted": 4103075,
#   "derived": false,
#   "source": "live",
#   "market_session": "open",
#   "data_updated_at": "2026-08-01T09:13:58Z",
#   "notice": "Indicative rates for reference and analytics; not a dealing quote."
# }

没有 EUR 中转步骤,也不用在客户端做乘法。derived: false 表示这个货币对是直接报价,而不是通过第三种货币三角换算得出的。

关于实际迁移的注意事项

换服务商很少是改一行代码就能完成的事。响应字段名不一样——有的返回 rates,有的把同样的数字嵌套在 quotesconversion_rates 下——固定的取值路径可能会悄无声息地失败,而不是报错。

在调用上限低的地方,重试逻辑比在上限高的地方更重要。一次超时后触发一个没有节流的重试循环,很容易在每月的第 10 天前就把 100 次或 1,000 次的额度烧光。请缓存响应,把重置窗口当作硬性约束对待。

对症下药

如果问题是调用次数,Frankfurter 或 ExchangeRate-API 的开放端点可以免费取消这个上限。如果问题是 EUR 基础货币,Open Exchange Rates 在 1,000 次调用内解决了这个缺口。如果两堵墙都挡着你,那正是包括 exchangerate.dev 在内的带密钥方案所要解决的组合问题。

仅为指示性汇率
这里提到的每一家服务商,包括 exchangerate.dev,发布的都是用于参考和分析的汇率。它们都不是可执行报价,都不应用于结算交易。
ER
exchangerate.dev
面向从一个不再适合项目的免费套餐迁出的开发者的说明。

Keep reading

Guide从 Frankfurter 迁移过来?这是对照表Read Comparison2026 年如何比较免费汇率 APIRead CompareFixer vs exchangerate.devRead Pricing套餐与配额Read
更多比较Fixer vs exchangerate.devOpen Exchange Rates vs exchangerate.devCurrencylayer vs exchangerate.dev
学习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