企业失信被执行人查询 API:案号、执行法院、执行标的与履行情况一次拿到
失信被执行人,指的是有履行能力而拒不履行生效法律文书确定义务、被人民法院纳入名单并公示的被执行人,俗称「老赖名单」。它是风控、招投标资格审查、供应商准入里绕不开的一道关卡:命中即需人工介入,没命中则可继续推进。
本文介绍的enterprise.dishonesty接口:一个关键词进去,返回该企业全部失信记录的案号、执行法院、执行标的、立案与发布日期、履行情况、失信情形;该企业没有失信记录时不收费。
api.xujian.techxujian_cq
接口速览
| 关键事实 | 说明 |
|---|---|
| 接口地址 | https://api.xujian.tech/openapi/enterprise/dishonesty |
| 接口编码 | enterprise.dishonesty |
| 请求方式 | GET(keyword放 Query String) |
| 鉴权方式 | 请求头X-API-Key,不做签名、时间戳或加密 |
| 必填参数 | keyword,企业全称或统一社会信用代码,2 ~ 50 字符 |
| 返回核心字段 | caseNumber/court/amount/executionStatus/executionDesc/publishDate/disabled |
| 计费方式 | 按次计费,0.2 元/次,先预鉴权、查到结果后再扣费 |
| 不计费场景 | 关键词为空 / 超长、服务暂时不可用、该企业没有失信被执行人记录 |
| 当前 / 历史区分 | disabled == "0"为当前有效信息,"1"为历史信息 |
一、哪些业务需要这一步
| 场景 | 具体用法 |
|---|---|
| 招投标资格审查 | 开标前批量筛查投标企业,命中在案失信即否决 |
| 供应商准入 | 新供应商入库前做一次失信核查 |
| 授信与风控审批 | 作为一票否决型信号进入规则引擎 |
| 贷后与存续客户监测 | 定时比对,出现新案号即告警 |
| 合作方背景调查 | 签署大额合同前的人工尽调前置 |
| 应收账款风险预警 | 客户出现失信记录时收紧账期 |
| 加盟商与经销商筛选 | 渠道准入环节的合规检查 |
| 司法尽调辅助 | 并购、投资前快速摸底目标公司涉执情况 |
| 风险分层规则 | 结合执行标的金额与履行情况划分高中低风险 |
| 存量名单批量清洗 | 上千家名单批量跑,只有命中记录才产生费用 |
二、请求参数
请求头:
| 参数名 | 必填 | 说明 |
|---|---|---|
X-API-Key | 是 | 开发者 API Key,缺失或无效直接返回失败 |
业务参数:
| 参数名 | 必填 | 类型 | 示例 | 说明 |
|---|---|---|---|---|
keyword | 是 | String | 重庆某某建设集团有限公司 | 企业全称或统一社会信用代码,长度 2 ~ 50 字符 |
建议用企业全称或统一社会信用代码查询。只给简称(例如「某某建设」)时,跨省同名主体容易出现不确定归属,接口按关键词精确匹配,可能查不到。
三、返回字段
3.1 顶层字段
| 字段 | 类型 | 说明 |
|---|---|---|
code | int | 0成功,非 0 失败(统一为500) |
msg | String | 成功为success,失败为具体原因 |
data | Object | 业务数据,失败时为null |
3.2 data 字段
| 字段 | 类型 | 示例 | 说明 |
|---|---|---|---|
keyword | String | 重庆某某建设集团有限公司 | 本次实际使用的查询关键词 |
total | int | 2 | 本次返回的失信记录条数 |
list | Array | […] | 失信被执行人记录列表 |
apiCode | String | enterprise.dishonesty | 接口编码 |
apiName | String | 企业失信被执行人查询 | 接口名称 |
chargeType | String | PER_CALL | 计费类型 |
balance | BigDecimal | 99.9700 | 调用完成后(已扣费)的账户余额(元) |
costMs | Long | 890 | 本次调用耗时(毫秒) |
3.3 list[] 失信记录字段
| 字段 | 示例 | 说明 |
|---|---|---|
province | 重庆 | 案件管辖地域(省份) |
date | 2023-05-18 | 立案时间(YYYY-MM-DD) |
caseNumber | (2023)渝0113执1234号 | 案号 |
docNumber | (2022)渝仲字第 88 号 | 执行依据文号 |
exDepartment | 重庆仲裁委员会 | 作出执行依据的单位 |
finalDuty | 支付申请人货款人民币 1,200,000 元 | 生效法律文书确定的义务 |
executionStatus | 全部未履行 | 履行情况:全部未履行 / 部分未履行 / 已履行完毕 等 |
executionDesc | 有履行能力而拒不履行生效法律文书确定义务 | 失信被执行人行为具体情形 |
amount | 1200000 | 执行标的金额 |
court | 重庆市巴南区人民法院 | 执行法院全称 |
publishDate | 2023-11-02 | 发布日期(YYYY-MM-DD) |
operName | 李某某 | 法定代表人姓名 |
number | 91500113MAABRA7D0H | 组织机构号 / 企业标识号 |
disabled | 0 | 记录状态:0当前有效信息,1历史信息 |
两个字段设计细节:一是disabled是关键字段,做「当前是否失信」判断时必须用它过滤(disabled == "0"),直接取整个列表会把已消除的历史案件也算进去;二是number可用于跨记录归并同一主体,当关键词命中的是同名不同主体时,用number或operName辅助确认。
四、调用示例
4.1 curl
curl-s-G"https://api.xujian.tech/openapi/enterprise/dishonesty"\--data-urlencode"keyword=重庆某某建设集团有限公司"\-H"X-API-Key: 你的APIKey"4.2 Java(Hutool)
importcn.hutool.http.HttpRequest;importcn.hutool.json.JSONArray;importcn.hutool.json.JSONObject;importcn.hutool.json.JSONUtil;publicclassEnterpriseDishonestyClient{privatestaticfinalStringAPI_URL="https://api.xujian.tech/openapi/enterprise/dishonesty";/** * 查询企业失信被执行人记录 * * @param apiKey 开发者 API Key * @param keyword 企业全称或统一社会信用代码 * @return 失信记录列表;无记录或查询失败返回 null,且不扣费 */publicstaticJSONArraydishonesty(StringapiKey,Stringkeyword){Stringbody=HttpRequest.get(API_URL).form("keyword",keyword).header("X-API-Key",apiKey).timeout(20000).execute().body();JSONObjectjson=JSONUtil.parseObj(body);Integercode=json.getInt("code");if(code==null||code!=0){System.out.println("查询失败(不收费):"+json.getStr("msg"));returnnull;}returnjson.getJSONObject("data").getJSONArray("list");}publicstaticvoidmain(String[]args){JSONArraylist=dishonesty("你的APIKey","重庆某某建设集团有限公司");if(list==null){return;// 无失信记录,同样不收费}for(inti=0;i<list.size();i++){JSONObjectr=list.getJSONObject(i);// 只处理当前有效的失信信息if("0".equals(r.getStr("disabled"))){System.out.printf("%s | %s | %s | %s%n",r.getStr("caseNumber"),r.getStr("court"),r.getStr("amount"),r.getStr("executionStatus"));}}}}4.3 Python
importrequestsdefenterprise_dishonesty(api_key:str,keyword:str):""" 查询企业失信被执行人记录 Args: api_key: 开发者 API Key keyword: 企业全称或统一社会信用代码,2 ~ 50 字符 Returns: list: 成功返回失信记录列表;无记录或失败返回 None,且不扣费 """resp=requests.get("https://api.xujian.tech/openapi/enterprise/dishonesty",params={"keyword":keyword},headers={"X-API-Key":api_key},timeout=20,)result=resp.json()ifresult.get("code")!=0:print("查询失败(不收费):",result.get("msg"))returnNonereturnresult["data"]["list"]defhas_active_dishonesty(api_key:str,keyword:str)->bool:"""是否存在当前有效的失信记录(自动过滤历史信息)"""records=enterprise_dishonesty(api_key,keyword)or[]returnany(r.get("disabled")=="0"forrinrecords)if__name__=="__main__":print(has_active_dishonesty("你的APIKey","重庆某某建设集团有限公司"))4.4 JavaScript(Node 18+)
constresp=awaitfetch("https://api.xujian.tech/openapi/enterprise/dishonesty?keyword="+encodeURIComponent("重庆某某建设集团有限公司"),{headers:{"X-API-Key":API_KEY}});const{code,msg,data}=awaitresp.json();if(code===0){constactive=data.list.filter((r)=>r.disabled==="0");// 当前有效console.log("在案失信记录数:",active.length);}else{console.warn("查询失败(不收费):",msg);}五、返回示例
5.1 存在有效失信记录
{"code":0,"msg":"success","data":{"keyword":"重庆某某建设集团有限公司","total":2,"list":[{"province":"重庆","date":"2023-05-18","docNumber":"(2022)渝仲字第88号","finalDuty":"支付申请人货款人民币1200000元及利息","executionStatus":"全部未履行","caseNumber":"(2023)渝0113执1234号","amount":"1200000","publishDate":"2023-11-02","court":"重庆市巴南区人民法院","executionDesc":"有履行能力而拒不履行生效法律文书确定义务","disabled":"0","operName":"李某某","number":"91500113MAABRA7D0H","exDepartment":"重庆仲裁委员会"},{"province":"四川","date":"2021-03-09","docNumber":"(2020)川01民终5521号","finalDuty":"支付工程款人民币360000元","executionStatus":"全部未履行","caseNumber":"(2021)川0107执778号","amount":"360000","publishDate":"2021-06-15","court":"成都市武侯区人民法院","executionDesc":"被执行人无正当理由拒不履行执行和解协议","disabled":"1","operName":"李某某","number":"91500113MAABRA7D0H","exDepartment":"成都市中级人民法院"}],"apiCode":"enterprise.dishonesty","apiName":"企业失信被执行人查询","chargeType":"PER_CALL","balance":99.9700,"costMs":890}}第一条disabled = 0,是当前在案的失信信息;第二条disabled = 1,属于历史信息——已经退出名单的记录仍然返回,是因为它对「该企业历史上被强制执行过」这个判断有价值,但不应计入当前风险。
5.2 无失信记录(不收费)
{"code":500,"msg":"未查询到该企业的失信被执行人记录(无记录也是一种结论),本次调用不计费","data":null}六、落地实践
6.1 批量名单筛查(招标 / 投标资格审查)
一次上千家的企业名单里混杂着拼写错误、已更名、已注销的主体,正好适用「查不到不收费」:
fromconcurrent.futuresimportThreadPoolExecutor,as_completeddefbatch_screen(api_key:str,companies:list[str],workers:int=4)->dict:"""批量筛查失信名单;只有命中记录的企业才产生费用"""result={}withThreadPoolExecutor(max_workers=workers)aspool:futures={pool.submit(enterprise_dishonesty,api_key,c):cforcincompanies}forfuinas_completed(futures):company=futures[fu]records=fu.result()or[]active=[rforrinrecordsifr.get("disabled")=="0"]result[company]={"active":bool(active),"count":len(active),"cases":[r["caseNumber"]forrinactive],}returnresult并发建议控制在 4 ~ 8,避免把自己打成一个高 QPS 的爬虫;同一批次里重复关键词先去重,缓存一下更省。
6.2 新增失信监测(定时巡检)
把「上次筛查结果」和「本次结果」做差集,出现新案号即告警:
publicList<String>newCases(JSONArraycurrent,Set<String>known){List<String>cases=newArrayList<>();for(inti=0;i<current.size();i++){JSONObjectr=current.getJSONObject(i);if("0".equals(r.getStr("disabled"))&&!known.contains(r.getStr("caseNumber"))){cases.add(r.getStr("caseNumber"));}}returncases;}6.3 风险控制规则:金额 + 履行情况
按「执行标的金额」和「履行情况」做分层:
functionriskLevel(records){constactive=records.filter((r)=>r.disabled==="0");if(!active.length)return"NONE";constamount=active.reduce((s,r)=>s+Number(r.amount||0),0);constunfulfilled=active.filter((r)=>r.executionStatus.includes("未履行"));if(unfulfilled.length&&amount>=1_000_000)return"HIGH";if(unfulfilled.length)return"MEDIUM";return"LOW";}6.4 与经营异常、年报数据交叉验证
失信往往不是孤立信号,配合其他两个接口看更能说明问题:
defrisk_profile(api_key:str,company:str)->dict:"""失信 + 经营异常 + 年报,三个维度交叉"""return{"dishonesty":bool(active_dishonesty(api_key,company)),"abnormal":bool(enterprise_abnormal(api_key,company)),"reports":len(enterprise_report(api_key,company)or[]),}三个都为空时可以放心推进;失信非空则建议直接走人工复核。
七、实践建议
- 先过滤
disabled。判断「当前是否失信」一定带上disabled == "0",历史信息只做背景参考。 - 用企业全称或信用代码。跨省同名主体客观存在,简称查询容易漏;有 18 位信用代码时优先用它。
- 「查无记录」不要当成异常。接口在查不到时返回
code=500且明确说明「本次调用不计费」,业务侧应把它翻译成正常结论(无失信),而不是报错日志。 - 金额字段是文本。
amount是字符串,计算合计前先转数字并容错空值。 - 本地缓存 7 ~ 30 天。失信名单更新有延迟,太频繁轮询意义不大,既增加成本也容易触发限流。
- 结论入库要带上查询时间。司法数据随时可能变更,只存「有 / 无」不够,回溯时说不清是哪个时间点的结论。
八、错误码与排查
| code | msg(示例) | 处理建议 |
|---|---|---|
| 0 | success | 调用成功 |
| 500 | 缺少请求头 X-API-Key | 在请求头补充X-API-Key |
| 500 | API Key 无效 / API Key 已停用 | 检查 Key 是否正确,或在控制台重新启用 |
| 500 | 客户不存在或已停用 | 联系平台确认账号状态 |
| 500 | 接口不存在或已停用 | 确认enterprise.dishonesty当前是否维护中 |
| 500 | 余额不足,请先充值 | 调用前校验余额,余额不足不扣费,充值后重试 |
| 500 | keyword 不能为空 | 补充keyword参数,不计费 |
| 500 | keyword 至少需要 2 个字符(建议使用企业全称或统一社会信用代码) | 使用更完整的企业名称,不计费 |
| 500 | keyword 长度不能超过 50 个字符 | 缩短关键词,不计费 |
| 500 | 未查询到该企业的失信被执行人记录(无记录也是一种结论) | 该企业当前无失信记录,不计费 |
| 500 | 数据服务暂时不可用(请求上游超时或网络异常) | 稍后重试,不计费 |
九、计费与接入
| 项目 | 说明 |
|---|---|
| 单次费用 | 0.2 元/次 |
| 计费方式 | 按次计费,调用前校验余额,查询到失信记录后才扣费 |
| 不计费场景 | 关键词为空 / 超长、服务暂时不可用、无失信记录 |
| 配合建议 | 批量筛查场景下,绝大多数企业名称是「无记录」的不计费结果 |
接入流程:注册开发者账号 → 控制台创建 API Key → 请求头带上X-API-Key即可调用,无需签名或加密。控制台可查看调用量、扣费流水与余额。
服务站点:
api.xujian.tech(纯文本域名,不做跳转)。接口试用、数据与充值咨询可在控制台提交工单,或联系 Vxujian_cq。
十、小结
失信被执行人查询的价值在于它是个「一票否决」型信号:命中即需要人工介入,没命中则可继续推进。这个接口把网页上的公示文本拆成了结构化的案号、法院、金额、履行状态,并保留disabled用于区分当前 / 历史,配合「查无记录不收费」的计费方式,非常适合做成批量名单的常规筛查步骤。
四个关键取舍:
- 无记录不收费,把它做成常规筛查项时,绝大多数调用不产生费用,成本可控;
- 历史记录不丢弃,
disabled=1的历史案件仍然返回,对「曾经被强制执行过」的判断有用; - 关键字段结构化,
caseNumber/court/amount/executionStatus各自独立,规则引擎可直接引用; - 绝不臆造,查询不到时明确返回失败并声明不计费,不返回「看起来像有数据」的空壳。