大多数免费汇率 API 表面上都很像:JSON、令牌和货币列表。真正的区别在于数据何时更新、达到限制后会发生什么,以及代码能否知道数值有多旧。
- 定时任务上线前,同时查看月度配额和每分钟限制。
- 日内新鲜度决定了数据是每日参考值还是会随市场变化。
source、market_session和data_updated_at让程序知道正在使用哪类数据。- 有发布观测的货币对,日线历史可能从 1999 年开始。
/v1/convert和 MCP 可以减少重复的辅助代码。
为什么要比较维度,而不是只看排名
排名只说明作者写文章当天的偏好。按维度比较,才能判断项目需要每日参考值,还是需要在一天内跟随市场变化。
维度 1:免费配额和请求限制
配额决定试用和小规模运行能持续多久;每分钟限制决定批处理是否需要重试逻辑。ECB 公共 feed 没有 API 配额,但格式是 XML,且每个工作日更新一次。fawazahmed0/exchange-api 这类静态 JSON 项目没有自己的服务端,也不提供新鲜度元数据或日内更新。exchangerate.dev 支持按 IP 限制的匿名试用;免费密钥每月 5,000 次、每分钟 10 次。
先算调用量。每次页面加载都查询一次,10,000 次访问就是 10,000 次调用。能把多个货币放入 symbols 时,应合并请求。
维度 2:日内新鲜度
ECB 在工作日约 16:00 CET 发布定盘价,live 在交易周内约每 60 秒更新。Free 和无密钥汇率延迟 15 分钟,付费套餐实时接收;market_session 显示市场状态。
维度 3:新鲜度元数据
缓存应看data_updated_at,而非响应时间。market_daily是无ECB定盘价货币已存的每日市场收盘价。
source:live,ecb_daily,market_dailymarket_session:银行间市场状态。data_updated_at:底层数据最后写入的时间,不同于timestamp。is_forward_filled:当天没有新发布值时,说明使用了前一个值。
维度 4:历史深度
Free 和无密钥调用提供最近 30 天日线历史,Basic 提供最近 1 年;Plus 和 Pro 提供自 1999 年起的完整历史。更深历史需密钥,使用 /v1/{date}/{base} 或 /v1/range。
维度 5:内置换算接口
GET /v1/convert/USD/EUR/100 一次返回 rate、converted 和 derived。POST /v1/convert 支持批量换算,服务器也会处理没有直接报价的交叉货币对。
维度 6:代理和 MCP 支持
AI 代理需要结构化的工具定义。exchangerate.dev 在 https://api.exchangerate.dev/v1/mcp 提供 MCP 服务器,包含 start_checkout、list_currencies、get_rate、get_usd_index、convert、get_range 和 search_docs 等工具。Checkout 需要人工确认,并使用 REST 的同一配额。
六个维度并列比较
| 维度 | ECB 参考 feed | exchangerate.dev(免费计划) |
|---|---|---|
| 月度配额 | 公共 feed 没有 API 配额 | 每月 5,000 次,每分钟 10 次 |
| 日内新鲜度 | 上次定盘价保持到下一个工作日 | Free 和无密钥汇率延迟 15 分钟 |
| 新鲜度字段 | 时间戳 | source、market_session、data_updated_at |
| 历史 | XML 发布系列约从 1999 年开始 | 最近 30 天日线历史 |
| 换算 | 没有换算接口 | /v1/convert 和批量 POST |
| 代理 / MCP | 没有原生 MCP 服务器 | 提供工具的 MCP 服务器 |
选择适合用途的 API
如果只需要每日参考值并能解析 ECB XML,公共 ECB 系列可能已经够用。如果需要日内变化、来源字段、历史、换算或代理工具,请查看 exchangerate.dev 的货币对覆盖和免费计划限制。
合适的 API 是限制符合用途的 API,而不是功能列表最长的 API。