本文基于接口盒子提供的全国油价查询免费 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)为负数即代表降价,正数就是涨价,单位是元/升(柴油同理)。
二、接口基本信息
项目 |
内容 |
请求地址 |
|
请求方式 |
GET 或 POST 均可 |
数据格式 |
返回 JSON |
费用 |
接口本身免费 |
公共 ID |
示例使用公共 ID,生产环境建议换成自己的 ID/KEY 独享频次 |
三、请求参数(必填 3 个)
参数 |
名称 |
必填 |
说明 |
|
用户 ID |
✅ |
用户中心的数字 ID,如 |
|
通讯秘钥 |
✅ |
用户中心生成的 KEY |
|
省 / 直辖市 |
✅ |
中文名,如 |
四、返回参数速览
顶层字段:
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 都有,算是国内这类数据里比较省事的一个。