☰
企业失信被执行人查询 API:案号、执行法院、执行标的与履行情况一次拿到
2026/9/28 21:01:51 网站建设 项目流程

企业失信被执行人查询 API:案号、执行法院、执行标的与履行情况一次拿到

失信被执行人,指的是有履行能力而拒不履行生效法律文书确定义务、被人民法院纳入名单并公示的被执行人,俗称「老赖名单」。它是风控、招投标资格审查、供应商准入里绕不开的一道关卡:命中即需人工介入,没命中则可继续推进。

本文介绍的enterprise.dishonesty接口:一个关键词进去,返回该企业全部失信记录的案号、执行法院、执行标的、立案与发布日期、履行情况、失信情形;该企业没有失信记录时不收费。

  • api.xujian.tech
  • xujian_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 顶层字段

字段类型说明
codeint0成功,非 0 失败(统一为500)
msgString成功为success,失败为具体原因
dataObject业务数据,失败时为null

3.2 data 字段

字段类型示例说明
keywordString重庆某某建设集团有限公司本次实际使用的查询关键词
totalint2本次返回的失信记录条数
listArray[…]失信被执行人记录列表
apiCodeStringenterprise.dishonesty接口编码
apiNameString企业失信被执行人查询接口名称
chargeTypeStringPER_CALL计费类型
balanceBigDecimal99.9700调用完成后(已扣费)的账户余额(元)
costMsLong890本次调用耗时(毫秒)

3.3 list[] 失信记录字段

字段示例说明
province重庆案件管辖地域(省份)
date2023-05-18立案时间(YYYY-MM-DD)
caseNumber(2023)渝0113执1234号案号
docNumber(2022)渝仲字第 88 号执行依据文号
exDepartment重庆仲裁委员会作出执行依据的单位
finalDuty支付申请人货款人民币 1,200,000 元生效法律文书确定的义务
executionStatus全部未履行履行情况:全部未履行 / 部分未履行 / 已履行完毕 等
executionDesc有履行能力而拒不履行生效法律文书确定义务失信被执行人行为具体情形
amount1200000执行标的金额
court重庆市巴南区人民法院执行法院全称
publishDate2023-11-02发布日期(YYYY-MM-DD)
operName李某某法定代表人姓名
number91500113MAABRA7D0H组织机构号 / 企业标识号
disabled0记录状态: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[]),}

三个都为空时可以放心推进;失信非空则建议直接走人工复核。

七、实践建议

  1. 先过滤disabled。判断「当前是否失信」一定带上disabled == "0",历史信息只做背景参考。
  2. 用企业全称或信用代码。跨省同名主体客观存在,简称查询容易漏;有 18 位信用代码时优先用它。
  3. 「查无记录」不要当成异常。接口在查不到时返回code=500且明确说明「本次调用不计费」,业务侧应把它翻译成正常结论(无失信),而不是报错日志。
  4. 金额字段是文本。amount是字符串,计算合计前先转数字并容错空值。
  5. 本地缓存 7 ~ 30 天。失信名单更新有延迟,太频繁轮询意义不大,既增加成本也容易触发限流。
  6. 结论入库要带上查询时间。司法数据随时可能变更,只存「有 / 无」不够,回溯时说不清是哪个时间点的结论。

八、错误码与排查

codemsg(示例)处理建议
0success调用成功
500缺少请求头 X-API-Key在请求头补充X-API-Key
500API Key 无效 / API Key 已停用检查 Key 是否正确,或在控制台重新启用
500客户不存在或已停用联系平台确认账号状态
500接口不存在或已停用确认enterprise.dishonesty当前是否维护中
500余额不足,请先充值调用前校验余额,余额不足不扣费,充值后重试
500keyword 不能为空补充keyword参数,不计费
500keyword 至少需要 2 个字符(建议使用企业全称或统一社会信用代码)使用更完整的企业名称,不计费
500keyword 长度不能超过 50 个字符缩短关键词,不计费
500未查询到该企业的失信被执行人记录(无记录也是一种结论)该企业当前无失信记录,不计费
500数据服务暂时不可用(请求上游超时或网络异常)稍后重试,不计费

九、计费与接入

项目说明
单次费用0.2 元/次
计费方式按次计费,调用前校验余额,查询到失信记录后才扣费
不计费场景关键词为空 / 超长、服务暂时不可用、无失信记录
配合建议批量筛查场景下,绝大多数企业名称是「无记录」的不计费结果

接入流程:注册开发者账号 → 控制台创建 API Key → 请求头带上X-API-Key即可调用,无需签名或加密。控制台可查看调用量、扣费流水与余额。

服务站点:api.xujian.tech(纯文本域名,不做跳转)。接口试用、数据与充值咨询可在控制台提交工单,或联系 Vxujian_cq。

十、小结

失信被执行人查询的价值在于它是个「一票否决」型信号:命中即需要人工介入,没命中则可继续推进。这个接口把网页上的公示文本拆成了结构化的案号、法院、金额、履行状态,并保留disabled用于区分当前 / 历史,配合「查无记录不收费」的计费方式,非常适合做成批量名单的常规筛查步骤。

四个关键取舍:

  • 无记录不收费,把它做成常规筛查项时,绝大多数调用不产生费用,成本可控;
  • 历史记录不丢弃,disabled=1的历史案件仍然返回,对「曾经被强制执行过」的判断有用;
  • 关键字段结构化,caseNumber/court/amount/executionStatus各自独立,规则引擎可直接引用;
  • 绝不臆造,查询不到时明确返回失败并声明不计费,不返回「看起来像有数据」的空壳。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询