JD 京东商品数据 API
快速开始错误码客户中心

京东商品数据 API

按关键词搜索京东商品、获取单个商品的详情与准确价格,适用于比价、找供应商、选品等场景。无需自己维护采集程序,一个 HTTP 请求即可拿到结构化 JSON 数据。

接口地址价格
商品搜索GET /v1/jd/search¥0.40 / 次
商品详情GET /v1/jd/item-detail¥0.35 / 次
Base URL:https://api.askhong.com · 所有接口返回 JSON(UTF-8) · 只有成功返回数据才扣费,失败不扣费

快速开始

1. 向管理员获取你的 API Key(形如 jdk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx),并充值余额。

2. 发起一次搜索:

curl --max-time 120 -G 'https://api.askhong.com/v1/jd/search' \
  --data-urlencode 'keyword=螺丝' \
  --data-urlencode 'key=YOUR_API_KEY'

中文等非 ASCII 参数需要 URL 编码(如上用 --data-urlencode;Python requests / 浏览器 fetch 会自动编码)。

3. 从结果中取出商品编号 wareId,查询该商品的详情与准确价格:

curl --max-time 120 'https://api.askhong.com/v1/jd/item-detail?itemId=100188556171&key=YOUR_API_KEY'
搜索结果中的价格是列表展示价,可能含补贴、券后价或广告位价格,与商品详情页的价格可能不一致。比价时请以「商品详情」接口返回的 priceInfo.jdPrice 为准。

你可以在 客户中心 用 API Key 登录,查看余额、每一次调用的扣费记录,以及在线充值。

鉴权

每个请求都需要携带 API Key,以下三种方式任选其一:

方式示例
请求头(推荐)X-API-Key: YOUR_API_KEY
Bearer TokenAuthorization: Bearer YOUR_API_KEY
Query 参数?key=YOUR_API_KEY

请妥善保管 API Key,不要放在网页前端代码中。如果泄露,请联系管理员重置,旧 Key 会立即失效。

计费规则

返回格式与错误码

所有接口返回统一结构,请通过返回体中的 code 字段判断结果,code = 0 表示成功:

{
  "code": 0,              // 0 = 成功,其他见下表
  "message": "success",
  "data": { ... },        // 业务数据,失败时为 null
  "requestId": "9f3c1a2b7e4d5c60",  // 请求编号,排查问题时提供给我们
  "charge": "0.40",       // 本次扣费(元),仅成功时返回
  "balance": "9.60"       // 扣费后余额(元),仅成功时返回
}
codeHTTP 状态说明处理建议
0200成功-
40001400参数错误(缺少必填参数或格式不对)检查参数
40101401缺少 API Key按「鉴权」携带 Key
40102401API Key 无效检查 Key 是否正确,是否已被重置
40201402余额不足充值后重试
40301403API Key 已停用联系管理员
40302403该接口暂未开放联系管理员
40401404接口不存在检查请求路径
40402404商品不存在或已下架检查 itemId
42901429请求过于频繁降低频率,稍后重试
50201502数据采集失败直接重试即可,通常重试 1~2 次能成功
50202502数据源返回错误稍后重试
50301503服务暂不可用稍后重试,持续出现请联系管理员
50401504数据源超时重试
50001500内部错误联系管理员并提供 requestId

以上所有非 0 的情况均不扣费。

限流与超时

按关键词搜索京东商品(含广告位商品),支持类目筛选、分页、排序、价格区间和品牌筛选。用于发现商品和店铺、初步比较价格。

GEThttps://api.askhong.com/v1/jd/search¥0.40 / 次(成功才扣)

也支持 POST,参数以 JSON 或表单形式放在请求体中。

请求参数

参数名类型必填说明
keywordstring是搜索关键词,例如 螺丝、iPhone 17。即使指定了类目也必须填写。
pagestring否页码,从 1 开始。每页约 10~30 条。
sortstring否排序:0 综合 1 销量 2 价格从高到低 3 价格从低到高 6 评论数
priceIntervalstring否价格区间,格式 最低-最高,例如 0-100
brandstring否品牌名称,例如 iPhone、固万基
cidstring否京东类目 ID,用于按类目筛选(可从搜索结果的 catid 获得)
cidLevelstring否类目层级:1 一级 2 二级 3 三级
keystring见鉴权你的 API Key(也可放在请求头)

代码示例

curl --max-time 120 -G 'https://api.askhong.com/v1/jd/search' \
  -H 'X-API-Key: YOUR_API_KEY' \
  --data-urlencode 'keyword=螺丝' \
  --data-urlencode 'sort=3' \
  --data-urlencode 'priceInterval=0-100'
import requests

API_BASE = "https://api.askhong.com"
API_KEY = "YOUR_API_KEY"

resp = requests.get(
    f"{API_BASE}/v1/jd/search",
    params={"keyword": "螺丝", "sort": "3", "page": "1"},
    headers={"X-API-Key": API_KEY},
    timeout=120,
)
body = resp.json()
if body["code"] == 0:
    for item in body["data"]["wareInfo"]:
        print(item["wareId"], item["wname"], item["jdPrice"])
    print("本次扣费", body["charge"], "剩余余额", body["balance"])
elif body["code"] == 50201:
    print("采集失败,请重试(未扣费)")
else:
    print("失败:", body["code"], body["message"])
const API_BASE = "https://api.askhong.com";
const API_KEY = "YOUR_API_KEY";

const url = new URL(API_BASE + "/v1/jd/search");
url.searchParams.set("keyword", "螺丝");
url.searchParams.set("sort", "3");

const resp = await fetch(url, {
  headers: { "X-API-Key": API_KEY },
  signal: AbortSignal.timeout(120000),
});
const body = await resp.json();
if (body.code === 0) {
  for (const item of body.data.wareInfo) {
    console.log(item.wareId, item.wname, item.jdPrice);
  }
} else {
  console.error(body.code, body.message);
}

响应示例(节选)

{
  "code": 0,
  "message": "success",
  "data": {
    "wareCount": 811,
    "curPage": "1",
    "hasNextPage": true,
    "wareInfo": [
      {
        "wareId": "100188556171",
        "spuId": "100188556169",
        "wname": "固万基(GUWANJI)螺丝组合套装 主机电脑固态硬盘电子数码小螺丝钉 台式电脑螺丝套装15种[1盒]",
        "jdPrice": "¥11.5",
        "toCPrice": "11.50",
        "priceTag": "已补¥2.02",
        "good": "99%好评",
        "reviews": "2万+条评价",
        "shopId": "1000450829",
        "venderId": "1000450829",
        "self": true,
        "catid": "14132",
        "imageurl": "https://m.360buyimg.com/mobilecms/s534x534_jfs/t1/432956/....jpg"
      }
    ]
  },
  "requestId": "9f3c1a2b7e4d5c60",
  "charge": "0.40",
  "balance": "9.60"
}

主要字段说明

字段说明
data.wareCount搜索结果总数
data.curPage / data.hasNextPage当前页码 / 是否还有下一页
data.wareInfo[]商品列表
wareId商品编号(SKU ID),用于调用「商品详情」接口的 itemId;商品链接为 https://item.jd.com/{wareId}.html
spuId商品 SPU 编号(同款不同规格共用)
wname商品标题
jdPrice列表展示价(带 ¥ 符号的字符串)
toCPrice展示价的数字形式(字符串)
priceTag价格标签,例如「京东价」「已补¥2.02」
good / reviews好评率 / 评价数量
shopId / venderId店铺 ID / 商家 ID
shopName店铺名称(部分商品为空,可通过商品详情获取)
self是否京东自营
catid三级类目 ID
imageurl商品主图
adIconDescribe有值(如「广告商品」)表示该条是广告位
搜索结果包含广告位商品,同一商品可能出现多次。列表价不等于实际售价,请用「商品详情」获取准确价格。

商品详情

按商品编号获取单个京东商品的准确价格、店铺、品牌、规格型号、参数和图片等。

GEThttps://api.askhong.com/v1/jd/item-detail¥0.35 / 次(成功才扣)

请求参数

参数名类型必填说明
itemIdstring是商品编号(纯数字),即搜索结果中的 wareId,或商品链接 item.jd.com/100188556171.html 中的数字
keystring见鉴权你的 API Key(也可放在请求头)

代码示例

curl --max-time 120 'https://api.askhong.com/v1/jd/item-detail?itemId=100188556171' \
  -H 'X-API-Key: YOUR_API_KEY'
import requests

resp = requests.get(
    "https://api.askhong.com/v1/jd/item-detail",
    params={"itemId": "100188556171"},
    headers={"X-API-Key": "YOUR_API_KEY"},
    timeout=120,
)
body = resp.json()
if body["code"] == 0:
    d = body["data"]
    print("价格:", d["priceInfo"]["jdPrice"])
    print("店铺:", d["shop_infos"]["shopName"])
    print("品牌:", d["itemOnly"]["brandName"])
    print("型号:", d["itemInfo"]["product"]["model"])
else:
    print("失败:", body["code"], body["message"])
const resp = await fetch(
  "https://api.askhong.com/v1/jd/item-detail?itemId=100188556171",
  { headers: { "X-API-Key": "YOUR_API_KEY" }, signal: AbortSignal.timeout(120000) }
);
const body = await resp.json();
if (body.code === 0) {
  const d = body.data;
  console.log(d.priceInfo.jdPrice, d.shop_infos.shopName, d.itemInfo.product.skuName);
} else {
  console.error(body.code, body.message);
}

响应示例(节选)

{
  "code": 0,
  "message": "success",
  "data": {
    "priceInfo": {
      "skuId": 100188556171,
      "jdPrice": 13.52,
      "kaPrice": 11.42,
      "productPrice": { "jdPrice": 13.52, "marketPrice": 23.65, "kaPrice": 11.42 }
    },
    "shop_infos": {
      "shopId": 1000450829,
      "shopName": "固万基(GUWANJI)京东自营旗舰店",
      "venderId": 1000450829,
      "url": "https://shop.m.jd.com/shop/home?shopld=1000450829"
    },
    "itemOnly": {
      "skuId": "100188556171",
      "brandName": "固万基(GUWANJI)",
      "newColorSize": [
        { "skuId": "100188556181", "color": "螺丝套装B款18种[1盒]" },
        { "skuId": "100188556171", "color": "台式电脑螺丝套装15种[1盒]" }
      ]
    },
    "itemInfo": {
      "product": {
        "skuId": "100188556171",
        "skuName": "固万基(GUWANJI)螺丝组合套装 主机电脑固态硬盘电子数码小螺丝钉 台式电脑螺丝套装15种[1盒]",
        "brandName": "固万基(GUWANJI)",
        "model": "螺丝组合套装",
        "color": "台式电脑螺丝套装15种[1盒]",
        "category": "14065,14130,14132",
        "shopId": "1000450829"
      }
    },
    "products_introduction": [
      { "groupName": "主体参数", "atts": [ { "attName": "类型", "vals": ["螺丝套装"] }, { "attName": "规格", "vals": ["15种"] } ] }
    ],
    "img_list": ["http://img13.360buyimg.com/n12/jfs/t1/310140/....jpg"],
    "description": "<style>...商品详情 HTML..."
  },
  "requestId": "4be0a7d2c9f13e85",
  "charge": "0.35",
  "balance": "9.25"
}

主要字段说明

字段说明
priceInfo.jdPrice京东价(准确售价,数字,单位元),比价请用这个字段
priceInfo.kaPrice到手价/会员价等优惠价(如有)
priceInfo.productPrice.marketPrice市场价/划线价
shop_infos.shopName / shopId / venderId店铺名称 / 店铺 ID / 商家 ID
itemOnly.brandName品牌
itemOnly.newColorSize[]同款的其他规格(每项含 skuId 和规格名),可用这些 skuId 再次查询详情
itemInfo.product.skuName完整商品标题
itemInfo.product.model型号
itemInfo.product.color / size当前所选规格
itemInfo.product.category一/二/三级类目 ID
products_introduction[]规格参数(分组,每组 atts 含参数名与参数值)
img_list[]商品图片
description商品详情介绍(HTML)
商品编号不存在、已下架或格式不对时,返回失败(不扣费)。

查询余额

查询当前 API Key 的剩余余额,免费。

GEThttps://api.askhong.com/v1/account/balance免费
curl 'https://api.askhong.com/v1/account/balance' -H 'X-API-Key: YOUR_API_KEY'

{ "code": 0, "message": "success", "data": { "name": "你的账户名", "balance": "9.25" }, "requestId": "..." }

如有问题,请联系管理员并提供请求返回的 requestId。