图书ISBN查询:5 分钟接入,从注册到第一条图书信息
图书ISBN查询API快速接入Python示例免费接口 # 图书ISBN查询:5 分钟接入,从注册到第一条图书信息
> 接口/接入点:图书ISBN查询(1626-1) · 是否免费:免费(注册默认可调用,有使用档次限制) · 请求方式:POST / GET · 返回格式:JSON · 适用人群:新注册用户、初级开发者 · 阅读时间:约 5 分钟
## TL;DR
- 图书ISBN查询是免费接口:传 ISBN 即可拿到书名、作者、出版社、定价、封面图等 13 个字段。
- 三步跑通:注册取 AppKey → 调 `https://route.showapi.com/1626-1?appKey=YOUR_APPKEY` → 解析 `showapi_res_body.data`。
- 业务数据在 `showapi_res_body` 内;`ret_code=0` 表示成功。
## Why
做图书相关的小工具、藏书管理、书店盘点时,最麻烦的就是"拿到一个 ISBN,却要手工去搜书名作者出版社"。图书ISBN查询把这步变成一次 HTTP 调用:你给号,它还你结构化的书目信息,直接落库或展示。注册即可免费调用,先跑通最小示例,再把它嵌进你的系统。
## What
前置条件与接口速览:
| 项 | 说明 |
|----|------|
| 接口地址 | `https://route.showapi.com/1626-1?appKey={your_appKey}` |
| 接入点 | 图书ISBN查询(1626-1),本接口仅 1 个接入点 |
| 请求方式 | POST / GET |
| 鉴权 | AppKey(query 参数 `appKey`,或到 AppKey 管理页获取) |
| 计费 | 免费(有使用档次限制,详见档位说明) |
| 返回格式 | JSON |
| 更新频率 | 每天不定时更新多次,本月出版物一般当月就可查 |
| 集成能力 | MCP 服务、OpenAPI 3.0(YAML/JSON) |
请求参数仅 1 个业务字段 `isbn`(String,示例 `9787208061644`)。作为唯一查询条件,调用时**必须传入**。
## How
### 步骤 1:获取 AppKey
登录 ShowAPI 控制台 → 「我的应用」→ 创建应用 → 复制 AppKey。下文用 `YOUR_APPKEY` 占位,请替换为你自己的。
### 步骤 2:发起第一次调用
下面三种写法任选其一,替换 `YOUR_APPKEY` 即可运行(默认超时 10 秒)。
**Python(requests)**
```python
import requests
APP_KEY = "YOUR_APPKEY"
ISBN = "9787208061644"
resp = requests.post(
"https://route.showapi.com/1626-1",
params={"appKey": APP_KEY},
data={"isbn": ISBN},
timeout=10,
)
resp.raise_for_status()
body = resp.json()["showapi_res_body"]
if body.get("ret_code") != 0:
print("查询失败:", body.get("remark"))
else:
d = body["data"]
print(d["title"], "—", d["author"], "—", d["publisher"], "— ¥", d["price"])
```
**cURL**
```bash
curl -X POST "https://route.showapi.com/1626-1?appKey=YOUR_APPKEY" \
-H "content-type: application/x-www-form-urlencoded" \
-d "isbn=9787208061644"
```
**Node.js(fetch)**
```javascript
const APP_KEY = "YOUR_APPKEY";
const ISBN = "9787208061644";
const res = await fetch(
`https://route.showapi.com/1626-1?appKey=${APP_KEY}`,
{
method: "POST",
headers: { "content-type": "application/x-www-form-urlencoded" },
body: new URLSearchParams({ isbn: ISBN }),
}
);
const body = (await res.json()).showapi_res_body;
if (body.ret_code !== 0) {
console.error("查询失败:", body.remark);
} else {
const d = body.data;
console.log(`${d.title} — ${d.author} — ${d.publisher} — ¥${d.price}`);
}
```
### 步骤 3:解析返回
业务数据全部位于 `showapi_res_body` 内。先判断 `ret_code`:为 `0` 表示成功,否则表示失败/未找到(见错误码排查篇)。成功时 `data` 是**单个图书对象**(不是数组),直接取字段即可。
## 返回示例与解析
```json
{
"showapi_res_code": 0,
"showapi_res_id": "5fd9ca098d57bae137453934",
"showapi_res_body": {
"ret_code": 0,
"remark": "success",
"data": {
"title": "追风筝的人",
"author": "卡勒德·胡赛尼",
"publisher": "上海人民出版社",
"pubdate": "2006-05",
"edition": "1",
"page": "362",
"format": "32开",
"paper": "胶版纸",
"binding": "平装",
"isbn": "9787208061644",
"price": "25.00",
"gist": "许多年过去了,人们说陈年旧事可以被埋葬……",
"img": "http://static1.showapi.com/app2/isbn/imgs/xxxx.jpg"
},
"showapi_fee_code": 0
}
}
```
> 注意:`data` 是对象不是数组;`produce` 字段文档未给出确切含义(示例多为日期),解析时按需取用即可。
## 进阶 / 边界
- **更新时效**:本月新书一般当月可查,极新书可能稍晚入库,必要时隔日重试。
- **免费档位**:接口免费但有调用档次限制,量大会触发限额;高频场景请看缓存策略篇。
- **查不到**:`ret_code` 非 0 多为 ISBN 错误或该书尚未收录,详见错误码排查篇。
## FAQ
**Q1:一定要用 POST 吗?GET 行不行?**
文档支持 POST 与 GET。示例用 POST 表单(`application/x-www-form-urlencoded`),简单调试也可改用 GET 把参数放 query。
**Q2:AppKey 能写在前端页面里吗?**
不建议。AppKey 等同于你的调用凭证,暴露在公网前端有被盗刷风险;前端应走你自己的后端代理转发。
**Q3:返回里没有畅销热度/印次字段?**
接口返回字段以文档"返回参数"为准(见返回字段全解篇),价值描述中提到的个别词在返回结构中无对应字段,请以实际返回字段为准。
**Q4:接口免费,会一直免费吗?**
当前为免费服务,注册默认可调用,但设有使用档次限制以防滥用;具体档位以官方档位说明页为准。
## 相关能力 / 下一步阅读
- [图书ISBN查询返回字段全解:一本书的 13 个元数据字段一文读懂](https://www.showapi.com/guides/isbn-book-fields-explained-1626)
- [图书ISBN查询错误码排查:ret_code 非 0 与"查不到"怎么办](https://www.showapi.com/guides/isbn-book-error-handling-1626)
- [图书管理系统如何集成图书ISBN查询:从扫码录入到藏书档案](https://www.showapi.com/guides/isbn-book-library-system-1626)
- **本系列共 12 篇**:查看[图书ISBN查询(apiCode=1626)官方指南总目录](https://www.showapi.com/guides/isbn-book-guides-1626)