企业信息模糊查询 API:一个关键词带回信用代码、企业类型与法定代表人

简介: 企业信息模糊查询API(`enterprise.query`),支持通过简称、注册号等关键词快速匹配企业,返回名称、统一社会信用代码、企业类型、法定代表人等7项核心字段。查无结果不计费,0.01元/次,适配准入、开票、CRM治理等场景。

企业信息模糊查询 API:一个关键词带回信用代码、企业类型与法定代表人

供应商准入、客户建档、开票信息核对,第一道坎往往是「手里只有一个不完整的公司名」:「某某能源」「某某物流」这类简称,或者一张名单 Excel 里几百个名字需要补全统一社会信用代码。人工去查字号 iget 一个个搜,慢且容易串;更麻烦的是同名近似企业(「重庆某某能源有限公司」和「重庆某某新能源有限公司」),选错主体后面全是错的。enterprise.query 把这件事做成一个 GET 接口:传入关键词,返回命中的企业列表,每条给出名称、工商注册号、统一社会信用代码、企业类型、成立日期、法定代表人,用信用代码做主键就可以直接入库去重。

一个必须提前讲清楚的计费口径:本接口查不到结果不收费。关键词为空、少于 2 个字符、上游不可用,或者压根没匹配到企业,都直接返回失败且不扣费、不写扣费流水、不累加调用次数——脏关键词不会吃掉预算。详见第九节。

  • api.xujian.tech
  • V:xujian_cq

接口速览

关键事实 说明
接口地址 https://api.xujian.tech/openapi/enterprise/query
接口编码 enterprise.query
请求方式 GET
鉴权方式 请求头 X-API-Key,不做签名、时间戳或加密
请求参数 keyword(必填)、limit(可选)
返回条数 单次最多 20 条(上限不可调,超过按 20 裁剪)
计价 按次计费,0.01 元/次
不计费场景 关键词为空 / 过短超长、服务未启用或未配置、鉴权失败、余额不足、未查询到任何匹配企业
建议超时 15 秒以上(受上游响应影响,costMs 为真实耗时)

一、哪些场景会用到它

场景 具体动作
供应链准入 拿到对方简称后先做工商主体定位,用信用代码作为唯一主键建档
CRM / ERP 客户名录治理 批量把名单里的简称补全为标准名称 + 信用代码,消除重名导致的重复客户
开票核验 开票前核对购方名称与纳税人识别号(即统一社会信用代码)是否一致
反欺诈前置校验 先定位主体,再决定要不要调用详情 / 失信 / 经营异常接口做深挖
招投标报名名单核对 批量确认投标单位是否真实存续、名称是否与营业执照一致

模糊查询的定位是入口型接口:它只返回定位所需的最小字段集,拿到信用代码之后再按需组合 enterprise.profile、enterprise.dishonesty 等接口,比一上来就拉全量详情便宜得多。

二、请求参数

2.1 请求头

参数名 必填 说明
X-API-Key 是 开发者 API Key,缺失或无效直接返回失败(不计费)

2.2 业务参数(Query String)

参数名 必填 类型 示例 说明
keyword 是 String 某某能源 查询关键词:企业名称片段、工商注册号或统一社会信用代码;至少 2 个字符,最多 50 个字符,建议 4 个字符以上以提高匹配率
limit 否 Integer 10 期望返回条数,为空或小于等于 0 时取上限 20;大于 20 也只会返回 20 条

三、返回字段

3.1 顶层字段

字段 类型 说明
code int 0 成功,非 0 失败(统一为 500)
msg String 成功为 success,失败为具体原因
data Object 业务数据,失败时为 null

3.2 data 字段

字段 类型 示例 说明
keyword String 某某能源 查询关键词原文(已去除首尾空格)
total Integer 3 本次返回的企业条数
list Array — 企业列表,每项结构见下表
apiCode String enterprise.query 接口编码
apiName String 企业信息模糊查询 接口名称
chargeType String PER_CALL 计费类型
balance BigDecimal 99.9900 扣费后的账户余额(元)
costMs Long 860 本次调用耗时(毫秒)

3.3 list[] 元素字段

字段 类型 示例 说明
name String 重庆某某能源有限公司 企业名称(工商登记全称)
regNo String 5001100XXXXXXXX 工商注册号
creditNo String 91500110MAXXXXXXX 统一社会信用代码(18 位,开票场景常作为纳税人识别号)
type String 0 企业类型编码:0 企业 / 4 社团 / 5 律师事务所 / 6 香港公司
typeName String 企业 企业类型名称,由编码转换而来,未知编码返回「其他」
startDate String 2021-08-31 成立日期,格式 YYYY-MM-DD
operName String 张某某 法定代表人姓名

未取到的字段一律返回空字符串,不返回 null,调用方不需要逐字段判空。上游的主键、匹配权重等内部字段一概不返回——返回体里的七个字段就是全部。

四、调用示例

4.1 curl

curl -s -G "https://api.xujian.tech/openapi/enterprise/query" \
  --data-urlencode "keyword=某某能源" \
  --data-urlencode "limit=10" \
  -H "X-API-Key: 你的APIKey"

4.2 Java(JDK 11+ HttpClient)

import java.net.URI;
import java.net.URLEncoder;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.nio.charset.StandardCharsets;
import java.time.Duration;

public class EnterpriseQueryClient {
   

    private static final String API_URL = "https://api.xujian.tech/openapi/enterprise/query";

    public String query(String apiKey, String keyword, Integer limit) throws Exception {
   
        StringBuilder url = new StringBuilder(API_URL)
                .append("?keyword=").append(URLEncoder.encode(keyword, StandardCharsets.UTF_8));
        if (limit != null && limit > 0) {
   
            url.append("&limit=").append(limit);
        }

        HttpRequest request = HttpRequest.newBuilder()
                .uri(URI.create(url.toString()))
                .header("X-API-Key", apiKey)
                .timeout(Duration.ofSeconds(15))
                .GET()
                .build();

        return HttpClient.newHttpClient()
                .send(request, HttpResponse.BodyHandlers.ofString(StandardCharsets.UTF_8))
                .body();
    }
}

4.3 Python

import requests


def query_enterprise(api_key: str, keyword: str, limit: int | None = None) -> list[dict]:
    """模糊查询企业,返回企业列表;查不到返回空列表(且不扣费)"""
    params = {
   "keyword": keyword}
    if limit:
        params["limit"] = limit

    resp = requests.get(
        "https://api.xujian.tech/openapi/enterprise/query",
        params=params,
        headers={
   "X-API-Key": api_key},
        timeout=15,
    )
    result = resp.json()
    if result.get("code") != 0:
        print("查询失败(不收费):", result.get("msg"))
        return []
    return result["data"]["list"]


if __name__ == "__main__":
    for ent in query_enterprise("你的APIKey", "某某能源"):
        print(ent["name"], ent["creditNo"], ent["typeName"], ent["startDate"])

4.4 JavaScript(浏览器 / Node 18+)

const url = new URL("https://api.xujian.tech/openapi/enterprise/query");
url.searchParams.set("keyword", "某某能源");
url.searchParams.set("limit", "10");

const {
    code, msg, data } = await fetch(url, {
   
  headers: {
    "X-API-Key": API_KEY },
}).then((r) => r.json());

if (code === 0) {
   
  data.list.forEach((e) => console.log(e.name, e.creditNo, e.operName));
} else {
   
  console.warn("查询失败(不收费):", msg);
}

五、返回示例

{
   
  "code": 0,
  "msg": "success",
  "data": {
   
    "keyword": "某某能源",
    "total": 2,
    "list": [
      {
   
        "name": "重庆某某能源有限公司",
        "regNo": "5001100XXXXXXXX",
        "creditNo": "91500110MAXXXXXXX",
        "type": "0",
        "typeName": "企业",
        "startDate": "2021-08-31",
        "operName": "张某某"
      },
      {
   
        "name": "重庆某某新能源科技有限公司",
        "regNo": "5001100XXXXXXXX",
        "creditNo": "91500112MAYYYYYYY",
        "type": "0",
        "typeName": "企业",
        "startDate": "2023-04-17",
        "operName": "李某某"
      }
    ],
    "apiCode": "enterprise.query",
    "apiName": "企业信息模糊查询",
    "chargeType": "PER_CALL",
    "balance": 99.9900,
    "costMs": 860
  }
}

查不到时的返回(不计费):

{
   
  "code": 500,
  "msg": "未查询到匹配的企业信息,请更换更完整的企业名称 / 注册号 / 统一社会信用代码后重试;本次调用不计费",
  "data": null
}

这里有个容易被忽略的设计点:「查不到」走的是失败返回而不是空 list。好处是扣费语义清晰(成功就等于有数据),代价是调用方必须区分「业务失败」和「真的没有这家公司」——判断依据就是上面这条 msg。

六、落地实践

6.1 名录批量补全:先定位,再详情

from concurrent.futures import ThreadPoolExecutor, as_completed


def enrich_roster(api_key: str, names: list[str]) -> list[dict]:
    """把简称名单补全为标准工商主体"""
    result = {
   }
    with ThreadPoolExecutor(max_workers=4) as pool:
        futures = {
   pool.submit(query_enterprise, api_key, n): n for n in names}
        for fu in as_completed(futures):
            name = futures[fu]
            hit = fu.result()
            # 命中多条时用信用代码作为唯一主键落库,留待人审选择
            result[name] = hit
    return [{
   "原始名称": k, "命中": v} for k, v in result.items()]

6.2 用信用代码做去重主键

public class EnterpriseArchive {
   
    /**
     * 名录合并:以统一社会信用代码为主键,避免同名不同主体被合并
     */
    public void merge(List<EnterpriseRow> rows) {
   
        Map<String, EnterpriseRow> index = new HashMap<>();
        for (EnterpriseRow row : rows) {
   
            if (StrUtil.isBlank(row.getCreditNo())) {
   
                continue;   // 模糊查询没拿到信用代码的行,留到人工处理
            }
            index.merge(row.getCreditNo(), row, (oldVal, newVal) ->
                    // 同一信用代码出现多次时保留信息更完整的一条
                    completeness(oldVal) >= completeness(newVal) ? oldVal : newVal);
        }
    }
}

6.3 与其他企业接口组合

名单里的简称
   ↓ enterprise.query   (0.01 元/次)定位主体、拿到信用代码
   ↓ 用 creditNo 作为后续接口的 keyword,避免同名错查
   ├─ enterprise.profile     (0.20 元/次)33 项工商照面:状态、注册资本、经营范围
   ├─ enterprise.dishonesty  (0.20 元/次)失信被执行人
   ├─ enterprise.abnormal    (0.20 元/次)经营异常名录
   └─ enterprise.detail      (0.52 元/次)照面 + 股东 + 变更 + 社保一次拿全

七、提高命中率的几条建议

  1. 关键词至少 4 个字符。低于 2 个字符直接参数错误;2 ~ 3 个字符虽然合法,但命中结果往往过多甚至查不到有用的。
  2. 优先用信用代码或注册号。整串传入可以精确定位,几乎不会命中错主体。
  3. 用注册名片段而不是口语简称。例如用「某某能源」而不是「某能源公司」,去掉「市」「有限公司」等冗余词反而更稳。
  4. 同名命中多条时不要自动取第一条。把 list 全部展示给用户选择,或用成立日期、法定代表人做二次比对。
  5. limit 不用白填。上限就是 20 条,需要更大范围请拆关键词分批查。
  6. 查不到的分支要单独处理。这类返回不计费,适合直接落到「待人工核对」队列,而不是重试。

八、错误码与排查

code msg(示例) 处理建议
0 success 调用成功
500 缺少请求头 X-API-Key 请求头补充 X-API-Key
500 API Key 无效 / API Key 已停用 检查 Key 是否正确,或在控制台重新启用
500 客户不存在或已停用 联系平台确认账号状态
500 接口不存在或已停用 确认 enterprise.query 当前是否维护中
500 余额不足,请先充值 调用前校验余额,余额不足不扣费,充值后重试
500 keyword 不能为空 补充关键词,不计费
500 keyword 至少需要 2 个字符(建议 4 个字符以上以提高匹配率) 使用更完整的名称片段、注册号或信用代码
500 keyword 长度不能超过 50 个字符 截断或改用信用代码
500 企业信息查询服务未启用 / 未配置 服务端状态问题,稍后重试;不计费
500 未查询到匹配的企业信息……本次调用不计费 更换关键词;不计费

九、计费与接入

项目 说明
单价 0.01 元/次
计费方式 按次计费,调用前校验余额,返回至少一条企业信息才计一次
不计费场景 参数非法、服务未启用或未配置、鉴权失败、余额不足、查无结果
建议超时 15 秒以上

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

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

边界说明:本接口返回的是工商登记公示口径的主体信息,用于定位与核验;不包含经营状况、风险、财务等深度数据,需要的话请用 enterprise.profile / enterprise.detail 等接口。

十、小结

企业名录类需求的核心不是「查得到」,而是「别查错主体」。用信用代码做主键、把模糊查询当作定位入口而不是数据终点,能省掉后面大量的返工。

使用时要记住:

  • 查不到不收费:脏关键词不会消耗预算,失败分支可以直接转人工队列;
  • 最多 20 条:需要更宽范围就拆关键词分批查;
  • 七个字段足够做主键与去重:creditNo 定位、name 展示、startDate / operName 做同名二次比对;
  • 再用信用代码去调详情接口,比拿名称去查稳得多。

配套接口:enterprise.profile(0.20 元/次)拿 33 项工商照面,enterprise.detail(0.52 元/次)一次取回照面 + 股东 + 变更 + 社保,enterprise.dishonesty / enterprise.abnormal(各 0.20 元/次)做风险排查。

相关文章
|
1天前
|
人工智能
AI 回答里 URL 的五种写法:归一化之后才有可比的分母
本文详解AI回答中URL归一化技术:针对同一页面因协议、www前缀、跟踪参数、短链、末尾斜杠等导致的上百种字符串变体,提出五步标准化流程(去协议、去www、去跟踪参数、去斜杠、统大小写),确保同页生成唯一键。实测902条引用归一为294页/143域,避免域名虚增、去重失效、同页多计三大误判,保障“页面数”“域名数”“同域多页率”等指标准确可比。(239字)
|
虚拟化 数据安全/隐私保护
VMware Workstation Pro - 最新版
VMware是一款强大的虚拟机软件,可在单台计算机上模拟完整硬件系统,实现多系统运行。2024年5月推出最新版Workstation Pro 17.5.2,个人用户可免费使用。用户可通过官网下载并注册账户,按指引完成安装,适用于开发、测试及部署应用,具备高效灵活的虚拟化技术。
45963 1
|
架构师 算法 Dubbo
划重点!2023面试必刷461道大厂架构面试真题汇总+面经+简历模板
在过去的一年里,LZ看到很多小伙伴在面试的时候都拿到了自己心仪的Offer,同时也在各大论坛博客平台看到了大家分享出来的面经,面试题。趁着年末时间多,公司上我手头的活基本完事了,就在业余时间把阿里,字节等大厂的Java岗面试真题为大家简单汇总了一下,一共是22个主流技术;除面试汇总外还有一份阿里七面面经与架构师简历模板,想要在金三银四面试的小伙伴可以好好看看,多少对你们有所帮助!
|
云安全 安全 网络安全
|
7天前
|
JavaScript 安全 前端开发
Nodejs Brotli decoder 代码执行漏洞 (CVE-2026-111497)10629
Node.js发布安全更新修复Brotli解码器高危RCE漏洞(CVE-2026-111497),建议受影响版本用户立即升级。
1996 1
|
14天前
|
JSON 程序员 数据格式
最新版Notepad++下载、安装、配置保姆级教程(附官网安装包)
Notepad++ 是一款免费开源、轻量快速的 Windows 文本编辑器,支持多标签、语法高亮、代码折叠与宏录制,体积小、启动快、资源占用低,兼容 x64/x32/ARM 架构,是程序员和文字工作者的高效利器。
2938 0
|
13天前
|
人工智能 API 开发工具
DeepSeek Harness 神插件:白嫖 13 家大厂模型
`dsh-our-free-model` 是 DeepSeek Harness 神级插件:零配置、零API Key、零账号,聚合13家大厂免费模型(含DeepSeek V4.1 Flash、Kimi K3等),支持本地网关、用量看板与自动降级,真正实现“白嫖即用”。
2190 44
|
10天前
|
Web App开发 人工智能 前端开发
2026 年 AI 浏览器怎么选?Ego Lite、Tabbit、Chrome DevTools MCP 深度对比,开发者到底该用哪个?
2026年AI浏览器选型指南:Ego Lite专注多Agent协同(Mac优先),Tabbit国产首选,原生支持Windows与Codex控制;Chrome DevTools MCP非浏览器而是开发者利器,深度集成Console/Network/Performance调试能力,让AI真正“看懂并验证”前端代码。
1398 3
|
7天前
|
安全 应用服务中间件 Go
PHP2Shell 漏洞拆解:WordPress 与 nginx 为何中招
PHP2Shell 双 RCE 已遭在野利用:WordPress、Drupal 全在射程内,nginx 其实另有洞。拆成因与修复顺序
PHP2Shell 漏洞拆解:WordPress 与 nginx 为何中招

热门文章

最新文章