TCPLab TCPLab

ICP 备案查询 API

最后更新: 2026-10-19

GET /api/v2/icp/query?domain={domain}

返回在中国大陆备案的域名信息。接口地址、响应格式与限流为各接口通用,见 API 文档。

参数 位置 说明
domain query 待查询的域名或 URL。会自动去掉首尾空白、协议、userinfo、路径、查询、端口与结尾点;不支持 IP 地址。IDN 可传 Unicode 或 punycode。

查询前会先提取注册域:www.baidu.com 会变成 baidu.com,a.b.example.com.cn 会变成 example.com.cn。后缀会按工信部可备案名单(171 个后缀)校验:支持 .com、.cn、.net、.top、.xyz、.中国、.公司 等;.org、.io、.us 等未获批后缀会返回 api.param.domain.suffix_unsupported。

示例:

curl "https://tcp.lc/api/v2/icp/query?domain=baidu.com"

响应 data 字段:

字段 说明
domain 实际查询的注册域;IDN 以 Unicode 返回。
suffix 用于校验的顶级后缀,如 .com、.中国;example.com.cn 的后缀为 .cn。
filed 是否查询到至少一条备案记录。
records 备案记录数组;filed 为 false 时为空。
source primary(优先数据源)或 fallback(备用数据源)。
fetchedAt 从数据源获取数据的 ISO 8601 时间;命中缓存时保持首次获取时间。
cached 是否由服务端缓存返回。

每条记录包含:

字段 说明
domain 该条记录对应的域名。
mainLicence 主体备案号。
serviceLicence 网站备案号。
unitName 主办单位名称。
natureName 单位性质,如 企业、个人,通常为中文。
contentType 服务前置审批项,可能为空。
limitAccess 是否限制接入,可能为空。
siteName 网站名称;数据源提供时才有,否则为 null。
updatedAt 备案系统中的审核 / 更新时间。

示例:

{
  "code": 200,
  "msg": "ok",
  "data": {
    "domain": "baidu.com",
    "suffix": ".com",
    "filed": true,
    "records": [
      {
        "domain": "baidu.com",
        "mainLicence": "京ICP证030173号",
        "serviceLicence": "京ICP证030173号-1",
        "unitName": "北京百度网讯科技有限公司",
        "natureName": "企业",
        "contentType": "",
        "limitAccess": "",
        "siteName": null,
        "updatedAt": "2019-05-16 16:06:21"
      }
    ],
    "source": "primary",
    "fetchedAt": "2026-10-19T04:12:00.000Z",
    "cached": false
  }
}

未查询到备案不算错误:仍返回 code: 200,filed 为 false,records 为空数组:

{
  "code": 200,
  "msg": "ok",
  "data": {
    "domain": "example.com",
    "suffix": ".com",
    "filed": false,
    "records": [],
    "source": "primary",
    "fetchedAt": "2026-10-19T04:12:00.000Z",
    "cached": false
  }
}

错误

失败时 code 为 -1000,msg 为稳定标识,data.args 可能携带细节。

msg 含义
api.param.domain.missing 没有传 domain 参数。
api.param.domain.invalid 输入无法解析为域名;data.args.name 为原始输入。
api.param.domain.ip_unsupported 不支持 IP 地址。
api.param.domain.suffix_unsupported 后缀不在工信部可备案名单中;data.args.suffix 为对应后缀,如 .org。
api.rate.limitedDaily 今日配额已用完,响应带 Retry-After 头。
api.upstream.icp.error 两个数据源都不可用、超时,或返回结构异常。
api.server.internal 服务端或配置异常。

示例:

{
  "code": -1000,
  "msg": "api.param.domain.suffix_unsupported",
  "data": {
    "args": {
      "suffix": ".org"
    }
  }
}

说明

  • filed: false 表示没有查到记录。域名可能尚未备案、注册在境外,或备案已注销。
  • 支持中文 IDN 域名。优先数据源不可用时,IDN 查询可能返回 api.upstream.icp.error,而不是可能错误的 filed: false,因为备用数据源无法可靠解析中文域名。
  • 备案数据变化较慢,但不是实时数据。可用 fetchedAt 与工信部备案系统核验。

限流与缓存

按客户端 IP,每天 20 次实际查询。命中缓存不消耗配额;每日额度按 UTC+8 零点重置。额度用完时返回 api.rate.limitedDaily,并带 Retry-After 响应头(秒)。

已备案结果缓存 7 天,未备案结果缓存 24 小时。接口响应本身带 Cache-Control: no-store,缓存发生在服务端;可通过 cached 判断本次是否命中缓存。