Switzerland Company Registry Scraper (Zefix, UID)
Pricing
from $11.54 / 1,000 results
Switzerland Company Registry Scraper (Zefix, UID)
Search the Swiss company registry by name or UID and extract structured records: UID (CHE), name, legal form, full address and canton, status, purpose, publications and mutations. Export to JSON, CSV or Excel.
Pricing
from $11.54 / 1,000 results
Rating
0.0
(0)
Developer
Scrapers Lat
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
20 hours ago
Last modified
Categories
Share
Switzerland Company Registry Scraper (Zefix, UID)
Here is one real result, with every field the actor returns:
{"uid": "CHE108731444","uidFormatted": "CHE-108.731.444","chid": "CH23207303779","chidFormatted": "CH-232-0730377-9","ehraid": 447194,"name": "Nestlé Enterprises SA","legalFormId": 3,"legalForm": "Corporation","status": "EXISTIEREND","statusLabel": "Active","deleted": false,"deleteDate": null,"legalSeat": "Vevey","canton": "VD","registryOffice": "Registre du commerce du Canton de Vaud","registerOfficeId": 550,"lastPublicationDate": "2026-05-04","cantonalExcerptUrl": "https://prestations.vd.ch/pub/101266/extract?lang=FR&companyOfsUid=CHE-108.731.444","zefixUrl": "https://www.zefix.ch/en/search/entity/list/firm/447194","address": {"careOf": null,"street": "Entre deux Villes","houseNumber": "12","addon": null,"poBox": null,"postalCode": "1800","town": "Vevey","country": "CH"},"purpose": "la société a pour but la fabrication, la vente et la distribution en Suisse et à l'étranger de tous produits, notamment alimentaires, diététiques, pharmaceutiques, médicaux, cosmétiques et hygiéniques. [trimmed]","alternativeNames": ["Nestlé Enterprises Ltd"],"oldNames": ["[object Object]", "[object Object]", "[object Object]"],"auditFirms": [{"name": "Ernst & Young SA","uid": "CHE294400879","uidFormatted": "CHE-294.400.879","chid": "CH55001399418","chidFormatted": "CH-550-0139941-8","legalSeat": "Renens (VD)"}],"publications": [{"date": "2026-05-04","canton": "VD","journalDate": "2026-04-29","journalId": 9137,"mutationTypes": ["aenderungorgane"]}],"scrapedAt": "2026-08-10T00:00:00.000Z","error": null}
Note: the
purposevalue is trimmed to its opening sentence for readability (the real field returns the full multi-sentence statute of purpose), andpublicationsis trimmed to one of the company's registry entries. Every value shown is exactly as returned.oldNamesis shown exactly as the source currently serializes it (object placeholders);scrapedAtis shown as a representative ISO timestamp.
The most complete Swiss company registry scraper available. It returns every field Zefix exposes for a company, including UID and CHID identifiers, registered address, statute of purpose, audit firms, and the full list of registry publications and mutations, and gives you name and UID lookup with canton, legal-form, and status filters plus an optional contact-enrichment add-on to target exactly the companies you need.
📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples
Table of contents
- What it does
- Quickstart
- Input reference
- Output reference
- Example output record
- Run via API and CLI
- Fetch results
- Billing and limits
- FAQ and troubleshooting
What it does
The actor searches the Swiss central company index (Zefix) by company name or UID, resolves each match, and writes one normalized record per company to the run's dataset. With withDetails on it fetches the full registered record for each company: registered address, purpose, alternative and former names, audit firm, and the list of registry publications and mutations. Missing source values are returned as null.
Data covers companies in the Swiss commercial register. A UID such as CHE-105.909.036 (or CHE105909036) is looked up directly; any other text is a name search that returns every matching company across all cantons unless you filter.
Quickstart
Open the actor, paste this into the input, and press Run. It returns up to 10 active companies matching the name, each with its full registered record.
{"maxCompanies": 10,"query": "Nestlé","activeOnly": true,"withDetails": true}
Pass a UID in query for a direct lookup, or add canton and legalForm filters to narrow a name search. query is required; all other inputs are optional.
Input reference
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
query | string | yes | Nestlé | A company name (or part of it) to search for, or a Swiss UID (for example CHE-105.909.036 or CHE105909036) to look up a company directly. |
maxCompanies | integer | no | 10 | Maximum number of company records to collect. Range 1 to 5000. |
canton | enum | no | (any) | Restrict results to one Swiss canton (two-letter code, for example ZH, VD, GE). Empty searches all of Switzerland. |
legalForm | enum | no | (any) | Restrict to one legal form by ID (for example 3 Corporation, 4 Limited liability company). Empty returns any form. |
activeOnly | boolean | no | true | Only companies still on the register. Turn off to also include deleted (struck off) companies. |
withDetails | boolean | no | true | Fetch the full record per company: registered address, purpose, alternative and former names, audit firm, and registry publications and mutations. |
enrichContacts | boolean | no | false | Optional paid add-on. For each result without an email, attempt to find a public business contact email and a contact person's name. Billed per attempt, plus an extra charge only when an email is found. |
enrichContactsMax | integer | no | 50 | Cap how many results the add-on tries to enrich. Free Apify accounts are capped at 3. |
Filters combine with logical AND on a name search.
Output reference
One dataset item per company. Types: string, integer, boolean, object, object[], string[], or null when the source value is absent. Fields marked (details) require withDetails; fields marked (enrich) require the contact add-on.
| Field | Type | Description |
|---|---|---|
uid | string | UID without separators (for example CHE108731444). |
uidFormatted | string | Formatted UID (for example CHE-108.731.444). |
chid | string | Commercial register ID without separators. |
chidFormatted | string | Formatted commercial register ID. |
ehraid | integer | Zefix internal entity ID. |
name | string | Registered company name. |
legalFormId | integer | Legal form ID. |
legalForm | string | Legal form label. |
status | string | Raw registry status (for example EXISTIEREND). |
statusLabel | string | Status label in English (for example Active). |
deleted | boolean | Whether the company is struck off. |
deleteDate | string | Deletion date (YYYY-MM-DD), or null. |
legalSeat | string | Registered legal seat (municipality). |
canton | string | Canton code. |
registryOffice | string | Cantonal registry office name (details). |
registerOfficeId | integer | Registry office ID (details). |
lastPublicationDate | string | Date of the most recent registry publication (details). |
cantonalExcerptUrl | string | URL to the cantonal register excerpt (details). |
zefixUrl | string | Zefix entity page URL. |
address | object | Registered address (street, houseNumber, postalCode, town, country, and more) (details). |
purpose | string | Statute of purpose text (details). |
alternativeNames | string[] | Alternative registered names (details). |
oldNames | string[] | Former names (details). |
auditFirms | object[] | Audit firms with their own UID and seat (details). |
publications | object[] | Registry publications and mutations, each with date, canton, journal, and mutation types (details). |
scrapedAt | string | ISO 8601 timestamp of when the record was collected. |
enrichedEmail | string | Public business contact email found by the add-on (enrich), or null. |
enrichedContactName | string | Contact person's name found by the add-on (enrich), or null. |
enrichedJobTitle | string | Contact person's job title (enrich), or null. |
enrichedEmailStatus | string | Verification status of the found email (enrich), or null. |
enrichedSource | string | Where the contact was found (enrich), or null. |
enrichedConfidence | number | Confidence score for the found contact (enrich), or null. |
error | string | null on success. On a failed run, a single item with a populated error field is written instead. |
Example output record
Real record from a live run (input {"query": "Nestlé", "maxCompanies": 10, "withDetails": true}):
{"uid": "CHE108731444","uidFormatted": "CHE-108.731.444","ehraid": 447194,"name": "Nestlé Enterprises SA","legalForm": "Corporation","statusLabel": "Active","deleted": false,"legalSeat": "Vevey","canton": "VD","registryOffice": "Registre du commerce du Canton de Vaud","lastPublicationDate": "2026-05-04","zefixUrl": "https://www.zefix.ch/en/search/entity/list/firm/447194","address": { "street": "Entre deux Villes", "houseNumber": "12", "postalCode": "1800", "town": "Vevey", "country": "CH" },"alternativeNames": ["Nestlé Enterprises Ltd"],"auditFirms": [{ "name": "Ernst & Young SA", "uidFormatted": "CHE-294.400.879", "legalSeat": "Renens (VD)" }]}
Run via API and CLI
Start a run and wait for it to finish, then read the dataset. Replace <TOKEN> with your Apify API token.
Run synchronously and get dataset items in one call:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~switzerland-companies-scraper/run-sync-get-dataset-items?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"query":"Nestlé","maxCompanies":10,"withDetails":true}'
Start a run asynchronously:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~switzerland-companies-scraper/runs?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"query":"CHE-105.909.036","withDetails":true}'
Apify CLI:
apify call scrapers_lat/switzerland-companies-scraper \--input '{"query":"bank","canton":"ZH","legalForm":"3","maxCompanies":50}'
Fetch results
Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:
# JSONcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"# CSVcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"# Paginate large datasetscurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"
<DATASET_ID> is returned as defaultDatasetId in the run object. Use offset and limit to page through large result sets. clean=true drops empty and internal fields.
Billing and limits
- Pay per result. You are charged per company returned (
resultevent). See the pricing tab for the current per-result price. - Detail add-on. When
withDetailsis on, each company whose full record is fetched charges a smalldetailsevent on top of the result price. TurnwithDetailsoff to avoid it. - Contact enrichment add-on (optional, off by default). When
enrichContactsis on, each attempt charges acontact-search-attemptevent, plus acontact-email-foundevent only when an email is found.enrichContactsMaxcaps how many results are attempted (free accounts capped at 3). - No charge on failure. If a run errors, the actor writes a single item with a populated
errorfield and does not charge for it. Empty runs cost nothing. - Spend cap respected. Set
maxTotalChargeUsdon the run; once reached, the actor stops emitting and charging further billable results and add-on events. - Free Apify plans are capped at 10 companies per run. Upgrade for higher
maxCompanies.
FAQ and troubleshooting
A run returned 0 records. Why?
The name or UID matched nothing, or your canton / legalForm filter excluded every match. Loosen the filters or check the UID. Zero-result runs are not charged.
How do I look up one company by UID?
Put the UID in query, for example CHE-105.909.036 or CHE105909036. It is resolved directly without a name search.
How do I include struck-off companies?
Turn activeOnly off. Deleted companies are then included, with deleted true and a deleteDate.
Why is purpose or address missing?
Detail fields require withDetails to be enabled. With it off, the actor returns the lighter search fields only.
Is this an official Zefix or federal tool? No. This actor is independent and has no affiliation with Zefix or the Swiss Federal Office of Justice. It reads only data that is publicly available in the Swiss commercial register.
Related scrapers
- Switzerland Jobs Scraper: Swiss job listings.
- SUNAT Peru RUC Scraper: Peru taxpayer registry records.
- Taiwan Business Registry Scraper: Taiwan company registry records.
More scrapers at scrapers.lat
Built and maintained by scrapers.lat, where we publish scrapers for US and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.
Independent tool, not affiliated with Zefix or the Swiss Federal Office of Justice. Accesses only publicly available commercial register data.
