# 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](https://pypi.org/project/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](https://github.com/prospex-ch/swissco-cli) · [PyPI](https://pypi.org/project/swissco/) · [Documentation](https://swissco.readthedocs.io/) · License: MIT

Prospex tracks your whole market and tells you when something moves.

[See an example market](https://prospex.ch/market-builder/)
