今日油价:5 分钟接入,从注册到查到北京 92 号汽油价格
今日油价油价查询API接入免费接口Python示例 # 今日油价:5 分钟接入,从注册到查到北京 92 号汽油价格
> 接口/接入点:今日油价 · 查询油价(138-46) · 免费 · POST/GET · 返回 JSON · 适用人群:新注册用户、初级开发者 · 阅读时间:约 5 分钟
## TL;DR
- 今日油价是**免费接口**,注册拿到 AppKey 即可调用,按省名查询全国 31 省汽油/柴油价格。
- 核心接入点「查询油价」(138-46)只需一个可选参数 `prov`,返回 `list` 中包含 `p92`/`p95`/`p98`/`p0` 等标号价格。
- 本文给出可直接运行的 Python / cURL / Node.js 三段代码,替换 `YOUR_APPKEY` 即可拿到北京 92 号油价。
## Why
如果你是做车主服务 APP、公众号/小程序、汽车类网站,油价查询是高频刚需:用户加油前想看附近或常住省份的 92/95 价格,App 想在加油页挂一个实时油价卡片。今日油价接口覆盖全国 31 个省份、数据每日凌晨 7 点根据国家公布价格同步,正好满足这类场景。
最省心的是它**免费**:注册即有默认调用档位,先把功能跑通,再按业务量考虑积分兑换更高档位。
## What
| 项 | 说明 |
|----|------|
| 接口 | 今日油价(apiCode 138) |
| 接入点 | 查询油价(138-46) |
| 接口地址 | `https://route.showapi.com/138-46?appKey={your_appKey}` |
| 请求方式 | POST / GET |
| 鉴权 | AppKey(放在 query 的 `appKey` 参数) |
| 计费 | 免费,注册默认可调用,有使用档次限制 |
| 更新频率 | 每日早上 7 点整更新 |
| 集成能力 | 接口级 MCP、OpenAPI 3.0 文档 |
## How
**步骤 1:注册并获取 AppKey**
登录 ShowAPI 控制台 →「我的 App」创建应用,拿到 AppKey(管理入口:<https://www.showapi.com/console#/myApp>)。
**步骤 2:第一次调用(查北京油价)**
请求 `prov=北京`,端点返回 `showapi_res_body.list[0]`,其中 `p92` 即 92 号汽油价、`p95` 为 95 号、`p0` 为 0 号柴油。
**步骤 3:解析并展示**
取出 `list[0]` 的标号字段即可渲染。
Python(requests):
```python
import requests
url = "https://route.showapi.com/138-46"
params = {"appKey": "YOUR_APPKEY", "prov": "北京"}
resp = requests.post(url, data=params, timeout=10)
data = resp.json()
if data.get("showapi_res_code") != 0:
raise RuntimeError(f"系统级失败: {data.get('showapi_res_error')}")
body = data["showapi_res_body"]
if body.get("ret_code") != 0:
raise RuntimeError("业务失败,ret_code 非 0")
item = body["list"][0]
print("省份:", item["prov"])
print("92号汽油:", item["p92"])
print("95号汽油:", item["p95"])
print("0号柴油:", item["p0"])
print("更新时间:", item["ct"])
```
cURL:
```bash
curl -X POST "https://route.showapi.com/138-46?appKey=YOUR_APPKEY" \
-H "content-type: application/x-www-form-urlencoded" \
-d "prov=%E5%8C%97%E4%BA%AC"
```
Node.js(fetch):
```javascript
const params = new URLSearchParams({ appKey: "YOUR_APPKEY", prov: "北京" });
const resp = await fetch("https://route.showapi.com/138-46", {
method: "POST",
headers: { "content-type": "application/x-www-form-urlencoded" },
body: params,
});
const data = await resp.json();
const body = data.showapi_res_body;
const item = body.list[0];
console.log("92号汽油:", item.p92, "95号:", item.p95, "0号柴油:", item.p0);
```
## 返回示例与解析
```json
{
"showapi_res_error": "",
"showapi_fee_num": 1,
"showapi_res_code": 0,
"showapi_res_id": "6318178b0de376fa3dea2511",
"showapi_res_body": {
"ret_code": 0,
"list": [
{
"prov": "北京",
"p90": "",
"p0": "8.16",
"p95": "8.97",
"p97": "",
"p98": "9.95",
"p89": "7.88",
"p92": "8.42",
"p93": "",
"ct": "2022-09-07 10:06:12.867"
}
]
}
}
```
字段速查:`ret_code=0` 成功;`list` 为省份油价数组;`p89/p90/p92/p93/p95/p97/p98` 为各标号汽油价,`p0` 为 0 号柴油价,`ct` 为更新时间。注意 `p90/p93/p97` 为空字符串,代表该省未公布/无此标号,并非接口异常。
## 进阶/边界
- **`prov` 是选填参数**:文档标注可省略;标准用法传省名查单省,省略行为(是否返回全部 31 省)以实际返回为准,建议先传省名。
- **价格为字符串**:所有 `p*` 字段都是字符串类型,前端计算涨跌请先 `parseFloat`。
- **免费但有档位**:默认档位足够试用;上线前评估日均调用量,必要时用积分兑换更高档位,避免超限。
## FAQ
**Q:这个接口收费吗?**
A:今日油价是免费接口,注册后默认可调用,设了使用档次限制防止滥用;积分可兑换更高档位,但没有按次扣费。
**Q:`prov` 不填会怎样?**
A:文档标注为选填。标准用法建议传省名(如「北京」「广西」)查单省;不传时是否返回全部省份需以实际接口返回为准,本文以传省名为准。
**Q:返回的 `p92` 是数字还是字符串?**
A:是字符串,例如 `"8.42"`。做加减或对比前请先转成数字。
**Q:数据多久更新一次?**
A:每日凌晨 7 点整根据国家公布价格同步更新,`ct` 字段是数据更新时间。
## 相关能力 / 下一步阅读
- [今日油价返回字段全解:p89/p90/p0/p92/p93/p95/p97/p98 与 ct 一文读懂](https://www.showapi.com/guides/oilprice-fields-138)
- [今日油价:涨跌幅怎么查?「查询行情」接入点的调价日与涨跌率实战](https://www.showapi.com/guides/oilprice-trend-138)
- **本系列共 13 篇**:查看[今日油价开发指南总目录](https://www.showapi.com/guides/oilprice-guides-138)