企业经营异常查询 API(enterprise.abnormal)

输入企业名称或统一社会信用代码,查询经营异常名录记录: 列入原因、列入日期、列入决定机关,以及移出原因、移出日期、移出决定机关与记录状态。 接口编码 enterprise.abnormal,仅需请求头 X-API-Key, 无需签名、时间戳或加密。

0.2000 元/次 GET JSON / UTF-8 免签名 工商异常 查不到不收费

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

最后更新: · 接口版本 v1

接口概述

一句话说明

enterprise.abnormal 用于判断企业是否还在经营异常名录里。 列入原因中最常见的是「未按时公示年度报告」, 这类企业往往连基本的信息披露义务都没履行,是准入环节非常实用的一道低成本过滤。 采用查得计费,无异常记录同样不收费。

接口规格
请求地址https://api.xujian.tech/openapi/enterprise/abnormal
请求方式GET(keyword 放 Query String)
鉴权方式请求头 X-API-Key
接口编码enterprise.abnormal
收费类型PER_CALL(按次计费,0.2000 元/次)
计费特殊规则 查得计费:关键词非法、上游不可用、无经营异常记录时返回失败且不扣费
响应格式JSON,Content-Type: application/json;charset=UTF-8
是否需要授权 否(无需授权,API Key 有效且余额充足即可调用)
关键词长度2 ~ 50 个字符
数据更新频率数据源最快当日更新、最晚七日内更新

快速开始

cURL
curl -s -G "https://api.xujian.tech/openapi/enterprise/abnormal" \
  --data-urlencode "keyword=重庆某某商贸有限公司" \
  -H "X-API-Key: 你的APIKey"

如何判断「当前仍在异常名录中」

同时满足两个条件才算仍在名录中:disabled = 0(当前有效) 且 outDate 为空(尚未移出)。 已移出的记录会保留下来作为历史,可通过 outReason / outDate 还原整改过程。

请求参数

请求头(Header)
参数名类型必填说明
X-API-KeyString是开发者 API Key
业务参数(Query String)
参数名类型必填示例说明
keywordString是重庆某某商贸有限公司 企业全称或统一社会信用代码,长度 2 ~ 50 个字符;为空或超长返回失败且不计费

响应参数

data 字段
字段类型说明
keywordString本次查询关键词
totalint经营异常记录条数
listArray记录数组;字段见下表
apiCodeString接口编码
apiNameString接口名称
chargeTypeString计费类型
balanceBigDecimal 调用完成后(已扣费)的账户余额(元)
costMsLong本次调用耗时(毫秒)

list[] 经营异常记录字段

字段类型示例说明
nameString重庆某某商贸有限公司企业完整名称
regNoString500113014353471企业注册号 / 统一社会信用代码
inReasonString未依照《企业信息公示暂行条例》第八条规定的期限公示年度报告 列入经营异常名录原因
inDateString2023-07-12列入日期
outReasonString列入经营异常名录3年内且依照《经营异常名录管理办法》规定被列入后已经履行公示义务的,可以申请移出 移出经营异常名录原因(未移出时为空)
outDateString2023-09-05移出日期(未移出时为空)
departmentString重庆市巴南区市场监督管理局作出列入决定的行政机关
outDepartmentString重庆市巴南区市场监督管理局作出移出决定的行政机关
provinceStringCQ省份代码,如 TJ 天津、HE 河北、CQ 重庆
disabledString10-当前有效信息,1-历史公示信息

响应示例

成功(命中共 1 条记录,code = 0)

JSON
{
  "code": 0,
  "msg": "success",
  "data": {
    "keyword": "重庆某某商贸有限公司",
    "total": 1,
    "list": [
      {
        "name": "重庆某某商贸有限公司",
        "regNo": "500113014353471",
        "inReason": "未依照《企业信息公示暂行条例》第八条规定的期限公示年度报告",
        "inDate": "2023-07-12",
        "outReason": "列入经营异常名录3年内且依照《经营异常名录管理办法》规定被列入后已经履行公示义务的,可以申请移出",
        "outDate": "2023-09-05",
        "department": "重庆市巴南区市场监督管理局",
        "outDepartment": "重庆市巴南区市场监督管理局",
        "province": "CQ",
        "disabled": "1"
      }
    ],
    "apiCode": "enterprise.abnormal",
    "apiName": "企业经营异常查询",
    "chargeType": "PER_CALL",
    "balance": 99.8000,
    "costMs": 520
  }
}

失败(无经营异常记录)—— 不收费

JSON
{
  "code": 500,
  "msg": "未查询到该企业的经营异常记录(无记录也是一种结论),本次调用不计费",
  "data": null
}

错误码与常见失败原因

codemsg(示例)处理建议
0success调用成功
500缺少请求头 X-API-Key补充 X-API-Key
500API Key 无效 / API Key 已停用检查 Key 或重新启用
500客户不存在或已停用联系平台(可联系微信xujian_cq)
500 余额不足,请先充值。可联系微信xujian_cq 充值后重试,余额不足不扣费
500keyword 不能为空补充 keyword;不计费
500keyword 至少需要 2 个字符(建议使用企业全称或统一社会信用代码)换更准确的关键词;不计费
500keyword 长度不能超过 50 个字符缩短关键词;不计费
500未查询到该企业的经营异常记录(无记录也是一种结论),本次调用不计费可作为「无经营异常」处理;不计费
500数据服务暂时不可用(请求上游超时或网络异常),本次调用不计费稍后重试;不计费

多语言代码示例

Java(Hutool)

Java
String body = HttpRequest.get("https://api.xujian.tech/openapi/enterprise/abnormal")
        .form("keyword", "重庆某某商贸有限公司")
        .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;
}
JSONArray list = json.getJSONObject("data").getJSONArray("list");
for (int i = 0; i < list.size(); i++) {
    JSONObject r = list.getJSONObject(i);
    boolean still = "0".equals(r.getStr("disabled")) && StrUtil.isBlank(r.getStr("outDate"));
    System.out.println(r.getStr("inReason") + ",当前是否仍在名录:" + still);
}

Python

Python
import requests


def query_abnormal(api_key: str, keyword: str):
    """查询经营异常名录;无记录返回空列表且不扣费"""
    resp = requests.get(
        "https://api.xujian.tech/openapi/enterprise/abnormal",
        params={"keyword": keyword},
        headers={"X-API-Key": api_key},
        timeout=20,
    )
    result = resp.json()
    if result.get("code") != 0:
        return []
    return result["data"]["list"]


def still_abnormal(api_key: str, keyword: str) -> bool:
    """当前是否仍在经营异常名录中"""
    return any(
        r.get("disabled") == "0" and not r.get("outDate")
        for r in query_abnormal(api_key, keyword)
    )


if __name__ == "__main__":
    print("当前仍在名录:", still_abnormal("你的APIKey", "重庆某某商贸有限公司"))

JavaScript(浏览器 / Node 18+)

JavaScript
const resp = await fetch(
  "https://api.xujian.tech/openapi/enterprise/abnormal?keyword=" + encodeURIComponent("重庆某某商贸有限公司"),
  { headers: { "X-API-Key": API_KEY } }
);

const { code, msg, data } = await resp.json();
if (code === 0) {
  const still = data.list.filter((r) => r.disabled === "0" && !r.outDate);
  console.log("当前仍在名录的条数:", still.length);
} else {
  console.info("无经营异常(不收费):", msg);
}

常见问题(FAQ)

enterprise.abnormal 接口怎么收费?

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

企业曾被列入但已移出,还算异常吗?

接口会把历史记录一并返回。判断规则:outDate 被填上 = 已移出; disabled = 0 = 当前有效,1 = 历史公示信息。 只有 disabled = 0 且 outDate 为空,才是「现在仍在名录中」。

常见的列入原因有哪些?

最常见的是「未依照《企业信息公示暂行条例》第八条规定的期限公示年度报告」, 其次是「通过登记的住所或者经营场所无法联系」与「公示企业信息隐瞒真实情况、弄虚作假」。

province 字段是什么格式?

两位字母的省份代码,如 TJ 天津、HE 河北、CQ 重庆, 便于做分区域统计;展示给用户时请自行映射成中文省份名。

查不到记录一定是清白企业吗?

通常可以这么解读,但请确认关键词是工商登记全称。 另外经营异常只反映工商侧状态,建议与 enterprise.dishonesty(失信被执行人)组合使用。

调用需要签名或加密吗?

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

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

微信号:xujian_cq

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