search.ch Swiss Business Directory Scraper
Pricing
Pay per event
search.ch Swiss Business Directory Scraper
Find Swiss business directory leads on search.ch. Export public names, addresses, phones, websites, ratings, profile links, and emails.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Stas Persiianenko
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Find Swiss businesses, professionals, and telephone-directory leads from public search.ch listings.
This Apify Actor searches the public search.ch business and telephone directory and exports structured contact data such as company names, categories, Swiss addresses, phone numbers, websites, profile URLs, ratings, and public email addresses when detail pages expose them.
What does search.ch Swiss Business Directory Scraper do?
The actor turns public search.ch result pages into clean dataset rows.
- 🔎 Searches by keyword, profession, company type, or company name
- 📍 Supports optional Swiss location filters such as Zurich, Bern, Geneva, Basel, Lugano, or canton codes
- ☎️ Extracts public phone numbers and profile links
- 🌐 Captures website URLs when search.ch lists them
- ✉️ Optionally opens detail pages to collect public email addresses
- 🧾 Adds query, source URL, and scrape timestamp metadata
Who is it for?
Sales, research, and operations teams use this actor when they need structured Swiss local-business data.
- 🧑💼 B2B sales teams building lead lists by industry and region
- 🧭 Market researchers mapping local service providers
- 🏢 Agencies looking for Swiss SMB prospects
- 🛠️ RevOps teams enriching CRM accounts with public directory fields
- 📊 Analysts comparing business density by canton or city
Why use it?
search.ch is a widely used Swiss directory, but manually copying results is slow and error-prone. This actor automates that collection while keeping the output simple to export to JSON, CSV, Excel, Google Sheets, or your CRM.
Data you can extract
| Field | Description |
|---|---|
query | Search term used |
location | Optional location filter |
resultPosition | Position in returned results |
name | Business or person name |
categories | Directory categories |
industry | First category for quick filtering |
description | Occupation or listing snippet |
address | Full public address |
streetAddress | Street portion |
postalCode | Swiss postal code |
locality | City or municipality |
canton | Canton/region code when shown |
phones | Public phone numbers |
website | Public website URL |
email | Public email from detail page when enabled |
profileUrl | search.ch listing profile |
rating | Rating when available |
reviewCount | Review count when available |
isPaidListing | Whether the result appears as a paid listing |
sourceUrl | Result page URL |
scrapedAt | ISO timestamp |
How much does it cost to scrape search.ch business directory leads?
The actor uses pay-per-event pricing: a small start event plus a per-listing event. For typical HTTP-only runs, this is intended to be lightweight for small lead lists and predictable for larger exports.
| Plan tier | Start event | Per extracted listing | Example: 25 listings | Example: 100 listings | Example: 1,000 listings |
|---|---|---|---|---|---|
| Free | $0.005 | $0.000115 | about $0.008 | about $0.017 | about $0.120 |
| Bronze | $0.005 | $0.000100 | about $0.008 | about $0.015 | about $0.105 |
| Silver | $0.005 | $0.000078 | about $0.007 | about $0.013 | about $0.083 |
| Gold | $0.005 | $0.000060 | about $0.007 | about $0.011 | about $0.065 |
| Platinum | $0.005 | $0.000040 | about $0.006 | about $0.009 | about $0.045 |
| Diamond | $0.005 | $0.000028 | about $0.006 | about $0.008 | about $0.033 |
Cost formula: estimated cost = $0.005 start + extracted listings × your tier's per-listing price. You are charged for listings the actor successfully extracts, not for empty source pages.
Free-plan estimate: a small 20–25 listing test run is usually around one cent or less on the Free tier. A 100-listing prospecting run is typically under two cents before any platform-level subscription or usage rules that apply to your Apify account.
How to use
- Open the actor on Apify.
- Enter one or more search terms, for example
software,plumber, ordentist. - Optionally enter a Swiss location such as
Zurich. - Choose
maxResults. - Enable
includeDetailsif you need public emails. - Run the actor.
- Export the dataset to CSV, JSON, Excel, or via API.
Input example
{"searchTerms": ["software"],"location": "Zurich","language": "de","maxResults": 20,"maxPages": 2,"includeDetails": false}
Output example
{"query": "software","location": "Zurich","resultPosition": 1,"name": "Example Informatik AG","categories": ["Software", "Informatik"],"industry": "Software","description": "IT services","address": "Example Street 1, 8000 Zurich ZH","streetAddress": "Example Street 1","postalCode": "8000","locality": "Zurich","canton": "ZH","phones": ["044 000 00 00"],"website": "https://example.ch/","email": null,"profileUrl": "https://search.ch/tel/...","rating": 4.5,"reviewCount": 12,"isPaidListing": true,"sourceUrl": "https://search.ch/tel/?was=software&wo=Zurich&pages=2","scrapedAt": "2026-06-04T00:00:00.000Z"}
Tips for better results
- Use Swiss local terms when relevant.
- Try both German and English category names.
- Add a city or canton when you need regional leads.
- Keep the first test run small.
- Turn on detail pages only when emails are important.
Detail page mode
When includeDetails is enabled, the actor visits each public search.ch profile page. This can reveal public email addresses that are obfuscated in page scripts. It also gives the actor another chance to collect website and description fields.
Integrations
Use the dataset with:
- HubSpot or Salesforce lead imports
- Google Sheets enrichment workflows
- Zapier or Make automations
- Apify webhooks for scheduled lead refreshes
- Internal market maps and regional dashboards
API usage with Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/search-ch-swiss-business-directory-scraper').call({searchTerms: ['software'],location: 'Zurich',maxResults: 20});console.log(run.defaultDatasetId);
API usage with Python
from apify_client import ApifyClientclient = ApifyClient('MY-APIFY-TOKEN')run = client.actor('automation-lab/search-ch-swiss-business-directory-scraper').call(run_input={'searchTerms': ['software'],'location': 'Zurich','maxResults': 20,})print(run['defaultDatasetId'])
API usage with cURL
curl -X POST 'https://api.apify.com/v2/acts/automation-lab~search-ch-swiss-business-directory-scraper/runs?token=MY-APIFY-TOKEN' \-H 'Content-Type: application/json' \-d '{"searchTerms":["software"],"location":"Zurich","maxResults":20}'
MCP usage
Connect Apify MCP with this actor enabled:
https://mcp.apify.com/?tools=automation-lab/search-ch-swiss-business-directory-scraper
Claude Code setup:
$claude mcp add apify-search-ch --transport http "https://mcp.apify.com/?tools=automation-lab/search-ch-swiss-business-directory-scraper"
Claude Desktop JSON setup:
{"mcpServers": {"apify-search-ch": {"url": "https://mcp.apify.com/?tools=automation-lab/search-ch-swiss-business-directory-scraper"}}}
Example prompts:
- “Find 20 software companies in Zurich and summarize the dataset.”
- “Scrape public search.ch listings for dentists in Geneva.”
- “Export Swiss plumbing businesses in Bern as CSV.”
Scheduling
Run the actor weekly or monthly to refresh prospect lists. Use the same inputs and compare datasets over time to spot new public listings or changed contact fields.
Legality and responsible use
The actor collects information visible on public search.ch pages. You are responsible for using the data lawfully, respecting privacy rules, complying with applicable Swiss/EU data-protection requirements, and honoring source-site terms.
Limitations
- The actor does not log in.
- It does not bypass CAPTCHA or protected content.
- Public search result depth is capped at 20 pages per term.
- Some listings do not expose websites or emails.
- Email extraction requires detail page mode.
FAQ
Can I scrape emails from search.ch?
Yes, when a listing exposes a public email on its profile page. Enable includeDetails so the actor opens profile pages and decodes public email links. Not every listing publishes an email.
Does the actor need a search.ch account?
No. It uses public result pages and public profile pages only. It does not log in or access account-only data.
Why did I receive fewer results than requested?
The source may have fewer public listings for the keyword and location combination. Try increasing maxPages, broadening the keyword, or removing the location filter.
Troubleshooting
If you get fewer rows than expected, increase maxPages, broaden the keyword, or remove the location filter.
If emails are empty, enable includeDetails. Many listings still do not publish an email address.
Related scrapers
- https://apify.com/automation-lab/google-maps-lead-finder
- https://apify.com/automation-lab/11880-local-business-directory-scraper
- https://apify.com/automation-lab/gelbe-seiten-scraper
Changelog
Initial version extracts public search.ch result listings with optional detail-page enrichment.
Support
If a search.ch page changes or a result field stops appearing, open an issue with a sample input and run URL.