本文基于接口盒子提供的全国油价查询免费 API 整理而来,面向开发者做一份更系统、可照抄使用的教程。一般每 10 个工作日调整一次,覆盖汽油、柴油、CNG / LNG 等品类,对做车主类 App、物流成本测算、财经小工具都很实用。
一、接口能干嘛
一句话:给定「省 / 直辖市」名字,返回该省当前最新调价周期下的各品类油价 + 波动幅度,部分省份还会按「价区」拆分(比如四川分一价区、二价区,二价区含凉山州、攀枝花)。
支持油品包括但不限于:
- 汽油:89 / 92 / 95 / 98
- 乙醇汽油:e92 / e95 / e98
- 爱跑系列:ap95 / ap98,以及乙醇版 ape95 / ape98
- 柴油:0h、-10h、-20h、-35h、站库价 zyk
- 天然气:CNG / LCNG / LNG
价格波动字段(xxbd)为负数即代表降价 ,正数就是涨价,单位是元/升(柴油同理)。
二、接口基本信息
| 项目 | 内容 |
|---|---|
| 请求地址 | https://cn.apihz.cn/api/jinrong/youjia.php |
| 请求方式 | GET 或 POST 均可 |
| 数据格式 | 返回 JSON |
| 费用 | 接口本身免费 |
| 公共 ID | 示例使用公共 ID,生产环境建议换成自己的 ID/KEY 独享频次 |
三、请求参数(必填 3 个)
| 参数 | 名称 | 必填 | 说明 |
|---|---|---|---|
id |
用户 ID | ✅ | 用户中心的数字 ID,如 id=10000000 |
key |
通讯秘钥 | ✅ | 用户中心生成的 KEY |
sheng |
省 / 直辖市 | ✅ | 中文名,如 sheng=四川、sheng=北京 |
四、返回参数速览
顶层字段:
code:200 成功 / 400 错误msg:提示信息sheng:省名date:本次调价时间,如2026年07月03日data:对象,内含data1/data2...... 多个价区
单个价区(data1为例)核心字段:
jq:价区名(如一价区 / 二价区)area:价区范围(有的省为空)92/95/98/89:对应汽油价格92bd/95bd...:对应波动0h/10h/20h/35h:柴油cng/lcng/lng:天然气- 乙醇 / 爱跑系列字段同理,不一一列举
💡 某地区没卖的油品,对应字段会返回
null,解析时别硬取值。
五、返回示例
{
"code": 200,
"sheng": "四川",
"date": "2026年07月03日",
"data": {
"data1": {
"jq": "一价区",
"area": "",
"92": 7.28,
"92bd": -0.76,
"95": 7.78,
"95bd": -0.81,
"ap98": 8.88,
"ap98bd": -0.92,
"0h": 6.88,
"0hbd": -0.78,
"10h": 7.30,
"10hbd": -0.82
},
"data2": {
"jq": "二价区",
"area": "含凉山州、攀枝花",
"92": 7.35,
"92bd": -0.76,
"95": 7.85,
"95bd": -0.81,
"ap98": 8.95,
"ap98bd": -0.93,
"0h": 6.97,
"0hbd": -0.77
}
}
}
可以看到这一轮四川 92 降了 0.76 元、95 降了 0.81 元,二价区比一价区略贵几分钱。
六、调用示例:PHP
方式 A · GET(最简单)
<?php
$id = '88888888'; // 换成你自己的
$key = '88888888';
$sheng = '四川';
$url = "https://cn.apihz.cn/api/jinrong/youjia.php?"
. "id={$id}&key={$key}&sheng=" . urlencode($sheng);
$json = file_get_contents($url);
$data = json_decode($json, true);
if ($data['code'] == 200) {
echo "省:{$data['sheng']},调价时间:{$data['date']}\n";
foreach ($data['data'] as $k => $zone) {
echo "--- {$zone['jq']} ({$zone['area']}) ---\n";
echo "92#: {$zone['92']} 元(波动 {$zone['92bd']})\n";
echo "95#: {$zone['95']} 元(波动 {$zone['95bd']})\n";
echo "0号柴油: {$zone['0h']} 元\n";
}
} else {
echo "接口错误:{$data['msg']}\n";
}
方式 B · POST(curl,更正式)
<?php
$id = '88888888';
$key = '88888888';
$sheng = '四川';
$ch = curl_init('https://cn.apihz.cn/api/jinrong/youjia.php');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => http_build_query([
'id' => $id,
'key' => $key,
'sheng'=> $sheng,
]),
]);
$json = curl_exec($ch);
curl_close($ch);
$data = json_decode($json, true);
// 后面解析逻辑同上
七、调用示例:Python
方式 A · GET(requests)
import requests
api_id = "88888888"
api_key = "88888888"
sheng = "四川"
url = "https://cn.apihz.cn/api/jinrong/youjia.php"
params = {
"id": api_id,
"key": api_key,
"sheng": sheng,
}
resp = requests.get(url, params=params)
resp.raise_for_status()
data = resp.json()
if data["code"] == 200:
print(f"省:{data['sheng']}|调价时间:{data['date']}")
for k, zone in data["data"].items():
print(f"--- {zone['jq']} ({zone.get('area','')}) ---")
print(f"92#:{zone.get('92')} 元(波动 {zone.get('92bd')})")
print(f"95#:{zone.get('95')} 元(波动 {zone.get('95bd')})")
print(f"0号柴油:{zone.get('0h')} 元")
else:
print("接口错误:", data["msg"])
方式 B · POST
resp = requests.post(url, data=params)
# 后面解析完全一致
八、几个容易踩的小坑
- 多价区省份 :别只认
data1,凉山、攀枝花这种地方在data2,要for着读。 null字段 :部分地区不卖 98、不卖 -35 柴油,解析时用get()或??(PHP)兜底,别直接下标。- 波动是相对上轮调价的差值,不是百分比,单位是元/升。
九、适用场景随想
- 车主小程序:「加满一箱 92 比上次省几块钱」
- 物流后台:按省份拉柴油价算干线成本
- 财经类站点:每次调价日自动发快讯
接口本身免费 + 返回字段细到爱跑 / 乙醇 / CNG 都有,算是国内这类数据里比较省事的一个。