国际原油价格查询:5 分钟从注册到拿到第一条 WTI 报价
国际原油价格查询原油价格APIWTI原油布伦特原油免费接口 # 国际原油价格查询:5 分钟从注册到拿到第一条 WTI 报价
> 接口:国际原油价格查询(apiCode=1108,接入点 1108-1)| 免费(有档位限制)| 请求方式 POST/GET | 返回 JSON | 适用人群:新注册用户、初级开发者 | 阅读时间:约 5 分钟
## 核心要点
- 注册 ShowAPI 账号并获取 AppKey,是调用任何接口的前提。
- 一条 `code=wti` 的请求就能拿到 WTI 原油当前价与涨跌幅,无需复杂参数。
- 返回中 `nowPrice` 是数字、`ret_code=0` 代表成功;多数价格字段为字符串,解析时需注意类型。
## Why
做行情播报、油价看板、投资参考时,你需要的往往只是"此刻 WTI 或布伦特多少钱、今天涨了还是跌了"。国际原油价格查询把这件事做成了一个免费、按次调用的接口:注册后拿 AppKey,发一条请求,返回里就带着当前价、开盘/最高/最低、涨跌金额与幅度。不用自己找数据源、不用维护爬虫。
## What
| 项目 | 说明 |
|------|------|
| 接口名称 | 国际原油价格查询 |
| 接口编码 | 1108(接入点 1108-1) |
| 请求地址 | `https://route.showapi.com/1108-1?appKey={your_appKey}` |
| 请求方式 | POST / GET |
| 返回格式 | JSON |
| 计费 | 免费,注册后默认可调用,有使用档次限制(见免费档位说明) |
| 更新频率 | 每小时整点更新一次 |
| 鉴权 | AppKey(在请求地址 query 参数 `appKey` 传入) |
| 集成能力 | MCP 服务、OpenAPI 3.0 文档 |
## How
### 步骤 1:注册并获取 AppKey
1. 打开 https://www.showapi.com 注册 / 登录。
2. 进入「我的 App」控制台(https://www.showapi.com/console#/myApp)创建应用,拿到 AppKey。
3. 把 AppKey 替换到下方代码的 `YOUR_APPKEY` 占位符。
### 步骤 2:发送第一条请求(以 WTI 为例)
**Python(requests)**
```python
import requests
APP_KEY = "YOUR_APPKEY" # 替换为你的真实 AppKey
URL = "https://route.showapi.com/1108-1"
try:
resp = requests.get(
URL, params={"appKey": APP_KEY, "code": "wti"}, timeout=10
)
resp.raise_for_status()
data = resp.json()
except requests.RequestException as e:
print("请求失败:", e)
raise
body = data.get("showapi_res_body", {})
if body.get("ret_code") != 0:
print("业务失败,ret_code =", body.get("ret_code"))
raise SystemExit(1)
print("原油名称:", body["name"])
print("当前价(美元/桶):", body["nowPrice"])
print("涨跌金额:", body["diff_num"])
print("涨跌幅度:", body["diff_rate"])
print("发布时间:", body["time"])
```
**cURL**
```bash
curl -X POST "https://route.showapi.com/1108-1?appKey=YOUR_APPKEY" \
-H "content-type: application/x-www-form-urlencoded" \
-d "code=wti"
```
**Node.js(fetch)**
```javascript
const APP_KEY = "YOUR_APPKEY";
const url = "https://route.showapi.com/1108-1";
try {
const resp = await fetch(
`${url}?appKey=${APP_KEY}`,
{
method: "POST",
headers: { "content-type": "application/x-www-form-urlencoded" },
body: "code=wti",
signal: AbortSignal.timeout(10000),
}
);
const data = await resp.json();
const body = data.showapi_res_body;
if (body.ret_code !== 0) {
console.error("业务失败,ret_code =", body.ret_code);
process.exit(1);
}
console.log(body.name, body.nowPrice, body.diff_rate);
} catch (e) {
console.error("请求失败:", e);
}
```
### 步骤 3:解析返回
返回结构见下一节。重点是:`showapi_res_body` 内才是业务数据,`ret_code=0` 才是成功。
## 返回示例与解析
```json
{
"showapi_res_id": "",
"showapi_res_error": "",
"showapi_res_code": 0,
"showapi_res_body": {
"ret_code": 0,
"nowPrice": 44.94,
"yestoday_closePrice": "44.44",
"today_openPrice": "45.05",
"todayMax": "45.62",
"todayMin": "44.72",
"diff_num": "0.5",
"diff_rate": "1.13%",
"time": "2025-02-11 14:05:34",
"stockNum": "10045",
"name": "WTI原油(NYMEX原油)"
}
}
```
字段含义见 [国际原油价格查询返回字段全解](https://www.showapi.com/guides/crude-oil-price-fields-1108)。
## 进阶 / 边界
- **类型混合**:`nowPrice` 与 `ret_code` 是数字(Number),其余价格字段(如 `yestoday_closePrice`、`diff_num`、`diff_rate`)是字符串(String)。做数值计算前先转换类型。
- **code 建议显式传**:文档标注 `code` 为选填,但未说明不传时的默认返回;建议始终显式传 `wti` 或 `blt`,行为更可控。
- **免费档位**:接口免费但有调用档次限制,高频场景请配合缓存(见 [免费档位下如何设计缓存节省调用成本](https://www.showapi.com/guides/crude-oil-price-cache-strategy-1108))。
## FAQ
**Q:国际原油价格查询要收费吗?**
免费。注册后默认可调用,但为防止滥用设有使用档次限制,具体档位以官方免费档位说明为准。
**Q:不传 code 参数会返回哪种原油?**
文档未明确不传 `code` 时的默认行为,建议显式传 `wti`(WTI)或 `blt`(布伦特)以获得确定结果。
**Q:nowPrice 和 yestoday_closePrice 为什么一个能直接算、一个要转类型?**
`nowPrice` 返回为数字类型,而 `yestoday_closePrice` 等价格字段返回为字符串类型,计算前需自行转换(如 `float(...)`)。
**Q:返回的价格是人民币还是美元?**
单位为美元/桶,字段说明中已标注。
**Q:更新频率是多少?**
每小时整点更新一次,非实时逐笔行情。
## 相关能力 / 下一步阅读
- [国际原油价格查询返回字段全解:nowPrice / diff_rate / stockNum 一文读懂](https://www.showapi.com/guides/crude-oil-price-fields-1108)
- [国际原油价格查询:WTI 与布伦特原油怎么选?code 参数实战](https://www.showapi.com/guides/crude-oil-price-wti-vs-brent-1108)
- [国际原油价格查询:如何用数据搭建实时油价看板?从拉取到可视化](https://www.showapi.com/guides/crude-oil-price-dashboard-1108)
- **本系列共 12 篇**:查看[国际原油价格查询官方指南总目录](https://www.showapi.com/guides/crude-oil-price-guides-1108)