京东 item_get_pro 返回的 5 个价格字段到底用哪个?一份真实数据讲清楚

admin16小时前京东API7

做电商数据、比价系统、代采代发、反向海淘独立站的朋友,绕不开一个东西——商品详情接口。
这篇不讲虚的,直接拿一份 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_iid10135568490356商品 ID,全链路唯一标识
titleSAM EDELMAN山姆爱德曼虞书欣同款2026秋芭蕾风德训鞋...完整标题,含尺码颜色后缀,做独立站建议截断处理
desc_short""短描述,京东多数商品为空,别指望它
detail_urlhttps://item.jd.com/10135568490356.html#crumb-wrap商品详情页,注意带 #crumb-wrap 锚点,转发给客户时建议去掉
_ddffqx内部标记字段,业务上可忽略

② 价格体系(⚠️ 最容易踩坑的地方)

一份返回里出现了 5 个价格字段,很多人直接拿 price 去算账,结果对不上:

字段示例含义什么时候用
price1290当前销售价(通常是主 SKU 价)展示、比价
promotion_price1290促销价打折商品优先用它
orginal_price1290原价 / 划线价展示"原价 ¥1290"
suggestive_price""建议零售价京东多数为空
total_price""总价(含运费等场景)多数为空
is_promotion""是否促销中空值 ≠ 不促销,需容错

🔴 重要结论:真正准确的价格必须从 skus.sku[].price 里取。
商品级 price 只是一个"代表价",当 SKU 价格不一致时(比如大码加价),你会算错。

③ 库存与销量

字段示例说明
num"99"商品总可售库存,注意是字符串,int() 前先判空
min_num"1"最小起订量
total_sold"0"累计销量
sales0销量(数字型)

🔴 total_sold 和 sales 经常是 0,这不代表没销量,而是京东前台本身不展示这个数。做"爆款筛选"时别用这两个字段下结论。

④ 品牌与类目

字段示例说明
brandSAM EDELMAN品牌名
brandId1317356品牌 ID
rootCatId11729一级类目 ID
cid6916叶子类目 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_idSKU 唯一 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_idpricequantity尺码颜色
101355684903561290.09937 美码 6.5M白色
101355684903571290.09937.5 美码 7M白色
101355684903581290.09938 美码 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 个实战踩坑点(都是真金白银换来的)

  1. 图片必须补协议头://img10.360buyimg.com/... → https://img10...,否则部分端不显示。

  2. 价格别用商品级 price:多 SKU 价格不一致时必错,统一从 skus.sku[].price 取,再算 min/max。

  3. num / quantity / total_sold 是字符串:"99" 直接参与计算会出问题,先 int() 并容错空值。

  4. sales / total_sold 常为 0:这是京东前台限制,不代表真实销量,别拿来做爆款排序。

  5. props_name 不要硬解析:格式是 序号:序号:名:值,还带结尾多余 ;。用 props_list 查表更稳。

  6. props 有脏数据:存在 name == value 的异常条目,渲染前必须过滤。

  7. desc_short / desc / desc_img 经常为空:详情长图不是每个商品都有,独立站要准备降级方案(只用主图集 + 属性表)。

  8. 缓存会骗你:调试价格/库存变化时,传 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:。

把这三句记住,剩下的就是体力活了。


相关文章

京东商品详情 API 接口实战:从申请权限到 Python 调用,商品标题/价格/SKU 字段全解析

一、先搞清楚:你说的"京东商品数据",到底要哪些字段很多人在搜索引擎里敲下"京东商品详情 API",但真正要的东西差别很大。先把需求对齐,能省掉后面 80% 的...

京东商品价格更新工具之API的妙用

京东商品价格更新工具之API的妙用做电商的人都有过这样的时刻:SKU 从几十个涨到几百上千个,价格却还靠人工盯着。每天打开京东,一个一个搜,一个一个记,再填进表格——两小时过去了。赶上大促,价格一天变...

电商数据采集实战:批量自动化获取淘宝、京东商品评论数据

在电商运营、竞品分析、市场调研场景中,商品评论是最具价值的用户反馈数据,包含用户需求、产品痛点、口碑评价等核心信息。手动复制评论效率极低,无法满足批量、高频次的数据采集需求。本文将基于 Python,...

京东工业商品价格详情数据API调用演示

京东工业根据ID取商品详情 API 返回值说明vipmro.item_get公共参数名称类型必须描述keyString是调用key(必须以GET方式拼接在URL中)secretString是调用密钥a...

爬虫试用 | 京东商品详情搜索采集助手 – 一键批量采集下载商品详情

爬虫试用 | 京东商品详情搜索采集助手 – 一键批量采集下载商品详情

API:京东item_get_pro功能:输入关键词搜索批量采集商品详情内容,如标题、相应的sku、sku对应的价格、主图、详情图、原价、到手价、优惠、店铺名、店铺id、店铺评分、简介等。公共参数点击...

1688代采API技术解析:从接口设计到系统集成的完整实践

前言在跨境电商和反向海淘业务场景中,1688作为国内最大的B2B采购平台,其商品数据的自动化获取和代采流程的API化是很多技术团队关注的重点。本文将从技术角度系统解析1688代采API的架构设计、核心...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。