Zefix API
Zefix is the central index of the Swiss cantonal commercial registries, run by the Federal Office of Justice. The ZefixPublicREST API is free of charge but not keyless - every call needs a Basic-auth credential you request by email. It returns company profile, UID, status, capital and SOGC gazette entries.
Free of charge, but not keyless - a credential is required. Open Government Data, free reuse with attribution. Read-only. Official docs: ZefixPublicREST (Federal Office of Justice).
npx skills add Nolpak14/getregdata -g -y
Teaches your agent the endpoints, the auth pattern and the failure modes below - so it runs the check correctly rather than guessing. Read SKILL.md
What you get, for free
- Company profile
- Name, uid (CHE-...), chid, ehraid, legalForm with multilingual DE/FR/IT/EN names, legalSeat and canton, and the registryOfCommerceId identifying the cantonal office that holds the file.
- Status
- ACTIVE, BEING_CANCELLED (in liquidation) or CANCELLED (struck off), with sogcDate and, once struck off, a deletionDate.
- Detail extras
- Registered address, purpose (Zweck), capitalNominal with capitalCurrency, the sogcPub list of SHAB references, oldNames, and a cantonalExcerptWeb link to the official excerpt.
- SOGC / SHAB publications
- Swiss Official Gazette of Commerce entries, retrievable by publication id or by date.
Getting an API key
- Email zefix@bj.admin.ch and request ZefixPublicREST API access.
- Approval is manual and free, but not instant - plan a lead time before the credential arrives, and request your own rather than sharing one.
- Authenticate with HTTP Basic on every endpoint, including the reference lists.
export ZEFIX_USER=your_username
export ZEFIX_PWD=your_password
curl -u "$ZEFIX_USER:$ZEFIX_PWD" \
-H "Content-Type: application/json" \
-d '{"name":"Nestle","activeOnly":true}' \
https://www.zefix.admin.ch/ZefixPublicREST/api/v1/company/search No per-call charge and no published hard rate limit - fair use, so batch and back off. A test host exists at zefixintg.admin.ch and there is an interactive Swagger UI.
Endpoints
| Purpose | Call |
|---|---|
| Search companies by name | POST /api/v1/company/search {"name":"...","activeOnly":true} |
| Detail by UID | GET /api/v1/company/uid/{CHE-...} |
| Detail by CHID | GET /api/v1/company/chid/{id} |
| Detail by EHRAID | GET /api/v1/company/ehraid/{id} |
| SOGC publication by id | GET /api/v1/sogc/{id} |
| SOGC publications by date | GET /api/v1/sogc/bydate/{YYYY-MM-DD} |
Running a KYB check end to end
- 1 Resolve identity
Search by name with activeOnly true and take the uid from the match. The name must be at least three characters. Skip if you already hold a CHE number.
- 2 Confirm it is real and current
Fetch by UID and check status. Record legalForm, legalSeat and canton, purpose, and capitalNominal with its currency.
- 3 Find the holding registry
registryOfCommerceId identifies the cantonal office holding the authoritative file; cantonalExcerptWeb links its official excerpt.
- 4 Read the public record
Walk the sogcPub references. Recent SOGC entries covering capital changes, officers or liquidation warrant a closer look.
- 5 Check history
oldNames lists previous registered names; deletionDate is populated once the entity is struck off.
What bites people
Liquidation and deletion are two different states
BEING_CANCELLED means winding up is in progress - a live entity, but adverse. CANCELLED with a deletionDate means struck off and unable to trade. Treating "being cancelled" as "gone" misreads a company that still exists.
It is free but not keyless, and approval takes time
Every endpoint needs Basic auth, and the credential is issued manually by the Federal Office of Justice. This is the real gate on Zefix - set it up before you need it rather than discovering it mid-integration.
Reference names are multilingual - pick one
legalForm and other reference names carry DE, FR, IT and EN variants. Choose a language consistently, or your KYB output ends up a mix of four.
Search is name-match only
There is no fuzzy matching and no address search, and the name must be at least three characters. If a name returns nothing, try the distinctive core of it or relax activeOnly, then confirm on the UID.
The register is federated across cantons
Zefix is the central index, but the authoritative file sits with a cantonal registry office. registryOfCommerceId tells you which one; resolve it through the registryOfCommerce reference list.
The jurisdictions with no free equivalent
The UK is the outlier. Most European registers publish through portals built for people, not a general-purpose API - so the next jurisdiction you need probably has no free option. These read the official source live and return the same shape of structured record.
Is the Zefix API free?
Yes, there is no charge per call and no subscription. It is not keyless though: every endpoint requires HTTP Basic auth with a credential you request by email from the Federal Office of Justice, and approval is manual.
How do I get Zefix API access?
Email zefix@bj.admin.ch requesting ZefixPublicREST access. Approval is free but manual, so allow lead time. Each user should request their own credential rather than sharing one.
What is a Swiss UID?
The Unternehmens-Identifikationsnummer, written CHE-105.884.524. It is the canonical key for a Swiss entity - take it verbatim from a name search and use it for the detail lookup, since names are not unique.
Is there a paid getregdata actor for Switzerland?
No. Zefix is a clean official API with no anti-bot wall, so a scraper would add nothing. The free skill is the whole toolkit for Switzerland; the paid actors exist for jurisdictions that publish no equivalent.