条形码查询 API Python 实战:通过 UPC/EAN/ISBN 获取商品详情
做电商上架、进销存入库、扫码比价或图书编目时,共同的第一步都是:扫一个条码,拿到结构化的商品信息。条形码查询 API 把一个 UPC-A、EAN-13、JAN 或 ISBN-10/13 条码解析成标题、品牌、类目路径、属性、图片,很多记录还带各网店价格;同一个入口还能按关键词搜索 5 亿+ 商品的目录并分页遍历。本文用 curl 和 Python 演示两种模式、翻页方式,以及"查不到条码"的正确处理。
接口一览
整个项目只有一个操作,参数与完整说明见条形码查询 API 文档页:
| 操作 | 必填参数 | 用途 |
|---|---|---|
search-product-details | query | query 为数字条码时返回单个商品详情对象;为普通文本时切换为关键词搜索,返回分页结果 |
可选参数 page 只用于搜索模式翻页,条码查询时请留空。接口根据 query 的形态自动选择模式,不需要额外开关。
准备工作
注册并在控制台复制自己的 API Key,新账号自带免费测试额度。请把 Key 放在服务端环境变量里(下文用 OPENDATA_API_KEY),不要写进前端代码或公开仓库;Key 出现在查询参数中,可能进入访问日志,注意脱敏。
第一步:条码查询模式
传入一个数字条码(UPC-A、EAN-13、JAN、ISBN-10/13 均可):
curl --get 'https://api.opendata-api.com/api/project/barcodes-lookup/search-product-details?key=YOUR_API_KEY' \
--data-urlencode 'query=3017620422003'
命中时响应 data 中的商品对象包含 title、description、类目路径数组、brand、manufacturer、attributes 属性表(mpn、asin、size、dimensions、weight 等,视收录情况)、features 卖点列表、图片 URL;食品类商品可能带 nutrition_facts 与 ingredients,图书与音像制品带作者/艺术家字段。barcode_formats 会回显命中的各格式编码(upc_a、ean_13、isbn_10、isbn_13 等)。很多记录还带 online_stores 数组,逐项给出店铺名、价格与链接——这就是现成的跨店比价连接键。
第二步:关键词搜索与翻页
传入普通文本即进入搜索模式:
curl --get 'https://api.opendata-api.com/api/project/barcodes-lookup/search-product-details?key=YOUR_API_KEY' \
--data-urlencode 'query=nutella'
响应 data 内含 results 数组——每条命中带 barcode、title、category、image 与 manufacturer——以及 nextPage 游标。把 nextPage 的值原样作为 page 参数带回即可取下一页,直到 nextPage 为 null 表示没有更多结果。
第三步:Python 完整示例
import os
import time
import requests
BASE = "https://api.opendata-api.com/api/project/barcodes-lookup"
KEY = os.environ["OPENDATA_API_KEY"].strip()
def call(params):
resp = requests.get(
f"{BASE}/search-product-details",
params={"key": KEY, **params},
timeout=30,
)
resp.raise_for_status() # HTTP layer: 4xx/5xx means transport or quota trouble
envelope = resp.json()
if str(envelope.get("code")) != "200":
raise RuntimeError(f"Platform rejected the request: {envelope.get('message')}")
return envelope.get("data")
def lookup_barcode(code):
data = call({"query": code}) # page must stay empty in barcode mode
if not isinstance(data, dict):
return None
if data.get("results") is not None and not data.get("title"):
# Business-level miss: HTTP 200 with an empty results array
return None
return data
def search_products(term, max_pages=10):
page = None # First search request goes out without page
for _ in range(max_pages):
params = {"query": term}
if page:
params["page"] = page # Pass the nextPage cursor back verbatim
data = call(params)
if not isinstance(data, dict):
return
for hit in data.get("results") or []:
yield hit
page = data.get("nextPage")
if not page:
return # nextPage is null: no more pages
time.sleep(1) # Pause between pages
product = lookup_barcode("3017620422003")
if product:
print(product.get("title"), product.get("brand"))
for hit in search_products("nutella", max_pages=3):
print(hit.get("barcode"), hit.get("title"))
HTTP 状态与业务状态
- 响应外层是
{code, message, data}信封:code=200只表示平台受理了请求,业务结果要看data。 - 查不到的条码返回 HTTP 200 加空
results数组——这是业务层的"未收录",不是故障:不要原地重试,也不要当异常抛出,按"目录暂无此商品"走自己的业务流程,需要时隔一段时间再复核。 - 字段深度因商品而异:热门商品往往带完整属性与多店铺价格,冷门记录可能只有稀疏标题。入库前按字段是否存在分支处理,不要假设任何字段必有值。
- 条码查询不要传
page;搜索翻页时也不要自己编造页码,只使用返回的nextPage游标。
典型使用场景
- 进销存扫码入库:仓库或收银端扫 UPC/EAN,自动回填品名、类目、厂商与图片,省去人工录入。
- 电商上架预填:用条码预填listing的标题、描述、MPN/ASIN 属性与重量尺寸,跨境电商可批量把 UPC/EAN 转成标题和类目。
- 扫码比价:以条码为跨店连接键,比较
online_stores数组里各家报价,比价网站和浏览器插件都适用。 - 图书编目:ISBN-10/13 查询返回书名、作者与封面图,适合图书馆与二手书店扫描应用。
- 食品营养记录:扫食品 EAN-13 拉取营养成分表与配料,接入饮食或卡路里追踪 App。
- 批量目录增强:把 CSV 里的条码列表解析成带品牌、属性与图片的结构化行,导入 PIM/ERP。
常见问题
如何通过条形码查询商品信息?
把条码数字作为 query 传给 search-product-details 即可,UPC-A、EAN-13、JAN、ISBN 都走同一个参数,命中后返回标题、品牌、类目、属性、图片等结构化字段。
怎么用 Python 调用条码查询接口获取商品详情?
用 requests 发 GET 请求,参数带 key 与 query,先检查信封 code,再从 data 读商品对象。完整代码见上文第三步。
ISBN 书号怎么查询图书名称、作者和封面?
直接把 ISBN-10 或 ISBN-13 作为 query 传入,返回的商品对象含书名、作者字段与封面图片 URL,barcode_formats 里会回显 isbn_10/isbn_13。
扫码比价功能用什么数据接口实现?
用本接口的条码模式:命中记录里的 online_stores 数组逐项给出店铺名、价格与链接,以条码为键即可横向比较各店报价。
跨境电商如何通过 UPC/EAN 获取商品标题和类目?
逐条用 UPC/EAN 调条码模式,从返回中取 title 与类目路径数组;若是关键词找品,则用搜索模式按 nextPage 翻页收集候选。
进销存系统扫码自动录入商品信息怎么实现? 扫码枪把条码读进系统后调一次条码查询,把返回的品名、类目、厂商、图片映射到库存表字段;查不到时按"空结果"流程转入人工补录。
如何通过条码查询食品的营养成分表?
食品类商品的命中记录可能包含 nutrition_facts 与 ingredients 字段,按字段是否存在分支读取即可;注意冷门商品可能只有标题。
有没有好用的商品条码查询 API 接口? 本文这个接口一个入口同时支持条码精确查询和关键词搜索,覆盖 5 亿+ 商品,新账号有免费测试额度,可以先在文档页在线试调。
更多支持
如果你还需要 Amazon、Walmart、eBay、Google Shopping、淘宝、1688、京东等相似平台的商品数据接口,可以通过联系我们页面提出需求,我们会按需评估新增。对数据安全或调用量有更高要求的团队,也支持源码级私有化部署。
立即试用
在条形码查询 API 页面在线测试,或阅读 search-product-details 参考文档。单次调用费用见定价。