Zefix Swiss Company Registry Scraper
Pricing
Pay per event
Zefix Swiss Company Registry Scraper
🇨🇭 Extract official Swiss company registry records from Zefix by company name, UID, or EHRAID with legal forms and SHAB events.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Stas Persiianenko
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Extract official Swiss company registry data from Zefix by company name, UID, or EHRAID.
The actor uses public Zefix REST endpoints and saves structured company records to an Apify dataset.
What does Zefix Swiss Company Registry Scraper do?
Zefix Swiss Company Registry Scraper searches the official Swiss company registry and returns clean registry records.
It can search by company term, Swiss UID, or direct Zefix EHRAID.
It can also fetch detail pages to include company purpose, translations, and SHAB publication events.
Use it when you need official Swiss company identifiers and registry metadata in a repeatable export.
Who is it for?
Compliance teams can verify Swiss companies before onboarding suppliers or customers.
KYB teams can enrich lead lists with UIDs, legal forms, legal seats, and registry status.
Sales operations teams can turn company-name lists into structured Swiss registry records.
Data teams can schedule regular registry checks and export results through Apify integrations.
Researchers can collect public company metadata without manually copying Zefix pages.
Why use this actor?
- ✅ Official public Zefix registry source
- ✅ HTTP-only implementation with no browser overhead
- ✅ Search by name, UID, or EHRAID
- ✅ Optional detail enrichment
- ✅ SHAB publication rows included as structured arrays
- ✅ Legal-form names resolved into readable English/German/French/Italian labels
- ✅ Dataset export works with JSON, CSV, Excel, API, webhooks, and integrations
Data you can extract
| Field | Description |
|---|---|
name | Registered company or organization name |
uidFormatted | Swiss UID in formatted CHE style |
uid | Raw UID value |
chidFormatted | Formatted commercial register ID |
ehraid | Zefix firm identifier |
legalFormName | Resolved legal form such as Foundation or Corporation |
legalSeat | Registered legal seat municipality |
registryOfficeCanton | Canton from SHAB publication data when available |
status | Zefix registry status |
shabDate | Latest SHAB publication date |
deleteDate | Deletion date if the firm is deleted |
cantonalExcerptUrl | Public cantonal excerpt link |
translations | Alternate registered names |
purpose | Company purpose from the detail endpoint |
shabPublications | Recent SHAB rows and mutation types |
sourceUrl | Public REST source URL |
scrapedAt | Timestamp when the record was saved |
How much does it cost to scrape Swiss company registry records?
This actor uses pay-per-event pricing: a small one-time start fee plus one charge for each saved company record.
| Charge event | When it is charged | FREE | BRONZE | SILVER | GOLD | PLATINUM | DIAMOND |
|---|---|---|---|---|---|---|---|
| Start | Once per run | $0.005 | $0.005 | $0.005 | $0.005 | $0.005 | $0.005 |
| Company extracted | Per company saved | $0.00004578 | $0.000039809 | $0.000031051 | $0.000023885 | $0.000015924 | $0.000011146 |
Example BRONZE costs before Apify platform fees:
| Run size | Example charges | Estimated cost |
|---|---|---|
| First test run with 10 records | $0.005 start + 10 × $0.000039809 | ~$0.0054 |
| 100 records | $0.005 start + 100 × $0.000039809 | ~$0.0090 |
| 1,000 records | $0.005 start + 1,000 × $0.000039809 | ~$0.0448 |
On the FREE tier, a 10-record test run is about $0.0055, so a small validation run stays well under one cent before any Apify subscription/platform charges.
How to use the actor
- Open the actor on Apify.
- Add company search terms such as
NestleorNovartis. - Optionally add UIDs such as
CHE-107.028.276. - Optionally add direct EHRAIDs such as
284234. - Set
maxResultsto control output volume. - Keep
includeDetailsenabled for purpose and SHAB events. - Run the actor.
- Download the dataset as JSON, CSV, Excel, or via API.
Input options
Company search terms
Use searchTerms for company names, brands, or free-text Zefix queries.
Example:
{"searchTerms": ["Nestle", "Novartis"],"maxResults": 25}
Swiss UID values
Use uids for known Swiss UID values.
The actor sends the UID through the public Zefix search endpoint.
Example:
{"uids": ["CHE-107.028.276"],"maxResults": 5}
Direct EHRAIDs
Use ehraids when you already know the Zefix firm ID.
This is the most direct detail lookup.
Example:
{"ehraids": ["284234"],"includeDetails": true}
Result limit
Use maxResults to cap the number of unique company records saved across all inputs.
Start with a small number while validating your workflow.
Detail enrichment
Set includeDetails to true to fetch the detail endpoint for each company.
Details include purpose, translations, and SHAB publications.
Set it to false for faster search-result-only runs.
SHAB publication limit
Use maxShabPublications to limit event rows per company.
A value between 5 and 20 is usually enough for screening workflows.
Canton filters
Use cantonFilters to keep records from specific registry office cantons.
Example values: VD, ZH, BE, GE.
Legal seat filters
Use legalSeatFilters to keep companies from exact municipality names.
Example values: Lausanne, Zürich, Vevey.
Status filters
Use statusFilters to keep only matching Zefix statuses.
A common value is EXISTIEREND for active entities.
Example input
{"searchTerms": ["Nestle"],"uids": ["CHE-107.028.276"],"ehraids": ["284234"],"maxResults": 10,"includeDetails": true,"maxShabPublications": 5,"statusFilters": ["EXISTIEREND"]}
Example output
{"name": "Fondation Nestlé pour l'étude des problèmes de l'alimentation dans le monde","uidFormatted": "CHE-107.028.276","uid": "CHE107028276","chidFormatted": "CH-550-0175071-5","ehraid": 284234,"legalFormName": "Foundation","legalSeat": "Lausanne","registryOfficeCanton": "VD","status": "EXISTIEREND","shabDate": "2025-06-25","cantonalExcerptUrl": "https://prestations.vd.ch/...","purpose": "contribuer à l'amélioration de la nutrition...","shabPublications": [{"shabDate": "2025-06-25","shabId": 1006366293,"registryOfficeCanton": "VD","mutationTypes": ["adressaenderung"]}],"sourceUrl": "https://www.zefix.ch/ZefixREST/api/v1/firm/284234.json","scrapedAt": "2026-06-09T00:00:00.000Z"}
Tips for better results
- Use the official company name when possible.
- Use UID or EHRAID for exact matching.
- Keep
includeDetailsenabled when you need purpose or SHAB rows. - Use
maxResultsto avoid collecting broad matches from generic names. - Use status filters to exclude deleted entities.
- Use legal seat filters for city-level screening.
Integrations
You can connect the dataset to Google Sheets for compliance review.
You can send dataset webhooks to a CRM enrichment pipeline.
You can export JSON to a data warehouse for KYB checks.
You can schedule the actor daily or weekly to monitor known EHRAIDs.
You can call the actor from Make, Zapier, n8n, or a custom backend.
API usage
Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/zefix-swiss-company-registry-scraper').call({searchTerms: ['Nestle'],maxResults: 10,includeDetails: true,});console.log(run.defaultDatasetId);
Python
from apify_client import ApifyClientclient = ApifyClient('MY-APIFY-TOKEN')run = client.actor('automation-lab/zefix-swiss-company-registry-scraper').call(run_input={'searchTerms': ['Nestle'],'maxResults': 10,'includeDetails': True,})print(run['defaultDatasetId'])
cURL
curl -X POST "https://api.apify.com/v2/acts/automation-lab~zefix-swiss-company-registry-scraper/runs?token=$APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"searchTerms":["Nestle"],"maxResults":10,"includeDetails":true}'
Using with MCP
Use Apify MCP to run this actor from Claude Code, Claude Desktop, Cursor, VS Code, or another MCP client.
MCP server URL:
https://mcp.apify.com/?tools=automation-lab/zefix-swiss-company-registry-scraper
Claude Code MCP setup
Run this command in Claude Code after setting APIFY_TOKEN in your shell:
$claude mcp add apify-zefix --transport http "https://mcp.apify.com/?tools=automation-lab/zefix-swiss-company-registry-scraper&token=$APIFY_TOKEN"
Then ask Claude Code to call the actor with your preferred searchTerms, uids, or ehraids input.
Claude Desktop, Cursor, and VS Code MCP setup
Add this MCP server to your client configuration. Replace YOUR_APIFY_TOKEN with your Apify API token.
{"mcpServers": {"apify-zefix": {"url": "https://mcp.apify.com/?tools=automation-lab/zefix-swiss-company-registry-scraper&token=YOUR_APIFY_TOKEN"}}}
For clients that require command-based server definitions, use this HTTP bridge form:
{"mcpServers": {"apify-zefix": {"command": "npx","args": ["-y","mcp-remote","https://mcp.apify.com/?tools=automation-lab/zefix-swiss-company-registry-scraper&token=YOUR_APIFY_TOKEN"]}}}
Example Claude prompt:
Run the Zefix Swiss Company Registry Scraper for Nestle and summarize active Swiss entities with UID and legal seat.
Another prompt:
Look up EHRAID 284234 and extract purpose, legal form, latest SHAB event, and cantonal excerpt URL.
Scheduling workflows
Schedule daily checks for a watchlist of EHRAIDs.
Schedule weekly searches for new subsidiaries or suppliers.
Send results to a webhook and compare against previous snapshots.
Data quality notes
The actor returns data available from Zefix public endpoints.
Some fields can be missing when Zefix does not provide them for a record.
Canton filtering depends on detail SHAB publication rows.
UID searches are sent through the public search endpoint and may return matching records rather than a separate UID-only API route.
Limitations
The actor does not log in to private registry systems.
The actor does not scrape paid Moneyhouse pages.
The actor does not guarantee legal interpretation of registry data.
The actor does not replace a professional compliance review.
FAQ
Is this official Zefix data?
The actor reads public Zefix REST endpoints and returns fields exposed by those official public responses.
Does the actor need a proxy?
No proxy is configured by default because the tested Zefix REST endpoints respond to direct HTTP requests.
Troubleshooting
Why did I get more than one company for a UID-like query?
Zefix search can behave like free-text search. Use EHRAID for exact detail lookup when you have it.
Why is registryOfficeCanton empty?
The canton is derived from SHAB publication rows. Enable details and allow at least one SHAB publication.
Why are some purpose fields empty?
Some records may not expose purpose text in the public detail response.
Legality and responsible use
Zefix provides public Swiss registry information.
Use the data responsibly and follow Apify terms, Zefix terms, and applicable privacy and compliance rules.
Do not use registry data for unlawful profiling, harassment, spam, or prohibited automated decisions.
Related scrapers
- https://apify.com/automation-lab/google-maps-business-scraper
- https://apify.com/automation-lab/company-enrichment-scraper
- https://apify.com/automation-lab/business-directory-scraper
Changelog
Initial version supports company search terms, UID searches, direct EHRAID detail lookups, legal-form lookup, filters, and SHAB publication enrichment.
Support
If a search behaves unexpectedly, include the exact input JSON and a sample Zefix company name or EHRAID.
Developer notes
This actor is HTTP-only and uses the official public Zefix REST endpoints.
No proxy is configured by default.
The default memory is 256 MB.
Output schema summary
The dataset view shows the most important company identifiers and screening fields.
Full JSON exports include nested SHAB publication arrays and localized legal-form names.
Version
Actor version: 0.1.
Ready-to-run sample
Copy this input for a small first run:
{"searchTerms": ["Nestle"],"maxResults": 10,"includeDetails": true,"maxShabPublications": 5,"statusFilters": ["EXISTIEREND"]}