swissco CLI
Swiss company data from the shell: commercial register, gazette, public procurement, FINMA, GLEIF and ARAMIS in one command.
Install
Run it once without installing, or add it permanently:
uvx swissco --help # run without installing
pip install swissco # or install via pip
Requires Python 3.14 or newer. Published on PyPI as swissco.
Commands
swissco lookup <UID>
Full register record for one company: name, UID, legal form, municipality, address, purpose. Add --finma to include FINMA licence type and supervisory category, or --lei to include the Legal Entity Identifier and group structure from GLEIF.
$ swissco lookup CHE-105.805.080
Name Nespresso SA
UID CHE-105.805.080
Legal form AG
Municipality Lausanne
Canton VD
swissco search <query>
Search by legal name or purpose text. Filter by canton or legal form.
$ swissco search "solar energy" --canton BE --format csv
uid,name,legal_form,municipality,canton
CHE-114.526.940,BKW Energie AG,AG,Bern,BE
CHE-334.713.622,Solarkraft Berner Oberland AG,AG,Frutigen,BE
swissco publications
Gazette publications in a date range, filterable by canton and event type.
$ swissco publications --since 2026-09-01 --canton ZH --type NEWLY_REGISTERED
uid name event
CHE-248.357.133 Zurich AI Labs GmbH NEWLY_REGISTERED
CHE-248.358.971 Helvetic Solar Solutions AG NEWLY_REGISTERED
swissco events <UID>
One company's full registry history from the gazette.
$ swissco events CHE-105.805.080
date event summary
2020-03-12 MUTATION Seat transfer to Lausanne
2018-06-01 CAPITAL_INCREASED Share capital CHF 200'000 → 250'000
2005-11-03 NEWLY_REGISTERED Initial registration
swissco tenders
Browse public procurement projects on simap by canton and date. Filters by publication type: tenders, awards, direct awards.
$ swissco tenders --canton ZH --since 2026-08-01 --type tender
title buyer canton publication_date
Sanierung Schulhaus Mühlebach Baudirektion Kanton Zürich ZH 2026-08-15
IT-Infrastruktur 2027–2031 Universitätsspital Zürich ZH 2026-08-12
swissco vendor <query>
Look up a company in the simap vendor directory. A UID is confirmed against the directory's own uidNo.
$ swissco vendor CHE-409.633.691
Name Implenia Schweiz AG
UID CHE-409.633.691
City Dietlikon
Canton ZH
Company size large
swissco finma
List or look up institutions on FINMA's authorised banks and securities firms list, joined to a UID. Filter by licence type, supervisory category or name.
$ swissco finma --category 3
name city licence_type category uid
Zürcher Kantonalbank Zürich Bank 3 CHE-105.842.028
Banque Cantonale Vaudoise Lausanne Bank 3 CHE-105.925.867
swissco lei <UID>
Look up a company's Legal Entity Identifier in GLEIF. Reports the LEI, its registration status, and which entity consolidates this one (direct and ultimate parent). Add --children to list the entities it consolidates.
$ swissco lei CHE-412.669.376
Legal name UBS Switzerland AG
LEI 549300WOIFUSNYH0FL22
Registered as CHE-412.669.376
Jurisdiction CH
Status ACTIVE
Direct parent UBS Group AG (549300SZJ9VS8SGXAN81, CH)
Ultimate parent UBS Group AG (549300SZJ9VS8SGXAN81, CH)
Direct children 12
swissco research <query>
Search the Confederation's register of publicly funded research (ARAMIS). A UID is confirmed against the project's own participant UID; free text is searched as given.
$ swissco research CHE-115.694.164
title project_number office status start_date
Hydrogen storage in metal hydrides SI/502345 SERI Completed 2022-03-01
Advanced fuel cell membranes SI/502891 SERI Ongoing 2024-01-15
swissco watch <file>
Fingerprints each company's identity, address and purpose fields. Exits code 10 when something changed, 0 when nothing did. Built for cron.
$ swissco watch my_competitors.txt
Checked 12 companies, 2 changed.
$ echo $?
10
Output formats
Every command supports --format table|json|csv. Piped output and terminal output are identical bytes, so the same command works in a script and in a notebook.
Agent skill
swissco ships an agent skill that teaches Claude Code, Cursor, Codex and other coding agents how to drive the CLI. Once installed, an agent answers natural-language questions by running the right swissco command itself.
npx skills add prospex-ch/swissco-cli
The skill installs into .agents/skills/swissco/. Add -g to install globally for every project, or --all to accept defaults without prompts.
Once the skill is installed, ask your agent things like:
Which companies in Zug mention blockchain in their purpose?
Has anything changed at CHE-105.943.826 since June?
List newly registered companies in Vaud this week.
The swissco CLI must be on PATH or reachable via uvx for the agent to run it.
Data sources
| Source | Data | Auth |
|---|---|---|
| Zefix on LINDAS | Commercial register: company identity, legal form, address, purpose | None |
| SHAB | Gazette publications, event classification | None |
| Zefix REST | Capital, status, deletion date, former names, corporate relations | Optional credentials |
| simap | Public procurement: tenders, awards, vendor directory with UID | None |
| FINMA | Authorised banks and securities firms: licence type, supervisory category | None |
| GLEIF | Legal Entity Identifiers: LEI, registration status, group structure (who consolidates whom) | None |
| ARAMIS | Federally funded research projects: title, office, participants with UID | None |
All commands work without authentication. Optional Zefix credentials unlock additional fields in lookup and prefix search in search. FINMA covers banks and securities firms. Other licence types are published on separate lists.
Links
GitHub · PyPI · Documentation · License: MIT