博客/开发者

用 Python 获取每克黄金价格(24K、22K、18K)

无需 API 密钥,用 Python 获取 24K、22K 和 18K 每克黄金价格,并通过 Decimal 安全计算金额。

开发者
用 Python 获取每克黄金价格(24K、22K、18K)

如果应用需要每克黄金价格,可直接请求公开的 /v1/carat 端点。一次请求会按所选货币返回 24K、22K、21K、20K、18K、16K、14K 和 10K 的金属价值,试用无需 API 密钥。

用 Python 获取每克黄金价格

下面只使用 Python 标准库,并将价格读为 Decimal,避免货币计算中的二进制浮点误差。

import json
from decimal import Decimal
from urllib.parse import urlencode
from urllib.request import Request, urlopen

url = "https://api.goldprice.dev/v1/carat?" + urlencode({"currency": "USD"})
with urlopen(Request(url, headers={"Accept": "application/json"}), timeout=10) as response:
    payload = json.load(response)

prices = {
    "currency": payload["currency"],
    "timestamp": payload["timestamp"],
    "24k": Decimal(payload["price_gram_24k"]),
    "22k": Decimal(payload["price_gram_22k"]),
    "18k": Decimal(payload["price_gram_18k"]),
}

可将 USD 换成 EURGBPINRIDRAEDJPY 等支持的货币。请同时保存表示价格观测时间的 timestamp

计算金饰的金属价值

对于 12.5 克的 18K 金饰,用 18K 每克价格乘以重量,并只在最终金额上舍入一次。

from decimal import Decimal, ROUND_HALF_UP

weight = Decimal("12.5")
value = (weight * prices["18k"]).quantize(Decimal("0.01"), rounding=ROUND_HALF_UP)

端点已按请求货币的最小单位精度返回每克值。结果只是黄金含量的指示性价值,并非零售价或回购价。加工费、宝石、税费、溢价、精炼费和回购折扣需另行计算。

API 如何换算克重与纯度

API 先把 XAU 价格换成所选货币,再将每金衡盎司价格除以 31.1034768,最后乘以 22 / 2418 / 24 等纯度比例。

生产检查清单

  • 计算过程始终使用 Decimal
  • timestamp 与价格一同保存。
  • 按功能所需时效缓存成功响应。
  • 不要用零或新时间戳替代刷新失败。
  • 将结果标为指示性价值,而非结算报价。
  • 账户密钥只保存在服务器端。

完整字段见 carat API 文档;日线 OHLC 数据请使用历史 API

相关指南

goldprice.dev

实时黄金价格、历史 OHLC 数据与多源聚合 — 通过 REST 和 SSE 接口提供。