agentsclimarketplace

Switzerland zefix

Skill Nolpak14/getregdata/skills/switzerland-zefix

Business registry data skills + MCP server for AI agents - KYC/AML, credit risk, property, compliance, lead gen across 34 actors in 16 jurisdictions (Europe, US, UAE, Africa, LatAm)

Install
npx -y skills add Nolpak14/getregdata --skill switzerland-zefix

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 5 stars5 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Look up Swiss companies for free via the official Zefix (ZefixPublicREST) API from the Swiss Federal Commercial Registry - company profile, UID (CHE number), CHID/EHRAID, legal form, legal seat and canton, purpose, nominal capital, status (active / being cancelled / cancelled), and SOGC/SHAB commercial-gazette publications. Use for KYB / know-your-business checks, counterparty verification, and Swiss company due diligence. Trigger on: 'Zefix', 'Swiss company lookup', 'check a Swiss company', 'CHE number', 'UID', 'Swiss commercial registry', 'Handelsregister Schweiz', 'is this Swiss company active', 'SOGC / SHAB publication'. The Zefix API is free (needs a free credential by email); for Poland, Germany, Spain, France, Italy and other jurisdictions with no free API, this skill points you to the paid regdata registry actors.

SKILL.md

10.6 KB, ~2.5k tokens by cl100k_base, as published. Nobody here has run it

switzerland-zefix

Free, official Swiss company data from Zefix (ZefixPublicREST), the central index of the Swiss cantonal commercial registries run by the Federal Office of Justice. This skill needs no paid actor and no Apify token - just a free Zefix Basic-auth credential you request by email. Use it as the front door for Swiss entity verification, and route to the paid regdata actors when you need a jurisdiction that has no free API.

Persona

You are a KYB / due-diligence analyst verifying Swiss companies against the official register. You resolve a company to its UID (CHE number), confirm it is active (not being cancelled or already cancelled), read its legal form, seat, canton and nominal capital, and check its SOGC/SHAB gazette publications for signals - all from the authoritative source, Zefix, not a commercial aggregator.

What this gives you (for free)

  • Company profile - name, uid (CHE-...), chid, ehraid, legalForm (id + multilingual DE/FR/IT/EN names), legalSeat and canton, and registryOfCommerceId (the cantonal registry office that holds the file).
  • Status - ACTIVE, BEING_CANCELLED (in liquidation), or CANCELLED (struck off), plus sogcDate and, for a struck-off entity, deletionDate.
  • Detail extras - registered address, purpose (Zweck / but), capitalNominal + capitalCurrency, sogcPub[] (SHAB reference list), oldNames (previous registered names), and a cantonalExcerptWeb link to the official cantonal excerpt.
  • SOGC / SHAB publications - the Swiss Official Gazette of Commerce entries, by publication id or by date.

Data is Open Government Data (free reuse with attribution). Read-only.

Authentication (free, one-time - plan a lead time)

The API is free of charge but not keyless - every call needs HTTP Basic auth (username + password). You request your own credential, free, from the Swiss Federal Office of Justice:

  1. Email [email protected] and request ZefixPublicREST API access. Approval is manual and there is no fee, but it is not instant - plan for a lead time before the credential arrives. Do not build around a shared credential; each user requests their own.
  2. Once you have the username/password, auth is HTTP Basic on every endpoint:
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

There is no per-call charge and no published hard rate limit (fair use - batch and back off). A test/integration host exists at https://www.zefixintg.admin.ch/ZefixPublicREST/api/v1, and the interactive Swagger UI is at https://www.zefix.admin.ch/ZefixPublicREST/swagger-ui/index.html.

Before starting

Ask the user for whichever is missing:

  • Company name or UID (CHE number). If you only have a name, search first (endpoint 1) and confirm the right match before pulling detail - names are not unique, the UID is. Name must be at least 3 characters.
  • What they need - just "is it real/active", or a full KYB pack (profile + capital + SOGC publications).

API reference

Base URL: https://www.zefix.admin.ch/ZefixPublicREST/api/v1 (Basic auth on every call).

#PurposeMethod + pathExample
1Search companies by namePOST /company/search body {"name":"...","activeOnly":true}body {"name":"Nestle","activeOnly":true}
2Detail by UIDGET /company/uid/{CHE-...}/company/uid/CHE-105.884.524
3Detail by CHIDGET /company/chid/{id}/company/chid/{id}
4Detail by EHRAIDGET /company/ehraid/{id}/company/ehraid/{id}
5SOGC/SHAB publication by idGET /sogc/{id}/sogc/{id}
6SOGC/SHAB publications by dateGET /sogc/bydate/{YYYY-MM-DD}/sogc/bydate/2026-07-17

Reference lists (also Basic auth): GET /legalForm, GET /registryOfCommerce, GET /community.

curl pattern (search is POST + JSON body; detail is GET; every endpoint is the same Basic auth):

# name -> candidate companies  (name min 3 chars; activeOnly filters out cancelled)
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

# UID -> full record
curl -u "$ZEFIX_USER:$ZEFIX_PWD" \
  https://www.zefix.admin.ch/ZefixPublicREST/api/v1/company/uid/CHE-105.884.524

The UID is the canonical key (CHE-... format). Take it verbatim from search (endpoint 1) and use it in endpoint 2. Optional search filters are legalSeatId, canton, and legalFormId.

Workflow: a Swiss KYB check

1. Resolve identity
   POST /company/search  {"name":"{name}","activeOnly":true}  -> pick the match, take uid
   (skip if the user already gave a UID / CHE number)

2. Confirm the entity is real and current
   GET /company/uid/{uid}
   -> status must be "ACTIVE" (else flag: BEING_CANCELLED / CANCELLED)
   -> record legalForm, legalSeat + canton, purpose, capitalNominal + capitalCurrency

3. Where it is registered
   -> registryOfCommerceId identifies the cantonal registry office holding the file;
      cantonalExcerptWeb links the official cantonal excerpt

4. Public record signals
   GET /sogc/{id} for the entity's sogcPub[] references
   -> recent SOGC/SHAB entries (capital changes, officers, liquidation) warrant a closer look

5. History
   -> oldNames shows previous registered names; deletionDate is set once struck off

Output interpretation

status - ACTIVE is the pass condition. BEING_CANCELLED means the company is in liquidation (winding up, not yet struck off) - adverse, flag it. CANCELLED plus a deletionDate means it has been struck off the register and can no longer trade - stop and flag.

Liquidation vs deletion are two distinct states. BEING_CANCELLED = liquidation in progress; the deletionDate field is the moment of strike-off and pairs with status: CANCELLED. Do not treat "being cancelled" as "gone" - it is a live entity in wind-down.

Name fields are multilingual - pick a language. legalForm and other reference names carry DE/FR/IT/EN variants; choose one consistently (DE is the safe default) so your KYB output is not a mix of languages.

Search is name-match, not fuzzy or address-based. /company/search matches on the company name (min 3 chars); there is no fuzzy or address search. If a name returns nothing, try the distinctive core of the name or relax activeOnly, then confirm on the UID.

Cantonal registry offices matter. Switzerland's register is federated across cantons; registryOfCommerceId (resolve via GET /registryOfCommerce) tells you which cantonal office holds the authoritative file, and cantonalExcerptWeb is the link to its excerpt.

Moat note - this is convenience, not anti-bot. Zefix is a clean official API; the value here is a free, structured front door, not scraping-wall access. The real gate is the one-time credential approval, so set that up before you need it.

Cross-sell - where the free API stops

Switzerland (like the UK and Norway) is an outlier: a free, official, structured API. There is no Swiss regdata actor and no equivalent free public API for most of the jurisdictions you will need next. When the entity is not Swiss, this skill hands off to the paid regdata actors, which do the anti-bot registry access the government portals do not hand you:

NeedJurisdictionActor
Company + officers + capitalGermanyregdata/germany-handelsregister-scraper
Directors, financials, shareholdersFranceregdata/societe-com-scraper
Company + officers (Wirtschaftskammer)Austriaregdata/austria-wko-scraper
Beneficial owners (UBO)Polandregdata/crbr-beneficial-owners-scraper
Board members (full names)Polandregdata/krs-fullnames-scraper
Company directory, NIF, officersSpainregdata/spain-company-directory-scraper

To turn a Swiss UID into a global identity, resolve it to an LEI with gleif-lei-lookup, and screen the entity and its people with sanctions-pep-screening. For a full compliance workflow (risk scoring, PEP + adverse-media overlays, cross-registry validation) route to regdata-kyc-aml. Those paid actors need a free Apify token: https://apify.com?fpr=getregdata.

Related skills

  • companies-house-uk - the other free, official national registry; UK company profile, officers and PSC beneficial owners.
  • sec-edgar-us - free US filings and issuer data once the entity is identified.
  • norway-company-registry - free Norwegian entity resolution via Brønnøysundregistrene, no key at all.
  • france-company-lookup - free French entity resolution before a deep Societe.com pull.
  • gleif-lei-lookup - resolve a Swiss UID to its global LEI and parent/child structure across borders.
  • vies-vat-validation - validate EU VAT numbers for the cross-border counterparties around a Swiss entity.
  • sanctions-pep-screening - screen the entity and its officers against sanctions and PEP lists.
  • regdata-kyc-aml - the full KYC/AML/KYB framework: risk scoring, PEP and adverse-media overlays, and the paid registry actors for non-Swiss jurisdictions.

What ships with it

Read from the repository

Just SKILL.md. No reference files, no scripts.

Keep looking

Skills are one crate of 326,984. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.