白银价格 API:以 JSON 获取实时与历史 XAG 价格
使用白银价格 API 获取以盎司、克或千克计、支持 57 种货币的实时与历史 XAG 价格,附代码示例、缓存技巧和实际应用场景。
白银价格 API 能为您提供什么
白银价格 API 以结构化数据(通常是通过 HTTPS 传输的 JSON)返回白银的当前价格和历史价格,让网店、应用或报表无需从网站上复制数字即可使用。在 MetalAPI 中,白银的代码为 XAG,即 ISO 4217 中代表 1 金衡盎司白银的代码。它的实时价格是现货价:批发市场买入价与卖出价报价的中间值。
白银与黄金共用同一个 API,但它有自己的特点:它按金衡盎司报价,却以克和千克买卖;它的每克价格低到连取整都会产生影响;银器和废银的买家考虑的是成色,而不是 K 数。本指南介绍白银特有的请求和细节:
- 用一次请求获取实时白银价格,以及如何解读它。
- 以盎司、克和千克计的白银价格。
- 以其他货币计的白银价格,同样只需一次请求。
- 可追溯到 2000 年的白银历史价格。
- 应用场景:金银条商店、银器和废银回收商,以及投资应用。
如何通过 API 获取实时白银价格
创建免费账户,并在控制台中添加一个 API 密钥。密钥以 mk_live_ 开头。请将密钥保存在环境变量中并通过请求头发送,然后用 XAG 请求 /latest:
export METALAPI_KEY="mk_live_your_key_here"
curl "https://metalapi.com/api/v1/latest?base=USD¤cies=XAG" \
-H "X-API-Key: $METALAPI_KEY"响应如下所示。这些数字是 MetalAPI 文档中通用的示例数值,并非实时价格:
{
"success": true,
"timestamp": 1792713600,
"date": "2026-10-23",
"base": "USD",
"rates": {
"XAG": 0.01853911754,
"USDXAG": 53.94
}
}USDXAG 是 1 金衡盎司白银以基础货币计的价格,本例中为 53.94 美元。XAG 是其倒数,即每美元可买到的白银金衡盎司数,保留它是为了兼容外汇类 API。请始终读取带前缀的键:如果把 rates.XAG 当作价格,页面上就会显示 0.0185 而不是 53.94。
timestamp 是数据的时间,而不是您发出请求的时间。现货白银在工作日全天候交易,每周五 17:00 至周日 17:00(纽约时间)休市,因此在周末 API 会持续返回周五的收盘价。请在价格旁边显示时间戳,尤其是在周六和周日。
如果您还需要黄金、铂金或钯金,请把它们加到同一个请求中:currencies=XAU,XAG,XPT,XPD。无论返回多少个品种,一次请求只计一次。
以盎司、克和千克计的白银价格
除非传入 unit,白银价格均按金衡盎司(31.1034768 克)计。支持的取值有 troy_oz(默认)、gram、kilogram、ounce、pound、metric_ton 和 short_ton;当单位不是默认值时,响应会增加一个顶层的 unit 字段:
curl "https://metalapi.com/api/v1/latest?currencies=XAG&unit=kilogram" \
-H "X-API-Key: $METALAPI_KEY"按每金衡盎司 53.94 美元的示例价格,白银的价格如下:
| 计价单位 | 美元 | 典型用途 |
|---|---|---|
| 金衡盎司(31.1035 克) | 53.94 | 现货报价、银币和银章 |
| 克 | 1.7342 | 首饰、银器、废银 |
| 千克 | 1,734.21 | 千克银条、批发、印度的报价 |
| 托拉(11.6638 克) | 20.23 | 南亚和海湾地区 |
| 常衡盎司 | 49.16 | 几乎从不适用于白银 |
unit=ounce 及其简写 oz 表示 28.35 克的常衡盎司。每金衡盎司的白银价格比每常衡盎司的价格高约 9.7%。如需现货报价,请省略 unit 或传入 troy_oz。
对于白银,有两个习惯值得养成。第一,每克价格要显示更多小数位:按 1.7342 美元计算,两位小数会掩盖大部分日常波动,因此通常保留四位。第二,如果您要显示多种单位,请只请求一次金衡盎司价格并在本地换算,而不是每种单位各请求一次。换算系数都是精确值:
const GRAMS_PER_TROY_OZ = 31.1034768;
const res = await fetch("https://metalapi.com/api/v1/latest?currencies=XAG", {
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 perOz = data.rates[`${data.base}XAG`]; // 文档示例中为 53.94
const perGram = perOz / GRAMS_PER_TROY_OZ; // 1.7342...
const perKg = perGram * 1000; // 1734.21...
console.log({ perOz, perGram: perGram.toFixed(4), perKg: perKg.toFixed(2) });金衡盎司、克与千克列出了所有换算系数(包括英钱),以及适用于发票的取整规则。
以其他货币计的白银价格
设置 base 即可以其他货币为白银计价:base=EUR 返回 EURXAG,base=INR 返回 INRXAG。结合 unit,下面的请求返回以欧元/克计的价格:
curl "https://metalapi.com/api/v1/latest?base=EUR¤cies=XAG&unit=gram" \
-H "X-API-Key: $METALAPI_KEY"{
"success": true,
"timestamp": 1792765800,
"date": "2026-10-23",
"base": "EUR",
"unit": "gram",
"rates": {
"XAG": 0.6713138244,
"EURXAG": 1.489616277
}
}要以多种货币显示白银价格,一次请求仍然足够。以 USD 为基础货币请求白银和这些货币,然后做除法:以欧元计的白银价格为 USDXAG ÷ USDEUR,因为 USDEUR 是 1 欧元的美元价格。所有数值都来自同一快照,因此结果与 base=EUR 返回的数值一致。按文档中 1 欧元兑 1.1642 美元的示例汇率,53.94 ÷ 1.1642 得到每金衡盎司 46.33 欧元,即每克 1.4896 欧元,与上面的结果相同:
import os
import requests
GRAMS_PER_TROY_OZ = 31.1034768
CURRENCIES = ["EUR", "GBP", "INR", "TRY"]
resp = requests.get(
"https://metalapi.com/api/v1/latest",
params={"base": "USD", "currencies": ",".join(["XAG", *CURRENCIES])},
headers={"X-API-Key": os.environ["METALAPI_KEY"]},
timeout=10,
)
data = resp.json()
if not data["success"]:
err = data["error"]
raise RuntimeError(f"MetalAPI {err['code']} ({err['type']}): {err['info']}")
rates = data["rates"]
silver_usd = rates["USDXAG"]
for cur in ["USD", *CURRENCIES]:
per_oz = silver_usd if cur == "USD" else silver_usd / rates["USD" + cur]
print(f"{cur}: {per_oz:,.2f} per troy oz, {per_oz / GRAMS_PER_TROY_OZ:,.4f} per gram")57 种受支持货币中的任何一种都可以这样处理,黄金、铂金和钯金也同样适用,因此一次调用就能为整个价格看板提供数据。在印度,白银通常按千克报价,base=INR&unit=kilogram 可以直接给出当地熟悉的数字。
通过 API 获取白银历史价格
白银历史数据从 2000 年开始,使用与实时价格相同的参数和响应格式。每天的数值是当天的收盘价,日期以 UTC 为准。以下四个端点可以满足大多数需求:
/YYYY-MM-DD、/historical?date=或/yesterday:某一天的收盘价。对于周末或节假日,返回最近一个交易日的收盘价。/timeframe:start_date与end_date之间的每日收盘价,单次请求最多 30 天(Free)或 365 天(付费套餐)。/change:两个日期之间的起始价、结束价、绝对变化和百分比变化。/ohlc:某一天的开盘价、最高价、最低价和收盘价。
# 2024 年 1 月 15 日收盘时的白银价格(文档示例中 USDXAG 为 23.162)
curl "https://metalapi.com/api/v1/2024-01-15?currencies=XAG" \
-H "X-API-Key: $METALAPI_KEY"
# 2026 年 9 月以欧元/克计的每日白银收盘价
curl "https://metalapi.com/api/v1/timeframe?start_date=2026-09-01&end_date=2026-09-30&base=EUR¤cies=XAG&unit=gram" \
-H "X-API-Key: $METALAPI_KEY"
# 500 克白银在 2026 年 10 月 1 日收盘时的欧元价值
curl "https://metalapi.com/api/v1/convert?from=XAG&to=EUR&amount=500&unit=gram&date=2026-10-01" \
-H "X-API-Key: $METALAPI_KEY"过去日期的收盘价不会改变,因此请存储下来,而不要重复请求。付费套餐的单次区间上限为 365 天,回填自 2000 年以来的完整数据只需每年一次 /timeframe 请求。请注意,2026 年 10 月之前的金属价格源自近月期货,因此可能与同一天的现货价略有差异。
通过 API 获取黄金和白银历史价格提供了完整的回填脚本、存储与校验建议,以及一张同时展示金价和金银比的图表。
白银价格 API 的应用场景
金银条商店和钱币经销商。交易商以高于现货的价格卖出,以低于现货的价格回购。典型的售价是每金衡盎司现货价格乘以纯银含量,加上产品溢价,再加上每件商品的固定费用。请为每个产品单独存储溢价,按套餐的更新间隔刷新现货价格,并向客户显示价格的最后更新时间。在 Standard 及以上套餐中,可以把 XAG-BID 和 XAG-ASK 加入 currencies,直接根据市场自身的价差报出买卖双边价格。现货价、买入价、卖出价与价差介绍了交易商如何将这些数字转换为买入和卖出报价。
银器、首饰和废银回收商。银制品按重量和成色计价,成色即纯银所占的千分比。常见的成色有 999(纯银)、958(不列颠银)、925(标准纯银,sterling)和 800(常见于欧洲大陆的老式银器)。熔化价值 = 克重 × 成色 × 每克价格。按每克 1.7342 美元的示例价格,一个 500 克的 925 银托盘含 462.5 克白银,价值约 802.07 美元。废银回收商按熔化价值的一定百分比付款,因此请把这个百分比设为可配置项,而不是写死的常量。
MetalAPI 的 K 金端点 /carat 只适用于黄金,因此白银成色需要您自行计算:
const GRAMS_PER_TROY_OZ = 31.1034768;
/** 银制品的熔化价值:克重 × 成色(例如 0.925)× 每克价格。 */
export function meltValue(grams, fineness, pricePerTroyOz) {
return grams * fineness * (pricePerTroyOz / GRAMS_PER_TROY_OZ);
}
meltValue(500, 0.925, 53.94); // 802.07… 按示例价格计算的 925 银托盘
meltValue(1000, 0.999, 53.94); // 1732.48… 1 千克 999 银条投资和投资组合应用。用户持有银币、银章和千克银条,希望以自己的货币查看其价值。请在内部以金衡盎司存储持仓,只在输入时换算一次单位,并以用户的货币作为 base 来评估投资组合。/change 返回两个日期之间的百分比变动,适用于“本月白银涨跌”这类显示,而从 /timeframe 获取并存储的每日收盘价则可以用来绘制图表。
价格提醒。如果您只需要在白银突破某个价位时作出响应,价格提醒可以监控以任意货币计的 XAG,并从 Lite 套餐起通过电子邮件、从 Advanced 套餐起通过签名 Webhook 通知您,您无需自行轮询。
数据新鲜度、配额与套餐
白银价格的新鲜程度取决于套餐。以高于套餐更新频率的频率轮询,只会再次拿到相同的数字:
| 套餐 | 月费 | 每月请求数 | 价格更新 |
|---|---|---|---|
| Free | $0 | 100 | 每日 |
| Lite | $4.99 | 1,000 | 每 30 分钟 |
| Standard | $11.99 | 10,000 | 每 10 分钟,另含买入价/卖出价 |
| Advanced | $24.99 | 50,000 | 每分钟 |
| Pro | $49.99 | 100,000 | 每分钟,另含实时流 |
| Ultra 和 Business | $99.99 和 $149.99 | 500,000 | 每 15 秒 |
| Enterprise | $299.99 | 1,500,000 | 每 5 秒 |
- 缓存时间至少等于更新间隔。在 Free 套餐中,每天一次请求就足以获取当前价格。
- 在一次调用中请求所有金属。
currencies=XAU,XAG,XPT,XPD只算一次请求;分四次调用则算四次。 - 将密钥保存在服务器上。向页面提供缓存的价格,而不是从每位访客的浏览器调用 API。
- 免费查看用量。
/usage和/symbols从不计入配额,且每个响应都带有rate_limit部分。
准备好开始构建了吗?创建免费账户,一分钟内即可获得 API 密钥,无需信用卡。请在定价页面比较各套餐的更新间隔和配额,并以 API 文档作为所有端点和参数的参考。
常见问题
白银在价格 API 中的代码是什么?
XAG,即 ISO 4217 中代表 1 金衡盎司白银的代码。在 MetalAPI 中,以基础货币计的白银价格对应由两个代码组合而成的键,例如表示美元/盎司的 USDXAG 或表示欧元/盎司的 EURXAG。
有免费的白银价格 API 吗?
有。MetalAPI 的 Free 套餐包含白银、所有其他品种和完整的历史数据,每月 100 次请求,价格每日更新,且无需信用卡。付费套餐起价为每月 $4.99,提供 30 分钟更新和 1,000 次请求。
如何获取每克白银价格?
传入 unit=gram,或将每金衡盎司价格除以 31.1034768。不要除以 28.35:那是常衡盎司,会把每克价格高估约 9.7%。
白银历史价格可以追溯到多久以前?
所有套餐都提供自 2000 年起的每日白银价格。单次区间请求最多覆盖 30 天(Free)或 365 天(付费套餐)。
为什么交易商的白银价格与 API 价格不同?
API 返回的是批发市场的现货中间价。交易商在卖出时会加上铸造、分销和利润等溢价,回购时则支付低于现货的价格,因此零售银币和银条的价格高于现货,回购价则低于现货。
继续阅读
免费黄金价格 API:每月 100 次请求能做什么
如实介绍免费黄金价格 API:MetalAPI Free 套餐包含哪些功能,如何通过缓存和合并请求用好每月 100 次请求,以及何时该升级。
Python 黄金价格 API 教程:获取、缓存并绘制金价
在 Python 中使用黄金价格 API:用 requests 获取实时金价,处理错误与重试,缓存响应,并用 pandas 和 matplotlib 绘制金价时间序列图。
JavaScript 黄金价格 API 教程:Node.js、TypeScript 与 Next.js
用黄金价格 API 在 JavaScript 中获取金价:async/await 与 fetch、TypeScript 响应类型、带缓存的 Express 或 Next.js 路由,以及 API 密钥的安全用法。