爱企查 item_search - 按关键字搜索企业列表接口对接全攻略:从入门到精通

简介: 爱企查item_search接口(searchV3)支持按关键词、行业、地区等多维度筛选企业信息,返回名称、信用代码、法人、风险等级等基础数据,适用于供应商筛选、市场调研与风控。接口采用HTTPS+Token认证,数据源自工商权威渠道,合规稳定。本指南覆盖权限申请、开发对接、调试优化全流程,助力高效集成。

爱企查 item_search 接口(官方规范名称为企业搜索接口 searchV3)是按关键词、行业、地区等多维度筛选企业列表的核心入口,支持分页返回企业基础信息(含名称、信用代码、经营状态、法人等),可联动 item_get(basicInfo)接口获取详情。该接口采用 HTTPS + Token 认证,数据源自工商登记等权威渠道,具备筛选维度丰富、数据合规、权限分级严格的特点。本攻略从接口认知、权限获取、实操对接、调试排错到生产级优化,提供全链路结构化指导,兼顾入门易用性与企业级稳定性。
一、接口核心认知:功能与适配场景

  1. 接口定位与核心价值
    核心功能:输入关键词(如 “江西新余 废旧物资回收”),搭配行业、地区、经营状态、注册资本等筛选条件,返回分页企业列表;支持按成立时间、注册资本、风险等级排序,单页最多返回 50 条数据,适配批量企业数据采集与精准筛选场景。
    爱企查数据特性
    权威合规:数据同步国家企业信用信息公示系统,符合《企业信息公示暂行条例》《个人信息保护法》等法规要求;
    筛选维度丰富:支持行业、地区、经营状态、注册资本区间、成立年限等 10+ 维度组合筛选,满足精细化需求;
    实时性强:企业经营状态、风险信息实时同步,基础信息缓存 24 小时;
    权限分级严格:基础筛选结果开放度高,敏感数据(如联系方式、股权结构)需进阶权限。
    典型应用场景
    供应商筛选系统:按 “地区 + 行业 + 经营状态” 筛选合规供应商,降低合作风险;
    市场调研平台:统计特定行业企业分布、规模、增长趋势,生成行业分析报告;
    风控系统:筛选高风险企业(经营异常、黑名单),预警合作风险。
  2. 核心参数与返回字段
    (1)请求参数(GET 方式提交,需携带 Token 请求头)
    参数类型 参数名称 类型 是否必填 说明 应用示例
    请求头参数 Authorization string 是 接口调用 Token,格式为 Bearer {access_token} Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
    查询参数 keyword string 是 搜索关键词(企业名称 / 行业 / 地址 / 产品等),需 URL 编码 江西新余 废旧物资回收
    industry string 否 行业大类,参考爱企查行业分类枚举 再生资源回收利用
    region string 否 地区(省 / 市 / 区),多级用 “-” 分隔 江西省-新余市
    regStatus string 否 经营状态,多状态用逗号分隔 存续,在业
    minCapital float 否 最低注册资本(万元) 100
    maxCapital float 否 最高注册资本(万元) 1000
    sortType string 否 排序方式 regCapital_desc(注册资本降序)/establishTime_desc(成立时间降序)/riskLevel_asc(风险等级升序)
    pageNum int 否 页码,默认 1 1
    pageSize int 否 单页条数,默认 20,最大 50 50
    注意事项
    keyword 支持多条件组合(如 “废旧物资回收 江西新余 存续”),接口自动分词匹配;
    region 参数需严格按照 “省 - 市 - 区” 格式填写,否则会导致筛选结果不准确;
    Token 有效期通常为 24 小时,需定时刷新避免调用失败。
    (2)返回核心字段(按业务场景分类)
    字段分类 核心字段 说明
    基础工商信息 name 企业名称
    creditCode 统一社会信用代码
    regNo 注册号
    regStatus 经营状态(存续 / 在业 / 注销 / 吊销)
    regCapital 注册资本(万元)
    establishTime 成立日期
    legalPersonName 法定代表人姓名
    industry 行业大类
    regAddress 注册地址
    风险与信用 riskLevel 风险等级(A/B/C/D/E)
    riskCount 风险信息条数
    blacklistFlag 是否列入黑名单(0 = 否 / 1 = 是)
    分页信息 total 搜索结果总数
    pageNum 当前页码
    pageSize 单页条数
    hasNextPage 是否有下一页(true/false)
    提示:item_search 仅返回基础信息,联系方式、股权结构、变更记录等需调用 item_get(basicInfo)接口获取。
  3. 接口限制与注意事项
    权限类型 日调用上限 调用频率 适用场景
    个人测试权限 100 次 / 天 2 次 / 秒 功能调试、小批量查询
    企业基础权限 1000 次 / 天 5 次 / 秒 中小型企业供应商筛选、市场调研
    企业高级权限 10000 次 / 天 20 次 / 秒 大型征信平台、风控系统、行业数据统计
    数据缓存规则:企业列表基础信息缓存 24 小时,风险等级、经营状态实时同步;
    内容限制:注销 / 吊销企业、敏感行业企业(如军工)不返回或仅返回基础信息;
    合规要求:数据仅用于合规的企业征信、供应商筛选、市场调研等业务,严禁转售、泄露或用于非法用途。
    二、对接前准备:权限与环境搭建
  4. 获取接口权限(官方唯一合规路径)
    爱企查 item_search 接口由爱企查开放平台提供,无通用公共接口,接入步骤如下:
    登录爱企查开放平台,注册企业账号;
    提交资质审核:上传企业营业执照、法人身份证正反面、应用用途说明(需明确数据使用场景);
    创建应用,填写应用名称、服务器 IP 白名单、数据用途,提交审核;
    审核通过后,获取 client_id 和 client_secret,用于生成 access_token;
    申请 searchV3(item_search)接口权限,根据业务需求选择权限等级(基础 / 进阶 / 高级)。
    风险提示:严禁使用非合规爬虫、第三方代理接口抓取数据,违反平台协议与法规,会导致账号封禁、法律追责。
  5. 技术环境准备
    (1)支持语言与协议
    协议:HTTPS(强制,HTTP 请求会被直接拦截);
    开发语言:Python、Java、PHP、Go 等主流语言,推荐 Python(适配 Token 管理、异步并发与数据解析)。
    (2)必备工具与依赖
    工具类型 推荐工具 用途
    调试工具 爱企查开放平台调试工具 自动生成 Token,验证参数与响应结果
    Postman 模拟 GET 请求,排查代码逻辑问题
    URL 编码工具 对中文关键词进行 URL 编码,避免参数解析错误
    开发依赖 requests 发送 HTTPS GET 请求
    jsonpath-ng 快速解析嵌套 JSON 响应数据
    pandas 批量整理企业列表数据,生成 Excel 报告
    辅助工具 Redis 缓存搜索结果,减少接口调用次数
    logging 记录接口调用日志,便于审计与问题追溯
    三、实操步骤:接口对接全流程(Python 示例)
    步骤 1:理解 Token 认证规则(核心,必掌握)
    爱企查接口采用 OAuth 2.0 Token 认证机制,流程如下:
    用 client_id 和 client_secret 调用 Token 接口,获取 access_token;
    每次调用 item_search 时,在请求头中携带 Authorization: Bearer {access_token};
    access_token 有效期通常为 24 小时,需定时刷新避免调用失败。
    步骤 2:完整代码实现(含 Token 管理 + 调用 + 数据标准化)
    (1)依赖安装
    bash
    运行
    pip install requests pandas jsonpath-ng
    (2)Python 代码实现
    import requests
    import time
    import pandas as pd
    import logging
    from urllib.parse import quote
    from jsonpath_ng import parse

日志配置

logging.basicConfig(
level=logging.INFO,
format="%(asctime)s - %(levelname)s - %(message)s",
handlers=[logging.FileHandler("aiqicha_item_search.log"), logging.StreamHandler()]
)

配置信息(替换为你的爱企查开放平台信息)

CONFIG = {
"client_id": "你的client_id",
"client_secret": "你的client_secret",
"token_url": "https://open.aiqicha.baidu.com/services/open/token/2.0",
"search_url": "https://open.aiqicha.baidu.com/services/open/ic/searchV3/2.0",
"access_token": "",
"token_expire_time": 0 # Token过期时间戳(秒)
}

def get_access_token() -> str:
"""获取/刷新爱企查access_token,自动处理过期"""
current_time = int(time.time())

# 检查Token是否有效(提前5分钟刷新)
if CONFIG["token_expire_time"] > current_time + 300:
    return CONFIG["access_token"]

try:
    response = requests.post(
        url=CONFIG["token_url"],
        data={
            "grant_type": "client_credentials",
            "client_id": CONFIG["client_id"],
            "client_secret": CONFIG["client_secret"]
        },
        timeout=10,
        verify=True
    )
    response.raise_for_status()
    result = response.json()

    if result.get("error"):
        error_msg = f"{result['error']}: {result['error_description']}"
        logging.error(f"Token获取失败:{error_msg}")
        return ""

    # 更新Token与过期时间
    CONFIG["access_token"] = result.get("access_token", "")
    expires_in = result.get("expires_in", 86400)  # 默认24小时
    CONFIG["token_expire_time"] = current_time + expires_in
    logging.info(f"Token刷新成功,有效期至 {time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(CONFIG['token_expire_time']))}")
    return CONFIG["access_token"]
except requests.exceptions.RequestException as e:
    logging.error(f"Token请求异常:{str(e)}")
    return ""
except Exception as e:
    logging.error(f"Token解析异常:{str(e)}")
    return ""

def standardize_ent_list_data(raw_ent: dict) -> dict:
"""标准化爱企查企业列表数据,统一输出格式"""
return {
"企业名称": raw_ent.get("name", ""),
"统一社会信用代码": raw_ent.get("creditCode", ""),
"注册号": raw_ent.get("regNo", ""),
"经营状态": raw_ent.get("regStatus", ""),
"注册资本(万元)": raw_ent.get("regCapital", 0),
"成立日期": raw_ent.get("establishTime", ""),
"法定代表人": raw_ent.get("legalPersonName", ""),
"行业大类": raw_ent.get("industry", ""),
"注册地址": raw_ent.get("regAddress", ""),
"风险等级": raw_ent.get("riskLevel", ""),
"风险信息条数": raw_ent.get("riskCount", 0),
"是否黑名单": raw_ent.get("blacklistFlag", 0),
"请求时间": time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
}

def aiqicha_item_search(
keyword: str,
industry: str = None,
region: str = None,
regStatus: str = None,
minCapital: float = None,
maxCapital: float = None,
sortType: str = "regCapital_desc",
pageNum: int = 1,
pageSize: int = 20
) -> dict:
"""调用爱企查item_search接口获取企业列表"""

# 1. 获取有效Token
access_token = get_access_token()
if not access_token:
    return {"success": False, "error_msg": "Token获取失败", "data": [], "pagination": {}}

# 2. 构建请求参数
params = {
    "keyword": quote(keyword, encoding="utf-8"),
    "sortType": sortType,
    "pageNum": pageNum,
    "pageSize": min(pageSize, 50)  # 单页最大50条
}
# 补充分筛参数
if industry:
    params["industry"] = industry
if region:
    params["region"] = region
if regStatus:
    params["regStatus"] = regStatus
if minCapital:
    params["minCapital"] = minCapital
if maxCapital:
    params["maxCapital"] = maxCapital

# 3. 构建请求头
headers = {"Authorization": f"Bearer {access_token}"}

try:
    # 4. 发送GET请求
    response = requests.get(
        url=CONFIG["search_url"],
        params=params,
        headers=headers,
        timeout=10,
        verify=True
    )
    response.raise_for_status()
    result = response.json()

    # 5. 解析响应结果
    if result.get("error"):
        error_msg = f"{result['error']}: {result['error_description']}"
        logging.error(f"搜索失败(关键词:{keyword}):{error_msg}")
        return {"success": False, "error_msg": error_msg, "data": [], "pagination": {}}

    search_result = result.get("result", {})
    raw_ents = search_result.get("items", [])
    if not raw_ents:
        logging.warning(f"无企业数据返回(关键词:{keyword})")
        return {"success": False, "error_msg": "无匹配数据", "data": [], "pagination": {}}

    # 6. 标准化数据
    standard_ents = [standardize_ent_list_data(ent) for ent in raw_ents]
    pagination = {
        "total": int(search_result.get("total", 0)),
        "pageNum": pageNum,
        "pageSize": pageSize,
        "hasNextPage": search_result.get("hasNextPage", False)
    }
    return {"success": True, "data": standard_ents, "pagination": pagination, "error_msg": ""}
except requests.exceptions.RequestException as e:
    logging.error(f"网络请求异常(关键词:{keyword}):{str(e)}")
    return {"success": False, "error_msg": f"网络异常:{str(e)}", "data": [], "pagination": {}}
except Exception as e:
    logging.error(f"数据解析异常(关键词:{keyword}):{str(e)}")
    return {"success": False, "error_msg": f"解析异常:{str(e)}", "data": [], "pagination": {}}

调用示例

if name == "main":
keyword = "江西新余 废旧物资回收"
region = "江西省-新余市"
regStatus = "存续,在业"
minCapital = 100
pageSize = 20

result = aiqicha_item_search(
    keyword=keyword,
    region=region,
    regStatus=regStatus,
    minCapital=minCapital,
    pageSize=pageSize
)
if result["success"]:
    print(f"搜索成功:共 {result['pagination']['total']} 条结果,当前页 {len(result['data'])} 条")
    for item in result["data"][:5]:
        print(f"企业名称:{item['企业名称']} | 经营状态:{item['经营状态']} | 风险等级:{item['风险等级']}")
    # 保存为Excel
    df = pd.DataFrame(result["data"])
    df.to_excel(f"aiqicha_ent_search_{keyword}.xlsx", index=False)
    # 翻页示例
    if result["pagination"]["hasNextPage"]:
        next_page = aiqicha_item_search(
            keyword=keyword,
            region=region,
            regStatus=regStatus,
            minCapital=minCapital,
            pageNum=2,
            pageSize=pageSize
        )
        print(f"下一页获取 {len(next_page['data'])} 条数据")
else:
    print(f"搜索失败:{result['error_msg']}")

四、调试与问题排查:快速解决对接异常

  1. 优先用官方工具调试(排除 Token 与参数问题)
    登录爱企查开放平台调试工具,选择 searchV3 接口;
    输入关键词、地区、经营状态等参数,工具自动生成 Token 并发送请求;
    若官方工具调用成功,说明代码的 Token 管理或参数拼接逻辑有误;若失败,检查权限或参数有效性。
  2. 高频问题排查表
    问题现象 常见原因 解决方案
    Token 验证失败(401) 1. client_id/client_secret 错误;
  3. Token 过期;
  4. Token 格式错误(缺少 Bearer 前缀) 1. 核对开放平台应用信息;
  5. 调用 get_access_token 刷新 Token;
  6. 确保请求头格式为 Bearer {token}
    权限不足(403) 1. 未申请 searchV3 接口权限;
  7. IP 不在白名单;
  8. 企业资质未审核通过 1. 在开放平台申请对应权限;
  9. 添加服务器 IP 到白名单;
  10. 补充资质材料完成审核
    参数错误(400) 1. keyword 为空;
  11. region 格式错误;
  12. pageSize>50 1. 确保 keyword 参数非空;
  13. 按 “省 - 市 - 区” 格式填写 region;
  14. pageSize 设置≤50
    无数据返回 1. 关键词无匹配;
  15. 筛选条件过严;
  16. 企业为注销 / 吊销状态 1. 简化关键词(如去掉地区限制);
  17. 放宽筛选条件(如取消注册资本限制);
  18. 调整 regStatus 参数包含更多状态
    响应超时(504) 1. 网络波动;
  19. 单页条数过多;
  20. 高峰期调用 1. 添加重试机制;
  21. 减小 pageSize(如改为 20);
  22. 避开高峰期(如工作日 9:00-11:00)
    五、进阶优化:生产级稳定性提升
  23. 性能与配额优化
    批量翻页优化:通过 hasNextPage 判断是否继续翻页,避免无效请求;多关键词查询时采用异步并发(aiohttp),控制并发数≤权限允许的频率上限(如企业基础权限 5 次 / 秒);
    智能缓存策略:用 Redis 缓存搜索结果,缓存 key 为 aiqichasearch关键词筛选条件页码,有效期 24 小时,空结果缓存 5 分钟,减少重复调用;
    字段精简:通过平台自定义字段功能,只返回业务必需字段(如企业名称、信用代码、经营状态),减少响应体积与耗时。
  24. 数据质量优化
    数据去重:按 creditCode(统一社会信用代码)去重,避免同一企业重复出现;
    异常值过滤:过滤注册资本≤0、经营状态为注销 / 吊销的企业(根据业务需求调整);
    关键词分词优化:对长关键词进行分词处理(如 “江西新余废旧物资回收有限公司”→“江西新余 废旧物资回收”),提升搜索覆盖率。
  25. 合规与安全
    密钥管理:生产环境将 client_id 和 client_secret 存储在配置中心(如 Nacos、Apollo),禁止硬编码;定期轮换密钥(每 3 个月一次);
    重试机制:对 403(频率超限)、504(超时)等错误添加指数退避重试策略,首次重试间隔 1 秒,之后间隔翻倍,最多重试 3 次;
    日志审计:记录每次调用的关键词、筛选条件、响应状态、数据条数,保留至少 30 天日志,满足合规审计要求。
    六、扩展场景:接口联动与功能升级
    联动 item_get 接口:通过 item_search 获取企业名称 / 信用代码列表,批量调用 item_get 获取企业详情,实现 “搜索 - 详情” 全链路数据采集;
    企业风险监控系统:定时调用 item_search 筛选目标企业,结合风险等级、经营状态变化,设置阈值触发热门告警(如风险条数突增);
    行业数据看板:聚合多地区、多行业的搜索结果,统计企业数量、注册资本分布、风险比例,生成可视化数据看板。
相关文章
|
3天前
|
缓存 JSON 数据安全/隐私保护
当当 item_search - 按关键字搜索商品接口对接全攻略:从入门到精通
当当item_search接口(dangdang.item.search)是商品搜索核心入口,支持关键词、分类、价格等多维度筛选,返回图书、百货等类目商品列表。具备实时性强、筛选丰富、权限分级等特点,适用于导购、竞品分析、选品铺货等场景。需通过AppKey/AppSecret签名认证,配合item_get实现全链路数据获取。本指南覆盖权限申请、签名生成、Python对接、调试排错及生产优化,助力高效稳定接入。
|
3天前
|
机器学习/深度学习 传感器 算法
Python | K折交叉验证的参数优化的决策树回归(DT Regression)预测及可视化算法
本教程介绍基于Python的决策树回归模型,结合K折交叉验证与贝叶斯、随机、网格搜索三种参数优化方法,实现数据预测与可视化,适用于多领域回归分析,含完整代码与数据。
34 3
|
5天前
|
人工智能 开发者
【2025.12.26】AI 原生应用开源开发者沙龙·广州站用户洞察
【2025.12.26】AI 原生应用开源开发者沙龙·广州站用户洞察
24 1
|
10天前
|
存储 机器学习/深度学习 应用服务中间件
阿里云服务器架构解析:从X86、ARM计算到GPU加速和高性能计算架构的区别与选型指南
在我们选购阿里云服务器的时候,云服务器的架构有多种选项,涵盖X86计算、ARM计算、GPU加速、弹性裸金属服务器以及高性能计算等,每种架构均具备独特的技术特性与适用场景。有的新手用户可能不知道他们之间的区别以及主要适用场景,本文为大家解析这些架构的差异,以及不同架构的核心优势与典型应用场景,为大家提供一套云服务器架构选型参考指南。
|
6月前
|
存储 安全 数据安全/隐私保护
SD卡无法读取怎么办?修复方法汇总
SD卡无法读取怎么办?别急,先排查设备接口、检查卡体物理损伤,尝试恢复数据再格式化修复。教你一步步解决常见问题,保护重要文件安全!
|
11月前
|
存储 人工智能 API
PDF to Podcast:英伟达开源黑科技!PDF 秒转播客/有声书,告别阅读疲劳轻松学习!
NVIDIA推出的PDF to Podcast工具,基于大型语言模型和文本到语音技术,将PDF文档转换为生动的音频内容。
743 14
PDF to Podcast:英伟达开源黑科技!PDF 秒转播客/有声书,告别阅读疲劳轻松学习!
|
Java Linux Android开发
深入探索Android系统架构:从Linux内核到应用层
本文将带领读者深入了解Android操作系统的复杂架构,从其基于Linux的内核到丰富多彩的应用层。我们将探讨Android的各个关键组件,包括硬件抽象层(HAL)、运行时环境、以及核心库等,揭示它们如何协同工作以支持广泛的设备和应用。通过本文,您将对Android系统的工作原理有一个全面的认识,理解其如何平衡开放性与安全性,以及如何在多样化的设备上提供一致的用户体验。
|
机器学习/深度学习 算法 数据挖掘
机器学习——DBSCAN 聚类算法
【6月更文挑战第8天】DBSCAN是一种基于密度的无监督聚类算法,能处理不规则形状的簇和噪声数据,无需预设簇数量。其优点包括自动发现簇结构和对噪声的鲁棒性。示例代码展示了其基本用法。然而,DBSCAN对参数选择敏感,计算效率受大规模数据影响。为改善这些问题,研究方向包括参数自适应和并行化实现。DBSCAN在图像分析、数据分析等领域有广泛应用,通过持续改进,将在未来保持重要地位。
577 2
|
移动开发 Java Android开发
uni-app&H5&Android混合开发三 || uni-app调用Android原生方法的三种方式
uni-app&H5&Android混合开发三 || uni-app调用Android原生方法的三种方式
2732 0
uni-app&H5&Android混合开发三 || uni-app调用Android原生方法的三种方式
|
机器学习/深度学习 存储 监控
云上智能视频分析:解锁视频数据的无限潜能
更加安全可靠:随着网络安全和数据保护意识的提高,云上智能视频分析系统将更加注重安全性和可靠性保障。未来的系统将采用更加先进的加密技术和安全防护措施,确保视频数据的传输和存储过程安全可靠;同时还将建立完善
469 0