Switzerland Zefix Scraper - Companies, Auditors, SHAB Events avatar

Switzerland Zefix Scraper - Companies, Auditors, SHAB Events

Pricing

Pay per event

Go to Apify Store
Switzerland Zefix Scraper - Companies, Auditors, SHAB Events

Switzerland Zefix Scraper - Companies, Auditors, SHAB Events

Scrape the Swiss Federal Registry of Commerce (Zefix) for companies: UID, legal name, form, seat, purpose, address, auditors, branches, and full SHAB legal-events feed. Search by name, UID, or canton. KYC/KYB for banks, family offices, crypto, traders.

Pricing

Pay per event

Rating

0.0

(0)

Developer

BowTiedRaccoon

BowTiedRaccoon

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Scrape the Swiss Federal Registry of Commerce (Zefix) for company records: UID, legal form, registered seat, business purpose, address, audit firm, branch offices, and the full SHAB legal-events feed. Search by company name, single UID, or canton — covers every legally registered entity in all 26 Swiss cantons.


Switzerland Zefix Scraper Features

  • Searches Zefix by company name, exact UID (CHE-XXX.XXX.XXX), or canton.
  • Returns the canonical legal name, all language translations, and historical names — Switzerland is a four-language country, and the registry takes that seriously.
  • Pulls the full address, registered seat (Sitz), legal form, and cantonal registry-office link straight from the official source.
  • Embeds the company's SHAB (Schweizerisches Handelsamtsblatt) publication history — every board change, capital increase, merger, and liquidation event with a configurable lookback window.
  • Flags has_recent_change for any entity with a SHAB event in the last 365 days. Useful if you're running KYC alerting and care more about the diff than the snapshot.
  • Lists audit firms (Revisionsstelle), branch offices, and merger relationships so you can map a corporate group without hitting another data source.
  • Pure JSON API. No browser, no proxy, no captcha.

Who Uses Swiss Zefix Data?

  • Banks and family offices — Run KYB on Swiss counterparties before opening accounts. The address, legal form, and audit-firm fields cover most onboarding checks.
  • Fintechs and crypto firms in Zug — Verify counterparty registration and pull the SHAB feed to catch board changes that move signing authority.
  • Commodity traders (Geneva, Zug, Lugano) — Pre-fill compliance files for trading partners with structured registry data instead of PDF excerpts.
  • AML and sanctions screening — Combine legal_name, translated_names, and old_names with watchlist matching so a name change doesn't break the screen.
  • DACH-region prospecting — Pair with a Bundesanzeiger crawler to cover Germany + Switzerland in one workflow.
  • Researchers and journalists — Map Swiss corporate ownership chains by walking branch offices and merger relationships.

How Switzerland Zefix Scraper Works

  1. Pick a mode. by_name for keyword search, by_uid for a direct lookup, or by_canton to walk every active company in a canton.
  2. The scraper warms a session with Zefix and runs the search. For multi-result modes it pages through the registry until it has enough candidates.
  3. Each candidate gets a single detail fetch that returns the company record plus its embedded SHAB feed. Address, audit firms, branch offices, and merger relationships flatten into the schema.
  4. Records stream into the Apify dataset. Stop the run any time — what's already saved is yours.

Input

{
"mode": "by_name",
"query": "Nestle",
"canton": "",
"activeOnly": true,
"includeShab": true,
"shabLookbackYears": 3,
"maxItems": 10
}
FieldTypeDefaultDescription
modestring"by_name"by_name searches the Zefix name index, by_uid fetches one company by its CHE UID, by_canton walks active companies in a canton.
querystring"Nestle"Search term for by_name (e.g. Glencore). For by_uid, paste a UID like CHE-105.909.036 or CHE105909036. Ignored for by_canton.
cantonstring""Two-letter Swiss canton code. For by_name it is an optional filter. For by_canton it drives the lookup.
activeOnlybooleantrueDrops companies marked deleted or in liquidation.
includeShabbooleantrueEmbeds the SHAB legal-events feed. Set false for lighter records.
shabLookbackYearsinteger3Lookback window for SHAB publications. 0 keeps all history (capped at 25 years).
maxItemsinteger10Maximum records to save. Apify's tester has a 5-min hard timeout — keep this at 15 or below for tester runs.

Single UID lookup

{
"mode": "by_uid",
"query": "CHE-105.909.036",
"includeShab": true,
"maxItems": 1
}

Walk every active company in canton Zug

{
"mode": "by_canton",
"canton": "ZG",
"activeOnly": true,
"includeShab": false,
"maxItems": 1000
}

Find Vaud-based companies matching a name

{
"mode": "by_name",
"query": "Holding",
"canton": "VD",
"activeOnly": true,
"maxItems": 200
}

Switzerland Zefix Scraper Output Fields

{
"uid": "CHE105909036",
"uid_formatted": "CHE-105.909.036",
"chid": "CH55000672935",
"chid_formatted": "CH-550-0067293-5",
"ehraid": 126288,
"legal_name": "Nestlé S.A.",
"translated_names": ["Nestlé AG", "Nestlé Ltd."],
"old_names": [],
"legal_form_id": 3,
"legal_form": "Ltd",
"legal_form_name": "Corporation",
"status": "EXISTIEREND",
"is_active": true,
"delete_date": "",
"shab_date": "2026-04-21",
"legal_seat": "Vevey",
"legal_seat_id": 5890,
"register_office_id": 550,
"canton": "VD",
"cantonal_excerpt_url": "https://prestations.vd.ch/pub/101266/extract?lang=FR&companyOfsUid=CHE-105.909.036",
"address_organisation": "Nestlé S.A.",
"address_street": "Avenue Nestlé",
"address_house_number": "55",
"address_zip": "1800",
"address_town": "Vevey",
"address_country": "CH",
"purpose": "La participation à des entreprises industrielles, de services, commerciales et financières en Suisse et à l'étranger…",
"audit_firms": ["Ernst & Young SA (CHE-294.400.879)"],
"main_offices": [],
"branch_offices": [],
"taken_over_by": "",
"taken_over": [],
"shab_publications": [
"2026-04-21 — VD — Nestlé S.A., à Vevey + Cham, CHE-105.909.036 (FOSC du 02.03.2026, p. 0/1006583861). Freixe Laurent, inscrit sans signature, n'est plus administrateur…"
],
"shab_publication_count": 12,
"has_recent_change": true,
"zefix_url": "https://www.zefix.ch/de/search/entity/list/firm/CHE-105.909.036",
"scraped_at": "2026-04-30T10:06:00.000Z"
}
FieldTypeDescription
uidstringSwiss Unique Enterprise Identifier without separators (e.g. CHE105909036).
uid_formattedstringUID in canonical display format CHE-XXX.XXX.XXX.
chidstringLegacy Swiss commercial-register ID without separators.
chid_formattedstringLegacy CHID in display format CH-XXX-XXXXXXX-X.
ehraidnumberInternal Zefix entity ID. Stable per company; usable to refetch.
legal_namestringCanonical legal name as registered (one of DE/FR/IT/RM depending on canton).
translated_namesstring[]Other-language translations of the legal name.
old_namesstring[]Historical legal names this company has used.
legal_form_idnumberNumeric legal-form code (1=SP, 3=Corporation/AG, 4=GmbH, 5=Cooperative, 6=Association, 7=Foundation, etc.).
legal_formstringLegal-form short code in English.
legal_form_namestringLegal-form full English name.
statusstringRegistry status (EXISTIEREND, GELOESCHT, IN_AUFLOESUNG).
is_activebooleanTrue when status is EXISTIEREND.
delete_datestringDate the company was struck from the register.
shab_datestringDate of the most recent SHAB publication.
legal_seatstringTown/municipality of the registered seat.
legal_seat_idnumberInternal Zefix municipality ID.
register_office_idnumberCantonal registry-office ID.
cantonstringTwo-letter Swiss canton code derived from register_office_id.
cantonal_excerpt_urlstringDirect URL to the cantonal commercial-register excerpt (the official PDF source).
address_organisationstringOrganisation name on the registered address line.
address_care_ofstringc/o line on the registered address.
address_streetstringStreet name.
address_house_numberstringStreet number.
address_addonstringAddress line 2 / addon.
address_po_boxstringPost-office box.
address_zipstringSwiss four-digit postal code.
address_townstringTown/city of the registered address.
address_countrystringCountry code (CH for Swiss-domiciled).
purposestringBusiness purpose / Zweck text as registered (in registration language).
audit_firmsstring[]Audit firms (Revisionsstelle), formatted as NAME (CHE-XXX.XXX.XXX).
main_officesstring[]Main / head office linkage. Empty for top-level companies.
branch_officesstring[]Branch offices (Zweigniederlassungen) with town.
taken_over_bystringSuccessor entity that absorbed this company after a merger.
taken_overstring[]Predecessor entities this company absorbed.
shab_publicationsstring[]SHAB legal events, newest-first, formatted as YYYY-MM-DD — CANTON — message. Honours shabLookbackYears.
shab_publication_countnumberNumber of SHAB publications kept after the lookback filter.
has_recent_changebooleanTrue if any SHAB publication in the last 365 days.
zefix_urlstringDirect link to the company's record on zefix.ch.
scraped_atstringISO 8601 timestamp of when this record was fetched.

FAQ

How do I scrape Swiss company data from Zefix?

Switzerland Zefix Scraper handles the lookup for you. Pick by_name, by_uid, or by_canton, supply the query, and the actor returns flat JSON records — no PDF parsing, no language detection in your pipeline, no per-canton excerpt downloads.

What data can I get from Zefix?

Switzerland Zefix Scraper returns 35+ fields per company: UID, legal form, registered seat, full address, business purpose, audit firm, branch offices, merger relationships, every language translation of the legal name, and the SHAB legal-events feed with configurable lookback.

How much does Switzerland Zefix Scraper cost to run?

Switzerland Zefix Scraper uses Apify's pay-per-event pricing: $0.10 per actor start plus $0.001 per record. A 1,000-company run lands at roughly $1.10. The Zefix API itself is free Swiss open-government data — there are no third-party fees behind that price.

Can I filter by canton?

Switzerland Zefix Scraper supports canton in two ways. Set mode: "by_canton" with a two-letter code (ZH, BE, GE, VD, ZG, BS…) to walk every active company registered in that canton. For name-based searches, set canton as an additional filter to keep only matches whose registered seat is in that canton.

Does Switzerland Zefix Scraper need proxies?

Switzerland Zefix Scraper does not need proxies. Zefix is Swiss federal open data and the actor hits it at a polite cadence with a valid session cookie. There are no captchas, no Cloudflare layer, and no rate-limit pushback in normal use.

Does the actor return officers and directors?

Not as structured fields. Switzerland's federal registry does not publish the board roster as a separate data column — director changes appear inside SHAB publication messages. Those messages are returned in shab_publications with HTML stripped and prose cleaned. Parsing names out of multilingual SHAB text is left to the caller.


Need More Features?

Need beneficial-ownership data, structured officer extraction from SHAB messages, or a different Swiss source? File an issue or get in touch.

Why Use Switzerland Zefix Scraper?

  • First on Apify — There is no other dedicated Zefix actor. Switzerland is a top-tier KYC/AML jurisdiction and the registry has been free for years; the gap was just engineering.
  • Clean output — 35+ flat fields per company, language-translated names rolled up, SHAB events as readable strings instead of HTML soup. The JSON is ready to ship to a CRM, a screening engine, or a Snowflake warehouse without a cleanup pass.
  • Affordable — ~$0.001 per record on Apify's standard PPE profile. A full DACH KYC pull pairs cleanly with a Bundesanzeiger crawler for the German side.