天眼查item_get接口(官方规范名称为企业基本信息接口 baseinfoV2)是通过企业名称、统一社会信用代码、注册号或企业 ID 获取企业工商基础信息、联系方式、经营状态、变更记录等结构化数据的核心接口,适配企业征信、供应商筛选、风控合规等场景天眼查开放平台。该接口采用HTTPS+Token 认证,数据源自工商登记、官方备案等权威渠道,具备字段完整、更新实时、权限分级严格的特点天眼查开放平台。本攻略从接口认知、权限获取、实操对接、调试排错到生产级优化,提供全链路结构化指导,兼顾入门易用性与企业级稳定性。
一、接口核心认知:功能与适配场景
1. 接口定位与核心价值
- 核心功能:输入企业名称、统一社会信用代码、注册号或企业 ID(keyword 参数),返回企业基础工商信息、联系方式、经营状态、变更记录、股权结构(需进阶权限)等核心数据;支持关联查询企业历史名称、分支机构等信息天眼查开放平台。
- 天眼查数据特性
- 权威合规:数据来自工商登记、官方备案等权威渠道,符合《企业信息公示暂行条例》等法规要求天眼查开放平台;
- 字段完整:覆盖企业基础工商、联系方式、经营状态、变更记录等多维度数据,字段与国家企业信用信息公示系统一致;
- 更新实时:基础工商信息缓存 24 小时,经营状态、变更记录实时同步;
- 权限分级:基础信息开放度高,敏感数据(如股权结构、财务数据)需企业授权或高级权限。
- 典型应用场景
- 供应商筛选系统:查询合作企业资质、经营状态,降低合作风险;
- 企业征信平台:聚合企业工商、资质、信用数据,生成征信报告;
- 风控系统:实时监控合作企业经营状态,预警异常变更(如法人变更、经营异常)。
2. 核心参数与返回字段
(1)请求参数(GET 方式提交,需携带 Token 请求头)天眼查开放平台
| 参数类型 | 参数名称 | 类型 | 是否必填 | 说明 | 应用示例 |
|---|---|---|---|---|---|
| 请求头参数 | Authorization | string | 是 | 接口调用 Token(开放平台获取) | Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9... |
| 查询参数 | keyword | string | 是 | 搜索关键字(企业名称、统一社会信用代码、注册号或企业 ID),需 URL 编码 | 江西新余废旧物资回收有限公司/91360502MA398XXXX |
| fields | string | 否 | 需返回字段列表,逗号分隔 | regStatus,legalPerson,businessScope,contactInfo | |
| need_change | int | 否 | 是否返回变更记录(1 = 是,0 = 否,默认 0) | 1 |
注意事项
keyword需 URL 编码,避免中文或特殊字符导致参数解析错误天眼查开放平台;- Token 有效期通常为 24 小时,需定期刷新;
- 接口支持 GET 请求,参数需拼接在 URL 中,请求头携带 Authorization Token天眼查开放平台。
(2)返回核心字段(按业务场景分类)天眼查开放平台
| 字段分类 | 核心字段 | 说明 |
|---|---|---|
| 基础工商信息 | name | 企业名称 |
| regNo | 注册号 | |
| creditCode | 统一社会信用代码 | |
| regStatus | 经营状态(存续 / 注销 / 吊销 / 经营异常) | |
| regCapital | 注册资本(万元) | |
| establishTime | 成立日期 | |
| legalPerson | 法定代表人 | |
| businessScope | 经营范围 | |
| regAddress | 注册地址 | |
| companyType | 企业类型 | |
| 联系方式 | contactPhone | 联系电话 |
| contactEmail | 联系邮箱 | |
| website | 企业官网 | |
| 变更与历史 | historyNames | 历史名称 |
| changeRecord | 变更记录(需 need_change=1) | |
| 信用与风险 | riskFlag | 是否有风险记录(0 = 否,1 = 是) |
| blacklistFlag | 是否列入黑名单(0 = 否,1 = 是) | |
| 分页与状态 | updateTime | 数据更新时间 |
| cacheTime | 缓存有效期(秒) |
提示:
item_get接口不返回财务数据,需调用finance.get等扩展接口获取(需企业授权)。
3. 接口限制与注意事项
- 调用频率与配额限制| 权限类型 | 日调用上限 | 调用频率 | 适用场景 ||----------|------------|----------|----------|| 个人测试权限 | 100 次 / 天 | 2 次 / 秒 | 功能调试、个人研究 || 企业基础权限 | 1000 次 / 天 | 5 次 / 秒 | 中小型企业供应商筛选、市场调研 || 企业高级权限 | 10000 次 / 天 | 20 次 / 秒 | 大型征信平台、风控系统、行业数据统计 |
- 数据缓存规则:基础工商信息缓存 24 小时,变更记录、经营状态实时同步;
- 内容限制:未公示企业、注销企业、列入异常名录且未公示企业不返回敏感数据;
- 合规要求:数据仅用于合规企业征信、供应商筛选、市场调研等业务,遵守《企业信息公示暂行条例》《个人信息保护法》等法规,严禁用于非法用途。
二、对接前准备:权限与环境搭建
1. 获取接口权限(官方唯一合规路径)天眼查开放平台
天眼查item_get接口由天眼查开放平台提供,接入步骤如下:
- 登录天眼查开放平台,注册企业账号;
- 提交资质审核:企业营业执照、法人身份证、应用用途说明等材料;
- 创建应用,填写应用名称、用途、服务器 IP 等信息,提交审核;
- 审核通过后,获取
access_token(接口调用核心凭证),配置 IP 白名单; - 申请
baseinfoV2(item_get)接口权限,根据业务需求选择权限等级(基础 / 进阶 / 高级)。
风险提示:严禁使用非合规爬虫、第三方接口抓取企业数据,违反平台协议与法规,存在账号封禁、法律追责风险。
2. 技术环境准备
(1)支持语言与协议
- 协议:HTTPS(强制,HTTP 请求会被拦截);
- 开发语言:Python、Java、PHP、Go 等主流语言,推荐 Python(适配 Token 管理与复杂数据解析)。
(2)必备工具与依赖
| 工具类型 | 推荐工具 | 用途 |
|---|---|---|
| 调试工具 | 天眼查官方调试工具 | 自动生成 Token,验证接口参数与响应 |
| Postman | 模拟 GET 请求,排查代码逻辑问题 | |
| URL 编码工具 | 对 keyword 参数进行 URL 编码,确保格式正确 | |
| 开发依赖 | requests | 发送 HTTPS GET 请求 |
| jsonpath-ng | 快速解析嵌套 JSON 响应 | |
| pandas | 批量整理企业详情数据 | |
| 辅助工具 | Redis | 缓存企业详情数据,减少接口调用次数 |
| logging | 记录接口调用日志,便于审计与问题追溯 |
三、实操步骤:接口对接全流程(Python 示例)
步骤 1:理解 Token 认证规则(核心,必掌握)
天眼查接口采用Token 认证机制,流程如下:
- 登录天眼查开放平台,创建应用并获取
client_id和client_secret; - 调用
token接口,获取access_token; - 每次调用
item_get接口时,在请求头中携带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 # 封装好API供应商demo url=https://console.open.onebound.cn/console/?i=Lex # 日志配置 logging.basicConfig( level=logging.INFO, format="%(asctime)s - %(levelname)s - %(message)s", handlers=[logging.FileHandler("tianyancha_item_get.log"), logging.StreamHandler()] ) # 配置信息(替换为你的天眼查开放平台信息) CONFIG = { "client_id": "你的client_id", "client_secret": "你的client_secret", "token_url": "https://open.api.tianyancha.com/services/open/token/2.0", "item_get_url": "https://open.api.tianyancha.com/services/open/ic/baseinfoV2/2.0", "token_expire_time": 0 # Token过期时间(秒) } def get_access_token() -> str: """获取天眼查access_token,处理过期自动刷新""" current_time = int(time.time()) if CONFIG["token_expire_time"] > current_time: return CONFIG.get("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.get('error')}: {result.get('error_description')}" logging.error(f"Token获取失败:{error_msg}") return "" access_token = result.get("access_token", "") expires_in = result.get("expires_in", 86400) # 默认24小时 CONFIG["access_token"] = access_token CONFIG["token_expire_time"] = current_time + expires_in - 300 # 提前5分钟刷新 return 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_data(raw_ent: dict) -> dict: """标准化天眼查企业详情数据,统一输出格式""" return { "企业名称": raw_ent.get("name", ""), "统一社会信用代码": raw_ent.get("creditCode", ""), "经营状态": raw_ent.get("regStatus", ""), "注册资本(万元)": raw_ent.get("regCapital", 0), "成立日期": raw_ent.get("establishTime", ""), "法定代表人": raw_ent.get("legalPerson", ""), "经营范围": raw_ent.get("businessScope", ""), "注册地址": raw_ent.get("regAddress", ""), "联系电话": raw_ent.get("contactPhone", ""), "联系邮箱": raw_ent.get("contactEmail", ""), "企业官网": raw_ent.get("website", ""), "历史名称": raw_ent.get("historyNames", ""), "是否有风险记录": raw_ent.get("riskFlag", 0), "是否黑名单": raw_ent.get("blacklistFlag", 0), "数据更新时间": raw_ent.get("updateTime", ""), "请求时间": time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) } def tianyancha_item_get( keyword: str, fields: str = None, need_change: int = 0 ) -> dict: """调用天眼查item_get接口获取企业详情""" access_token = get_access_token() if not access_token: return {"success": False, "error_msg": "Token获取失败", "data": {}} # 构建请求参数 params = {"keyword": quote(keyword, encoding="utf-8")} if fields: params["fields"] = fields if need_change: params["need_change"] = 1 headers = {"Authorization": f"Bearer {access_token}"} try: # 发送GET请求 response = requests.get( url=CONFIG["item_get_url"], params=params, headers=headers, timeout=10, verify=True ) response.raise_for_status() result = response.json() # 解析响应结果 if result.get("error"): error_msg = f"{result.get('error')}: {result.get('error_description')}" logging.error(f"接口调用失败(关键词:{keyword}):{error_msg}") return {"success": False, "error_msg": error_msg, "data": {}} raw_ent = result.get("result", {}) if not raw_ent: logging.warning(f"无企业数据返回(关键词:{keyword})") return {"success": False, "error_msg": "无企业数据", "data": {}} # 标准化数据 standard_data = standardize_ent_data(raw_ent) return { "success": True, "data": standard_data, "error_msg": "" } except requests.exceptions.RequestException as e: logging.error(f"网络请求异常(关键词:{keyword}):{str(e)}") return {"success": False, "error_msg": f"网络异常:{str(e)}", "data": {}} except Exception as e: logging.error(f"数据解析异常(关键词:{keyword}):{str(e)}") return {"success": False, "error_msg": f"解析异常:{str(e)}", "data": {}} # 封装好API供应商demo url=https://console.open.onebound.cn/console/?i=Lex # 调用示例 if __name__ == "__main__": keyword = "江西新余废旧物资回收有限公司" fields = "name,creditCode,regStatus,legalPerson,businessScope" need_change = 0 result = tianyancha_item_get(keyword=keyword, fields=fields, need_change=need_change) if result["success"]: print("天眼查企业详情:") for k, v in result["data"].items(): print(f"{k}: {v}") # 保存为Excel df = pd.DataFrame([result["data"]]) df.to_excel(f"tianyancha_ent_detail_{keyword}.xlsx", index=False) else: print(f"获取失败:{result['error_msg']}")四、调试与问题排查:快速解决对接异常
1. 优先用官方工具调试(排除 Token 问题)
- 登录天眼查开放平台调试工具,选择
baseinfoV2(item_get)接口; - 输入关键词、fields 等参数,工具自动生成 Token;
- 发送请求,查看响应结果。若官方工具调用成功,说明代码 Token 管理或参数解析逻辑有误;若失败,检查权限或参数。
2. 高频问题排查表
| 问题现象 | 常见原因 | 解决方案 |
|---|---|---|
| Token 验证失败(401) | 1. client_id/client_secret 错误;2. Token 过期;3. Token 格式错误 | 1. 核对平台应用信息;2. 调用 get_access_token 刷新 Token;3. 确保 Authorization 头格式为 “Bearer {token}” |
| 权限不足(403) | 1. 未申请 baseinfoV2 接口权限;2. IP 不在白名单;3. 企业资质未审核通过 | 1. 在开放平台申请对应权限;2. 添加服务器 IP 到白名单;3. 补充资质材料,完成审核 |
| 参数错误(400) | 1. keyword 为空;2. keyword 未 URL 编码;3. fields 参数格式错误 | 1. 确保 keyword 参数非空;2. 对中文 keyword 进行 URL 编码;3. fields 参数用逗号分隔字段名 |
| 无企业数据返回 | 1. 关键词无匹配;2. 企业已注销 / 吊销;3. 企业为敏感行业(如军工),数据未开放 | 1. 核对关键词是否准确;2. 在天眼查官网搜索关键词,确认企业状态;3. 敏感行业企业需特殊权限申请 |
| 数据更新不及时 | 1. 缓存未过期;2. 数据同步延迟 | 1. 等待缓存过期(基础信息 24 小时);2. 调用接口时添加force_refresh=1参数(需高级权限) |
五、进阶优化:生产级稳定性提升
1. 性能与配额优化
- 批量调用优化:多企业查询时,采用异步并发请求(
aiohttp),控制并发数≤权限允许的频率上限(如企业基础权限 5 次 / 秒); - 智能缓存策略:用 Redis 缓存企业详情,缓存 key 为
tianyancha_ent_关键词,缓存有效期 24 小时,空结果 5 分钟; - 字段按需获取:通过
fields参数指定必要字段,不获取无关数据,减少响应体积与耗时。
2. 数据质量优化
- 数据一致性校验:对比企业名称与统一社会信用代码,校验数据准确性,过滤异常数据;
- 字段标准化:将非结构化字段(如经营范围)解析为行业标签,便于后续数据分析;
- 关联数据适配:建立企业 ID 与变更记录、分支机构的映射表,自动关联多维度数据。
3. 合规与安全
- 密钥管理:生产环境将
client_id和client_secret存储在配置中心(如 Nacos、Apollo),禁止硬编码;定期轮换密钥(每 3 个月一次); - 重试机制:对 403(频率超限)、504(超时)等错误添加指数退避重试策略,首次重试间隔 1 秒,之后翻倍,最多重试 3 次;
- 日志审计:记录每次调用的关键词、参数、响应状态、数据更新时间,保留至少 30 天日志,满足合规审计要求。
六、扩展场景:接口联动与功能升级
- 联动 item_search 接口:通过关键词(如 “江西新余 废旧物资回收”)搜索获取企业列表,再批量调用
item_get获取详情,实现 “搜索 - 详情” 全链路数据采集; - 企业风控模型:结合企业工商、经营、变更记录数据,构建风控模型,预警经营异常、资质过期等风险;
- 供应商管理系统:对接企业 ERP 系统,自动提取合作企业关键词,调用
item_get获取最新资质与经营状态,实现供应商动态管理