×

顺企网 item_get - 获取企业详情接口对接全攻略:从入门到精通

万邦科技Lex 万邦科技Lex 发表于2026-01-05 14:21:59 浏览54 评论0

抢沙发发表评论

                            注册账号免费测试顺企网API数据接口

顺企网item_get接口是通过企业 ID(ent_id) 获取企业工商信息、资质、联系方式、经营状况等结构化数据的核心接口,适配企业征信、供应商筛选、市场调研、行业数据统计等场景。该接口采用HTTPS + 签名认证,数据具备强合规性、字段关联度高、更新周期稳定的特点。本攻略从接口认知、权限获取、实操对接、调试排错到生产级优化,提供全链路结构化指导,兼顾入门易用性与企业级稳定性。


一、接口核心认知:功能与适配场景

1. 接口定位与核心价值

  • 核心功能:输入企业唯一 ID(ent_id),返回企业基础工商信息、联系方式、资质证书、经营状态、股权结构、分支机构、行业标签、信用评级等核心数据;支持关联查询企业变更记录、年报信息(需进阶权限)。

  • 顺企网数据特性

    • 强合规属性:数据来自工商登记、官方备案等权威渠道,字段与国家企业信用信息公示系统一致;

    • 字段关联度高:企业 ID 关联工商、资质、经营等多维度数据,需按业务场景解析关联关系;

    • 更新周期稳定:基础工商信息缓存 24 小时,经营状态、资质信息缓存 12 小时,变更记录实时同步;

    • 权限分级严格:基础信息开放度高,敏感数据(如股权结构、财务数据)需企业授权或高级权限。

  • 典型应用场景

    1. 供应商筛选系统:查询合作企业资质、经营状态,降低合作风险;

    2. 企业征信平台:聚合企业工商、资质、信用数据,生成征信报告;

    3. 市场调研分析:统计特定行业企业分布、规模、经营状况,辅助决策;

    4. 风控系统:实时监控合作企业经营状态,预警异常变更(如法人变更、经营异常)。

2. 核心参数与返回字段

(1)请求参数(公共参数 + 私有参数,POST 方式提交)

参数类型参数名称类型是否必填说明应用示例
公共参数app_keystring开放平台应用 IDshunqi_20260101

timestamplong毫秒级时间戳1735689600000

signstringHMAC-SHA256 签名值32 位小写哈希串

versionstring接口版本v3

methodstring接口方法名shunqi.ent.get
私有参数ent_idstring企业唯一 IDENT20260101001

fieldsstring需返回字段列表,逗号分隔ent_name,reg_status,credit_code,contact_info

need_changeint是否返回变更记录(1 = 是,0 = 否)1
注意事项
  1. ent_id 格式为 “ENT + 日期 + 序号”,需从企业列表接口或顺企网官网商品链接中提取;

  2. fields 参数可指定返回字段,减少响应体积,提高调用效率;

  3. 时间戳有效期为 5 分钟,超出则签名失效。

(2)返回核心字段(按业务场景分类)

字段分类核心字段说明
基础工商信息ent_id企业唯一 ID

ent_name企业名称

credit_code统一社会信用代码

reg_status经营状态(存续 / 注销 / 吊销 / 经营异常)

reg_capital注册资本(万元)

establish_date成立日期

legal_person法定代表人

business_scope经营范围

reg_address注册地址
联系方式contact_person联系人

contact_phone联系电话

contact_email联系邮箱

website企业官网
资质与信用qualification_list资质证书列表(如营业执照、行业许可证)

credit_rating信用评级

blacklist_flag是否列入黑名单(0 = 否,1 = 是)
经营与股权business_status经营状态详情

shareholder_list股东列表(需进阶权限)

branch_list分支机构列表

change_record变更记录(需进阶权限)
分页与状态update_time数据更新时间

cache_time缓存有效期(秒)
提示:item_get 接口不返回财务数据,需调用 shunqi.ent.finance.get 等扩展接口获取(需企业授权)。

3. 接口限制与注意事项

  • 调用频率与配额限制

    | 权限类型 | 日调用上限 | 调用频率 | 适用场景 |

    |----------|------------|----------|----------|

    | 个人测试权限 | 500 次 / IP | 2 次 / 秒 | 功能调试、个人研究 |

    | 企业基础权限 | 5000 次 / IP | 10 次 / 秒 | 中小型企业供应商筛选、市场调研 |

    | 企业高级权限 | 50000 次 / IP | 50 次 / 秒 | 大型征信平台、风控系统、行业数据统计 |

  • 数据缓存规则:基础工商信息缓存 24 小时,资质、经营状态缓存 12 小时,变更记录实时同步;

  • 内容限制:未公示企业、注销企业、列入异常名录且未公示企业不返回敏感数据;

  • 合规要求:数据仅用于合规企业征信、供应商筛选、市场调研等业务,遵守《企业信息公示暂行条例》《个人信息保护法》等法规,严禁用于非法用途。


二、对接前准备:权限与环境搭建

1. 获取接口权限(官方唯一合规路径)

顺企网item_get接口由顺企网开放平台提供,无通用公共接口,接入步骤如下:
  1. 登录顺企网开放平台(https://open.shunqi.com),注册企业账号;

  2. 提交资质审核:企业营业执照、法人身份证、应用用途说明等材料;

  3. 创建应用,填写应用名称、用途、服务器 IP 等信息,提交审核;

  4. 审核通过后,获取 app_keyapp_secret,配置 IP 白名单;

  5. 申请 item_get 接口权限,根据业务需求选择权限等级(基础 / 进阶 / 高级)。

风险提示:严禁使用非合规爬虫、第三方接口抓取企业数据,违反平台协议与法规,存在账号封禁、法律追责风险。

2. 技术环境准备

(1)支持语言与协议

  • 协议:HTTPS(强制,HTTP 请求会被拦截);

  • 开发语言:Python、Java、PHP、Go 等主流语言,推荐 Python(适配签名生成与复杂数据解析)。

(2)必备工具与依赖

工具类型推荐工具用途
调试工具顺企网官方调试工具自动生成签名,验证接口参数与响应

Postman模拟 POST 请求,排查代码逻辑问题

时间戳生成器生成毫秒级时间戳,确保格式正确
开发依赖requests发送 HTTPS POST 请求

hashlib/hmac生成 HMAC-SHA256 签名

pandas批量整理企业详情数据

jsonpath-ng快速解析嵌套 JSON 响应
辅助工具Redis缓存企业详情数据,减少接口调用次数

logging记录接口调用日志,便于审计与问题追溯

三、实操步骤:接口对接全流程(Python 示例)

步骤 1:理解签名认证规则(核心,必掌握)

顺企网接口普遍采用 HMAC-SHA256 签名机制,签名生成错误会直接导致调用失败,流程如下:
  1. 收集所有请求参数(公共参数 + 私有参数),排除 sign 字段;

  2. 参数名 ASCII 码升序排序;

  3. 拼接成 key1=value1&key2=value2&... 的字符串(参数值需 UTF-8 编码);

  4. 末尾拼接 &app_secret=你的app_secret

  5. 使用 app_secret 作为密钥,对拼接字符串进行 HMAC-SHA256 加密,生成 32 位小写签名串,作为 sign 参数值。

步骤 2:完整代码实现(含签名 + 调用 + 数据标准化)

(1)依赖安装

bash

(2)Python 代码实现

import requests
import hmac
import hashlib
import time
import pandas as pd
import logging
from urllib.parse import urlencode

# 日志配置
logging.basicConfig(
    level=logging.INFO,
    format="%(asctime)s - %(levelname)s - %(message)s",
    handlers=[logging.FileHandler("shunqi_item_get.log"), logging.StreamHandler()]
)

# 配置信息(替换为你的顺企网开放平台信息)
CONFIG = {
    "app_key": "你的app_key",
    "app_secret": "你的app_secret",
    "api_url": "https://open.shunqi.com/api/v3/shunqi/ent/get",  # 顺企网接口地址
    "version": "v3"
}

def generate_sign(params: dict, app_secret: str) -> str:
    """生成顺企网接口HMAC-SHA256签名"""
    # 1. 排除sign字段,筛选非空参数
    filtered_params = {k: v for k, v in params.items() if v and k != "sign"}
    # 2. 按参数名ASCII升序排序
    sorted_params = sorted(filtered_params.items(), key=lambda x: x[0])
    # 3. 拼接参数字符串(UTF-8编码)
    param_str = urlencode(sorted_params, encoding="utf-8") + f"&app_secret={app_secret}"
    # 4. HMAC-SHA256加密,生成小写签名
    sign = hmac.new(
        app_secret.encode("utf-8"),
        param_str.encode("utf-8"),
        hashlib.sha256
    ).hexdigest().lower()
    return sign

def standardize_ent_data(raw_ent: dict) -> dict:
    """标准化顺企网企业详情数据,统一输出格式"""
    contact_info = raw_ent.get("contact_info", {})
    qualification_info = raw_ent.get("qualification_info", {})
    business_info = raw_ent.get("business_info", {})

    return {
        "企业ID": raw_ent.get("ent_id", ""),
        "企业名称": raw_ent.get("ent_name", ""),
        "统一社会信用代码": raw_ent.get("credit_code", ""),
        "经营状态": raw_ent.get("reg_status", ""),
        "注册资本(万元)": raw_ent.get("reg_capital", 0),
        "成立日期": raw_ent.get("establish_date", ""),
        "法定代表人": raw_ent.get("legal_person", ""),
        "经营范围": raw_ent.get("business_scope", ""),
        "注册地址": raw_ent.get("reg_address", ""),
        "联系人": contact_info.get("contact_person", ""),
        "联系电话": contact_info.get("contact_phone", ""),
        "联系邮箱": contact_info.get("contact_email", ""),
        "企业官网": contact_info.get("website", ""),
        "资质证书数量": len(qualification_info.get("qualification_list", [])),
        "信用评级": raw_ent.get("credit_rating", ""),
        "是否黑名单": raw_ent.get("blacklist_flag", 0),
        "经营状态详情": business_info.get("business_status", ""),
        "数据更新时间": raw_ent.get("update_time", ""),
        "请求时间": time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
    }

def shunqi_item_get(ent_id: str, fields: str = None, need_change: int = 0) -> dict:
    """调用顺企网item_get接口获取企业详情"""
    # 1. 构建请求参数
    params = {
        "app_key": CONFIG["app_key"],
        "method": "shunqi.ent.get",
        "timestamp": str(int(time.time() * 1000)),
        "version": CONFIG["version"],
        "ent_id": ent_id,
        "need_change": need_change
    }
    # 补充分筛参数
    if fields:
        params["fields"] = fields

    # 2. 生成签名
    params["sign"] = generate_sign(params, CONFIG["app_secret"])

    try:
        # 3. 发送POST请求
        response = requests.post(
            url=CONFIG["api_url"],
            data=params,
            headers={"Content-Type": "application/x-www-form-urlencoded; charset=utf-8"},
            timeout=10,
            verify=True
        )
        response.raise_for_status()
        result = response.json()

        # 4. 解析响应结果
        if result.get("code") != 0:
            error_msg = f"{result.get('code')}: {result.get('msg')}"
            logging.error(f"接口调用失败(企业ID:{ent_id}):{error_msg}")
            return {"success": False, "error_msg": error_msg, "data": {}}

        raw_ent = result.get("data", {})
        if not raw_ent:
            logging.warning(f"无企业数据返回(企业ID:{ent_id})")
            return {"success": False, "error_msg": "无企业数据", "data": {}}

        # 5. 标准化数据
        standard_data = standardize_ent_data(raw_ent)
        return {
            "success": True,
            "data": standard_data,
            "error_msg": ""
        }
    except requests.exceptions.RequestException as e:
        logging.error(f"网络请求异常(企业ID:{ent_id}):{str(e)}")
        return {"success": False, "error_msg": f"网络异常:{str(e)}", "data": {}}
    except Exception as e:
        logging.error(f"数据解析异常(企业ID:{ent_id}):{str(e)}")
        return {"success": False, "error_msg": f"解析异常:{str(e)}", "data": {}}

# 调用示例
if __name__ == "__main__":
    # 替换为真实的企业ID
    ent_id = "ENT20260101001"
    # 按需指定返回字段
    fields = "ent_name,credit_code,reg_status,legal_person,business_scope"
    # 是否获取变更记录(1=是,0=否)
    need_change = 0

    result = shunqi_item_get(ent_id=ent_id, 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"shunqi_ent_detail_{ent_id}.xlsx", index=False)
    else:
        print(f"获取失败:{result['error_msg']}")

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

1. 优先用官方工具调试(排除签名问题)

  1. 登录顺企网开放平台调试工具,选择 shunqi.ent.get 接口;

  2. 输入 ent_idfields 等参数,工具自动生成签名;

  3. 发送请求,查看响应结果。若官方工具调用成功,说明代码签名逻辑有误;若失败,检查权限或参数。

2. 高频问题排查表

问题现象常见原因解决方案
签名验证失败(401)1. app_key/app_secret 错误;
2. 参数排序错误;
3. 时间戳过期;
4. 参数值未 UTF-8 编码
1. 核对平台应用信息;
2. 严格按参数名 ASCII 升序排序;
3. 校准本地时间,确保时间戳在 5 分钟内;
4. 对中文参数值进行 UTF-8 编码
权限不足(403)1. 未申请 item_get 接口权限;
2. IP 不在白名单;
3. 企业资质未审核通过
1. 在开放平台申请对应权限;
2. 添加服务器 IP 到白名单;
3. 补充资质材料,完成审核
参数错误(400)1. ent_id 格式错误 / 无效;
2. fields 参数格式错误;
3. need_change 参数值错误
1. 核对 ent_id 是否与顺企网规则一致(ENT + 日期 + 序号);
2. fields 参数用逗号分隔字段名;
3. need_change 参数值为 0 或 1
无企业数据返回1. 企业已注销 / 吊销;
2. ent_id 无效;
3. 企业为敏感行业(如军工),数据未开放
1. 在顺企网官网搜索 ent_id,确认企业状态;
2. 更换有效 ent_id 测试;
3. 敏感行业企业需特殊权限申请
数据更新不及时1. 缓存未过期;
2. 数据同步延迟
1. 等待缓存过期(基础信息 24 小时,资质信息 12 小时);
2. 调用接口时添加 force_refresh=1 参数(需高级权限)

五、进阶优化:生产级稳定性提升

1. 性能与配额优化

  • 批量调用优化:多企业 ID 查询时,采用异步并发请求(aiohttp),控制并发数≤权限允许的频率上限(如企业基础权限 10 次 / 秒);

  • 智能缓存策略:用 Redis 缓存企业详情,缓存 key 为 shunqi_ent_企业ID,缓存有效期:基础信息 24 小时,资质信息 12 小时,空结果 5 分钟;

  • 字段按需获取:通过fields参数指定必要字段,不获取无关数据(如股东列表非必需时不传入),减少响应体积与耗时。

2. 数据质量优化

  • 数据一致性校验:对比企业名称与统一社会信用代码,校验数据准确性,过滤异常数据;

  • 字段标准化:将非结构化字段(如经营范围)解析为行业标签,便于后续数据分析;

  • 关联数据适配:建立企业 ID 与变更记录、分支机构的映射表,自动关联多维度数据。

3. 合规与安全

  • 密钥管理:生产环境将app_keyapp_secret存储在配置中心(如 Nacos、Apollo),禁止硬编码;定期轮换密钥(每 3 个月一次);

  • 重试机制:对 403(频率超限)、504(超时)等错误添加指数退避重试策略,首次重试间隔 1 秒,之后翻倍,最多重试 3 次;

  • 日志审计:记录每次调用的ent_id、参数、响应状态、数据更新时间,保留至少 30 天日志,满足合规审计要求。


六、扩展场景:接口联动与功能升级

  1. 联动 shunqi.ent.search 接口:通过关键词(如 “江西新余 废旧物资回收”)搜索获取企业 ID 列表,再批量调用item_get获取详情,实现 “搜索 - 详情” 全链路数据采集;

  2. 企业风控模型:结合企业工商、资质、经营、变更记录数据,构建风控模型,预警经营异常、资质过期等风险;

  3. 供应商管理系统:对接企业 ERP 系统,自动提取合作企业 ID,调用item_get获取最新资质与经营状态,实现供应商动态管理


群贤毕至

访客