Zefix Swiss Company Registry Scraper avatar

Zefix Swiss Company Registry Scraper

Pricing

Pay per event

Go to Apify Store
Zefix Swiss Company Registry Scraper

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

Stas Persiianenko

Maintained by Community

Actor 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

FieldDescription
nameRegistered company or organization name
uidFormattedSwiss UID in formatted CHE style
uidRaw UID value
chidFormattedFormatted commercial register ID
ehraidZefix firm identifier
legalFormNameResolved legal form such as Foundation or Corporation
legalSeatRegistered legal seat municipality
registryOfficeCantonCanton from SHAB publication data when available
statusZefix registry status
shabDateLatest SHAB publication date
deleteDateDeletion date if the firm is deleted
cantonalExcerptUrlPublic cantonal excerpt link
translationsAlternate registered names
purposeCompany purpose from the detail endpoint
shabPublicationsRecent SHAB rows and mutation types
sourceUrlPublic REST source URL
scrapedAtTimestamp 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 eventWhen it is chargedFREEBRONZESILVERGOLDPLATINUMDIAMOND
StartOnce per run$0.005$0.005$0.005$0.005$0.005$0.005
Company extractedPer company saved$0.00004578$0.000039809$0.000031051$0.000023885$0.000015924$0.000011146

Example BRONZE costs before Apify platform fees:

Run sizeExample chargesEstimated 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

  1. Open the actor on Apify.
  2. Add company search terms such as Nestle or Novartis.
  3. Optionally add UIDs such as CHE-107.028.276.
  4. Optionally add direct EHRAIDs such as 284234.
  5. Set maxResults to control output volume.
  6. Keep includeDetails enabled for purpose and SHAB events.
  7. Run the actor.
  8. 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.

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 includeDetails enabled when you need purpose or SHAB rows.
  • Use maxResults to 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 ApifyClient
client = 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.

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"]
}