二手车车辆详情查询 API(usedcar.detail)

输入 usedcar.list 返回的车辆 dataId,即可一次拿全该车辆的 完整详情:车型(品牌 / 车系 / 年款配置)、地区、车况(里程 / 售价 / 首付 / 过户次数 / 上牌时间 / 年审与交强险到期)、配置(发动机 / 变速箱 / 燃料 / 驱动 / 级别 / 进气形式)、 图片(封面图 + 全部图 + 外观 / 内饰 / 细节分类图集)与车辆档案。 接口编码 usedcar.detail,仅需请求头 X-API-Key。

0.2000 元/次 GET JSON / UTF-8 免签名 0.2 元/次 查不到不收费

当前收费方式:PER_CALL(按次计费,0.2000 元/次)(后台「接口管理」可随时调整)

最后更新: · 接口版本 v1

接口概述

一句话说明

usedcar.detail 是「给一辆车取全部展示数据」的接口: 先用 usedcar.list 拿到车辆的 dataId,再调本接口, 一次返回车型、车况、配置、图片集与车辆档案,够直接渲染一个车源详情页—— 不必再为图片、首付、过户次数分别拼接口。

接口规格
请求地址https://api.xujian.tech/openapi/usedcar/detail
请求方式 GET(dataId 放 Query String;也可用别名 infoid)
鉴权方式请求头 X-API-Key
接口编码usedcar.detail
收费类型PER_CALL(按次计费,0.2000 元/次)
计费特殊规则 查得计费:dataId 缺失、上游不可用、未查询到该车辆详情时, 返回失败且不扣费
响应格式JSON,Content-Type: application/json;charset=UTF-8
是否需要授权 否(无需授权,API Key 有效且余额充足即可调用)
典型用途车源详情页一次渲染、车源同步入库、图片转存、车况筛选与行情统计

快速开始

cURL
# 用 usedcar.list 返回的车辆 dataId 拉取该车辆完整详情(含图片集)
curl -s -G "https://api.xujian.tech/openapi/usedcar/detail" \
  --data-urlencode "dataId=60323428" \
  -H "X-API-Key: 你的APIKey"

dataId 从哪里来

dataId 是 usedcar.list 车源列表每条车源都带的车辆数据 ID,必填;也可用别名 infoid 传入。 若传的不是列表返回的 dataId,或该车没有可查询的详情,接口会返回失败且不计费。

请求参数

请求头(Header)
参数名类型必填说明
X-API-KeyString是开发者 API Key
业务参数(Query String)
参数名类型必填默认值示例说明
dataIdString是—60323428 车辆数据 ID,取 usedcar.list 返回的 dataId; 缺失或查不到该车辆详情时返回失败且不计费
infoidString否—60323428 dataId 的历史别名,口径完全一致;仅当 dataId 为空时生效

响应参数

车型与地区

字段类型示例说明
dataIdString60323428本次查询使用的车辆数据 ID(原样回显)
infoidLong60323428上游车辆信息 ID,通常与 dataId 一致
carnameString大众迈腾 2021款 330TSI DSG 豪华型车型名称(含品牌、年款、配置版本)
brandnameString大众品牌名称
seriesnameString大众迈腾车系名称
specnameString2021款 330TSI DSG 豪华型年款 + 配置版本名称
cidLong500100城市 ID
cnameString重庆城市名称
pidLong500000省份 ID
countynameString(空)区县名称;多数车源为空字符串

车况与手续

字段类型示例说明
mileageBigDecimal3.20表显里程,单位:万公里
priceBigDecimal12.80车辆售价,单位:万元
downpaymentBigDecimal3.80首付价格,单位:万元;isloan = 0 时可能为 0 或缺失
isloanInteger1是否支持贷款:1 支持 0 不支持
transfercountInteger0过户次数
firstregshortdateString2021-06-01首次上牌时间(完整日期)
firstregdateString2021-06首次上牌时间(年月)
firstregyearString2021年首次上牌年份
firstregstrString4年车龄描述
environmentalString国VI环保标准
examineString2027-6年审到期时间(年月)
insuranceString2026-6交强险到期时间(年月)
colornameString黑色车身颜色
carusenameString家用车辆用途

配置参数

字段类型示例说明
engineString2.0T发动机描述
gearboxString自动变速箱描述
fuelnameString汽油燃料类型(混动车型可能含「+48V轻混系统」等后缀)
drivingmodeString前置前驱驱动方式
levelnameString中型车车辆级别
flowmodeString涡轮增压进气形式
marketrelativeString低于市场价3.50%与市场价对比描述;上游未给出时为空

车商、描述与图片

字段类型说明
dealeridLong经销商 ID,可配合 usedcar.sellerinfo 查询车商主体信息
remarkString车辆描述(车商自行发布,长度不固定,可能含门店信息与服务承诺)
videourlString视频地址;无视频时为空字符串
imageurlString封面图地址,可直接用于 <img src>
piclistArray<String>全部车辆图片地址列表
catepiclistArray<Object> 分类图集:title(外观 / 内饰 / 细节 等)+ list(该分组图片地址); 分组标题与数量随车源变化,请按实际返回动态渲染

车辆档案与公共字段

字段类型说明
archivelistArray<Object> 车辆档案:name + value 键值对,常见为上牌时间 / 表显里程 / 过户次数 / 所在地区
archivebottomlistexp1Array<Object> 档案补充项:同为 name + value,常见为驱动方式 / 变速箱 / 综合油耗 / 发动机
apiCodeString接口编码 usedcar.detail
apiNameString接口名称
chargeTypeString计费类型
balanceBigDecimal 调用完成后(已扣费)的账户余额(元)
costMsLong本次调用耗时(毫秒)

口径与边界提示

① 金额统一单位:mileage 万公里、price 与 downpayment 万元, 均为可直接 parse 的数值,与 usedcar.list 口径一致;
② 上游的部分平台内部字段(如 fromtype / linktype / particularactivityurl) 不返回,调用方不要依赖;
③ 图片地址为上游图床直链,长期展示建议转存到自己的对象存储;
④ remark 由车商自行发布,展示前请做富文本净化与长度截断。

响应示例

成功(code = 0)

JSON
{
  "code": 0,
  "msg": "success",
  "data": {
    "dataId": "60323428",
    "infoid": 60323428,
    "carname": "大众迈腾 2021款 330TSI DSG 豪华型",
    "brandname": "大众",
    "seriesname": "大众迈腾",
    "specname": "2021款 330TSI DSG 豪华型",
    "cid": 500100,
    "cname": "重庆",
    "pid": 500000,
    "countyname": "",
    "engine": "2.0T",
    "gearbox": "自动",
    "mileage": 3.20,
    "price": 12.80,
    "downpayment": 3.80,
    "isloan": 1,
    "transfercount": 0,
    "firstregshortdate": "2021-06-01",
    "firstregdate": "2021-06",
    "firstregyear": "2021年",
    "firstregstr": "4年",
    "environmental": "国VI",
    "examine": "2027-6",
    "insurance": "2026-6",
    "colorname": "黑色",
    "carusename": "家用",
    "fuelname": "汽油",
    "drivingmode": "前置前驱",
    "levelname": "中型车",
    "flowmode": "涡轮增压",
    "marketrelative": "低于市场价3.50%",
    "dealerid": 142990,
    "remark": "【示例车商】车辆描述由车商自行发布,可能包含服务承诺、金融方案与门店信息等内容,长度不固定。",
    "videourl": "",
    "imageurl": "https://example.com/car/magotan-cover.jpg.webp",
    "piclist": [
      "https://example.com/car/magotan-1.jpg.webp",
      "https://example.com/car/magotan-2.jpg.webp",
      "https://example.com/car/magotan-3.jpg.webp"
    ],
    "catepiclist": [
      {
        "title": "外观",
        "list": [
          "https://example.com/car/magotan-1.jpg.webp",
          "https://example.com/car/magotan-2.jpg.webp"
        ]
      },
      {
        "title": "内饰",
        "list": [
          "https://example.com/car/magotan-3.jpg.webp"
        ]
      }
    ],
    "archivelist": [
      {"name": "上牌时间", "value": "2021-06"},
      {"name": "表显里程", "value": "3.20万公里"},
      {"name": "过户次数", "value": "0次"},
      {"name": "所在地区", "value": "重庆"}
    ],
    "archivebottomlistexp1": [
      {"name": "驱动方式", "value": "前置前驱"},
      {"name": "变速箱", "value": "7挡双离合"},
      {"name": "综合油耗", "value": "6.6L"},
      {"name": "发动机", "value": "2.0T"}
    ],
    "apiCode": "usedcar.detail",
    "apiName": "二手车车辆详情查询",
    "chargeType": "PER_CALL",
    "balance": 99.8000,
    "costMs": 520
  }
}

失败(缺少 dataId)—— 不收费

JSON
{
  "code": 500,
  "msg": "dataId 不能为空(取 usedcar.list 返回的车辆 dataId)",
  "data": null
}

失败(查不到车辆详情)—— 不收费

JSON
{
  "code": 500,
  "msg": "未查询到该车辆的详情信息,请核对 dataId 后重试;本次调用不计费",
  "data": null
}

错误码与常见失败原因

codemsg(示例)处理建议
0success调用成功
500缺少请求头 X-API-Key补充 X-API-Key
500API Key 无效 / API Key 已停用检查 Key 或重新启用
500客户不存在或已停用联系平台(可联系微信xujian_cq)
500接口不存在或已停用确认 usedcar.detail 当前是否维护中
500 余额不足,请先充值。可联系微信xujian_cq 充值后重试,余额不足不扣费
500二手车服务未启用 / 二手车服务未配置(上游凭证缺失)平台侧配置问题,联系平台处理;不计费
500 dataId 不能为空(取 usedcar.list 返回的车辆 dataId) 补齐 dataId;不计费
500未查询到该车辆的详情信息,请核对 dataId 后重试;本次调用不计费确认 dataId 来自 usedcar.list;不计费
500数据服务暂时不可用(请求上游超时或网络异常),本次调用不计费稍后重试;不计费

多语言代码示例

Java(Hutool)

Java
String body = HttpRequest.get("https://api.xujian.tech/openapi/usedcar/detail")
        .form("dataId", "60323428")
        .header("X-API-Key", apiKey)
        .timeout(15000)
        .execute()
        .body();

JSONObject json = JSONUtil.parseObj(body);
if (json.getInt("code") != 0) {
    System.out.println("查询失败(不收费):" + json.getStr("msg"));
    return;
}
JSONObject data = json.getJSONObject("data");
System.out.println("车型:" + data.getStr("carname"));
System.out.println("里程:" + data.getBigDecimal("mileage") + " 万公里");
System.out.println("售价:" + data.getBigDecimal("price") + " 万元");
System.out.println("首付:" + data.getBigDecimal("downpayment") + " 万元");
System.out.println("图片数:" + data.getJSONArray("piclist").size());
// 分类图集:按实际返回的 title 动态渲染(外观 / 内饰 / 细节)
data.getJSONArray("catepiclist").forEach(g -> {
    JSONObject group = (JSONObject) g;
    System.out.println(group.getStr("title") + ":" + group.getJSONArray("list").size() + " 张");
});

Python

Python
import requests


def get_car_detail(api_key: str, data_id: str) -> dict | None:
    """按车辆 dataId 拉取车辆完整详情;查不到返回 None 且不扣费"""
    resp = requests.get(
        "https://api.xujian.tech/openapi/usedcar/detail",
        params={"dataId": data_id},
        headers={"X-API-Key": api_key},
        timeout=20,
    )
    result = resp.json()
    if result.get("code") != 0:
        print("查询失败(不收费):", result.get("msg"))
        return None
    return result["data"]


if __name__ == "__main__":
    car = get_car_detail("你的APIKey", "60323428")
    if car:
        print(car["carname"], f'{car["mileage"]}万公里', f'{car["price"]}万元')
        for group in car.get("catepiclist", []):
            print(group["title"], len(group["list"]))

JavaScript(浏览器 / Node 18+)

JavaScript
const params = new URLSearchParams({ dataId: "60323428" });

const resp = await fetch(`https://api.xujian.tech/openapi/usedcar/detail?${params}`, {
  headers: { "X-API-Key": API_KEY },
});

const { code, msg, data } = await resp.json();
if (code === 0) {
  console.log(data.carname, `${data.mileage}万公里`, `${data.price}万元`);
  // 分类图集按 title 动态渲染,不要写死「外观 / 内饰 / 细节」
  data.catepiclist.forEach((g) => console.log(g.title, g.list.length));
} else {
  console.warn("查询失败(不收费):", msg);
}

常见问题(FAQ)

usedcar.detail 接口怎么收费?

usedcar.detail 的收费类型为 PER_CALL(按次计费),当前单价 0.2000 元/次,调用前校验余额,余额不足返回「余额不足,请先充值。可联系微信xujian_cq」且不扣费;充值可可联系微信xujian_cq。扣费金额、交易前后余额均记录于交易流水中。

dataId 必填吗?从哪里来?

必填。dataId 来自 usedcar.list 返回的车辆数据 ID;不传或传错(不是列表返回的 dataId)会直接返回失败且不计费。 也可以用别名 infoid 传入,两者等价。

里程、售价、首付的单位是什么?

mileage 单位是万公里,price 与 downpayment 单位是万元,都是可直接解析的数值,与 usedcar.list 口径一致。 不支持贷款的车源(isloan = 0)首付可能为 0 或缺失,展示前先判空。

图片链接能直接长期外链吗?

可以直连渲染,但 imageurl / piclist / catepiclist 返回的是上游图床直链,存在防盗链与过期风险;长期展示的业务建议在同步时把图片转存到自己的对象存储。 平台不保证第三方图床的长期可用性。

没有查到车辆详情会扣费吗?

不会。接口采用「先预鉴权、查到车辆详情后再扣费」的两段式流程, dataId 缺失、上游不可用、未查询到该车辆详情时,返回失败且不扣费、不写扣费流水。

调用需要签名或加密吗?

不需要。XAPI 的接口仅校验请求头 X-API-Key,不做签名、时间戳或加密。

扫码添加微信
联系作者 · 微信二维码

微信号:xujian_cq

接口对接、充值 / 授权、定制需求都可以直接聊