企查通 · 开放接口文档

接口入口 /api/index.php · 基础地址 https://cx.openclaw-e.com
版本 1.0.0 更新于 2026-09-17 HMAC-SHA256 签名鉴权

接口概览

项目说明
请求方式GET / POST(POST 支持 application/x-www-form-urlencoded 与 application/json)
响应格式application/json(UTF-8,中文不转义)
鉴权方式HMAC-SHA256 签名,请求头携带 X-Access-Key / X-Timestamp / X-Signature
字符编码统一使用 UTF-8
计费单位企业精确查询按次扣减额度;模糊搜索与详情查询不扣减

签名鉴权

  1. 在后台「开放接口 → Key 管理」创建一对 Access Key 与 Secret Key。
  2. 准备一个 Unix 秒级时间戳 timestamp,与服务器时间偏差不得超过 300 秒。
  3. 按下列格式拼接待签名串(三行,行尾不要有多余空格):
  4. {timestamp}\n{access_key}\n{code}
  5. 用 Secret Key 对签名串做 HMAC-SHA256,取十六进制小写结果作为 signature。
  6. 在请求头中携带 X-Access-Key / X-Timestamp / X-Signature 发起请求。
签名中的 code 为 Key 的开放标识(后台 Key 列表中可见)。若通过 URL 参数传入不同的 code,则以 URL 上的 code 为准参与签名。

公共参数

参数名类型必填说明
action string 调用的接口名,可选值:ping / company / search / detail / quota
format string 传 json 强制返回 JSON;传 html 强制返回文档页
access_key string 也可用 URL 参数替代 X-Access-Key 请求头
timestamp string 也可用 URL 参数替代 X-Timestamp 请求头
signature string 也可用 URL 参数替代 X-Signature 请求头

接口列表

健康检查 GET action=ping
探测服务可用性,不需要签名,适合在接入前确认网络与地址是否可达。

返回字段

字段类型说明
service string 服务名
version string 程序版本号
time string 服务器当前时间(ISO 8601)
db string 数据库状态:ok / error
upstream string 回源开关:enabled / disabled
额度消耗:不扣额度

请求示例

GET /api/index.php?action=ping
企业精确查询 GET / POST action=company
按企业名称或统一社会信用代码精确查询。查询链路为「本地库 → 回源缓存 → 第三方接口」,命中本地库或缓存时不消耗上游调用。

请求参数

参数名类型必填说明
keyword string 企业名称,或 18 位统一社会信用代码(传代码时查询更快更准)
type string 查询类型:name / credit_code / reg_no。留空则由系统按格式自动识别

返回字段

字段类型说明
name string 企业名称
credit_code string 统一社会信用代码
reg_no string 工商注册号
legal_person string 法定代表人
capital string 注册资本
establish_date string 成立日期(Y-m-d)
status string 经营状态,如 存续 / 注销 / 吊销
company_type string 企业类型
industry string 所属行业
reg_authority string 登记机关
address string 注册地址
business_scope string 经营范围
shareholders array 股东列表,元素含 name / type / percent / amount / invest_date
persons array 主要人员列表,元素含 name / position
branches array 分支机构列表
changes array 工商变更记录列表
额度消耗:命中本地库或缓存不扣上游调用;每次成功查询扣 1 次额度

请求示例

GET /api/index.php?action=company&keyword=91310000MA1FL0XXXX
本地库模糊搜索 GET / POST action=search
在已收录的企业库中做名称 / 信用代码 / 法人的模糊匹配,用于关键词联想与候选列表。不会触发上游调用,不扣额度。

请求参数

参数名类型必填说明
keyword string 搜索关键词,至少 2 个字符
limit int 返回条数,默认 10,上限 50

返回字段

字段类型说明
total int 本次返回条数
list array 企业摘要列表,元素含 id / name / credit_code / legal_person / status
额度消耗:不扣额度

请求示例

GET /api/index.php?action=search&keyword=科技&limit=10
企业详情 GET / POST action=detail
按企业 ID 获取完整档案,含股东、主要人员、分支机构与变更记录。企业 ID 由企业查询或模糊搜索接口返回。

请求参数

参数名类型必填说明
id int 企业 ID

返回字段

字段类型说明
id int 企业 ID
name string 企业名称
credit_code string 统一社会信用代码
shareholders array 股东列表
persons array 主要人员列表
branches array 分支机构列表
changes array 变更记录列表
额度消耗:不扣额度

请求示例

GET /api/index.php?action=detail&id=1
额度查询 GET / POST action=quota
查询当前 Key 的额度总量、已用量、剩余量与 QPS 限制,便于接入方做用量监控。

返回字段

字段类型说明
quota_total int 额度总量,-1 表示不限量
quota_used int 已使用次数
quota_left int 剩余次数
qps_limit int 每秒请求上限,0 表示不限
unlimited bool 是否为不限量 Key
额度消耗:不扣额度

请求示例

GET /api/index.php?action=quota

响应结构

所有接口统一返回三层结构:code 为 0 表示成功,非 0 表示失败并同步设置对应的 HTTP 状态码;data 为业务数据;meta 为本次调用的附加信息。

{
  "code": 0,
  "msg": "ok",
  "data": {
    "id": 1024,
    "name": "示例科技有限公司",
    "credit_code": "91310000MA1FL0XXXX",
    "legal_person": "张三",
    "status": "存续"
  },
  "meta": {
    "source": "local",
    "cost": 1,
    "quota_left": 998,
    "elapsed_ms": 12
  }
}

错误码

code含义说明
400 参数错误 缺少必填参数、参数格式非法或取值超出允许范围
401 鉴权失败 缺少鉴权头 / Access Key 不存在 / 签名不匹配 / 时间戳偏差超过 300 秒
402 额度不足 Key 剩余额度小于本次调用所需额度
403 无权限 Key 已被停用
404 未找到 本地库与上游均未查询到该企业
429 频率超限 超过该 Key 配置的 QPS 上限
500 服务端异常 服务内部错误,请携带 meta.elapsed_ms 与请求时间联系管理员
502 上游异常 第三方数据源不可用或返回内容无法解析

调用示例

cURL

TS=$(date +%s)\nAK="ak_你的AccessKey"\nSK="你的SecretKey"\nCODE="KXXXXX"\n\nSIGN=$(printf "%s\n%s\n%s" "$TS" "$AK" "$CODE" | openssl dgst -sha256 -hmac "$SK" | awk '{print $2}')\n\ncurl -s "https://your-domain.com/api/index.php?action=company&keyword=91310000MA1FL0XXXX" \\n  -H "X-Access-Key: $AK" \\n  -H "X-Timestamp: $TS" \\n  -H "X-Signature: $SIGN"

PHP

$ak = 'ak_你的AccessKey';\n$sk = '你的SecretKey';\n$code = 'KXXXXX';\n$ts = time();\n\n// 签名串为三行:timestamp\naccess_key\ncode\n$sign = hash_hmac('sha256', $ts . "\n" . $ak . "\n" . $code, $sk);\n\n$ch = curl_init('https://your-domain.com/api/index.php?action=company&keyword=91310000MA1FL0XXXX');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_HTTPHEADER => [\n        'X-Access-Key: ' . $ak,\n        'X-Timestamp: ' . $ts,\n        'X-Signature: ' . $sign,\n    ],\n]);\n$resp = curl_exec($ch);\ncurl_close($ch);\n\n$data = json_decode($resp, true);\nif ($data['code'] === 0) {\n    echo $data['data']['name'];\n} else {\n    echo '调用失败: ' . $data['msg'];\n}

Python

import time, hmac, hashlib, urllib.parse, requests\n\nAK = "ak_你的AccessKey"\nSK = "你的SecretKey"\nCODE = "KXXXXX"\nTS = str(int(time.time()))\n\n# 签名串为三行:timestamp\naccess_key\ncode\nsign_str = "{}\n{}\n{}".format(TS, AK, CODE)\nsign = hmac.new(SK.encode(), sign_str.encode(), hashlib.sha256).hexdigest()\n\nurl = "https://your-domain.com/api/index.php?" + urllib.parse.urlencode({\n    "action": "company",\n    "keyword": "91310000MA1FL0XXXX",\n})\nr = requests.get(url, headers={\n    "X-Access-Key": AK,\n    "X-Timestamp": TS,\n    "X-Signature": sign,\n}, timeout=15)\n\ndata = r.json()\nprint(data["data"]["name"] if data["code"] == 0 else data["msg"])

JavaScript

const crypto = require('crypto');

const AK = 'ak_你的AccessKey';
const SK = '你的SecretKey';
const CODE = 'KXXXXX';
const TS = Math.floor(Date.now() / 1000).toString();

// 签名串为三行:timestamp\naccess_key\ncode
const signStr = `\n\n`;
const sign = crypto.createHmac('sha256', SK).update(signStr).digest('hex');

const url = 'https://your-domain.com/api/index.php?action=company&keyword=91310000MA1FL0XXXX';
const res = await fetch(url, {
  headers: {
    'X-Access-Key': AK,
    'X-Timestamp': TS,
    'X-Signature': sign,
  },
});

const data = await res.json();
console.log(data.code === 0 ? data.data.name : data.msg);

接入须知

企查通 · 开放接口文档 · 版本 1.0.0