如何选择贵金属价格 API:需要问清楚的 12 个问题
选择贵金属价格 API 的中立清单:数据来源、时效性、历史数据、单位、买卖价、调用限制、定价、安全、使用条款与 MCP 支持,并附对比模板和实测方法。
为什么需要一份清单
大多数贵金属价格 API 的首页看起来都差不多:实时金银价格、多种货币、JSON 响应,外加免费套餐。真正重要的差异往往要到后来才会显现:看板在周末显示着过时的价格,客户问为什么您的每克价格与金店的不一样,每月配额到 20 号就用完了,或者法务团队问您到底能不能把这些数据展示给客户。
这份清单汇总了在做出决定之前值得弄清楚的 12 个问题。它们适用于任何服务商,无论是周末的业余项目还是正式的采购评审都同样适用。下文还提供了一份可直接复制的对比模板,以及一组简短的实测方法。由于本文由 MetalAPI 发布,最后一节给出了我们自己的答案;在此之前的所有内容,无论您最终选择哪家服务商,都希望能对您有所帮助。
数据:来源、时效性与历史
1. 价格来自哪里? 贵金属价格可能有多种来源:场外现货市场中银行和流动性提供商的报价、COMEX 黄金等交易所期货、LBMA 拍卖价等官方基准价,或者另一家数据聚合商。这些来源本身都没有错,但给出的是不同的数字。请询问每个品种由哪个来源提供、是否合并多个来源以及如何合并,以及如何过滤明显错误的报价。如果服务商说不清它的黄金价格代表什么(现货中间价、期货价还是基准价),您也无法向自己的用户解释清楚。
2. 您实际付费的套餐,数据有多新? 首页上的“实时”往往指的是最高档套餐。请查看每个套餐的更新间隔,并确认每个响应都带有数据本身的时间戳,而不只是请求的时间。还要问清楚休市期间会怎样:现货贵金属在纽约时间周五晚至周日晚之间停止交易,好的 API 会明确表明周末价格就是周五的收盘价。
3. 历史数据有多长,由什么构成? 请查看每类资产的数据起始日期,是只提供每日收盘价,还是提供开盘价、最高价、最低价和收盘价,以及“收盘”是如何定义的(哪个时区、哪个来源)。询问较早的历史数据是否与当前价格来自不同的来源,例如某个日期之前采用期货结算价,因为这可能在长周期图表中造成细微的断层。最后,确认单次区间请求最多可以覆盖多少天。
适配:单位、货币与买卖价
4. 支持哪些单位和货币? 贵金属以金衡盎司交易,但您的用户可能习惯以克或千克为单位,并使用本国货币。单位参数可以省去您自行换算的麻烦;请留意 API 如何命名单位,因为金衡盎司(31.103 克)与常衡盎司(28.35 克)相差近 10%。如果需要交叉汇率,例如以土耳其里拉计的金价或以日元计的银价,请确认它们是基于同一个快照计算的。首饰相关的应用场景可能还需要按 K 数划分的金价。
5. 您需要买卖价,还是中间价就够了? 图表和估值通常使用中间价,而经销商店面、回购计算器和交易工具通常需要双向报价。请询问是否提供买价和卖价、适用于哪些品种和套餐,以及它们是否与中间价来自同一个快照。如果您对这些术语还不熟悉,可以阅读我们关于现货价、买价、卖价与价差的讲解。
运维:可靠性、限制与错误
6. 服务有多可靠,您如何得知? 寻找一个既涵盖 API、也涵盖数据源的公开状态页面,以及一定的历史故障记录。询问上游数据源出现故障时会发生什么:服务商是切换到备用数据源、将数据标记为过时,还是在不加说明的情况下继续提供最后一个价格?如果您对可用性有合同层面的要求,请确认哪些套餐包含服务等级协议(SLA),以及它具体涵盖哪些内容。
7. 速率限制和配额是多少,哪些请求会计数? 大多数服务商会将每月请求配额与每分钟或每秒限制结合使用。比起醒目的数字,细节对成本的影响更大。一次请求 20 个品种算 1 次调用还是 20 次?失败的请求是否计费?是否有免费端点?达到限制时会怎样:在下个周期之前完全停止服务、自动收取超额费用,还是降速限流?请用您的实际用量对照每个套餐进行测算:全天候每分钟请求一次,每月大约就是 43,200 次请求。
8. 错误如何报告? 好的 API 会返回有意义的 HTTP 状态码,同时附带机器可读的错误代码和便于人阅读的错误信息,为每个代码提供文档,并告诉您何时重试,例如在触发速率限制时返回 Retry-After 响应头。请确认各端点的错误格式一致,并且提供 OpenAPI 等机器可读的规范,便于生成客户端和测试。
商务:定价、安全与条款
9. 定价模式是否符合您的用量? 请用您自己的预期用量(而不是服务商给出的示例)来比较固定月费档位、按调用计费和定制合同。确认免费套餐实际包含哪些内容(更新间隔、端点),按年付费是否更便宜,是否另加税费,以及如何取消。如果您的用量接近某个档位的边界,档位之间的大幅跳价就值得留意。
10. API 密钥如何保护? 询问密钥能否通过请求头发送,而不是只能放在 URL 中,因为 URL 最终会出现在日志里。确认您能否持有多个密钥并在不中断服务的情况下轮换,以及服务商是否以哈希形式存储密钥。如果需要在浏览器中显示价格,请寻找域名限制密钥,或完全无需暴露密钥的可嵌入小组件:公开 JavaScript 中的密钥任何人都可以复制。
11. 条款允许您做什么? 在开始开发之前,先阅读数据许可协议。您能否向自己的客户展示价格?能否将历史数据存入自己的数据库?是否允许再分发(例如通过您自己的 API 提供数据)?如果不允许,能否获得相应许可?是否需要注明来源?LBMA 价格等官方基准价由基准管理机构运营,通常需要单独授权,因此请询问数据源中是否包含基准数据,以及这对您意味着什么。也请查看免责声明:价格数据通常仅供参考,不构成交易要约。
面向未来:AI 与 MCP 支持
12. AI 助手和智能体能否使用它? 越来越多的分析工作发生在聊天助手和编程智能体中。Model Context Protocol(MCP)是将它们连接到工具和数据的开放标准,提供 MCP 服务器的服务商能让助手获取真实价格,而不是凭训练数据猜测。可以问以下问题:
- 是否有托管的 MCP 服务器?它支持哪些传输方式和客户端?
- 它如何进行身份验证:聊天应用使用 OAuth 登录,开发者工具使用 API 密钥,还是两者都支持?
- 哪些工具是只读的?会产生变更的工具是否会先征求确认?
- 助手的调用是否计入同一配额?服务器是否可能自行向您收费?
- 是否有面向语言模型的文档,例如
llms.txt文件或 OpenAPI 规范,让编程助手能够正确编写您的集成代码?
即使您目前不使用 AI 工具,这些问题的答案也能反映出一个 API 是否与时俱进、文档是否完善。
可直接填写的对比模板
将此表格复制到电子表格或文档中,每家服务商填写一列。记下每个答案的出处(文档页面、客服回复或您自己的测试),以便日后复核。
| # | 问题 | 关注要点 | 服务商 A | 服务商 B | 服务商 C |
|---|---|---|---|---|---|
| 1 | 数据来源 | 各类资产的具体来源;聚合方法;错误报价过滤 | |||
| 2 | 时效性 | 您所选套餐的更新间隔;数据时间戳;周末表现 | |||
| 3 | 历史数据 | 起始日期;OHLC;收盘价定义;单次请求的最大区间 | |||
| 4 | 单位与货币 | 金衡盎司、克、千克;基础货币;一致的交叉汇率 | |||
| 5 | 买卖价 | 适用品种与套餐;是否与中间价来自同一快照 | |||
| 6 | 可靠性 | 状态页面;故障历史;备用数据源;SLA | |||
| 7 | 限制与配额 | 每月与每分钟限制;计数规则;达到限制时的处理 | |||
| 8 | 错误 | HTTP 状态码与错误代码;重试指引;OpenAPI 规范 | |||
| 9 | 定价 | 按您的用量计算的成本;免费套餐;按年付费;取消方式 | |||
| 10 | 安全 | 请求头身份验证;多个密钥;密钥轮换;域名限制 | |||
| 11 | 条款 | 展示权;存储;再分发;来源标注 | |||
| 12 | AI 与 MCP | 托管 MCP 服务器;OAuth 或密钥;只读工具;面向 LLM 的文档 |
书面答案只是起点,一次简短的实测就能验证其中的大部分。为每个候选服务商准备一个免费或试用密钥:
- 在同一时刻向各服务商请求相同的品种,比较数值、时间戳和单位。
- 在周六重复同样的请求,看看各 API 如何呈现休市状态。
- 故意触发错误(错误的密钥、未知的品种、未来的日期),检查状态码和错误信息。
- 请求一年的每日历史数据,检查是否存在缺口、异常尖峰,以及可能因数据源切换而出现的明显水平变化。
- 从您的服务器所在位置测量延迟,而不是从您的笔记本电脑上测量。
下面这个小脚本可以帮助完成第一项和最后一项测试。请根据各服务商的文档调整 URL、身份验证请求头和时间戳字段,并记住每次调用都会消耗配额:
// 多次调用同一端点,记录 HTTP 状态码、延迟和数据时效。
const TARGET = process.env.PRICE_API_URL;
const HEADERS = { Authorization: "Bearer " + process.env.PRICE_API_KEY };
for (let i = 0; i < 5; i++) {
const started = Date.now();
const res = await fetch(TARGET, { headers: HEADERS });
const body = await res.json().catch(() => ({}));
const latencyMs = Date.now() - started;
// 许多 API 返回以秒为单位的 Unix 时间戳;请根据服务商的字段调整这一行。
const dataTime = typeof body.timestamp === "number" ? body.timestamp * 1000 : null;
const dataAgeSeconds = dataTime ? Math.round((Date.now() - dataTime) / 1000) : "n/a";
console.log({ status: res.status, latencyMs, dataAgeSeconds });
await new Promise((resolve) => setTimeout(resolve, 2000));
}MetalAPI 对这些问题的回答
为完整起见,以下是我们自己的回答,仅限于您可以在我们的文档中核实的事实。请用与其他服务商相同的标准来检验我们。
- 来源: 现货贵金属和主要货币来自银行间买卖报价源;工业金属和能源来自 COMEX、NYMEX 和 ICE 近月期货;加密货币来自 Kraken 和 Binance;外汇参考汇率来自欧洲中央银行。多个数据源按中位数合并,并经过异常报价检查。
- 时效性: Free 每日更新,Lite 每 30 分钟,Standard 每 10 分钟,Advanced 和 Pro 每 1 分钟,Ultra 和 Business 每 15 秒,Enterprise 每 5 秒。每个响应都带有数据的
timestamp;周末期间,金属、货币和期货价格保持在周五收盘价。 - 历史数据: 提供每日开盘价、最高价、最低价和收盘价,货币自 1999 年起,金属和能源自 2000 年起,加密货币自 2014 年起。2026 年 10 月之前的金属历史数据基于近月期货结算价。单次区间请求在 Free 套餐中最多覆盖 30 天,在付费套餐中最多 365 天。
- 单位与货币: 从克到短吨共七种质量单位、57 种货币,任意品种均可作为基础货币,交叉汇率基于同一快照计算。付费套餐提供按 K 数划分的金价。
- 买卖价: Standard 及以上套餐支持
XAU-BID、XAU-ASK形式的品种代码,适用于贵金属和主要货币,与中间价来自同一快照。 - 可靠性: 公开的状态页面显示数据源、延迟和 API 请求量,包括何时启用了备用数据源;Business 和 Enterprise 套餐提供可用性 SLA。
- 限制: 每个套餐都有每月配额和每分钟限制。无论返回多少个品种,一次请求只计一次;
/symbols和/usage免费;因速率限制、套餐限制、来源检查或服务器错误而被拒绝的请求不计费。达到配额后,请求会返回错误105,直到每月 1 日(UTC)重置或升级套餐为止;不会自动收取任何超额费用。 - 错误: HTTP 状态码,加上 JSON 中的数字
code、type和info信息;触发速率限制时返回Retry-After;提供完整的错误代码文档和 OpenAPI 3.1 规范。 - 定价: 固定价格套餐,从 Free(0 美元,每月 100 次请求)到 Lite(4.99 美元)、Standard(11.99 美元)、Advanced(24.99 美元)、Pro(49.99 美元)、Ultra(99.99 美元)、Business(149.99 美元),再到 Enterprise(299.99 美元,150 万次请求),可按月或按年付费,并可在账单页面取消。详情请参见定价页面。
- 安全: 密钥仅以哈希形式存储,可通过请求头发送;根据套餐不同,您可以持有多个密钥、轮换或吊销密钥,并将其限制为仅供您自己的域名使用。可嵌入小组件无需暴露密钥即可显示价格。
- 条款: 您可以在自己的网站、应用、内部系统和报告中使用这些数据,包括向您的用户展示价格;再分发原始数据(例如作为您自己的 API 对外提供)需要另行签订书面协议。数据仅供参考,不构成投资建议。请参阅服务条款。
- AI 与 MCP: 托管 MCP 服务器位于
https://metalapi.com/mcp(Streamable HTTP,支持 OAuth 2.1 或 API 密钥),提供 13 个工具,其中 11 个为只读;另外两个会产生变更的工具会先征求确认,且服务器绝不会产生任何扣费。它已收录于官方 MCP Registry,并公开了 llms.txt 和 OpenAPI 规范。请参见 AI 与 MCP。
无论选择哪家服务商,都请用您自己的品种和使用模式完成上述实测。如果 MetalAPI 在您的候选名单上,一个免费账户就足以完成其中的大部分测试,其余内容可参阅 API 文档。
继续阅读
通过 MCP 让 Claude 和 ChatGPT 获取实时金价
借助 MetalAPI MCP 服务器,让 Claude、ChatGPT、Cursor 和 VS Code 获取实时黄金及金属价格:OAuth 与 API 密钥两种接入方式、可用工具、安全设计和配额说明。
黄金价格 API:开发者完全指南
黄金价格 API 使用指南:获取密钥,用 curl、JavaScript 和 Python 发起调用,正确解读汇率格式,并妥善处理历史数据、错误、配额与缓存。
现货价、买入价、卖出价与价差:贵金属价格如何报价
了解黄金、白银、铂金和钯金的现货价、买入价、卖出价、中间价和价差的含义,交易商如何形成报价,以及如何通过 API 请求并正确展示买卖价。