京东商品 API 接口,开发者详解与使用指南

简介: 京东开放平台提供商品API,包括获取商品详情、搜索商品、查询分类等功能。开发者可通过API实现商品数据获取与分析,适用于电商选品、价格监控、比价应用等场景。本文详解API调用流程、签名生成方式及Python代码示例,助力高效接入京东商品数据。

京东开放平台提供了一系列商品 API 接口,可用于获取商品详情、搜索商品、查询分类等功能。以下是对京东商品 API 的深度解析和使用示例:
一、核心商品 API 接口

  1. 商品详情 API (jingdong.ware.get)
    功能:获取单个商品的详细信息
    权限:需申请
    参数:
    wareId:商品 ID(必选)
    field:返回字段列表(如 title,price,imageInfo 等)
  2. 商品搜索 API (jingdong.ware.search)
    功能:根据关键词搜索商品
    权限:需申请
    参数:
    keyword:搜索关键词(必选)
    page:页码
    pageSize:每页数量
    sortType:排序方式(1 - 价格升序,2 - 价格降序等)
  3. 商品分类 API (jingdong.category.read.find)
    功能:获取商品分类信息
    权限:需申请
    参数:
    parentId:父分类 ID(0 为根分类)
    二、API 调用流程
  4. 认证与授权
    AppKey & AppSecret:创建应用后获取
    签名机制:使用 MD5 算法生成签名
    OAuth2.0:部分接口需要用户授权
  5. 签名生成示例
    python
    运行
    import hashlib

def generate_sign(params, app_secret):
"""生成API签名"""

# 1. 参数排序
sorted_params = sorted(params.items(), key=lambda x: x[0])

# 2. 拼接字符串
sign_str = app_secret
for k, v in sorted_params:
    sign_str += f"{k}{v}"
sign_str += app_secret

# 3. MD5加密
return hashlib.md5(sign_str.encode('utf-8')).hexdigest().upper()

三、完整代码示例
以下是使用 Python 实现京东商品 API 调用的完整示例:
python
运行
import hashlib
import time
import requests
import json

class JDAPI:
def init(self, app_key, app_secret):
"""初始化京东API客户端"""
self.app_key = app_key
self.app_secret = app_secret
self.api_url = "https://api.jd.com/routerjson"

def generate_sign(self, params):
    """生成API签名"""
    sorted_params = sorted(params.items(), key=lambda x: x[0])
    sign_str = self.app_secret + ''.join([f"{k}{v}" for k, v in sorted_params]) + self.app_secret
    return hashlib.md5(sign_str.encode('utf-8')).hexdigest().upper()

def call(self, method, params=None):
    """通用API调用方法"""
    if params is None:
        params = {}

    # 公共参数
    common_params = {
        "app_key": self.app_key,
        "method": method,
        "timestamp": time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()),
        "format": "json",
        "v": "2.0",
        "sign_method": "md5"
    }

    # 合并参数
    all_params = {**common_params, **params}

    # 生成签名
    all_params["sign"] = self.generate_sign(all_params)

    # 发送请求
    response = requests.post(self.api_url, data=all_params)
    return response.json()

class JDItemAPI(JDAPI):
def get_item_detail(self, item_id, fields="wareId,title,price,imageInfo,brandInfo"):
"""获取商品详情"""
method = "jingdong.ware.get"
params = {
"wareId": item_id,
"field": fields
}
return self.call(method, params)

def search_items(self, keyword, page=1, page_size=20, sort_type=0):
    """搜索商品"""
    method = "jingdong.ware.search"
    params = {
        "keyword": keyword,
        "page": page,
        "pageSize": page_size,
        "sortType": sort_type,  # 0-默认排序,1-价格升序,2-价格降序,3-销量降序
        "fields": "wareId,title,price,saleInfo,imageInfo"
    }
    return self.call(method, params)

def get_categories(self, parent_id=0):
    """获取商品分类"""
    method = "jingdong.category.read.find"
    params = {
        "parentId": parent_id
    }
    return self.call(method, params)

使用示例
if name == "main":

# 替换为你的AppKey和AppSecret
app_key = "你的AppKey"
app_secret = "你的AppSecret"

# 初始化API客户端
api = JDItemAPI(app_key, app_secret)

# 1. 获取单个商品详情
item_detail = api.get_item_detail(100060000001)
print(f"商品详情: {json.dumps(item_detail, ensure_ascii=False, indent=2)}")

# 2. 搜索商品
search_result = api.search_items("iPhone 15", page=1, page_size=10, sort_type=1)
print(f"搜索结果: {len(search_result.get('jingdong_ware_search_response', {}).get('wareInfoList', []))}个商品")

# 3. 获取商品分类
categories = api.get_categories(0)
print(f"一级分类: {len(categories.get('jingdong_category_read_find_response', {}).get('categoryInfoList', []))}个")

四、API 响应数据结构

  1. 商品详情响应示例
    json
    {
    "jingdong_ware_get_response": {
    "wareInfo": {
    "wareId": 100060000001,
    "title": "Apple iPhone 15 256GB 黑色 移动联通电信5G手机",
    "price": {
     "salePrice": 7999.00,
     "marketPrice": 8999.00
    
    },
    "imageInfo": {
     "imageList": [
       "https://img10.360buyimg.com/n1/s540x540_jfs/t1/200000/30/3000/100000/60000000E00000000/10000000000000000.jpg"
     ]
    
    },
    "brandInfo": {
     "brandId": 1000000000,
     "brandName": "Apple"
    
    },
    "categoryInfo": {
     "categoryId": 1000000000,
     "categoryName": "手机"
    
    },
    "shopInfo": {
     "shopId": 1000000000,
     "shopName": "Apple产品京东自营旗舰店",
     "shopType": 1  # 1-自营,2-第三方
    
    }
    }
    }
    }
  2. 商品搜索响应示例
    json
    {
    "jingdong_ware_search_response": {
    "total": 1258,
    "wareInfoList": [
    {
     "wareId": 100060000001,
     "title": "Apple iPhone 15 256GB 黑色 移动联通电信5G手机",
     "price": 7999.00,
     "saleInfo": {
       "sales": 12345,
       "isJdSale": true,
       "isSelf": true
     },
     "imageInfo": {
       "imageList": [
         "https://img10.360buyimg.com/n1/s540x540_jfs/t1/200000/30/3000/100000/60000000E00000000/10000000000000000.jpg"
       ]
     }
    
    },
    {
     "wareId": 100060000002,
     "title": "Apple iPhone 15 Pro 256GB 暗紫色 移动联通电信5G手机",
     "price": 9999.00,
     "saleInfo": {
       "sales": 8765,
       "isJdSale": true,
       "isSelf": true
     },
     "imageInfo": {
       "imageList": [
         "https://img10.360buyimg.com/n1/s540x540_jfs/t1/200000/30/3000/100000/60000000E00000000/10000000000000000.jpg"
       ]
     }
    
    }
    ]
    }
    }
    五、关键参数与使用技巧
  3. 常用筛选参数
    priceFrom/priceTo:价格区间
    isSelf:是否自营商品
    brandId:品牌 ID
    categoryId:分类 ID
  4. 分页处理
    page:页码(默认 1)
    pageSize:每页数量(最大 100)
    total:总结果数(用于计算总页数)
  5. 性能优化
    批量请求:部分接口支持批量获取
    缓存机制:对不经常变化的数据设置缓存
    异步处理:使用 asyncio/aiohttp 实现并发请求
    六、常见问题与解决方案
  6. 签名错误
    原因:参数排序错误、时间戳偏差
    解决方案:
    确保参数按字典序排序
    同步服务器时间(误差不超过 5 分钟)
  7. 权限不足
    原因:未申请或未通过接口权限审核
    解决方案:
    在开放平台申请相应权限
    完善应用信息和使用场景说明
  8. 频率限制
    默认配额:不同接口限制不同
    解决方案:
    控制请求频率
    申请提升 API 调用配额
    七、应用场景
    电商选品工具:分析商品价格、销量和评价
    价格监控系统:跟踪特定商品价格变化
    比价应用:对比不同店铺商品价格
    数据采集与分析:获取市场数据用于商业决策
    通过京东商品 API,开发者可以构建功能丰富的电商应用和工具。在实际开发中,建议根据业务需求合理选择 API 接口,注意数据处理和性能优化,并遵守京东开放平台的使用规范。
相关文章
|
5月前
|
JSON 监控 API
京东商品详情API接口(标题|主图|SKU|价格)
京东商品详情API提供标准化接口,支持通过HTTPS获取商品标题、价格、库存、销量等120+字段,数据实时更新至分钟级。包含jd.item.get和jd.union.open.goods.detail.query等接口,支持批量查询200个SKU,适用于价格监控、竞品分析等电商场景。
791 156
|
5月前
|
JSON API 数据格式
亚马逊商品评论API接口技术指南
亚马逊商品评论API可程序化获取指定ASIN商品的用户评价,包含评分、内容、时间等结构化数据。需企业认证并遵守使用协议,日调用上限500次。支持分页与排序查询,适用于竞品分析、口碑监测等场景,结合SP-API可构建完整电商数据方案。(238字)
522 3
|
5月前
|
JSON 缓存 算法
如何通过API获取1688商品类目数据:技术实现指南
1688开放平台提供alibaba.category.get接口,支持获取全量商品类目树。RESTful架构,返回JSON数据,含类目ID、名称、层级等信息。需注册账号、创建应用并授权。请求需签名认证,QPS限10次,建议缓存更新周期≥24小时。
491 2
|
5月前
|
JSON 安全 API
亚马逊商品列表API秘籍!轻松获取商品列表数据
亚马逊商品列表API(SP-API)提供标准化接口,支持通过关键词、分类、价格等条件搜索商品,获取ASIN、价格、销量等信息。采用OAuth 2.0认证与AWS签名,保障安全。数据以JSON格式传输,便于开发者批量获取与分析。
|
5月前
|
数据采集 JSON API
微店API使用指南:高效获取商品列表数据
本文介绍如何使用Python爬虫调用微店item_search接口,根据关键词搜索商品并获取商品列表数据,涵盖请求方式、JSON数据解析、分页参数设置及筛选排序功能,适用于电商数据分析与竞品研究。
|
5月前
|
JSON 算法 API
Python采集淘宝商品评论API接口及JSON数据返回全程指南
Python采集淘宝商品评论API接口及JSON数据返回全程指南
|
5月前
|
JSON 算法 API
1688比价API接口:实现商品价格高效比较的技术指南
本文介绍1688比价API的核心功能与实战应用,涵盖接口调用、Python代码实现及价格比较算法优化。助您快速集成商品比价功能,提升电商开发效率。
719 3
|
5月前
|
存储 供应链 API
1688获得店铺所有商品的API接口
本文介绍如何通过1688开放平台API获取指定店铺的全部商品信息,涵盖注册、认证、分页调用及Python代码实现,适用于数据同步、库存管理与电商分析,内容真实可靠,步骤清晰易行。
591 0
|
5月前
|
存储 API 数据库
按图搜索1688商品的API接口
本文介绍如何利用阿里云ImageSearch服务实现1688商品的按图搜索功能。通过提取图像特征向量并计算相似度,结合Flask搭建API接口,可快速构建基于图片的商品检索系统,提升电商用户体验。
565 0
|
5月前
|
JSON API 开发者
1688按关键词搜索商品的API接口技术指南
本文介绍如何使用1688开放平台API实现商品关键词搜索,涵盖API概述、权限申请、调用步骤、Python代码示例及注意事项,助力开发者高效集成商品搜索功能,适用于电商自动化、价格监控等场景,内容基于官方文档,确保准确可靠。
618 0