条形码查询 API Python 实战:通过 UPC/EAN/ISBN 获取商品详情

发布于 2026年10月7日

做电商上架、进销存入库、扫码比价或图书编目时,共同的第一步都是:扫一个条码,拿到结构化的商品信息。条形码查询 API 把一个 UPC-A、EAN-13、JAN 或 ISBN-10/13 条码解析成标题、品牌、类目路径、属性、图片,很多记录还带各网店价格;同一个入口还能按关键词搜索 5 亿+ 商品的目录并分页遍历。本文用 curl 和 Python 演示两种模式、翻页方式,以及"查不到条码"的正确处理。

接口一览

整个项目只有一个操作,参数与完整说明见条形码查询 API 文档页:

操作必填参数用途
search-product-detailsqueryquery 为数字条码时返回单个商品详情对象;为普通文本时切换为关键词搜索,返回分页结果

可选参数 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 参考文档。单次调用费用见定价。