search.ch Swiss Business Directory Scraper avatar

search.ch Swiss Business Directory Scraper

Pricing

from $0.06 / 1,000 results

Go to Apify Store
search.ch Swiss Business Directory Scraper

search.ch Swiss Business Directory Scraper

[💰 $0.06 / 1K] Extract Swiss business leads from search.ch — name, category, phones, website, email, full address, canton, ratings, and profile links. Search any category across multiple Swiss cities at once, or paste result-page URLs.

Pricing

from $0.06 / 1,000 results

Rating

0.0

(0)

Developer

SolidCode

SolidCode

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Pull Swiss business listings from search.ch at scale — company names, categories, phone numbers, websites, emails, full addresses, cantons, and ratings across all 26 cantons and in German, French, Italian, or English. Search dozens of categories across dozens of cities in a single run, or paste result-page URLs you built in the browser. Built for Swiss B2B sales teams, lead-generation agencies, and market researchers who need clean, structured Swiss business contacts without copying them out of the phone book one entry at a time.

Why This Scraper?

  • All 26 Swiss cantons in one run — search by city, canton code (ZH, GE, TI, VD...), or postal code (8000, 1200), and every listing carries its two-letter canton so you can segment leads by region instantly.
  • Four language editions — pull labels and results from the German, French, Italian, or English version of search.ch, matching how the business is listed in its own region.
  • Phone numbers in clean E.164 format — every published number comes back as +41..., ready to dial, import into a CRM, or feed to an autodialer with no reformatting.
  • Decoded email addresses — flip on details and the actor recovers the business email that search.ch scrambles on the page, giving you a direct contact channel most exports miss.
  • Multi-term × multi-city cross-product — list ten categories and ten cities and get all 100 searches in a single run; no need to launch a run per query.
  • Componentized Swiss addresses — every row splits the address into street, postal code (PLZ), locality, and canton, so you get mail-merge-ready fields, not one string to parse.
  • Up to 200 businesses per search combo — each category-and-city pairing pulls the full result set, with an overshoot-safe cap so you never lose the last page.
  • Ratings and review counts — the average star rating and number of reviews come with each listing, so you can prioritize established, well-reviewed businesses.
  • Punycode-safe websites — internationalized Swiss domains (xn--...) are preserved exactly as registered, so links always resolve.

Use Cases

Lead Generation

  • Build call lists of Swiss businesses by category and canton, phone numbers dial-ready in E.164
  • Collect direct business emails for outreach when profile details are enabled
  • Target a single city, a whole canton, or all of Switzerland from one search
  • Assemble named-category prospect lists (Treuhand, Garage, Coiffeur, Zahnarzt) in bulk

Market Research

  • Map how many businesses in a category operate in each of the 26 cantons
  • Compare business density across Zürich, Geneva, Bern, and Basel
  • Track ratings and review counts to gauge competitive strength in a region
  • Analyze the German-, French-, and Italian-speaking markets side by side

Recruitment & Sourcing

  • Find employers by profession and region for candidate placement
  • Build directories of firms in a target trade across specific cantons
  • Segment sourcing lists by city or postal code

CRM Enrichment

  • Backfill missing phone, website, and address fields on existing Swiss records
  • Add canton and postal code to accounts for territory assignment
  • Attach business emails to contacts that only had a name and city

Getting Started

Search One Category in One City

The simplest way to start — a single term and location:

{
"searchTerms": ["Restaurant"],
"locations": ["Zürich"],
"maxResults": 100
}

Many Categories Across Many Cities

Every term is paired with every location — this runs six searches:

{
"searchTerms": ["Treuhand", "Garage", "Coiffeur"],
"locations": ["Bern", "8000"],
"maxResults": 300
}

Paste Result URLs, Add Emails, Choose Language

Reuse a search you built on search.ch, enrich each listing with its email, and read results in French:

{
"startUrls": [
"https://search.ch/tel/index.fr.html?all=Avocat&where=Gen%C3%A8ve"
],
"includeDetails": true,
"language": "fr",
"maxResults": 200
}

Input Reference

What to Scrape

ParameterTypeDefaultDescription
searchTermsstring[]["Restaurant"]Keywords, business categories, company names, or professions (e.g. "Restaurant", "Zahnarzt", "Treuhand"). Each term is searched in every location below.
locationsstring[]["Zürich"]Swiss cities, cantons, or postal codes (e.g. "Zürich", "Genève", "Bern", "8000", "TI"). Each is combined with every search term. Leave empty to search all of Switzerland.

Or Paste URLs

ParameterTypeDefaultDescription
startUrlsURL[][]Paste search.ch result-page URLs directly from your browser. When provided, the search terms and locations above are ignored.

Options

ParameterTypeDefaultDescription
languageselectGermanLanguage edition of search.ch to use for labels and results: German, French, Italian, or English.
includeDetailsbooleanfalseAlso open each business's profile page to add its email address and fill in canton, website, and rating. Slower, since it fetches one extra page per business.

Limits

ParameterTypeDefaultDescription
maxResultsinteger100Maximum number of listings collected across all searches. Set to 0 for no cap (a safety limit of 50,000 still applies).
maxPagesPerSearchinteger0Optional cap on result pages fetched per individual search (about 10 listings per page). Leave at 0 to rely on Maximum Results.

Output

Each business is one row. Here's a representative result with details enabled:

{
"name": "Ristorante Bellavista",
"categories": ["Restaurant", "Pizzeria", "Catering"],
"industry": "Restaurant",
"phones": ["+41442345678"],
"email": "info@bellavista.ch",
"website": "https://www.bellavista.ch",
"address": "Bahnhofstrasse 12, 8001 Zürich",
"streetAddress": "Bahnhofstrasse 12",
"postalCode": "8001",
"locality": "Zürich",
"canton": "ZH",
"rating": 4.6,
"reviewCount": 128,
"isPaidListing": false,
"resultPosition": 3,
"profileUrl": "https://search.ch/tel/zuerich/bahnhofstrasse-12/ristorante-bellavista",
"searchTerm": "Restaurant",
"searchLocation": "Zürich",
"sourceUrl": "https://search.ch/tel/?all=Restaurant&where=Z%C3%BCrich",
"scrapedAt": "2026-07-02T14:30:00Z"
}

Business & Contact

FieldTypeDescription
namestringBusiness or person name
categoriesstring[]Category tags from the listing
industrystringPrimary category (most relevant tag)
phonesstring[]Published phone numbers in E.164 format (+41...)
emailstringBusiness email — filled when details are enabled and published
websitestringExternal website URL, punycode preserved
ratingnumberAverage rating when present
reviewCountnumberNumber of reviews when present

Address & Location

FieldTypeDescription
addressstringFull formatted address line
streetAddressstringStreet and number
postalCodestringSwiss postal code (PLZ)
localitystringCity or town
cantonstringTwo-letter Swiss canton code (ZH, GE, TI...)

Listing & Query Context

FieldTypeDescription
isPaidListingbooleanWhether the entry is a paid/premium listing
resultPositionnumberPosition within the result set
profileUrlstringsearch.ch profile page URL for the business
searchTermstringSearch term that produced this row
searchLocationstringLocation filter that produced this row
sourceUrlstringResult page this listing came from
scrapedAtstringISO 8601 timestamp of extraction

Tips for Best Results

  • Segment by canton or postal code — pass a canton code (ZH, VD, TI) or a PLZ (8000, 1200) as a location to carve Switzerland into clean territories, then match on the returned canton field.
  • Turn on details only when you need emails — enabling profile details recovers business emails and fills canton, website, and rating, but adds a page fetch per business. Leave it off for fast name-and-phone lists.
  • Reuse a search from your browser — build and preview a search on search.ch, then paste the result-page URL into startUrls to scrape exactly what you saw.
  • Pick the region's language — use the French or Italian edition when targeting Romandy or Ticino so category labels and descriptions match how businesses list themselves.
  • List many categories at once — because every term pairs with every location, one run with several professions and several cities covers a whole prospecting grid.
  • Leave locations empty for nationwide sweeps — a term with no location searches all of Switzerland; add locations only when you want to focus.
  • Start with a small Maximum Results — run 50 first to confirm the categories and cities return what you expect, then raise the cap for the full pull.

Pricing

From $0.06 per 1,000 results — a fraction of the cost of building and maintaining your own Swiss directory extractor. Bronze, Silver, and Gold subscribers pay progressively less; the table below shows total cost at each discount tier.

ResultsNo discountBronzeSilverGold
100$0.0072$0.0068$0.0064$0.0060
1,000$0.072$0.068$0.064$0.060
10,000$0.72$0.68$0.64$0.60
100,000$7.20$6.80$6.40$6.00

A "result" is one business row in the output dataset. No compute or time-based charges — you pay per result, plus a small fixed per-run start fee.

Integrations

Export data in JSON, CSV, Excel, XML, or RSS. Connect to 1,500+ apps via:

  • Zapier / Make / n8n — Workflow automation
  • Google Sheets — Direct spreadsheet export
  • Slack / Email — Notifications on new results
  • Webhooks — Trigger custom APIs on run completion
  • Apify API — Full programmatic access

This actor is designed for legitimate business research, market analysis, and lead generation using publicly listed Swiss directory information. Users are responsible for complying with applicable laws — including Swiss and EU data-protection rules — and with search.ch's Terms of Service. Do not use extracted contact data for spam, harassment, or any unlawful purpose, and honor opt-out and do-not-contact requests.