企业全景信息查询 API:工商照面 33 项、股东出资、变更与社保一次查全 做供应商准入、客户尽职调查、授信风控时,需要的信息往往不止「这家公司存不存在」:经营状态是否正常、注册资本与实缴、股东结构与出资明细、历史上改过什么、参保人数有没有异常——这些信息分散在工商公示的不同板块里,逐个去查要调好几个接口、拼好几套字段。
enterprise.detail把四个维度合并成一次查询:工商照面 33 项 + 股东及认缴 / 实缴出资 + 工商变更记录 + 分年度社保参保 ,一次 GET 请求全部返回,并且查不到该企业不收费 。
接口速览 关键事实 说明 接口地址 https://api.xujian.tech/openapi/enterprise/detail接口编码 enterprise.detail请求方式 GET(keyword放 Query String) 鉴权方式 请求头X-API-Key,不做签名、时间戳或加密 唯一业务参数 keyword,企业工商登记全称 或统一社会信用代码,去空格后 2 ~ 50 个字符返回四大块 basicInfo/partners/changeRecords/socialSecurity计费方式 按次计费,0.52 元/次,先预鉴权、查到企业后再扣费 不计费场景 关键词非法、服务不可用、未查询到该企业 典型耗时 通常 1 ~ 3 秒,建议客户端超时至少 15 秒 条数限制 无limit、无分页,按上游实际结果完整返回
一、哪些业务需要这一步 场景 具体用法 供应商准入 一次拿到状态、注册资本、股东与参保规模,判断是否为壳公司 客户尽职调查 核对统一社会信用代码与注册地址,配合变更记录看历史沿革 授信与风控 用经营状态、吊销 / 注销信息、变更频率做风险打分 企业档案补全 CRM 里只有企业名,批量补全信用代码、法人、经营范围 股东穿透 从partners拿到股东名单与持股比例,继续向上穿透 合同评审 签合同前核对企业名称、法人、经营期限是否异常 招投标资格审核 校验经营范围是否覆盖招标内容、状态是否正常 招商与获客 按行业代码domain与地区筛选目标企业 贷后监控 定期复查状态与变更记录,发现法人 / 股东变动及时预警 企业画像标签 用tags(高新企业 / 上市等)与参保人数打标签
二、请求参数 2.1 请求头 参数名 必填 说明 X-API-Key是 开发者 API Key,缺失或无效直接返回失败
2.2 查询参数 参数名 必填 类型 示例 说明 keyword是 String 91500113MAABRA7D0H 企业工商登记全称 或统一社会信用代码;去首尾空白后2 ~ 50 个字符
2.3 关键词怎么填才查得准 优先用统一社会信用代码 :18 位,唯一且不会重名,准确率最高。用名称时必须是登记全称 。接口不做模糊匹配,传简称大概率查不到。拿不准全称 时,先用企业信息模糊查询(enterprise.query,0.01 元/次)校正全称,再查本接口,比反复猜更省钱。三、返回字段 3.1 顶层与 data 字段 类型 说明 codeint 0成功,非 0 失败(统一为500)msgString 成功为success,失败为具体原因 dataObject 业务数据,失败时为null
data 字段:
字段 类型 示例 说明 keywordString 91500113MAABRA7D0H 去首尾空白后的查询关键词 basicInfoObject {…} 工商照面 33 项 partnersArray […] 股东及认缴 / 实缴出资明细 changeRecordsArray […] 工商变更记录 socialSecurityArray […] 分年度社保参保信息 apiCodeString enterprise.detail 接口编码 apiNameString 企业详细信息综合查询 接口名称 chargeTypeString PER_CALL 本次计费方式 balanceBigDecimal 99.4800 成功结算后的账户余额(元) costMsLong 1860 本次调用总耗时(毫秒)
3.2 basicInfo:工商照面 33 项 字段 示例 含义 name重庆可乐家装饰工程有限公司 企业名称 formatName重庆可乐家装饰工程有限公司 清洗后的标准名称 creditNo91500113MAABRA7D0H 统一社会信用代码 regNo500113014353471 企业注册号 orgNo91500113MAABRA7D0H 组织机构号 status存续(在营、开业、在册) 工商公示经营状态原文 newStatus存续 清洗后状态:存续 / 注销 / 吊销 / 撤销 / 迁出 / 设立中 / 清算中 / 停业 / 其他 / 歇业 / 责令关闭 operName李伦智 法定代表人姓名 title法定代表人 代表人职务 operTypeP P个人,C公司registCapi100 万人民币 注册资本 actualCapi- 实缴资本 currencyUnitCNY 货币单位 startDate2021-06-02 成立日期 termStart2021-06-02 营业开始日期 termEnd- 营业结束日期;-表示长期 endDate- 注销日期 checkDate2021-06-02 最近一次核准日期 revokeDate- 吊销日期 revokeReason- 吊销原因 logoutReason- 注销原因 econKind有限责任公司 企业类型 econKindCode1100 企业类型代码 typeNew01 01大陆企业 /02社会组织 /03机关及事业单位 /04港澳台及国外 /05律所及其他categoryNew0115601 0115601企业 /0115602个体 /0115603农民专业合作社domainD4511 国民经济行业四级代码 address重庆市巴南区…… 注册地址 belongOrg重庆市巴南区市场监督管理局 登记机关 districtCode500110 所属行政区划代码 scope许可项目:住宅室内装饰装修…… 完整经营范围 tags[] 企业标签:1 新三板 / 6 主板上市 / 9 香港上市 / 17 高新企业 / 40 暂停上市 / 41 终止上市 historyNames[] 历史名称 fenname- 企业英文名
3.3 partners[]:股东与出资 字段 示例 含义 name李伦智 股东名称 stockType自然人股东 股东类型 identifyType- 证件类型;-表示未公示 identifyNo- 证件号码;-表示未公示 stockPercent1.0 持股比例,小数形式(1.0= 100%) totalRealCapi- 实缴出资总额 totalShouldCapi100 万人民币 认缴出资总额 startDate2021-06-02 出资 / 首次认缴日期 shouldCapiItems[{date, capi, type}] 认缴明细 realCapiItems[] 实缴明细
shouldCapiItems[]/realCapiItems[]元素:date(出资日期)、capi(金额,如100 万人民币)、type(出资方式,如货币)。
3.4 changeRecords[]:工商变更 字段 示例 含义 changeItem章程备案 变更事项 changeDate2021-07-15 变更日期 beforeContent- 变更前内容 afterContent同意启用新章程 变更后内容 tag非历史信息 非历史信息/历史信息type章程备案变更 章程备案 / 注册资金 / 住所 / 股东股权 / 人员 / 地址 / 经营范围 / 其他 变更
3.5 socialSecurity[]:分年度社保参保 字段 示例 含义 reportYear2024 年报所属年份 reportDate2025-03-18 年报公示日期 name重庆可乐家装饰工程有限公司 企业名称 dwJeDisplay/bqJeDisplay/dwJsDisplay企业选择不公示 缴费基数 / 实际缴费 / 累计欠缴是否公示 insuranceNum3人 城镇职工基本养老保险参保人数 basicEndownmentNum3人 基本养老保险参保人数 unenploymentNum3人 失业保险参保人数 injuryInsuranceNum3人 工伤保险参保人数 birthNum/birthInsuranceCount0人 生育保险参保人数 basicMedicalAmount/actualMedicalAmount/baseMedicalDownBalance- 医疗保险缴费基数 / 实缴 / 欠缴 unenploymentInsurance/actualLostAmount/unenploymentDownBalance- 失业保险相关金额 endownmentInsuranceAmount/endownmentBaseAmount/actualEndownmentAmount- 养老保险相关金额 injuryInsuranceAmount/actualInjuryAmount/companyInjuryDownBalance- 工伤保险相关金额 birthAmount/birthActualAmount- 生育保险相关金额
3.6 三个字段口径 -不等于null,也不等于 0 。它是工商数据里的「未公示 / 长期 / 无值」占位符,展示时写「—」即可。缺失字符串是"",缺失数组是[] ,不用null表示,解析时按空值兜底即可。上游内部id与法定代表人身份哈希operPid不对外返回 ,不要依赖。四、调用示例 4.1 curl curl -s -G "https://api.xujian.tech/openapi/enterprise/detail" \ --data-urlencode"keyword=91500113MAABRA7D0H" \ -H "X-API-Key: 你的APIKey" 4.2 Java(Hutool) import cn. hutool. http. HttpRequest ; import cn. hutool. json. JSONObject ; import cn. hutool. json. JSONUtil ; public class EnterpriseDetailClient { private static final String API_URL = "https://api.xujian.tech/openapi/enterprise/detail" ; /** * 查询企业详细信息 * * @param apiKey 开发者 API Key * @param keyword 企业全称或统一社会信用代码 * @return data 节点;查不到或失败返回 null,且不扣费 */ public static JSONObject detail ( String apiKey, String keyword) { JSONObject json= JSONUtil . parseObj ( HttpRequest . get ( API_URL ) . header ( "X-API-Key" , apiKey) . form ( "keyword" , keyword) . timeout ( 20000 ) . execute ( ) . body ( ) ) ; if ( json. getInt ( "code" ) == null || json. getInt ( "code" ) != 0 ) { System . out. println ( "查询失败(不收费):" + json. getStr ( "msg" ) ) ; return null ; } return json. getJSONObject ( "data" ) ; } public static void main ( String [ ] args) { JSONObject data= detail ( "你的APIKey" , "91500113MAABRA7D0H" ) ; if ( data== null ) { return ; } JSONObject basic= data. getJSONObject ( "basicInfo" ) ; System . out. printf ( "%s | %s | 法人 %s | 注册资本 %s | 股东 %d 人%n" , basic. getStr ( "name" ) , basic. getStr ( "newStatus" ) , basic. getStr ( "operName" ) , basic. getStr ( "registCapi" ) , data. getJSONArray ( "partners" ) . size ( ) ) ; } } 4.3 Python import requestsdef enterprise_detail ( api_key: str , keyword: str ) : """返回 data 节点;查不到或失败返回 None,且不扣费""" resp= requests. get( "https://api.xujian.tech/openapi/enterprise/detail" , params= { "keyword" : keyword} , 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__" : data= enterprise_detail( "你的APIKey" , "91500113MAABRA7D0H" ) if data: print ( data[ "basicInfo" ] [ "name" ] , data[ "basicInfo" ] [ "newStatus" ] ) 4.4 JavaScript async function enterpriseDetail ( apiKey, keyword ) { const qs= new URLSearchParams ( { keyword} ) . toString ( ) ; const resp= await fetch ( ` https://api.xujian.tech/openapi/enterprise/detail? ${ qs} ` , { headers : { "X-API-Key" : apiKey} } ) ; const result= await resp. json ( ) ; if ( result. code!== 0 ) { throw new Error ( result. msg) ; } return result. data; } 五、返回示例 { "code" : 0 , "msg" : "success" , "data" : { "keyword" : "91500113MAABRA7D0H" , "basicInfo" : { "name" : "重庆可乐家装饰工程有限公司" , "creditNo" : "91500113MAABRA7D0H" , "regNo" : "500113014353471" , "status" : "存续(在营、开业、在册)" , "newStatus" : "存续" , "operName" : "李伦智" , "registCapi" : "100 万人民币" , "actualCapi" : "-" , "startDate" : "2021-06-02" , "termEnd" : "-" , "econKind" : "有限责任公司" , "domain" : "D4511" , "address" : "重庆市巴南区龙洲湾街道龙洲大道255号17-1" , "belongOrg" : "重庆市巴南区市场监督管理局" , "districtCode" : "500110" , "scope" : "许可项目:住宅室内装饰装修(依法须经批准的项目,经相关部门批准后方可开展经营活动)" , "tags" : [ ] , "historyNames" : [ ] } , "partners" : [ { "name" : "李伦智" , "stockType" : "自然人股东" , "stockPercent" : "1.0" , "totalShouldCapi" : "100 万人民币" , "shouldCapiItems" : [ { "date" : "2021-06-02" , "capi" : "100 万人民币" , "type" : "货币" } ] , "realCapiItems" : [ ] } ] , "changeRecords" : [ { "changeItem" : "章程备案" , "changeDate" : "2021-07-15" , "beforeContent" : "-" , "afterContent" : "同意启用新章程" , "tag" : "非历史信息" , "type" : "章程备案变更" } ] , "socialSecurity" : [ { "reportYear" : "2024" , "reportDate" : "2025-03-18" , "insuranceNum" : "3人" , "basicEndownmentNum" : "3人" , "unenploymentNum" : "3人" , "injuryInsuranceNum" : "3人" , "birthNum" : "0人" } ] , "apiCode" : "enterprise.detail" , "apiName" : "企业详细信息综合查询" , "chargeType" : "PER_CALL" , "balance" : 99.4800 , "costMs" : 1860 } } 查不到(不收费):
{ "code" : 500 , "msg" : "未查询到该企业的详细信息,请核对企业名称或更换统一社会信用代码后重试;本次调用不计费" , "data" : null } 六、可直接复用的两段代码 6.1 准入初筛:状态 + 规模 + 股东 def pre_check ( data: dict ) - > dict : """返回一份可读的准入结论""" basic= data[ "basicInfo" ] partners= data. get( "partners" ) or [ ] social= data. get( "socialSecurity" ) or [ ] latest= social[ 0 ] if socialelse { } return { "name" : basic. get( "name" ) , "credit_no" : basic. get( "creditNo" ) , "status" : basic. get( "newStatus" ) , "alive" : basic. get( "newStatus" ) == "存续" , "regist_capi" : basic. get( "registCapi" ) , "legal_person" : basic. get( "operName" ) , "partner_count" : len ( partners) , "staff_hint" : latest. get( "insuranceNum" ) , "risk" : [ ] if basic. get( "newStatus" ) == "存续" else [ "经营状态异常" ] , } 6.2 变更记录里找敏感变动 SENSITIVE= { "股东股权变更" , "注册资金变更" , "人员变更" , "住所变更" , "经营范围变更" } def sensitive_changes ( data: dict ) : """挑出需要人工复核的变更事项""" rows= data. get( "changeRecords" ) or [ ] return [ rfor rin rowsif r. get( "type" ) in SENSITIVE] 七、实践建议 关键词优先用信用代码 。18 位信用代码唯一,名称要精确匹配全称,模糊查不到。超时至少 15 秒 。接口要向多个维度取数,典型 1 ~ 3 秒,costMs会告诉你真实耗时。本地缓存结果 。工商数据变动不频繁,按企业缓存 30 ~ 90 天,重复查询直接读库,省下 0.52 元/次。-不要当空值处理成 0 。termEnd = -是「长期」,转成 0 会算出「已过期」的错误结论。stockPercent是小数 。1.0表示 100%,展示时乘 100。参保人数只作参考 。很多企业选择不公示金额字段,参保人数是「3人」这种带单位的文本。复用creditNo做主键 。企业名称可能变更(historyNames会记录),信用代码不会变。查不到不收费,可以放心重试 。但重试前先确认名称是否准确,避免无效调用堆积。八、错误码与排查 code msg 是否扣费 0 success 扣费(查到企业后结算) 500 缺少请求头 X-API-Key 否 500 API Key 无效 / API Key 已停用 否 500 客户不存在或已停用 否 500 接口不存在或已停用 否 500 余额不足,请先充值 否 500 keyword 不能为空 否 500 keyword 至少需要 2 个字符(建议使用企业全称或统一社会信用代码) 否 500 keyword 长度不能超过 50 个字符 否 500 数据服务未启用 / 数据服务未配置(上游凭证缺失) 否 500 未查询到该企业的详细信息,请核对企业名称或更换统一社会信用代码后重试;本次调用不计费 否 500 数据服务暂时不可用(请求上游超时或网络异常),本次调用不计费 否
结算判定很简单:只有basicInfo.name有值时才扣费。其余所有失败分支都不产生费用。
九、计费与接入 项目 说明 单价 0.52 元/次 计费方式 按次计费;preAuthorize预校验 → 查询 → 查到企业后settle扣费 不计费场景 关键词为空 / 少于 2 字符 / 超过 50 字符、服务未启用或凭证缺失、上游超时或返回异常、未查询到该企业 、Key / 客户 / 接口校验失败、余额不足 返回条数 无limit、无分页,四个维度按上游实际结果完整返回
接入流程:注册开发者账号 → 控制台创建 API Key → 请求头带上X-API-Key即可调用,无需签名或加密。控制台可查看调用量、扣费流水与余额。
服务站点:api.xujian.tech(纯文本域名,不做跳转)。接口试用、数据与充值咨询可在控制台提交工单,或联系 Vxujian_cq。
十、小结 一个关键词换回四个维度的结构化数据,省掉的是「查四遍、拼四套、口径还要自己对齐」的工作量。几个取舍值得记住:
查不到不收费 :先校正名称再查,试错成本是 0;-是业务占位 :表示未公示 / 长期 / 无值,别当成 0 参与计算;信用代码是最佳主键 :名称会变,代码不变;缓存价值高 :工商数据低频变动,缓存一次能省下不少调用成本。同系列还有:enterprise.query(0.01 元/次,名称模糊查询,适合先校正全称)、enterprise.profile(0.2 元/次,只要 33 项照面)、enterprise.abnormal与enterprise.dishonesty(各 0.2 元/次,经营异常与失信记录)、enterprise.report(0.3 元/次,多年度工商年报)。按需组合,比一律查最贵的接口更划算。