免费黄金价格 API:每月 100 次请求能做什么
如实介绍免费黄金价格 API:MetalAPI Free 套餐包含哪些功能,如何通过缓存和合并请求用好每月 100 次请求,以及何时该升级。
免费黄金价格 API 实际能做什么?
免费黄金价格 API 是把真实金价放进原型、个人网站或内部报表的最快方式,无需走采购流程。但人们也很容易对它期望过高。免费套餐的存在,是为了让您构建和测试集成,并运行每天只需一次价格的小型任务。它们并不是为需要逐分钟跟随行情的结账流程而设计的。
本文如实介绍 MetalAPI 的 Free 套餐,包括它不包含的内容。接着说明如何让每月 100 次请求完成相当多的工作,以及如何判断您已经超出了它的能力范围。如果您正在比较多家服务商,文末附近的检查清单适用于任何免费金属 API。
MetalAPI 的免费套餐包含什么?
Free 套餐完全免费,且无需信用卡。概要如下:
| 功能 | Free 套餐 |
|---|---|
| 价格 | $0,无需信用卡 |
| 请求数 | 每月 100 次,每月 1 日 00:00 UTC 重置 |
| 每分钟限制 | 每分钟 10 次请求 |
| 价格更新 | 每日:午夜(UTC)一次快照 |
| 品种 | 全部 83 个:黄金、白银、铂金、钯金、工业金属、能源、57 种货币和 13 种加密货币 |
| 端点 | /latest、历史单日、/convert、/timeframe、/change 和 /ohlc |
| 历史数据 | 完整:金属和能源自 2000 年起,货币自 1999 年起,加密货币自 2014 年起 |
| 单次请求区间 | /timeframe 和 /change 最多 30 天 |
| 货币与单位 | 任意 base 和任意 unit,与所有套餐相同 |
| 小组件 | 1 个可嵌入小组件;其页面浏览不消耗配额 |
| 支持 | 社区支持 |
部分功能需要付费套餐:
- 按 K 数计的黄金价格(来自
/carat):Lite 及以上。在 Free 套餐中,您仍可以根据 24K 价格自行计算 K 金价格。 - 买入价和卖出价,例如
XAU-BID和XAU-ASK:Standard 及以上。 - 价格提醒:电子邮件提醒从 Lite 起,Webhook 提醒从 Advanced 起。
- 实时流(通过 Server-Sent Events):Pro 及以上。
- 可用性 SLA:Business 和 Enterprise。
请求超出套餐范围的功能时,API 会返回错误 106(plan_restriction)并附带 upgrade_url,该请求不计费。Free 套餐同样可以使用 MetalAPI MCP 服务器,因此 AI 助手可以用您的免费配额查询金价,数据同样每日更新。
免费黄金价格 API 多久更新一次?
上表中最重要的一行是更新频率。在 Free 套餐中,API 每天在午夜(UTC)获取一次价格快照,直到下一个午夜之前,每次 /latest 请求返回的都是这一快照。响应如下所示,使用的是 MetalAPI 文档中的示例数值:
{
"success": true,
"timestamp": 1792713600,
"date": "2026-10-23",
"base": "USD",
"rates": {
"XAU": 0.0002501319446,
"USDXAU": 3997.89
},
"rate_limit": {
"limit": 100,
"remaining": 99,
"reset": 1793491200,
"used": 1,
"plan": "Free",
"reset_date": "2026-11-01T00:00:00.000Z"
}
}USDXAU 是 1 金衡盎司黄金的美元价格,XAU 是其倒数。timestamp 是数据的时间,这里是 2026 年 10 月 23 日 00:00 UTC;rate_limit 部分显示本月配额还剩多少。
由此可以得出两点结论。第一,在 Free 套餐中每天多次调用 /latest 只会消耗配额,永远拿不到更新的价格。第二,Free 套餐适合那些每天一次的价格恰好就是正确价格的任务:
- 每日评估持仓、库存或投资组合的价值。
- 日终报表、新闻简报和内部数据看板。
- 需要某一天金价的会计和发票。
- 原型、学生项目,以及在选择套餐前学习 API。
它不适合在日内为黄金商品重新定价的网店、交易界面,或任何向客户承诺实时价格的场景。
每月 100 次请求够用多久?
每次成功调用数据端点都计为一次请求,无论返回多少个品种。正是这条规则让少量配额也能派上用场。一个小型网站切合实际的月度预算如下:
| 任务 | 每月请求数 |
|---|---|
| 每天获取一次您所展示的全部品种的最新价格 | 28–31 |
| 一年的每日黄金历史数据,每次请求一个自然月(仅一次) | 12 |
| 历史查询,例如发票日期当天的价格 | 10–20 |
| 开发和测试 | 剩余部分,约 35 |
相比之下,以下做法并不合适:
- 每小时刷新一次:每月约 744 次请求,而价格每天只变化一次。
- 黄金、白银、铂金和钯金每天各请求一次:约 124 次,而合并为一次请求只需 31 次。
- 每次页面浏览都从浏览器调用 API:一百次访问就会用完整月的配额。
用好免费配额的七种方法
- 在一次调用中请求所有品种。
currencies=XAU,XAG,XPT,XPD,EUR,GBP只算一次请求。省略currencies会返回全部品种,同样只算一次请求。 - 缓存到下一个午夜(UTC)。在 Free 套餐中,在此之前没有更新的数据可以获取。请保留最后一次成功的响应,并在调用失败时继续提供它。
- 在本地换算。克和千克与金衡盎司之间是精确的倍数关系(1 金衡盎司 = 31.1034768 克),交叉汇率也来自同一快照:以欧元计的金价为
USDXAU÷USDEUR。一次以美元/盎司计的请求就能满足您展示的所有单位和货币。 - 历史数据只存一次。过去的收盘价不会改变。请一次性获取一个区间,保存在数据库或文件中,之后只请求新的日期。
- 发送前先校验。校验错误(代码
201至210)和300(无结果)都会计为请求。请先检查日期和品种;/symbols列出了所有有效代码,且从不计入配额。 - 在服务器端调用。写在浏览器代码中的密钥对所有人可见,而且每位访客都会消耗一次请求。请在服务器上获取数据并提供缓存结果,或者嵌入小组件,其页面浏览不消耗您的配额。
- 关注计数器。每个响应都带有
rate_limit部分和X-RateLimit-*响应头,/usage也会返回相同的数字且不计费。因速率限制(104)、套餐限制(106)、来源限制(107)和服务器错误而被拒绝的请求同样不计费,因此重试这些请求不会产生任何消耗。
综合起来,Free 集成的核心就是一个定时任务。下面的 Node.js 脚本每天在午夜(UTC)之后不久运行一次,只发出一次请求,并将黄金、白银、铂金和钯金以三种货币计的每盎司和每克价格写入一个 JSON 文件,供您的页面读取:
// 每天 00:00 UTC 之后运行一次,例如使用 cron:5 0 * * *(服务器时钟为 UTC)
import { writeFile } from "node:fs/promises";
const GRAMS_PER_TROY_OZ = 31.1034768;
const METALS = ["XAU", "XAG", "XPT", "XPD"];
const CURRENCIES = ["EUR", "GBP"];
const params = new URLSearchParams({ base: "USD", currencies: [...METALS, ...CURRENCIES].join(",") });
const res = await fetch(`https://metalapi.com/api/v1/latest?${params}`, {
headers: { "X-API-Key": process.env.METALAPI_KEY },
signal: AbortSignal.timeout(10_000),
});
const data = await res.json();
if (!data.success) {
// 保留昨天的文件,让页面继续显示最后一次成功获取的价格。
throw new Error(`MetalAPI ${data.error.code} (${data.error.type}): ${data.error.info}`);
}
const prices = {};
for (const metal of METALS) {
const usdPerOz = data.rates[`USD${metal}`];
prices[metal] = {};
for (const cur of ["USD", ...CURRENCIES]) {
const perOz = cur === "USD" ? usdPerOz : usdPerOz / data.rates[`USD${cur}`];
prices[metal][cur] = { perOz, perGram: perOz / GRAMS_PER_TROY_OZ };
}
}
await writeFile("prices.json", JSON.stringify({ asOf: data.timestamp, prices }, null, 2));
console.log(`Saved. ${data.rate_limit.remaining} requests left this month.`);按每天运行一次计算,该任务每月使用 28 到 31 次请求,其余配额留给历史数据和测试。在 Serverless 平台上,请将结果写入键值存储或框架的数据缓存,而不是文件。
对于历史数据,30 天的区间限制意味着每个自然月需要一次请求:一年的每日金价需要 12 次请求。通过 API 获取黄金和白银历史价格提供了回填脚本和存储建议;在 Free 套餐中,请将其中按年划分的区间改为按自然月划分。
如何评估任何免费黄金价格 API
如果您正在比较免费金属 API,醒目的宣传数字远不如细节重要。以下问题值得向任何服务商(包括我们)问清楚:
- 免费数据有多新?是实时、延迟还是每日更新?每个响应是否注明了价格的时间?
- 什么算一次请求?一次调用获取多个品种算一次,还是每个品种各算一次?失败或被拒绝的调用是否计费?
- 包含哪些端点?只有最新价格,还是也包括历史数据、换算和时间序列?
- 历史数据有多长,按什么区间获取?数据最早可追溯到何时,单次区间请求最多可以覆盖多少天。
- 单位和货币。是否支持克、千克和您的本地货币,还是只有以美元计的金衡盎司价格?
- 使用条款。数据能否用于商业网站?哪些用途被排除在外?
- 达到上限时会怎样?是直接停止并返回明确的错误,还是自动收费?升级多快生效?
- 密钥处理。密钥能否通过请求头传递,而不是放在会被记入日志的 URL 中?
然后用您自己的品种和货币进行一次简短的实际测试,一个免费密钥就足够了。如何选择贵金属价格 API将这些问题整理成了一份完整的检查清单,并附有对比模板。
对 MetalAPI 而言,答案就在上文和文档中:Free 套餐提供带 timestamp 的每日快照;每次调用计为一次请求,无论返回多少个品种;因速率限制、套餐、来源和服务器错误被拒绝的请求不计费;包含历史数据、换算和时间序列;支持任意单位和 57 种货币中的任意一种;数据可用于您自己的网站、应用和报表,包括向用户展示价格,但不得再分发原始数据源;达到配额时直接停止并返回错误 105,没有超额费用;密钥可放在请求头或查询字符串中。
何时从免费套餐升级
只要每天一次的价格就是合适的价格,并且 100 次请求足够您用一个月,Free 套餐就够用。以下是它不再够用的常见信号:
| 您需要 | 提供该功能的最低套餐 | 月费 |
|---|---|---|
| 比每天一次更新鲜的价格 | Lite:每 30 分钟 | $4.99 |
| 每月超过 100 次请求 | Lite:1,000 次请求 | $4.99 |
| 单次请求超过 30 天的区间 | Lite:365 天 | $4.99 |
来自 /carat 的 K 金价格、电子邮件提醒 | Lite | $4.99 |
| 每 10 分钟更新的价格、买入价和卖出价 | Standard | $11.99 |
| 每 1 分钟更新的价格、Webhook 提醒 | Advanced | $24.99 |
| 实时流 | Pro | $49.99 |
| 可用性 SLA | Business | $149.99 |
升级立即生效,因此遇到错误 105(quota_exceeded)的密钥在更换套餐后会马上恢复可用;否则需要等到每月 1 日重置。按年付费最多可节省 25%。定价页面提供最新价格和完整对比,速率限制与套餐详细解释了配额和每分钟限制。
要判断 Free 套餐是否满足您的项目,最快的方法就是亲自试用。创建免费账户,从控制台复制 API 密钥,然后按照快速入门指南发出第一个请求。无需信用卡,当项目需要更新鲜的价格时,您可以随时切换到付费套餐。
常见问题
有完全免费的黄金价格 API 吗?
有。MetalAPI 的 Free 套餐完全免费,无需信用卡,包含黄金、白银、铂金、钯金及所有其他品种,每月 100 次请求,价格每日更新一次。
免费套餐多久更新一次金价?
每天一次。Free 套餐使用在午夜(UTC)获取的一次快照,直到下一个午夜之前,每次请求都返回相同的价格。付费套餐中,Lite 每 30 分钟更新一次,Enterprise 最快每 5 秒更新一次。
可以在商业网站上使用免费黄金价格 API 吗?
使用 MetalAPI 可以。数据可用于您自己的网站、应用、内部系统和报表,包括向用户展示价格。再分发原始数据源(例如将其作为您自己的 API 提供)则需要另行签订书面协议。
用完 100 次请求后会怎样?
后续请求会返回错误 105(quota_exceeded)和 HTTP 状态码 429,直到配额在每月 1 日 00:00 UTC 重置。不会自动收取超额费用,升级套餐可立即解除限制。
免费套餐包含黄金历史价格吗?
包含。Free 密钥可以查询完整的历史数据(黄金最早可追溯到 2000 年),并可使用 /timeframe 和 /change,单次请求区间最长 30 天。
继续阅读
XAU/USD 是什么意思:XAU、XAG、XPT 和 XPD 代码详解
XAU/USD 是什么意思?详解黄金为何拥有 ISO 4217 货币代码、XAG、XPT 和 XPD 分别代表什么,以及如何在价格和 API 数据中判断报价方向。
Python 黄金价格 API 教程:获取、缓存并绘制金价
在 Python 中使用黄金价格 API:用 requests 获取实时金价,处理错误与重试,缓存响应,并用 pandas 和 matplotlib 绘制金价时间序列图。
JavaScript 黄金价格 API 教程:Node.js、TypeScript 与 Next.js
用黄金价格 API 在 JavaScript 中获取金价:async/await 与 fetch、TypeScript 响应类型、带缓存的 Express 或 Next.js 路由,以及 API 密钥的安全用法。