企查查 MCP 接口批量抓取企业 工商/经营/风险/知产 67 项字段,断点续爬、并行调用、CLI 字段筛选
企查查 MCP 批量抓取脚本
通过企查查官方 MCP 接口(agent.qcc.com)批量获取企业 工商 / 经营 / 风险 / 知产 四大类字段数据。
- 可用字段数:67 项(工商 14 / 经营 13 / 风险 34 / 知产 6)
- 默认抓取:推荐核心 25 项(不传
--fields时的行为) - 可自由选择字段:CLI 参数 / 按分组批量选
准备工作(第一次跑必看)
步骤 1:安装 Python 依赖
只需要一个第三方库 requests:
pip install requests
⚠ 不要开代理 / VPN 企查查接口只接受国内 IP,挂着 Clash / V2ray / Tailscale 等会被服务端拒(错误码
100002 暂不支持境外IP请求)。 程序已自动忽略 Windows 系统代理与环境变量代理(trust_env=False),但如果你开了 TUN 模式 / 全局代理 / 虚拟网卡,仍会接管所有流量,需要手动关闭代理或在代理软件里把*.qcc.com加到直连规则。
步骤 2:填 Token(重要!)
打开同目录下的 config.json,把里面 4 处 YOUR_TOKEN_HERE 替换成你自己的企查查 MCP Token。
Token 在企查查 agent 平台(agent.qcc.com)登录后获取,4 个 server 用同一个 token 即可。
填完之后 config.json 应该长这样:
{
"mcpServers": {
"qcc-company": {
"url": "https://agent.qcc.com/mcp/company/stream",
"headers": {
"Authorization": "Bearer 你的真实Token贴这里"
}
},
...其他 3 个 server 同理
}
}
步骤 3:准备名单 CSV
qcc_search_list.csv 是要查的公司名单,列名固定为 entity_name,entity_type,source,uscc:
entity_name:公司全称(必填一个,没 USCC 时用这个查)uscc:18 位统一社会信用代码(有就填,优先用这个查,更准)entity_type/source:你自己的分类标签,不影响抓取
把示例两行删掉,换成你自己的名单即可。
积分消耗提醒(重要)
- 每调用一次 MCP tool 消耗 1 个积分
- 默认核心 25 项:单条实体 = 25 积分
- 全部 67 项:单条实体 = 67 积分(约 ×2.68)
- 跑前先算账:
实体数 × 字段数 ≤ 当前账户余额 - 代码在
errors字段会记录code 300008: 当前积分余额不足,充值后重跑即可(断点续爬会自动跳过已成功的)
快速上手
# 验证配置:跑名单前 5 条
py qcc_mcp.py --test
# 全量抓取(默认核心 25 项,断点续爬)
py qcc_mcp.py
# 跑全部 67 项字段(消耗翻 2.68 倍,慎用)
py qcc_mcp.py --all-fields
# 临时抓一家
py qcc_mcp.py --entity "深圳华信股权投资基金管理有限公司"
# 抓完合并
py qcc_mcp.py --merge
字段选择
# 查看全部 67 项(★ 为核心)
py qcc_mcp.py --list-fields
# 只抓指定字段(中文名,空格或逗号分隔)
py qcc_mcp.py --fields 工商信息 股东信息 专利
py qcc_mcp.py --fields "工商信息,股东信息,专利"
# 按分组批量抓取(工商 / 经营 / 风险 / 知产)
py qcc_mcp.py --fields-group 工商 风险
# 跑全部 67 项
py qcc_mcp.py --all-fields
# 分组 + 单独字段混用(去重)
py qcc_mcp.py --fields-group 工商 --fields 专利 司法拍卖
优先级:--all-fields > --fields / --fields-group > 默认核心 25 项
三种工作模式
模式 1:名单模式(默认)
从 qcc_search_list.csv 按行顺序跑,用 uscc(有)或 entity_name(无)作为查询键。
py qcc_mcp.py # 全量
py qcc_mcp.py --test # 只跑前 5 条
py qcc_mcp.py --start 100 --end 200 # 跑第 100-199 条
断点续爬:已完成的 key 记录在 qcc_data_mcp/_progress.json,中断后再跑会自动跳过;Ctrl+C 中断时会保存进度。
模式 2:手动模式(临时补抓,不写进度文件)
三种输入方式任选其一,可混用:
# 方式 A:命令行参数(18 位字母数字 → USCC,否则 → 企业名)
py qcc_mcp.py --entity 9144030059070463XP
py qcc_mcp.py --entity "深圳华信股权投资基金管理有限公司"
py qcc_mcp.py --entity USCC1 USCC2 "某公司名"
# 方式 B:交互输入,启动后逐行敲,空行或 Ctrl+Z 回车结束
py qcc_mcp.py -i
# 方式 C:从文本文件读(一行一条,# 开头是注释)
py qcc_mcp.py --entity-file list.txt
手动模式不读不写 _progress.json,适合临时补抓名单外的公司。
模式 3:合并模式
把 qcc_data_mcp/json/ 下所有单体 JSON 合并成大表:
py qcc_mcp.py --merge
# 产出:
# qcc_data_mcp/qcc_全量数据.json —— 所有实体的数组
# qcc_data_mcp/qcc_全量数据汇总.csv —— 扁平化(每行一个实体,列为 工商.企业名称/工商.注册资本/…)
参数速查
| 参数 | 作用 |
| --------------------------- | ------------------------------------- |
| --test | 只跑名单前 5 条 |
| --start N / --end M | 跑名单 [N, M) 区间 |
| --entity NAME/USCC ... | 手动抓一个或多个实体 |
| -i / --interactive | 交互输入模式 |
| --entity-file PATH | 从文本文件读实体(一行一条) |
| --merge | 合并已抓数据为大 JSON + CSV |
| --workers N | 单实体内工具并发数(默认 6) |
| --list-fields | 列出全部 67 项可选字段(★ 标核心) |
| --fields 字段名 ... | 只抓指定字段(中文名) |
| --fields-group 组名 ... | 按分组抓取(工商/经营/风险/知产) |
| --all-fields | 跑全部 67 项(不传时默认只跑核心 25) |
可抓字段清单(67 项)
工商(14,★ 12 项核心)
★ 工商信息 · ★ 企业简介 · ★ 股东信息 · ★ 实控人 · ★ 受益所有人 · ★ 主要人员 · ★ 对外投资 · ★ 分支机构 · ★ 变更记录 · ★ 年报 · ★ 上市信息 · ★ 联系方式 · 税号开票 · 准确性验证
经营(13,★ 4 项核心)
★ 融资历程 · ★ 新闻舆情 · ★ 资质 · ★ 招投标 · 信用评价 · 行政许可 · 招聘信息 · 进出口信用 · 抽查检查 · 电信许可 · 上榜榜单 · 荣誉信息 · 企业公告
风险(34,★ 5 项核心)
★ 失信 · ★ 经营异常 · ★ 行政处罚 · ★ 裁判文书 · ★ 股权出质 · 被执行人 · 限制高消费 · 严重违法 · 终本案件 · 立案信息 · 开庭公告 · 法院公告 · 送达公告 · 破产重整 · 股权冻结 · 司法拍卖 · 询价评估 · 诉前调解 · 限制出境 · 环保处罚 · 税务非正常户 · 欠税公告 · 税收违法 · 惩戒名单 · 违约事项 · 担保信息 · 股权质押 · 动产抵押 · 土地抵押 · 简易注销 · 注销备案 · 清算信息 · 劳动仲裁 · 公示催告
知产(6,★ 4 项核心)
★ 专利 · ★ 商标 · ★ 软著 · ★ 互联网备案 · 作品著作权 · 标准信息
详见 企查查可抓取字段.md(官方工具描述)或 py qcc_mcp.py --list-fields
输出 JSON 结构
每条实体落盘一个 JSON(文件名:优先企业中文名,没有才用 USCC):
{
"entity_name": "深圳华信股权投资基金管理有限公司",
"uscc": "9144030059070463XP",
"entity_type": "基金",
"source": "基金名称",
"search_key": "9144030059070463XP",
"crawled_at": "2026-04-22 16:42:15",
"fields": ["工商信息", "股东信息", "..."],
"data": { "工商信息": {...}, "股东信息": {...}, ... },
"no_match": { "专利": true, ... },
"errors": { "融资历程": "...", ... }
}
fields:本次实际抓取的字段名清单(方便追溯不同批次抓了哪些维度)data:正常返回的数据no_match:接口成功返回但查不到该维度记录(USCC/名称错误,或该公司在此维度确实无记录)errors:真错误(SSL 抖动 / 积分不足 / 限流 / 超时)
当 data 为空且 no_match 满所有请求字段时,日志会打 ⚠ 全部无匹配——通常是查询键错了。
FAQ / 坑
| 症状 | 原因 | 处理 |
| ---------------------------------------------------------- | --------------------------------- | ---------------------------------------------------------------------- |
| [配置错误] config.json 里的 Authorization 还没填 Token | 还没填 token | 打开 config.json 把 4 处 YOUR_TOKEN_HERE 换成自己的 token |
| code 100002: 暂不支持境外IP请求 | 你开着 VPN / 代理 / Tailscale | 关掉代理(或在 Clash 里把 *.qcc.com 加 DIRECT 直连规则)后重跑 |
| SSL EOF / 400 Bad Request | cold start 并发竞态 | 脚本自动重试 3 次,一般能恢复;偶发几条可以 --merge 后看缺哪条重跑 |
| code 300008: 当前积分余额不足 | 积分耗尽 | 充值后直接重跑,断点续爬自动跳过已完成 |
| 所有维度"无匹配项" | USCC/名称错误或该实体不在企查查库 | 核对企业名全称或补一个准确 USCC |
| 控制台中文乱码 | Windows 代码页非 UTF-8 | 跑前 chcp 65001,或看 qcc_data_mcp/_log.txt(始终 UTF-8) |
相关文档
- 企查查可抓取字段.md — 官方 67 项工具完整描述与适用场景
qcc_mcp_tools.json— 企查查 67 个工具完整清单(探针生成)