This tutorial shows how to scrape Search.ch leads from Swiss directory detail pages into a reviewable CSV. You will import the Searchch Lead Scraper template, replace the sample URLs, confirm the export path, run a validation batch, and decide when the official Search.ch API is a better route.
Start
Prerequisites for scraping Search.ch leads
You need UScraper installed as a local desktop app, the current Searchch Lead Scraper template, a CSV folder, and a short list of Search.ch telephone directory detail URLs. Start with three to ten records, not a broad keyword crawl.
Search.ch provides both a web directory and official public APIs. The telephone directory API supports parameters such as was, wo, firma, privat, pos, maxnum, key, and lang. Structured API results require an API key and return Atom feeds with OpenSearch and tel.search.ch fields. Review the official Search.ch public APIs overview, telephone directory API specification, API key request page, and API terms before choosing a route.
The API terms currently state 1,000 requests per month per customer and key, one key per company or user, no guaranteed availability, and restrictions on automated bulk requests to create or update address databases.
Technical access is not permission. Collect only the fields your project needs, keep batches modest, avoid access-control bypassing, and confirm that your use case is allowed before using exported leads commercially.
API or scraper
Search.ch API vs scraping visible detail pages
A Search.ch API tutorial and a Search.ch scraper tutorial solve adjacent problems. The API is the official integration path for structured lookup when your usage fits the terms. A local scraper workflow is more practical when your team has approved detail-page URLs and wants a row-by-row CSV review.
| Route | Best fit | Trade-off |
|---|---|---|
| Search.ch telephone directory API | Caller identification, internal lookup, or application integration | Requires key handling, quota planning, XML/Atom parsing, and API compliance. |
| UScraper detail-page workflow | Small supervised lead research batches from visible pages | Selectors can change, fields may be blank, and every source page needs validation. |
Workflow
What the Search.ch business directory scraper exports
The bundled JSON is the source of truth. It loops over Search.ch detail pages, waits for load, dismisses common cookie consent UI when present, waits for an h1, then appends one row per page through Structured Export.
CSV
11
Detail URLs
Append loop
Local QA
search-ch-lead-scraper.csvColumn
keyword
Campaign keyword.
Column
ort
Location bucket.
Column
ob_oeffnen
Opening status.
Column
title
Listing title.
Column
address
Street and city.
Column
phone
Telephone link.
Column
fax
Fax number.
Column
Email value.
Column
link
Website link.
Column
informationen
Category text.
Column
detail_url
Source URL.
No CSV sample ships; the export shape and JSON workflow are the sample.
Runbook
How to scrape Search.ch leads step by step
Collect detail URLs
Search Search.ch by category and location, then copy only the business detail pages you are allowed to review.
Replace Navigate URLs
Replace the sample architecture URLs with your approved detail-page URLs. Keep the list finite.
Confirm the CSV path
Confirm search-ch-lead-scraper.csv, headers, append mode, and a project-specific local folder.
Run one URL first
Run one detail page. Compare the CSV row against the browser before adding more URLs.
Scale after validation
Add URLs only after core fields are correct and blank fields are explainable.
After export, sort by detail_url and title. Duplicates usually mean append mode reran or the URL appears twice. Keep a dated raw file.
Validation
Validate the Search.ch CSV before outreach
Every row should show where the data came from, what fields were captured, and why cells are blank.
| Check | How to validate | Fix if it fails |
|---|---|---|
| Source URL | Open detail_url and compare it to the row | Remove redirected, duplicate, or non-detail pages. |
| Company name | Compare title with the active heading | Check for multiple headings or sponsored blocks. |
| Contact fields | Compare phone, fax, email, and link with visible links | Leave blanks if the page does not expose the field. |
| Address | Confirm street, postal code, and city are not mixed with menu text | Increase wait time or tune address extraction. |
| Category text | Check informationen against the listing category near the title | Treat category extraction as a helper field, not a guaranteed taxonomy. |
Open the source URL and verify whether the field is visible before changing selectors.
Related paths
When to use another Swiss lead workflow
Use this workflow when the source of truth is a Search.ch detail page. For Local.ch, use the Local.ch lead scraper tutorial. For other workflows, browse the UScraper template library or UScraper blog.
FAQ
Is it legal to scrape Search.ch leads?
Public visibility does not guarantee reuse rights. Review Search.ch policies, API terms, privacy law, database rights, robots rules, and outreach rules before commercial use.
Should I use the Search.ch API or scrape pages?
Use the official API when its terms, quota, fields, and XML Atom feed format fit your use case. Use a supervised page workflow for small, reviewable CSV batches.
What does the Search.ch lead scraper export?
The bundled workflow writes search-ch-lead-scraper.csv with keyword, ort, ob_oeffnen, title, address, phone, fax, email, link, informationen, and detail_url columns.
Do I need a Search.ch account or API key?
No. This UScraper workflow opens configured detail-page URLs in a local browser session and exports visible fields.
Why are some Search.ch CSV fields blank?
Blank fields usually mean the page did not expose that value, a consent prompt interrupted loading, the layout changed, or the URL was not a business detail page.

