适用场景与接口能力
在金融资讯应用、电商计价系统或个人投资分析工具中,实时获取黄金用量说明是一项常见需求。黄金用量说明数据通常分为国际贵金属报价、国内现货价以及各大品牌金店的零售价,来源分散、格式不统一。本文介绍的聚合查询API一次性提供上述三个维度的数据,开发者只需一次请求即可获得完整金价视图。
接口核心能力:
- 国际报价:涵盖国际金价、国际银价、国际铂金、国际钯金,每项含最新价、涨跌额、涨跌幅、最高价、最低价及报价时间。
- 国内报价:包括国内金价、国内银价、投资金条、黄金回收价、铂金回收价、18K金回收价、钯金回收价。
- 品牌金店:覆盖周大福、周生生、六福、老凤祥、老庙、中国黄金、周六福、菜百、明牌珠宝、潮宏基等17家头部品牌的黄金、铂金、金条当日售价(元/克)。
通过可选的type参数,开发者可以按需获取全部数据或仅拉取某一类别,减少不必要的数据传输。
请求参数与鉴权
接口信息
| 属性 | 值 |
|---|---|
| 请求方法 | GET |
| 端点 URL | https://v1.apizero.cn/api/gold |
| QPS 限制 | 5 / 秒 |
| 数据缓存 | 10 分钟 |
Query 参数
| 参数名 | 必需 | 类型 | 说明 | 示例 |
|---|---|---|---|---|
type | 否 | string | 返回类型:all(全部,默认)、brand(品牌金店)、international(国际黄金)、domestic(国内黄金) | all |
鉴权方式
接口支持两种鉴权模式:
- 匿名调用:无需提供任何认证头,但存在每日调用次数上限(具体配额以官方文档为准)。
- API Key 鉴权:在 HTTP 头中传入
X-API-Key(或Authorization: Bearer sk_live_xxx),可获取更高的调用额度。建议生产环境使用 API Key。
注意:原始文档 curl 示例使用
X-API-Key头,实际以官方最新文档为准,两种方式均可在部分版本中生效。
可复制的 curl 请求示例
以下示例展示如何通过带 API Key 的 curl 获取全部金价数据(将$APIZERO_API_KEY替换为真实密钥):
curl -sS \ -X GET \ -H "X-API-Key: $APIZERO_API_KEY" \ "https://v1.apizero.cn/api/gold?type=all"若不使用 API Key,可省略-H部分:
curl -sS -X GET "https://v1.apizero.cn/api/gold?type=all"若只需品牌金店数据:
curl -sS \ -H "X-API-Key: $APIZERO_API_KEY" \ "https://v1.apizero.cn/api/gold?type=brand"Python 代码接入实践
以下 Python 脚本封装了请求与解析逻辑,包含基本的超时处理和返回值检查。使用requests库,需预先安装:pip install requests。
import requests import json import time def fetch_gold_prices(api_key: str = None, request_type: str = "all") -> dict: """ 查询黄金价格聚合数据。 :param api_key: API Key,若为 None 则匿名调用 :param request_type: 数据类型,可选 all/brand/international/domestic :return: 解析后的 JSON 字典 """ url = "https://v1.apizero.cn/api/gold" params = {"type": request_type} headers = {} if api_key: headers["X-API-Key"] = api_key try: # 设置超时 10 秒,避免长时间阻塞 resp = requests.get(url, params=params, headers=headers, timeout=10) resp.raise_for_status() # 非 2xx 状态码抛出异常 data = resp.json() return data except requests.exceptions.RequestException as e: raise RuntimeError(f"请求失败: {e}") def parse_gold_response(response: dict): """ 提取主要字段并打印。 """ if response.get("code") != 0: print(f"接口返回异常: {response.get('msg')}") return data = response["data"] print(f"数据来源: {data.get('source')}") print(f"更新时间: {data.get('update_time')}") # 国际报价 for item in data.get("international", []): print(f"[国际] {item['name']}: {item['price']} 涨跌 {item['change']} ({item['percent']})") # 国内报价 for item in data.get("domestic", []): print(f"[国内] {item['name']}: {item['price']} 涨跌 {item['change']} ({item['percent']})") # 品牌金店 for item in data.get("brand", []): print(f"[品牌] {item['brand']}: 金价 {item['gold_price']}, 铂金 {item['pt_price']}, 金条 {item['bar_price']}") if __name__ == "__main__": # 请替换为你的 API Key,或设为 None 以匿名方式调用 API_KEY = "sk_live_your_key_here" try: raw = fetch_gold_prices(api_key=API_KEY, request_type="all") parse_gold_response(raw) except Exception as e: print(f"发生错误: {e}")该脚本在__main__中演示了完整流程,并包含了异常捕获,可直接在本地运行验证。
返回值结构与字段解读
成功响应的 HTTP 状态码为 200,Content-Type 为application/json。整体结构如下:
{ "code": 0, "msg": "成功", "request_id": "abc123def456", "data": { "source": "huangjinjiage.cn", "type": "all", "update_time": "2026-05-06 15:30:00", "brand": [...], "domestic": [...], "international": [...] } }顶层字段
| 字段 | 类型 | 说明 |
|---|---|---|
code | int | 状态码,0 表示成功,非 0 表示错误 |
msg | string | 状态描述 |
request_id | string | 请求唯一标识,可用于排查问题 |
data | object | 业务数据主体 |
data内部字段
source(string): 数据来源,固定为huangjinjiage.cn。type(string): 请求时指定的type参数值。update_time(string): 数据最新更新时间,格式YYYY-MM-DD HH:mm:ss。international(array): 国际贵金属报价数组,每个元素包含:name: 名称(如“国际金价”)price: 最新价(美元/盎司)change: 涨跌额percent: 涨跌幅(字符串,含百分号)high: 当日最高价low: 当日最低价time: 报价日期(如2026-5-6)
domestic(array): 国内金银及回收报价,字段与international类似,但用量说明单位为元/克。brand(array): 品牌金店数据,每个元素包含:brand: 品牌名称(如“内地周大福”)gold_price: 黄金售价(元/克)pt_price: 铂金售价(元/克,可能为 "-" 表示未提供)bar_price: 金条售价(元/克)time: 报价日期unit: 用量说明单位,固定为“元/克”
常见错误与排查
| HTTP 状态码 | code值 | 可能原因 | 处理建议 |
|---|---|---|---|
| 200 | 非 0 | API Key 无效或过期 | 检查密钥是否准确,或重新生成 |
| 200 | 1xxx | 参数错误(如type值不合法) | 确认type为all/brand/international/domestic |
| 400 | - | Query 参数格式有误 | 检查 URL 编码,避免中文空格 |
| 429 | - | 请求频率超过 QPS(5/s) | 添加调用间隔或使用 API Key 提升配额 |
| 5xx | - | 服务端异常 | 等待后重试,若持续请联系技术支持 |
网络层面:建议为 API 调用配置合理的超时(如 10 秒),并针对ConnectionError或Timeout实现指数退避重试。
工程化注意事项
1. 缓存策略
接口已内置 10 分钟数据缓存,但客户端仍建议按业务场景增设本地缓存,避免每次页面刷新都触发网络请求。例如,对于展示金价的 web 页面,可在内存或 Redis 中缓存 5–10 分钟,并在后台异步更新。
2. 数据类型与精度
返回的用量说明字段均为字符串,解析时注意转换为数值类型(如float)时可能存在的精度问题。前端显示时保留合理小数位数。品牌表中的pt_price可能为"-",代码中应做特殊处理。
3. 错误重试
对于网络抖动的瞬态错误,采用以下策略:
- 重试 3 次,间隔分别为 1s、2s、4s(指数退避)。
4. 编码兼容
数据源原为 GBK 编码,接口已修复乱码问题,但若自行扩展解析,注意响应 Content-Type 中的 charset 声明。
参考文档
- 黄金用量说明查询 API 官方文档
- 原始接口说明(Markdown)