关于 Swiss company data
swissco 是用于查询瑞士企业与公共数据的命令行工具,面向需要检索公司登记、公告、招标及相关机构数据的用户。它汇集六个免凭据开放数据源,并可监控企业资料变化。
主要功能
- 01查询公司登记信息
- 02按名称或经营目的搜索
- 03查看公告与登记事件
- 04检索公共招标与供应商
- 05查询 FINMA、LEI 和研究项目
- 06监控公司资料变化
适用场景
- 01按经营目的筛选潜在企业
- 02跟踪指定公司的登记变更
- 03查看招标或供应商登记情况
- 04查询企业许可、LEI 或研究项目
MCP 相关
同一组六个数据源也通过 MCP 服务提供,包含九个工具(除 watch 外每个命令对应一个工具)。工具返回行数据、数量和说明。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y swissco-mcpZEFIX_USERZefix PublicREST username, issued by [email protected]. Optional: every tool works without it.ZEFIX_PASSWORD密钥The matching Zefix PublicREST password.SWISSCO_STATEWhere gazette bodies and the two FINMA files are cached. Defaults to ~/.swissco.SWISSCO_INTERVALSeconds between requests. Raises the floor of 0.5s and cannot lower it.本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
9收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| lei | boolean | 否 | 添加 LEI 以及与该实体合并报表的实体。需要 3 次请求。 |
| uid | string | 是 | 任意标点格式的瑞士 UID:CHE-444.420.929、CHE444420929 或 CH-ID。 |
| finma_licence | boolean | 否 | 添加 FINMA 许可类型和监管类别。缓存未命中时需要下载 2 次。 |
详细介绍
swissco
在命令行中获取瑞士公司数据。按 UID 查询公司,按名称或法定经营目的搜索 790,000 家公司,列出公报公告、浏览公共招标、查询银行牌照,或监控公司名单的变更。
uvx swissco lookup CHE-444.420.929
所有数据均来自六个无需凭据的开放数据源:LINDAS 上的 Zefix,用于商业登记;Amtsblattportal,用于《瑞士商业公报》;simap.ch,用于公共采购;FINMA,用于获准经营的银行和证券公司;GLEIF,用于法人机构识别编码和集团结构;以及 ARAMIS,用于联邦资助的研究。
由瑞士 B2B 销售情报平台 Prospex 构建并维护。
安装
uvx swissco --help # run it without installing
pip install swissco # or install it
Python 3.14 或更高版本。
Docker
docker run --rm prospexch/swissco search "Nestlé" --limit 5
该镜像以非特权用户身份运行,并将状态(watch 已查看的 ID 和缓存的 FINMA 文件)保存在 /home/swissco/.swissco。如需记住上次查看的内容,请在此处挂载卷:
docker run --rm -v swissco-state:/home/swissco/.swissco \
prospexch/swissco watch --uid CHE-105.909.036
Zefix 凭据并非任何命令的必需项,可通过环境变量传入:
docker run --rm -e ZEFIX_USER -e ZEFIX_PASSWORD prospexch/swissco lookup CHE-105.909.036
命令
每个命令都支持 --format table|json|csv、--limit 和 --quiet。
swissco lookup
查询登记簿中发布的某家公司的所有信息。
$ swissco lookup CHE-444.420.929
legal name Baumberger Bau AG
uid CHE-444.420.929
chid CH-036.9.103.786-9
ehra id 1702823
legal form code 0151
legal form Schweizerische Zweigniederlassung im Handelsregister eingetragen
municipality Koppigen
canton BE
address Hauptstrasse 6, 3425 Koppigen
purpose Anbieten von Kleintransporte aller Art.
zefix uri https://register.ld.admin.ch/zefix/company/1702823
支持 CHE-444.420.929、CHE444420929,或其他文本中包含的 UID。
swissco search
按法定名称或法定经营目的搜索公司:即公司在登记簿中用自己的话描述其经营内容。
$ swissco search "usinage" --canton VD --limit 5
LEGAL_NAME UID LEGAL_FORM MUNICIPALITY CANTON PURPOSE
------------------------------------- --------------- ------------------------------------------------- ------------ ------ ------------------------------------------------------------
Atelier roue libre S.A. CHE-261.821.895 Aktiengesellschaft Penthalaz VD La société a pour but l'usinage, la réparation, la révision…
Cute Cut Sàrl CHE-403.577.924 Gesellschaft mit beschränkter Haftung GMBH / SARL Lausanne VD la société a pour but toutes activités, notamment la fabric…
DecoupART CNC Sàrl CHE-342.723.896 Gesellschaft mit beschränkter Haftung GMBH / SARL Paudex VD la société a pour but tous types de travaux dans les domain…
LAVA Technologies Sàrl en liquidation CHE-217.431.384 Gesellschaft mit beschränkter Haftung GMBH / SARL Nyon VD la société a pour but: développement de machines d'usinage …
Pousaz Mécanique SA CHE-166.712.190 Aktiengesellschaft Oron VD La société a pour but l'exploitation d'un atelier mécanique…
--canton 接受两字母代码,--legal-form 接受 eCH-0097 代码(0106 表示 AG,0107 表示 GmbH)。
swissco publications
按日期范围查询公报中的商业登记公告。
swissco publications --canton ZH --since 2026-08-01
swissco publications --canton ZH --since 2026-08-01 --type CAPITAL_INCREASED
不指定 --type 时,只读取列表页:每 2,000 条公告发起一次请求。指定 --type 时,会获取每条符合条件的公告正文,并将其归类到 shab-parser 识别的十一种事件类型,因此请先缩小日期范围和州的范围。
超过约十天的日期范围会自动拆分为多个时间窗口。API 会拒绝页偏移量达到 10,000 的请求,而公报每天约发布 1,000 条商业登记信息。
swissco events
查询一家公司的登记历史。
swissco events CHE-444.420.929 --since 2024-01-01
公报列表页不包含 UID,只有标题,因此此命令会先将 UID 解析为法定名称,保留标题看起来与该名称相符的公告,再获取这些公告的正文,并保留 UID 与目标公司相符的事件。标题匹配用于判断哪些公告值得下载;正文中的 UID 则决定哪些事件会被报告。获取的正文会缓存在状态目录中,因此重复运行且日期范围重叠时无需再次下载。
swissco watch
查看自上次运行以来的变更。
printf 'CHE-444.420.929\nCHE-105.943.826\n' > uids.txt
swissco watch uids.txt --state ~/.swissco/
每家公司都会按指纹进行比较。指纹是基于公司身份、地址和经营目的字段生成的摘要。有变更时退出码为 10,没有变更时为 0,因此 cron 可以据此分支处理:
0 7 * * * swissco watch ~/uids.txt --quiet --format json > ~/changes.json \
|| mail -s "registry changes" [email protected] < ~/changes.json
如果 UID 已不在数据集中,报告内容会是已不在数据集中,而不会说已删除。LINDAS 仅包含活跃实体,因此 UID 可能会在重新登记、更正或公告延迟后离开数据集。
swissco tenders
simap 上按州和发布日期分类的公共采购项目。
$ swissco tenders --canton ZG --since 2026-08-25 --limit 3
TITLE PROJECT_NUMBER BUYER CANTON CITY PUBLICATION_DATE PUBLICATION_TYPE
----------------------------------------------------- -------------- ------------------------------ ------ ---- ---------------- ----------------
Neubau Pfarreizentrum, Katholische Kirchgemeinde Baar 22047 Katholische Kirchgemeinde Baar ZG Baar 2026-09-05 award
--canton 和 --type 可重复使用;--lang 用于选择标题和采购方的显示语言。分页使用游标而非偏移量,因此范围较宽时会多花一些分页请求,而不会失败。
日期范围筛选的是每个项目的最新发布日期,而非其中的授标日期。一个 3 月授标、但 8 月发布更正的项目,只会出现在涵盖 8 月的范围内。
swissco vendor
查询某家公司是否已在 simap 注册为供应商。
$ swissco vendor CHE-409.633.691
name Egli Gartenbau AG Sursee
uid no CHE-409.633.691
city Sursee
canton LU
url https://www.gartenbau-egli.ch
company size medium
系统会根据 UID 查出法定名称并进行搜索,然后通过目录自身的 uidNo 确认。名称用于找出候选项;UID 用于从中确定目标——目录中既有“Egli Gartenbau AG Sursee”,也有“Egli Gartenbau AG Uster”。
没有查询公司中标情况的命令。 simap 授标记录中的供应商没有 UID,只有采购办公室手动输入的自由文本。匹配这些名称会给出看似合理、但有时对应另一家公司的答案,因此不提供此功能。
swissco finma
FINMA 授权的银行和证券公司,并关联至 UID。
$ swissco finma --uid CHE-105.845.287
name Aargauische Kantonalbank
city Aarau 1
licence type Bank
supervisory category 3
uid CHE-105.845.287
还可使用 swissco finma "Raiffeisen"、--licence、--category,以及在 lookup 中使用 --finma。这两个文件会在状态目录中缓存一周。
仅涵盖银行和证券公司:FINMA 将保险公司、投资组合管理公司和基金管理公司列在此处不读取的独立清单中。未找到表示“未列在此清单中”,绝不表示“未获许可”。
swissco lei
公司的法人机构识别编码,以及其并表所属的集团。
$ swissco lei CHE-412.669.376
legal name UBS Switzerland AG
lei 549300WOIFUSNYH0FL22
registered as CHE-412.669.376
jurisdiction CH
status ACTIVE
initial registration date 2014-12-15
direct parent UBS AG (BFM8T61CT2L1QCEMIK50, CH)
ultimate parent UBS Group AG (549300SZJ9VS8SGXAN81, CH)
direct children 0
--children 会列出该公司并表的对象,而不是将其计为一项;在 lookup 中使用 --lei,则会将相同字段并入公司资料。
母公司通常位于国外,这正是运行此命令的原因:瑞士子公司的境外所有者没有商业登记记录,因此登记簿根本无法回答这个问题。
GLEIF Level 2 记录的是会计并表关系:母实体是将该实体并入自身账目的实体,即使它并不拥有该实体的全部权益也可以这样做。约 28,000 家瑞士实体拥有 LEI,而登记簿中约有 790,000 家实体,因此未找到只表示“没有 LEI 记录”,仅此而已。
swissco research
来自 ARAMIS 的联邦资助研究项目。ARAMIS 是联邦研究与创新委托项目登记簿,其中包括 Innosuisse 和 SNSF 的资金。
$ swissco research CHE-337.958.399
TITLE PROJECT_NUMBER OFFICE STATUS START_DATE ROLE
Reducing Documentation Burden in S… 137.839 INNO-ICT INNOSUISSE In Process 2026-06-01 Implementation Partner
系统会通过每个项目自身的参与者 UID 进行确认,因此报告的每一行都准确无误。系统会按原样搜索自由文本,并返回每个匹配项及其参与机构。由于获取参与者列表每个项目都要发出一次请求,--limit 用于限制加载的候选项数量;--lang 用于选择 DE、EN、FR 或 IT。
ARAMIS 会搜索项目标题、摘要和自由文本承包方字段,但不会将结构化参与者列表编入这些字段的索引。仅作为结构化合作方列出的公司无法被找到;Innosuisse 的实施合作伙伴通常就在此列。因此,结果为空只表示没有项目按名称提及该公司,并不能证明该公司没有获得联邦研究资金。
swissco 会读取参与者的机构、角色、UID 和地点。ARAMIS 还会发布研究人员的姓名、电子邮件地址和电话号码,但解析器中没有任何字段用于存储这些信息。
输出
只有 --format 会改变输出。通过管道传给 jq 的命令与供人查看的同一命令会生成完全相同的字节,因此,能在终端中运行的脚本也能在 CI 中运行。
table 和 csv 与 json 序列化的数据来自同一批行,因此某一列不会只出现在一种格式中、却在另一种格式中缺失。进度说明会输出到 stderr,--quiet 可将其静默;错误会以单个 JSON 对象的形式输出到 stderr。
在编码 Agent 中使用
此仓库附带一个 Agent Skill。它会教会 Claude Code、Cursor、Codex 和其他约 20 种 Agent 如何使用 swissco:涵盖每条命令,以及那些会悄然导致答案错误的陷阱。
该技能位于目录 .agents/skills/swissco/,这是所有合规 Agent 都会扫描的跨客户端位置;.claude/skills/swissco 符号链接到此目录,以便 Claude Code 在自己的目录中找到它。tests/test_skill.py 每次运行时都会检查它是否符合规范中的规则,因此如果技能偏离格式,测试套件就会报错。
npx skills add prospex-ch/swissco-cli
它会安装到使用该技能的项目自己的 .agents/skills/swissco/,并符号链接到每个 Agent 的目录中。添加 -g 可为每个项目安装一次,添加 --all 可直接接受默认选项,不再询问。swissco 仍须位于路径中,或可通过 uvx 访问。
随后,Agent 就能通过自行运行合适的命令,回答诸如“哪些 Zug 公司在经营宗旨中提到区块链”或“自 6 月以来,CHE-105.943.826 有什么变化吗”之类的问题。
将其用作 MCP 服务
同一组六个数据源也可通过此仓库作为 MCP 服务使用。共有九个工具,每条命令对应一个,但不包括 watch。
claude mcp add swissco -- uvx swissco-mcp
每个工具都会返回 rows、count 和 notes。rows 是 swissco --format json 输出的字典,因此同一字段在两种接口中的名称相同。notes 说明每个数据源涵盖的内容,这能让空结果也成为答案:FINMA 的名单不包括保险公司和投资组合管理公司;约 28,000 家瑞士实体拥有 LEI,而登记册中约有 790,000 家实体。
它位于 mcp/,以 PyPI 包 swissco-mcp 和同名 npm 包发布,并注册为 ch.prospex/swissco。每个工具的完整参考资料,包括其参数和注意事项,请见
swissco-mcp.readthedocs.io。
访问与条款
SHAB / Amtsblattportal。 REST API 是运营方提供的机器访问渠道:可自由访问,无需身份验证即可获取已发布的数据,没有文档说明的速率限制,页面大小上限为 2,000。网站 UI 被 robots.txt 禁止访问,但此限制不适用于 API。运营方声明数据不保证完整,只有已签署的 PDF 才具有法律效力。
Zefix on LINDAS。 发布于 opendata.swiss,无需凭据。商业使用条款一直未明确;适用条款见数据集页面。
Zefix PublicREST。 需要使用 [email protected] 签发的凭据。此处的所有命令均可在没有凭据的情况下使用。通过 --user/--password 或 ZEFIX_USER/ZEFIX_PASSWORD 提供凭据后,lookup 会额外返回资本、状态、注销日期、曾用名和公司关系,search 则会支持名称前缀搜索。
simap。 读取 API 无需身份验证即可响应。该网站的 robots.txt 禁止访问单页应用的项目详情路由,swissco 会直接拒绝访问这些路由;它未提及 /api,此处的所有请求都会发送到该接口。
FINMA。 有两个已发布的文件,可像浏览器一样下载。FINMA 会重新发布文件,而不是为其创建不同版本,因此文件会缓存一周,并在此后重新获取。
GLEIF。 记录 API 无需身份验证即可响应。GLEIF 向任何人开放 LEI 数据,使用条款说明了适用规定。
ARAMIS。 公共服务无需身份验证即可响应,但要求不要向其发送过多请求,因此 swissco 会控制请求速率,每次读取一个项目。43 MB 的批量导出文件位于此客户端允许列表未包含的主机上,因此没有任何命令能够下载它。
做一个合格的服务使用者
这些是由联邦办公室运行的小型公共服务。swissco 最多每 0.5 秒发送一个请求——FINMA 要求留出更多间隔,因此对它每秒发送一个请求;失败时采用指数退避,并通过真实的 User-Agent 标明身份,其中包含此代码库的 URL。--interval 可以提高这些最小间隔,但不能降低。
基于
| 软件包 | 功能 |
|---|---|
zefix-parser | Zefix:LINDAS SPARQL、PublicREST、UID 验证 |
shab-parser | SHAB:发现、获取、解析、十一种类型的事件分类 |
两者均采用 MIT 许可证,并与本项目一同维护。simap、FINMA、GLEIF 和 ARAMIS 都没有提供客户端,因此 swissco 为这四项服务自带客户端。
监控名单之外的信息
通过 cron 运行 swissco watch,就是 Prospex(Prospex)所售服务的免费版本。Prospex 会持续监控整个登记册,将其与招聘、融资、招标和网络信号关联起来——包括此工具刻意不涉及的 simap 授标信息——并告诉你哪些变化值得打个电话了解。如果 cron 任务和 UID 列表就能满足需求,那么这个工具就是你所需要的一切。
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。