京东 item_get_pro 返回的 5 个价格字段到底用哪个?一份真实数据讲清楚
做电商数据、比价系统、代采代发、反向海淘独立站的朋友,绕不开一个东西——商品详情接口。
这篇不讲虚的,直接拿一份item_get_pro的真实返回数据,把每个字段掰开揉碎讲清楚,最后给一份能直接跑的 Python 代码。
一、先想清楚:你到底需要拿商品详情的哪一部分?
很多人上来就问"有没有京东商品详情接口",但其实需求差异很大:
| 业务场景 | 真正需要的字段 |
|---|---|
| 比价 / 价格监控 | price、promotion_price、skus.sku[].price |
| 选品分析 | cid、rootCatId、brand、props、total_sold |
| 反向海淘独立站铺货 | title、item_imgs、desc_img、skus、props_list |
| 代采 / 代发系统下单前校验 | num、skus.sku[].quantity、sku_id |
| ERP / 企业采购 | 全字段 + seller_info |
如果你上面中了两条以上,那这篇文章的字段表建议直接收藏——因为很多字段名长得像双胞胎,用错一个,价格就算错了。
二、接口概览
| 项目 | 说明 |
|---|---|
| 接口名 | jd.item_get_pro(京东商品详情 PRO 版) |
| 请求方式 | GET / POST(推荐 POST 表单,规避 URL 编码坑) |
| 返回格式 | JSON |
| 单次返回 | 一个商品的完整详情,含全部 SKU |
典型请求长这样(域名用占位符,换成你自己的就行):
https://{API_HOST}/jd/item_get_pro/ ?key={你的key} &secret={你的secret} &num_iid=10135568490356 &cache=no &lang=cn &result_type=json必填参数:
| 参数 | 是否必填 | 说明 |
|---|---|---|
| num_iid | ✅ 必填 | 京东商品 ID,即 http://item.jd.com/ 后面那串数字 |
| key / secret | ✅ 必填 | 账号凭证 |
| cache | 选填 | yes 走缓存(快、省次数),no 强制拉最新 |
| lang | 选填 | cn / en,影响 language 节点 |
| result_type | 选填 | json / xml,默认 json |
💡
num_iid就是你从商品链接https://item.jd.com/10135568490356.html里截出来的那一段。
三、返回数据的整体结构
item_get_pro 的返回,可以拆成 两层 + 八个模块:
{ "item": { ← 第一层:商品主体,99% 的信息都在这 "num_iid" / "title" ← ① 基础标识 "price" / "orginal_price"← ② 价格体系 "num" / "total_sold" ← ③ 库存与销量 "brand" / "cid" ← ④ 品牌与类目 "item_imgs" / "video_id" ← ⑤ 图片与视频 "props" / "props_list" ← ⑥ 规格属性 "skus": { "sku": [...] } ← ⑦ SKU 列表(重点!) "seller_info" ← ⑧ 卖家与店铺 }, "secache" / "secache_time" ← 第二层:响应元信息(缓存/语言/翻译) "language" / "translate_status" }记住一句话:所有真实可用的数据都在 item 节点里,item 外面的字段只是"这次响应是怎么来的"。
下面按模块逐个拆。
四、核心字段逐个拆解
① 基础标识
| 字段 | 示例值 | 说明 |
|---|---|---|
| num_iid | 10135568490356 | 商品 ID,全链路唯一标识 |
| title | SAM EDELMAN山姆爱德曼虞书欣同款2026秋芭蕾风德训鞋... | 完整标题,含尺码颜色后缀,做独立站建议截断处理 |
| desc_short | "" | 短描述,京东多数商品为空,别指望它 |
| detail_url | https://item.jd.com/10135568490356.html#crumb-wrap | 商品详情页,注意带 #crumb-wrap 锚点,转发给客户时建议去掉 |
| _ddf | fqx | 内部标记字段,业务上可忽略 |
② 价格体系(⚠️ 最容易踩坑的地方)
一份返回里出现了 5 个价格字段,很多人直接拿 price 去算账,结果对不上:
| 字段 | 示例 | 含义 | 什么时候用 |
|---|---|---|---|
| price | 1290 | 当前销售价(通常是主 SKU 价) | 展示、比价 |
| promotion_price | 1290 | 促销价 | 打折商品优先用它 |
| orginal_price | 1290 | 原价 / 划线价 | 展示"原价 ¥1290" |
| suggestive_price | "" | 建议零售价 | 京东多数为空 |
| total_price | "" | 总价(含运费等场景) | 多数为空 |
| is_promotion | "" | 是否促销中 | 空值 ≠ 不促销,需容错 |
🔴 重要结论:真正准确的价格必须从
skus.sku[].price里取。
商品级price只是一个"代表价",当 SKU 价格不一致时(比如大码加价),你会算错。
③ 库存与销量
| 字段 | 示例 | 说明 |
|---|---|---|
| num | "99" | 商品总可售库存,注意是字符串,int() 前先判空 |
| min_num | "1" | 最小起订量 |
| total_sold | "0" | 累计销量 |
| sales | 0 | 销量(数字型) |
🔴
total_sold和sales经常是0,这不代表没销量,而是京东前台本身不展示这个数。做"爆款筛选"时别用这两个字段下结论。
④ 品牌与类目
| 字段 | 示例 | 说明 |
|---|---|---|
| brand | SAM EDELMAN | 品牌名 |
| brandId | 1317356 | 品牌 ID |
| rootCatId | 11729 | 一级类目 ID |
| cid | 6916 | 叶子类目 ID |
做选品/铺货的,cid 和 rootCatId 是分类自动化的关键:拿到 cid 就能反查类目路径,给商品自动打标签,不用人工归类。
⑤ 图片与视频
| 字段 | 说明 |
|---|---|
| pic_url | 主图,协议相对地址,形如 //http://img13.360buyimg.com/... |
| item_imgs.item_img[] | 主图集合(列表),每个元素是 {"url": "..."} |
| prop_imgs.prop_img[] | 按颜色/规格区分的图,带 properties 键 |
| props_img | 同上,数组套字典的另一种写法 |
| desc_img | 详情长图列表(部分商品为空) |
| video_id | 商品视频 ID,如 3775012303 |
🔴 第一个大坑:所有图片 URL 都是
//开头的协议相对地址。
直接塞进<img src="//img13...">在部分小程序、APP WebView、Node 服务端渲染环境里会加载失败。务必统一补上https:。
⑥ 规格属性
这是最"绕"的一块,三个字段配合使用:
props —— 结构化属性数组,适合直接渲染"商品参数表":
[ { "name" : "适用季节" , "value" : "春秋夏季" } , { "name" : "上市时间" , "value" : "2026年春季" } , { "name" : "鞋面材质" , "value" : "混合材质" } , { "name" : "闭合方式" , "value" : "系带" } ]props_name —— 销售属性(尺码 + 颜色)的字符串拼接,用 ; 分隔,格式为 序号:序号:属性名:属性值:
"0:0:尺码:35 美码5M;0:1:尺码:35.5 美码 5.5M;...;1:0:颜色:白色;1:1:颜色:粉蓝色;1:2:颜色:沙色/浅褐色;"
props_list —— 把上面的东西转成 Key-Value 字典,这才是最好用的:
{ "0:3" : "尺码:37 美码 6.5M" , "1:0" : "颜色:白色" , "1:2" : "颜色:沙色/浅褐色" }✅ 核心用法:
skus.sku[].properties(如"0:3;1:0")→ 按;拆分 → 去props_list里查 → 得到"尺码:37 / 颜色:白色"。
有了props_list,你完全不需要去解析那串props_name长字符串。
⚠️ 顺带提一个脏数据:样例中 props 数组里有一条 {"name": "小清新", "value": "甜美风"},属性名居然是属性值。京东属性表本身就有这类不规范数据,做渲染前建议加一层"属性名白名单/黑名单"过滤。
⑦ SKU 列表(整个接口最有价值的部分)
skus.sku 是一个数组,每个元素代表一个可售的具体规格:
{ "price" : 1290 , "orginal_price" : 1290 , "properties" : "0:3;1:0" , "properties_name" : "0:3:尺码:37 美码 6.5M;1:0:颜色:白色" , "quantity" : "99" , "sku_id" : "10135568490356" , "sku_url" : "http://item.jd.com/10135568490356.html" }| 字段 | 说明 |
|---|---|
| sku_id | SKU 唯一 ID,下单/加购必须传这个 |
| price / orginal_price | 该规格的真实价格 |
| quantity | 该规格库存(字符串) |
| properties | 规格键,如 0:3;1:0 |
| properties_name | 规格名,人类可读 |
| sku_url | 该 SKU 的直达链接 |
样例商品共 26 个 SKU(8 个尺码 × 3 个颜色,其中 35 码为后期补的),价格全部 1290。如果换成价格有差异的商品,你就会看到 price 在不同 SKU 上不一样——这正是必须用 SKU 价的原因。
⑧ 卖家与店铺
"seller_id" : "16340102" , "shop_id" : "16340102" , "seller_info" : { "shop_id" : 16340102 , "nick" : "SAM EDELMAN官方旗舰店" , "shop_name" : "SAM EDELMAN官方旗舰店" , "zhuy" : "https://shop.m.jd.com/shop/home?shopld=16340102" }做同款比价、店铺监控、供应商筛选,seller_id / shop_id 是你的主键。
⑨ 响应元信息
"secache" : "27d0743f6cc003518718579b4be87be9" , "secache_time" : 1791785956 , "secache_date" : "2026-10-12 14:19:16" , "translate_status" : "" , "language" : { "default_lang" : "cn" , "current_lang" : "cn" }| 字段 | 说明 |
|---|---|
| secache | 缓存指纹,相同的值说明本次走的是缓存 |
| secache_time | 缓存时间戳(秒) |
| secache_date | 缓存时间的可读格式 |
| language | 语言设置,做跨境多语言站点时用到 |
💡 调试技巧:请求时传
cache=no,再看secache_date是否刷新。如果依然是旧时间,说明缓存层没过——这能帮你快速定位"为什么价格没更新"。
五、Python 实战:3 分钟跑通并解析出价格区间 + SKU 表格
Step 1 · 请求封装
import requests API_HOST = "https://{你的API_HOST}/jd/item_get_pro/" KEY = "你的key" SECRET = "你的secret" def get_item(num_iid: str) -> dict: """拉取京东商品详情,返回 item 节点""" params = { "key": KEY, "secret": SECRET, "num_iid": num_iid, "cache": "no", # 强制拉最新 "lang": "cn", "result_type": "json", } resp = requests.post(API_HOST, data=params, timeout=15) resp.raise_for_status() data = resp.json() if "item" not in data: raise RuntimeError(f"接口返回异常: {data}") return data["item"]Step 2 · 图片链接补全(必做)
def fix_url(url: str) -> str: """京东图片是协议相对地址 //xxx,统一补 https:""" if not url: return "" return url if url.startswith("http") else "https:" + url item = get_item("10135568490356") main_img = fix_url(item["pic_url"]) gallery = [fix_url(img["url"]) for img in item["item_imgs"]["item_img"]] print("主图:", main_img) print("主图集:", gallery)Step 3 · 解析 SKU,输出价格区间
def parse_skus(item: dict): props_list = item.get("props_list", {}) # {"0:3": "尺码:37 美码 6.5M", ...} rows = [] for sku in item.get("skus", {}).get("sku", []): attrs = {} for key in sku["properties"].split(";"): # "0:3;1:0" -> ["0:3", "1:0"] nameval = props_list.get(key, "") if ":" in nameval: name, _, value = nameval.partition(":") attrs[name] = value rows.append({ "sku_id": sku["sku_id"], "price": float(sku["price"]), "quantity": int(sku["quantity"] or 0), **attrs, }) return rows rows = parse_skus(item) prices = [r["price"] for r in rows] print(f"共 {len(rows)} 个 SKU") print(f"价格区间: ¥{min(prices)} ~ ¥{max(prices)}") print(f"库存合计: {sum(r['quantity'] for r in rows)}")输出:
共 26 个 SKU 价格区间: ¥1290.0 ~ ¥1290.0 库存合计: 2574
Step 4 · 直接转成表格(铺货/运营最爱)
import pandas as pd df = pd.DataFrame(rows) df = df[["sku_id", "price", "quantity", "尺码", "颜色"]] if "尺码" in df.columns else df print(df.head(10).to_string(index=False))
| sku_id | price | quantity | 尺码 | 颜色 |
|---|---|---|---|---|
| 10135568490356 | 1290.0 | 99 | 37 美码 6.5M | 白色 |
| 10135568490357 | 1290.0 | 99 | 37.5 美码 7M | 白色 |
| 10135568490358 | 1290.0 | 99 | 38 美码 7.5M | 白色 |
| … | … | … | … | … |
到这里,一份能直接入库、能直接生成独立站 SKU 选择器的结构化数据就出来了。
Step 5 · 顺手生成商品参数表
def build_params_html(item: dict) -> str: lines = [] for p in item.get("props", []): name, value = p.get("name", "").strip(), p.get("value", "").strip() if not name or not value or name == value: # 过滤脏数据 continue lines.append(f"<tr><td>{name}</td><td>{value}</td></tr>") return "<table>" + "".join(lines) + "</table>"六、8 个实战踩坑点(都是真金白银换来的)
图片必须补协议头:
//img10.360buyimg.com/...→https://img10...,否则部分端不显示。价格别用商品级
price:多 SKU 价格不一致时必错,统一从skus.sku[].price取,再算min/max。num/quantity/total_sold是字符串:"99"直接参与计算会出问题,先int()并容错空值。sales/total_sold常为 0:这是京东前台限制,不代表真实销量,别拿来做爆款排序。props_name不要硬解析:格式是序号:序号:名:值,还带结尾多余;。用props_list查表更稳。props有脏数据:存在name == value的异常条目,渲染前必须过滤。desc_short/desc/desc_img经常为空:详情长图不是每个商品都有,独立站要准备降级方案(只用主图集 + 属性表)。缓存会骗你:调试价格/库存变化时,传
cache=no,并对比secache_date是否刷新。
七、典型落地场景
① 反向海淘独立站铺货title + item_imgs + props + skus 四件套 → 自动生成商品页、自动生成规格选择器、自动算价格区间。26 个 SKU 不需要人工录一条。
② 比价 / 价格监控系统
定时轮询 num_iid,对比 skus.sku[].price,触发阈值告警。用 cache=no 保证拿到实时价。
③ 代采 / 代发系统
用户下单前用 skus.sku[].quantity 校验库存、用 sku_id 精确锁定规格,避免"下错规格、发错货"。
④ 选品分析cid + rootCatId + brand + props 做自动归类,配合价格区间和店铺信息做赛道分析。
⑤ ERP / 企业内部采购 批量拉取商品档案,一次入库,结构化字段齐全,不需要爬页面。
八、接口获取与成本
上面用到的 item_get_pro 属于电商平台商品数据 API 的一个接口,同类还有商品搜索、店铺详情、订单、类目、SKU 库存等一整组能力。
目前的支持情况:
平台覆盖:京东、淘宝/天猫、1688、拼多多、抖音等主流平台
接口形态:标准 HTTP + JSON,任何语言都能接(Python / Java / PHP / Node / Go)
计费方式:充值额度按量消耗,付费购买多少额度,额外赠送等额免费调用量(免费配额 = 购买金额 × 2)
适用对象:独立站、代采系统、ERP、比价工具、数据服务商
需要接口文档、申请测试 key,或者想先拿某个商品试一下返回效果,可以评论区留言或私信我,直接把商品链接发我,我拉一份真实数据给你看。
九、小结
item_get_pro 这份返回看着字段多,其实逻辑很清晰:
外层看缓存,内层看
item;价格看 SKU,规格查props_list,图片记得补https:。
把这三句记住,剩下的就是体力活了。