ICP备案实时查询接口技术教程:接入流程、返回结构与调用规范
1. 技术简介
ICP备案实时查询接口(ICP备案查询 API)提供基于域名的网站备案信息检索能力。调用方传入目标域名,接口返回该域名是否已完成 ICP 备案,以及备案主体相关字段,包括备案号、单位名称、网站名称、备案时间、备案类型等。接口以 HTTP GET 方式提供,返回 JSON 结构,适用于需要在业务系统中核验网站资质、检查站点合规状态的环节。典型技术场景包括:在合作方准入环节核对对方网站备案状态,在内容平台做站点合规性巡检,以及在数据分析环节获取站点的备案主体信息。
2. 能力概览
接口对外提供的能力如下,描述聚焦"能做什么",便于接入前做技术评估。

| 能力 | 说明 | 适用情形 |
|---|---|---|
| 备案状态查询 | 根据域名判定该站点是否已完成 ICP 备案 | 合作方准入、资质核验 |
| 备案号返回 | 返回备案号(如滇ICP备xxxx号-1) | 备案凭证核对 |
| 主体信息返回 | 返回单位名称、网站名称、备案时间、备案类型 | 主体一致性比对 |
| 程序化查询 | 以参数化方式集成到业务系统,单次查询一个域名 | ERP / CRM / 风控系统对接 |
3. 适用场景
以下场景均从技术数据流角度描述,说明数据如何在系统中被消费。
- 合作前资质核验:在 B2B 合作、供应商准入环节,对对方提供的官网域名做备案状态核对,确认站点主体与工商登记信息一致。
- 网站合规巡检:对站内收录或外链站点批量查询备案状态,标记未备案或备案信息异常的站点,辅助内容治理。
- 数据分析辅助:在市场研究、舆情分析中,依据域名备案主体信息对站点做归属归类,丰富站点画像维度。

4. 接入流程
4.1 请求参数
| 参数位置 | 名称 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
| Query | domain | string | 是 | 要查询备案的域名,示例值:www.showapi.com |
4.2 标准步骤

- 在云市场完成商品订购,获取调用所需的 APPCODE。
- 构造 GET 请求,Host 为
ali-beian.showapi.com,path 为/beian。 - 在请求头加入
Authorization: APPCODE <appcode>。 - 在 Query 中传入
domain参数。 - 解析返回的 JSON,读取
showapi_res_body中的各字段。
请求地址以商品页给出的接入地址为准:
https://ali-beian.showapi.com/beian。
5. 调用示例与返回结构
5.1 cURL
curl -X GET "https://ali-beian.showapi.com/beian?domain=www.showapi.com" \
-H "Authorization: APPCODE <appcode>"
5.2 Python
import requests
url = "https://ali-beian.showapi.com/beian"
params = {
"domain": "www.showapi.com"}
headers = {
"Authorization": "APPCODE <appcode>"}
resp = requests.get(url, params=params, headers=headers)
data = resp.json()
print(data)
5.3 Java
import com.aliyun.api.gateway.demo.util.HttpUtils;
import org.apache.http.HttpResponse;
import java.util.HashMap;
import java.util.Map;
public class BeianQuery {
public static void main(String[] args) throws Exception {
String host = "https://ali-beian.showapi.com";
String path = "/beian";
String method = "GET";
Map<String, String> headers = new HashMap<>();
headers.put("Authorization", "APPCODE <appcode>");
Map<String, String> querys = new HashMap<>();
querys.put("domain", "www.showapi.com");
HttpResponse response = HttpUtils.doGet(host, path, method, headers, querys);
// 读取 response 实体中的 JSON
}
}
5.4 PHP
<?php
$url = "https://ali-beian.showapi.com/beian?domain=www.showapi.com";
$opts = [
"http" => [
"method" => "GET",
"header" => "Authorization: APPCODE <appcode>\r\n"
]
];
$context = stream_context_create($opts);
$resp = file_get_contents($url, false, $context);
echo $resp;
5.5 JavaScript (Node / 浏览器 fetch)
fetch("https://ali-beian.showapi.com/beian?domain=www.showapi.com", {
headers: {
"Authorization": "APPCODE <appcode>" }
})
.then(r => r.json())
.then(data => console.log(data));
5.6 返回结构

成功响应为 JSON,外层为统一网关结构,业务数据位于 showapi_res_body:
{
"showapi_res_code": 0,
"showapi_res_error": "",
"showapi_res_body": {
"ret_code": 0,
"flag": "1",
"num": "滇ICP备14007554号-1",
"companyName": "示例科技有限公司",
"siteName": "示例网站",
"beianTime": "2020-05-12",
"natureName": "企业",
"domain": "www.showapi.com"
}
}
字段名与层级为参考结构,实际以接口实时返回为准(控制台可查看完整字段定义)。
flag标识是否备案,num为备案号。
6. 在线调试实录
在调试台中填入 domain=www.showapi.com 并发起请求,可得到 HTTP 200 与第 5.6 节所示 JSON。

走查要点:
- 请求构造:GET 至
/beian,Query 含domain,请求头含Authorization: APPCODE <appcode>。 - 响应判定:外层
showapi_res_code为 0 表示网关层成功;业务结果看showapi_res_body.ret_code。 - 字段解读:
flag标识备案状态,num为备案号,companyName/siteName/beianTime/natureName为主体相关信息。 - 异常分支:若
showapi_res_code非 0 或 HTTP 状态码非 200,按第 9 节错误码定位。
7. 接口调用限制与规范
- 单域名查询:单次请求仅查询一个域名,批量需在业务侧循环调用。
- 配额与频控:账户级 QPS 上限与每日调用配额以控制台实时配置为准,调用前请确认余量。
- 计次规则:仅在 HTTP 响应状态码为 200 时扣减调用次数,非 200 不扣费(以商品说明为准)。
- 高频注意:对相同域名做本地缓存,避免重复查询;调用方自行实现限流与退避重试。
- 合规要求:仅用于自身业务系统的资质核验与合规检查,遵守数据使用相关法律法规,不对返回数据做超范围加工或转售。
8. 能力边界与免责声明
支持
- 已完成 ICP 备案的境内域名查询。
- 返回备案号、单位名称、网站名称、备案时间、备案类型等主体信息。
不支持 / 边界
- 未备案域名:返回未备案标识,不提供主体信息。
- 境外域名备案、历史备案变更轨迹等以接口实际能力为准。
- 数据来源于公开备案信息库,存在更新延迟可能;备案状态以主管部门登记为准。
免责声明
接口返回数据仅供参考,不构成对任何网站合法性或经营资质的最终认定,不对依据本数据做出的业务决策承担责任。
9. 错误码与排查指南
| 错误标识 | 含义 | 排查办法 |
|---|---|---|
| 400 InvalidParameter | 参数错误 | 检查 domain 是否缺失或格式不正确 |
| 401 Unauthorized | 鉴权失败 | 检查 APPCODE 是否正确、是否在请求头以 APPCODE 前缀传入 |
| 403 Forbidden | 无权限 / 未订购 | 确认已订购对应资源包且余量充足 |
| 429 Throttling | 触发限流 | 降低请求频率,或申请更高配额 |
| 500 InternalError | 服务端异常 | 稍后重试,持续异常则联系技术支持 |
| showapi_res_code != 0 | 业务异常 | 读取 showapi_res_error 字段定位具体原因 |

10. 常见问题 FAQ
Q:支持查询哪些域名?
已完成 ICP 备案的境内域名。未备案域名会返回未备案标识。
Q:数据更新频率如何?
数据来源于公开备案信息库,更新周期以库的刷新为准,存在一定延迟,不宜用于实时强一致校验。
Q:能否一次批量查询多个域名?
单次请求传入一个域名。批量查询需在业务系统中循环调用,并遵守频控与配额限制。
Q:高并发调用要注意什么?
做好本地结果缓存、请求限流与退避重试,避免对相同域名做无效重复请求。
Q:支持哪些运行环境?
任意支持 HTTP GET 与 JSON 解析的环境,如 Java、PHP、Python、Node.js 等,参考第 5 节示例。
11. 内容小结
ICP备案实时查询接口以 GET 方式提供基于域名的备案信息检索,返回备案状态与主体字段,鉴权方式为请求头 Authorization: APPCODE <appcode>。接入要点:构造 domain 查询参数、正确携带 APPCODE、解析 showapi_res_body 中的业务字段。
使用时的注意事项:遵守单域名查询与频控约束,对结果做本地缓存;返回数据仅供参考,业务决策需结合主管部门登记信息;出现非预期响应时,依据第 9 节错误码表定位。建议在集成前于调试台完成一次真实请求,确认返回字段与本地解析逻辑一致。