search.ch Swiss Business Directory Scraper avatar

search.ch Swiss Business Directory Scraper

Pricing

Pay per event

Go to Apify Store
search.ch Swiss Business Directory Scraper

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

Stas Persiianenko

Maintained by Community

Actor 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

FieldDescription
querySearch term used
locationOptional location filter
resultPositionPosition in returned results
nameBusiness or person name
categoriesDirectory categories
industryFirst category for quick filtering
descriptionOccupation or listing snippet
addressFull public address
streetAddressStreet portion
postalCodeSwiss postal code
localityCity or municipality
cantonCanton/region code when shown
phonesPublic phone numbers
websitePublic website URL
emailPublic email from detail page when enabled
profileUrlsearch.ch listing profile
ratingRating when available
reviewCountReview count when available
isPaidListingWhether the result appears as a paid listing
sourceUrlResult page URL
scrapedAtISO 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 tierStart eventPer extracted listingExample: 25 listingsExample: 100 listingsExample: 1,000 listings
Free$0.005$0.000115about $0.008about $0.017about $0.120
Bronze$0.005$0.000100about $0.008about $0.015about $0.105
Silver$0.005$0.000078about $0.007about $0.013about $0.083
Gold$0.005$0.000060about $0.007about $0.011about $0.065
Platinum$0.005$0.000040about $0.006about $0.009about $0.045
Diamond$0.005$0.000028about $0.006about $0.008about $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

  1. Open the actor on Apify.
  2. Enter one or more search terms, for example software, plumber, or dentist.
  3. Optionally enter a Swiss location such as Zurich.
  4. Choose maxResults.
  5. Enable includeDetails if you need public emails.
  6. Run the actor.
  7. 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 ApifyClient
client = 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.

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.