本地货币每克金价:通过 API 获取 INR、AED、TRY 金价
通过 API 获取以 INR、AED、TRY、EUR、GBP、SAR 或 PKR 计的每克金价,换算每 10 克或每托拉价格,并了解本地零售金价为何与现货价格不同。
以本地货币计的每克金价
每克金价是大多数买家最关注的数字。金奈的珠宝商、迪拜黄金市场(Gold Souk)的顾客,以及在伊斯坦布尔关注 gram altın(克金价)的储户,都以克和本国货币来考虑金价,而国际市场则以美元/金衡盎司报价。两者之间需要两次换算:从金衡盎司换算为克,从美元换算为本地货币。
本地每克金价 = 每金衡盎司美元价格 ÷ 31.1034768 × 每美元可兑换的本地货币数
本指南介绍如何从 MetalAPI 获取这个数字,如何推算部分市场使用的每 10 克价格和每托拉价格,如何为本地读者格式化价格,以及为什么本地金店的价格很少等于换算后的现货价格。
通过 API 获取每克金价
MetalAPI 在服务器端完成这两次换算:unit=gram 将每金衡盎司价格转换为每克价格,base 设置货币。两者在所有套餐中均可使用,Free 套餐也不例外:
curl "https://metalapi.com/api/v1/latest?base=INR¤cies=XAU&unit=gram" \
-H "X-API-Key: $METALAPI_KEY"价格位于由基础货币和品种代码拼接而成的键中,此处为 INRXAU:每克纯金的卢比价格。下面的响应使用文档中的示例金价(每金衡盎司 3,997.89 美元)以及假设的汇率(每美元兑 88.00 卢比)。两者均为示例,并非实时报价:
{
"success": true,
"timestamp": 1792834892,
"date": "2026-10-24",
"base": "INR",
"unit": "gram",
"rates": {
"XAU": 0.00008840878563,
"INRXAU": 11311.09304
}
}- 同一快照。黄金价格和汇率来自同一时刻,因此无需单独调用货币接口,两者之间也不会出现偏差。
- 不带前缀的键是倒数。在这里,
XAU表示每卢比可兑换的黄金克数。请显示带前缀的键;数据格式指南解释了这两个方向。 - 没有托拉或 10 克单位。
unit接受troy_oz(默认)、gram、kilogram、ounce、pound、metric_ton和short_ton;其他任何值都会返回错误209(invalid_unit)。这两种价格都只需在克价的基础上做一次乘法。
各市场的每克金价:计算公式
各国的零售报价惯例各不相同。下表列出了几个主要市场的常见报价方式,以及如何根据 API 返回的 24K 每克价格推算出来。对于其他 K 数,请乘以 K ÷ 24,或在付费套餐中使用 /carat。
| 市场 | base | 常见零售报价 | 由 API 克价推算 |
|---|---|---|---|
| 印度 | INR | 24K 和 22K,每克及每 10 克 | 10 克:× 10;22K:× 22 ÷ 24 |
| 巴基斯坦 | PKR | 24K 和 22K,每托拉及每 10 克 | 每托拉:× 11.6638038;10 克:× 10 |
| 阿联酋(迪拜) | AED | 24K、22K、21K 和 18K,每克 | × K ÷ 24,或 /carat?carat=all |
| 沙特阿拉伯 | SAR | 24K、22K、21K 和 18K,每克 | × K ÷ 24,或 /carat?carat=all |
| 土耳其 | TRY | gram altın:24K 每克 | 直接使用返回的克价 |
| 欧元区 | EUR | 每克;投资金按每根金条 | × 金条克重 |
| 英国 | GBP | 每克及每金衡盎司 | 克价,或省略 unit |
将这些公式应用于示例金价,可得到以下数字。除欧元汇率采用文档中的示例值(1 欧元兑 1.1642 美元)外,其他汇率均为说明用的假设值:
| 货币 | 假设的每美元兑换数 | 24K 每克 | 22K 每克 | 24K 每 10 克 | 24K 每托拉 |
|---|---|---|---|---|---|
| INR | 88.00 | 11,311.09 | 10,368.50 | 113,110.93 | 131,930.37 |
| AED | 3.6725 | 472.05 | 432.71 | 4,720.45 | 5,505.84 |
| SAR | 3.75 | 482.01 | 441.84 | 4,820.07 | 5,622.03 |
| TRY | 42.00 | 5,398.48 | 4,948.60 | 53,984.76 | 62,966.77 |
| PKR | 280.00 | 35,989.84 | 32,990.69 | 359,898.41 | 419,778.45 |
| EUR | 0.8590 | 110.41 | 101.21 | 1,104.06 | 1,287.76 |
| GBP | 0.75 | 96.40 | 88.37 | 964.01 | 1,124.41 |
| USD | 1 | 128.54 | 117.82 | 1,285.35 | 1,499.21 |
单位换算文章给出了克列和托拉列背后的精确换算系数。
以印度卢比计的每克金价
在印度,金价通常针对 24K(999)黄金和首饰标准 22K(916)黄金报价。base=INR&unit=gram 返回 24K 每克价格。对于 22K,请乘以 22 ÷ 24,或在付费套餐中通过 /carat 获取:
curl "https://metalapi.com/api/v1/carat?carat=22&unit=gram&base=INR" \
-H "X-API-Key: $METALAPI_KEY"按示例汇率计算,24K 黄金每克 11,311.09 卢比,换算为 22K 即每克 10,368.50 卢比。K 金价格详解介绍了纯度系数以及 916、750 等成色标记。
每 10 克金价
许多印度的金价看板、报纸和比价网站按每 10 克报价,巴基斯坦的报价也常在每托拉价格旁边列出每 10 克价格。请以克为单位请求价格再乘以 10,并且要先乘后取整:如果先把克价取整到整数卢比,每 10 克价格最多可能偏差 5 卢比。
import os
from decimal import Decimal, ROUND_HALF_UP
import requests
TOLA_G = Decimal("11.6638038") # 180 格令
RUPEE = Decimal("1")
r = requests.get(
"https://metalapi.com/api/v1/latest",
params={"base": "INR", "currencies": "XAU", "unit": "gram"},
headers={"X-API-Key": os.environ["METALAPI_KEY"]},
timeout=10,
)
data = r.json(parse_float=Decimal)
if not data["success"]:
raise RuntimeError(data["error"])
per_gram = data["rates"]["INRXAU"] # 24K,每克卢比价格
for karat in (24, 22):
g = per_gram * karat / 24
print(
f"{karat}K 1 g: {g.quantize(RUPEE, ROUND_HALF_UP)}"
f" 10 g: {(g * 10).quantize(RUPEE, ROUND_HALF_UP)}"
f" 1 tola: {(g * TOLA_G).quantize(RUPEE, ROUND_HALF_UP)}"
)使用上面的示例响应,它会打印:24K 为 11311、113111 和 131930 卢比,22K 为 10369、103685 和 120936 卢比。parse_float=Decimal 让价格不经过二进制浮点数,一旦数字要写进发票,这一点就很重要。
每托拉金价
托拉(tola)是南亚的传统黄金重量单位,在巴基斯坦、尼泊尔以及海湾市场仍被广泛使用;在海湾市场,十托拉金条(116.64 克)是一种常见产品。托拉定义为 180 格令,恰好等于 11.6638038 克,即八分之三金衡盎司。由于 API 中没有托拉单位,可以用以下任一方式换算:
每托拉价格 = 每克价格 × 11.6638038 = 每金衡盎司价格 × 0.375
按示例价格计算,两种方式都得到每托拉 1,499.21 美元。如果价目表或合同使用取整后的托拉重量,请将克重设为配置项并在页面上注明,切勿在同一张表格中将其与精确的托拉混用。
迪拜每克金价(AED)
迪拜的金店和公布的金价看板以迪拉姆按克标价,通常包括 24K、22K、21K 和 18K。在付费套餐中,一次 /carat 请求即可返回所有 K 数;在 Free 套餐中,请从 /latest 请求 base=AED&unit=gram,然后自行乘以 K ÷ 24:
curl "https://metalapi.com/api/v1/carat?carat=all&unit=gram&base=AED" \
-H "X-API-Key: $METALAPI_KEY"阿联酋迪拉姆以 3.6725 的汇率与美元挂钩,因此以迪拉姆计的金价几乎与美元金价同步变动:按示例价格计算,24K 约为每克 472.05 迪拉姆,22K 约为 432.71 迪拉姆。沙特里亚尔(挂钩汇率 3.75)、卡塔尔里亚尔、巴林第纳尔和阿曼里亚尔也都与美元挂钩。不过仍请使用 API 返回的汇率,而不要硬编码挂钩汇率,这样同一段代码就能适用于所有货币。
Gram altın:以土耳其里拉计的每克金价
在土耳其,gram altın(即 1 克 24K 黄金的里拉价格)是人们最密切关注的金价报价,此外还有 çeyrek 等金币价格。base=TRY&unit=gram 以 TRYXAU 的形式返回该价格:按示例金价和假设的每美元兑 42.00 里拉计算,为每克 5,398.48 里拉。
以里拉计的金价由美元金价和美元兑里拉汇率共同决定,因此即使黄金本身价格持平,它也可能上涨。要解释价格变动,可以使用默认基础货币 USD 调用 /change?currencies=XAU,TRY,它会返回两个日期之间以美元计的金价(USDXAU)和每美元兑换的里拉数(TRY)的百分比变化。gram altın 的变化 = (1 + 黄金变化) × (1 + 货币变化) − 1。
代码示例:一次请求获取多个市场
多国金价看板不需要为每种货币单独调用一次。保持默认基础货币 USD,同时请求每克黄金价格和各种货币:unit 只改变金属价格,每个货币键(例如 rates.INR)表示每美元可兑换的该货币数量。两者的乘积就是本地每克价格,整个看板只需一次请求:
const TOLA_GRAMS = 11.6638038;
// 每个市场:货币、显示用的语言区域、要显示的 K 数和重量(克)
const MARKETS = [
{ currency: "INR", locale: "en-IN", karats: [24, 22], weights: { gram: 1, "10 g": 10 } },
{ currency: "PKR", locale: "en-PK", karats: [24, 22], weights: { tola: TOLA_GRAMS, "10 g": 10 } },
{ currency: "AED", locale: "en-AE", karats: [24, 22, 21, 18], weights: { gram: 1 } },
{ currency: "TRY", locale: "tr-TR", karats: [24], weights: { gram: 1 } },
{ currency: "EUR", locale: "de-DE", karats: [24], weights: { gram: 1 } },
];
const url = new URL("https://metalapi.com/api/v1/latest");
url.searchParams.set("currencies", ["XAU", ...MARKETS.map((m) => m.currency)].join(","));
url.searchParams.set("unit", "gram"); // 只影响 XAU;货币汇率不变
const res = await fetch(url, { headers: { "X-API-Key": process.env.METALAPI_KEY } });
const data = await res.json();
if (!data.success) throw new Error(`${data.error.code}: ${data.error.info}`);
const usdPerGram = data.rates.USDXAU; // 24K 黄金,美元/克
for (const m of MARKETS) {
const perUsd = data.rates[m.currency]; // 每 1 USD 可兑换的该货币数量
if (perUsd === undefined) continue;
const fmt = new Intl.NumberFormat(m.locale, { style: "currency", currency: m.currency });
for (const karat of m.karats) {
for (const [label, grams] of Object.entries(m.weights)) {
const price = usdPerGram * perUsd * grams * (karat / 24); // 仅由 format() 取整
console.log(`${m.currency} ${karat}K per ${label}: ${fmt.format(price)}`);
}
}
}
// 例如按示例汇率每美元兑 88.00 INR 时输出 "INR 24K per 10 g: ₹1,13,110.93"
console.log("As of", new Date(data.timestamp * 1000).toISOString());为什么本地金价与换算后的现货价格不同
API 返回的是按市场汇率换算后的国际纯金现货价格。珠宝商的金价看板或金银行业协会公布的每日金价以这一参考价格为起点,再加上本地成本,因此通常更高:
- 进口关税。大部分黄金依赖进口的国家通常会对黄金征收关税,使本地批发价格高于换算后的国际价格。税率会随预算和贸易政策而变化。
- GST 和增值税。印度对黄金征收商品及服务税(GST),阿联酋和沙特阿拉伯等海湾国家征收增值税,欧盟对投资金免征增值税,但首饰不在免税之列。许多税制对金条、金币与首饰及加工费的处理各不相同。
- 加工费与损耗。人工费用按克、按百分比或按件收取,部分市场还会加收损耗费。
- 经销商溢价与买卖价差。经销商以高于参考价的价格卖出、以低于参考价的价格回购,而且小金条和金币每克的溢价高于大金条。
- 本地供需。强劲的需求或进口限制可能使本地价格相对到岸国际价格出现溢价;需求疲软时则可能出现折价。
- 定价时间与汇率。本地金价通常每天只设定一次或几次,并使用银行或协会自己的汇率,而现货价格则持续变动。
- 纯度。本地报价可能指的是 995 金条或 22K 首饰金,而
INRXAU是纯金价格。请进行同类比较。
请把这些因素建模为基于 API 价格、具名且有文档说明的参数,而不是一个不透明的加价,并从官方来源或您的税务顾问处获取关税和税率。然后准确标注您发布的内容:“国际现货价格,换算为 INR”与“孟买今日金价”是两种不同的说法。
本文解释的是计算方法,不构成投资、定价或税务建议。
显示技巧:本地数字格式
- 使用语言区域的数字格式。印度英语按拉克(lakh)和克若尔(crore)对数字分组(₹1,13,110.93),土耳其语用点作千位分隔符、用逗号作小数点(₺5.398,48),德语则把欧元符号放在最后(110,41 €)。请交给
Intl.NumberFormat或您平台的本地化库处理。 - 谨慎选择小数位数。大多数货币使用两位小数;科威特第纳尔、巴林第纳尔和阿曼里亚尔使用三位。按每 10 克或每托拉报价的卢比看板通常只显示整数卢比,因此在这些场景中请传入
maximumFractionDigits: 0。 - 选择数字字符。部分阿拉伯语语言区域(例如
ar-SA)默认使用阿拉伯-印度数字。如需使用拉丁数字,请使用ar-SA-u-nu-latn这样的语言区域。 - 标明 K 数、重量和货币。“22K,每 10 克,INR”这样的标注不会留下任何疑问。
- 显示本地时间。
timestamp是 UTC 时间;请按Asia/Kolkata、Asia/Dubai或Europe/Istanbul时区格式化。现货黄金在纽约时间周五 17:00 收盘、周日 17:00 重新开盘,因此请把周末价格标注为市场收盘价。
以本地货币计的每克黄金历史价格
base 和 unit 同样适用于历史数据端点,因此绘制以卢比或迪拉姆计的每克金价图表无需额外换算。在所有套餐中,金属的每日历史数据可追溯至 2000 年,货币可追溯至 1999 年;一次 /timeframe 请求在 Free 套餐中最多覆盖 30 天,在付费套餐中最多覆盖 365 天:
curl "https://metalapi.com/api/v1/timeframe?base=INR¤cies=XAU&unit=gram&start_date=2026-09-24&end_date=2026-10-23" \
-H "X-API-Key: $METALAPI_KEY"这些值为每日收盘价;周末和节假日的数据可能缺失,且 2026 年 10 月之前的金属价格来自近月期货,因此可能与现货价格略有差异。
获取您所在市场的每克金价
要搭建本地金价页面,请注册获取免费密钥,以您的货币作为 base 并请求 unit=gram,然后按上文所示推算每 10 克、每托拉和各 K 数的价格。Free 套餐每月包含 100 次请求,价格每日更新,足以用于构建和测试。对于实时金价看板,Lite 每 30 分钟更新一次并新增 /carat,Standard 每 10 分钟更新一次并新增买入价和卖出价,最快的套餐每 5 秒更新一次。定价页面对各套餐做了比较,品种页面列出了所有支持的货币。
常见问题
API 会返回每托拉或每 10 克的金价吗?
不会作为单位直接返回。请求 unit=gram 后乘以 10,或乘以 11.6638038 得到每托拉价格;也可以将默认的每金衡盎司价格乘以 0.375。unit=tola 会返回错误 209。
为什么 API 价格低于我当地珠宝商的金价?
API 返回的是按市场汇率换算的国际纯金现货价格。本地金价还包含进口关税、GST 或增值税、加工费、经销商溢价以及本地供需因素,而且可能对应较低的纯度或较早的定价时间。
支持哪些本地货币?
共 57 种货币,包括南亚的 INR、PKR、BDT 和 LKR,海湾地区的 AED、SAR、QAR、KWD、BHD 和 OMR,以及 TRY、EGP、EUR 和 GBP。其中任何一种都可以用作 base,而 /api/v1/symbols 会返回完整列表,且不计入您的配额。
每克金价多久更新一次?
取决于您的套餐:Free 每天一次,Lite 每 30 分钟,Standard 每 10 分钟,Advanced 和 Pro 每 60 秒,Ultra 和 Business 每 15 秒,Enterprise 每 5 秒。周末期间价格保持在周五的收盘价。
可以获取以我所在货币计的 22K 或 21K 每克金价吗?
可以。在付费套餐中,使用 /carat 并传入 carat=22、carat=21 或 carat=all,再加上 unit=gram 和您的 base,即可返回现成的各 K 数价格。在 Free 套餐中,请将 24K 每克价格乘以 K ÷ 24。
继续阅读
XAU/USD 是什么意思:XAU、XAG、XPT 和 XPD 代码详解
XAU/USD 是什么意思?详解黄金为何拥有 ISO 4217 货币代码、XAG、XPT 和 XPD 分别代表什么,以及如何在价格和 API 数据中判断报价方向。
免费黄金价格 API:每月 100 次请求能做什么
如实介绍免费黄金价格 API:MetalAPI Free 套餐包含哪些功能,如何通过缓存和合并请求用好每月 100 次请求,以及何时该升级。
Python 黄金价格 API 教程:获取、缓存并绘制金价
在 Python 中使用黄金价格 API:用 requests 获取实时金价,处理错误与重试,缓存响应,并用 pandas 和 matplotlib 绘制金价时间序列图。