条码查询接口快速开始:一个 code 参数查出商品信息
条码查询接口快速开始PythoncURLAPI接入 # 条码查询接口快速开始:一个 code 参数查出商品信息
> 接口:showapi 条码查询接口(apiCode=66)· 接入点 66-22 商品条码查询|计费:成功扣 1 次、失败不扣(实测)|请求方式:POST/GET|返回格式:JSON|适用人群:第一次接入的开发者|阅读时间:约 5 分钟|最后实测核对:2026-09-05
**核心要点**
- 66-22 只有一个必填参数 `code`,POST 或 GET 都行——两种方式我都实测调通了。
- 判断成功看 `showapi_res_body.ret_code` 是否为 `"0"`;失败时 `ret_code=-1` 且不扣费。
- 返回里的商品图片 URL 有 24 小时时效(官方口径),生产环境要"查到即下载"。
一个条形码换一份商品档案,参数只有一个。showapi 条码查询接口(apiCode=66)的 66-22 接入点把接入成本压到了最低,这篇带你从零跑通第一次调用,所有返回 JSON 都是 2026-09-05 真实请求的结果,不是文档样例。
## 前置条件
- showapi 账号 + [AppKey](https://www.showapi.com/console#/myApp)。
- 账户有资源包余额:专用资源包 0 / 40 / 300 / 1500 / 6000 元档(12 个月有效),或通用资源包。
- 一个真实条形码。下文用官方示例码 `6907376500056`(强生婴儿牛奶沐浴露 300 毫升)。
## 第一次调用
**cURL(POST):**
```bash
curl -X POST "https://route.showapi.com/66-22?appKey=YOUR_APPKEY" \
-H "content-type: application/x-www-form-urlencoded" \
-d "code=6907376500056"
```
**cURL(GET 也行,实测一致):**
```bash
curl "https://route.showapi.com/66-22?appKey=YOUR_APPKEY&code=6907376500056"
```
**Python(requests):**
```python
import requests
resp = requests.post(
"https://route.showapi.com/66-22",
params={"appKey": "YOUR_APPKEY"},
data={"code": "6907376500056"}, # 条形码
timeout=10,
)
body = resp.json()["showapi_res_body"] # 业务数据都在这里
if str(body.get("ret_code")) == "0":
print(body["goodsName"], "|", body["manuName"], "|", body["spec"])
else:
print("失败:", body.get("remark")) # 失败不扣费,放心试
```
**Node.js(fetch):**
```js
const resp = await fetch(
"https://route.showapi.com/66-22?appKey=YOUR_APPKEY",
{
method: "POST",
headers: { "content-type": "application/x-www-form-urlencoded" },
body: new URLSearchParams({ code: "6907376500056" }),
signal: AbortSignal.timeout(10000),
}
);
const { showapi_res_body: body } = await resp.json();
if (String(body.ret_code) === "0") console.log(body.goodsName, body.spec);
else console.log("失败:", body.remark);
```
## 真实返回(实测 2026-09-05)
```json
{
"showapi_res_error": "",
"showapi_res_id": "6a9bc954fb638c813831c175",
"showapi_res_code": 0,
"showapi_fee_num": 1,
"showapi_res_body": {
"ret_code": "0",
"remark": "查询成功!",
"code": "6907376500056",
"goodsName": "强生婴儿牛奶沐浴露300毫升",
"manuName": "强生(中国)有限公司",
"spec": "300毫升",
"trademark": "强生婴儿",
"goodsType": "服装、箱包、个人护理用品>>个人护理用品>>洗浴、身体护理品>>皮肤护理品",
"gpc": "10000330",
"gpcType": "身体清洁/洗涤/香皂用品",
"img": "http://hj2.co/barcode/img/f1e2eab24ddab364791b14f6b8dbbe89"
}
}
```
三层结构分清了再看字段:`showapi_res_code` 管 HTTP/鉴权层,`showapi_fee_num` 告诉你这次扣了几次(失败为 0,实测确认),`showapi_res_body` 里才是商品数据。
## 实测踩到的两个坑
**坑一:`price` 经常是空的。** 上面这支强生的返回里 `price` 是空字符串。文档参数表给过 `19.9` 的示例值,但那是样例。别把参考价当必有字段做功能。
**坑二:图片链接会过期。** 官方口径 24 小时(字段描述里另有"1 小时"的残留说法,按 24 小时处理最稳)。展示商品图就先转存本地。
## FAQ
**Q1:GET 和 POST 返回有差别吗?**
没有。2026-09-05 两种方式各实测一次,返回一致(同一支强生示例码,`ret_code` 均为 "0")。演示代码用 POST,参数多时更规整。
**Q2:每次调用都扣费吗?**
只有成功查询扣 1 次(`showapi_fee_num=1`)。失败不扣费——这篇写完后我又用无效条码实测了 5 次,全部 `fee_num=0`。
**Q3:资源包怎么选?**
专用资源包 0 / 40 / 300 / 1500 / 6000 元档,自购买起 12 个月有效;也可以充通用资源包调全站付费接口。首次验证用最小档就够。
**Q4:返回 401 或鉴权失败查什么?**
AppKey 没传、拼错,或账户无可用资源包。先到 [AppKey 管理页](https://www.showapi.com/console#/myApp)确认 key 有效、余额充足,再查 URL 拼接。
## 下一步阅读
- [条码查询接口返回字段全解:66-22 与 66-24 的字段差异和失败文案](https://www.showapi.com/guides/barcode-response-fields-66)——完整字段表 + 5 种失败文案对照。
- [商品条码信息怎么查:自建数据库、公开数据源与 showapi 条码查询接口对比](https://www.showapi.com/guides/barcode-plan-comparison-66)——确定这条技术路线值不值得走。
- [条码查询接口接入扫码枪收银:从「滴」一声到商品档案的完整架构](https://www.showapi.com/guides/barcode-pos-scanner-66)——收银场景的落地架构。
- **本系列共 6 篇**:查看[条码查询接口指南总目录](https://www.showapi.com/guides/barcode-guides-66)