# Search.ch Scraper (`lexis-solutions/search-ch-scraper`) Actor

Scrape business directory listings from Search.ch—contact details, descriptions, images, ratings, opening hours, and geocoordinates. Supports single listing URLs and search result pages with custom queries. Ideal for market research, competitor analysis, lead generation, and local business mapping.

- **URL**: https://apify.com/lexis-solutions/search-ch-scraper.md
- **Developed by:** [Lexis Solutions](https://apify.com/lexis-solutions) (community)
- **Categories:** Lead generation, Automation, Jobs
- **Stats:** 15 total users, 0 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $8.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

![banner](https://i.ibb.co/B56MwBwc/search-ch.png)

## Search.ch Scraper

The Search.ch Apify Scraper is a powerful web scraping tool specifically designed to extract business directory data from Search.ch, Switzerland's leading local search engine. This scraper enables users to collect comprehensive business information, including contact details, descriptions, images, ratings, and more.

Search.ch is Switzerland's most popular local search platform, providing detailed information about businesses, services, and locations across the country. To gather valuable business data from the platform, users can leverage the Search.ch Apify Scraper, which facilitates market research, competitor analysis, and business intelligence.

### Use Cases

The Search.ch Apify Scraper can be used in multiple scenarios, including but not limited to:

1. **Market Research:** Extract business data from Search.ch to analyze market trends, competitor presence, and business performance across different regions in Switzerland.
2. **Business Intelligence:** Track business information, contact details, and service offerings to build comprehensive business databases and directories.
3. **Competitor Analysis:** Gather data on competitor businesses and their online presence to identify market opportunities and competitive advantages.
4. **Lead Generation:** Collect contact information and business details for targeted marketing campaigns and business development initiatives.
5. **Local Business Mapping:** Create comprehensive maps of businesses in specific areas or industries for location-based services and analysis.

Happy scraping!

### Input 📥

To use this actor, you need to provide the following input:

- Field: **startUrls**
  - Type: array
  - Required: Yes
  - Description: Search or business URLs to scrape
- Field: **query**
  - Type: string
  - Required: No
  - Description: Search query (e.g., "software developer", "hotel", "restaurant")
- Field: **maxItems**
  - Type: integer
  - Required: No
  - Description: The number of items to be scraped (default: 10)
- Field: **proxyConfiguration**
  - Type: object
  - Required: No
  - Description: Proxy configuration for the scraper
  - Default: Uses Apify Proxy with no specific proxy groups

### How to get `startUrls`?

1. A single business listing

   Open the business page on [Search.ch](https://search.ch) and copy its link from the browser URL bar.

2. Search results

   2.1. Open the [Search.ch](https://search.ch) website.

   2.2. Navigate to the search page and enter your search terms.

   2.3. Once in the search results page, add any needed filters. This will change the URL in the browser search bar. Once ready, copy the URL and paste to Apify as an item in the `startUrls` array.

#### Examples

A single business listing:

```
https://search.ch/tel/appenzell/kaustrasse-183/hotel-kaubad
```

A search page (Hotels in Zurich):

```
https://search.ch/tel/?was=hotel&wo=zurich
```

### Output 📤

<a name="output"></a>

An example output looks like this:

```json
{
  "url": "https://search.ch/tel/appenzell/kaustrasse-183/hotel-kaubad",
  "title": "Hotel Kaubad",
  "numberPhone": "079 901 44 66",
  "email": "info@hotelkaubad.ch",
  "categories": [
    "Hotel",
    "Conference Hotels",
    "Seminar",
    "Conference facilities",
    "Health and well-being",
    "Restaurant"
  ],
  "avatarImageUrl": "https://search.ch/tel/media/5791cd0bd146512f6f12221bf8c73e6b2e1c739e.png/rs/320x320/vektor-datei-600x402.png",
  "rating": null,
  "openingHours": ["00:00-24:00"],
  "description": "InformationHotel Kaubad Traditioneller Schweizer Charme und moderner Konfort Tauchen Sie ein in eine Oase der Ruhe und Entspannung. Unser Hotel, umgeben von Wäldern und Wiesen, bietet Ihnen den perfekten Rückzugsort. Jedes unserer liebevoll gestalteten Zimmer lädt Sie ein, die Seele baumeln zu lassen und die natürliche Schönheit der Umgebung zu geniessen. Erleben Sie Komfort und Erholung in unserer idyllischen Umgebung.",
  "imageGallery": [
    "https://search.ch/tel/media/535ef9ecb329b1c1e08cc904f66d126ae09ad3ae.jpg/tn/360x255/2024-07-06-14-.jpg",
    "https://search.ch/tel/media/752193581a5a4bde034653ba44576b552d135a91.jpg/tn/360x255/2024-07-06-9-.jpg"
  ]
}
```

### Need to scrape more data?

👉 Scrape Wayfair with [Wayfair Scraper](https://apify.com/lexis-solutions/wayfair-v2-scraper)

👉 Scrape Alibaba with [Alibaba Scraper](https://apify.com/lexis-solutions/alibaba-scraper)

👉 Scrape Michaels.com with [Michaels.com Scraper](https://apify.com/lexis-solutions/michaels-scraper)

### FAQ

**Q: How do I set up the Search.ch Apify Scraper?**

A: To set up the scraper, you'll need an Apify account. Once you have an account, you can access the scraper through the Apify Console, input the required parameters, and start the scraping process.

**Q: Is this scraper legal to use?**

A: Web scraping is subject to legal and ethical considerations. Before using the Search.ch Apify Scraper, ensure that you comply with the website's terms of service, robots.txt file, and any applicable laws and regulations.

**Q: How fast is the data extraction process?**

A: The speed of data extraction depends on various factors such as the number of businesses, server response time, and the complexity of the data. The scraper is designed to be efficient and fast, but the actual extraction speed may vary.

**Q: How can I export the extracted data?**

A: The Search.ch Apify Scraper allows you to export the extracted data in various formats like JSON, CSV, or Excel. You can download the data directly from the Apify Console or use the Apify API to integrate it into your applications.

***

# Actor input Schema

## `startUrls` (type: `array`):

Job URLs to scrape

## `query` (type: `string`):

Enter keywords to search for specific ads. Leave empty to scrape all ads.

## `maxItems` (type: `integer`):

Maximum number of items to scrape

## `proxyConfiguration` (type: `object`):

Proxy configuration

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://search.ch/tel/?was=hotel"
    }
  ],
  "query": "hotel",
  "maxItems": 10,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": []
  }
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "startUrls": [
        {
            "url": "https://search.ch/tel/?was=hotel"
        }
    ],
    "query": "hotel"
};

// Run the Actor and wait for it to finish
const run = await client.actor("lexis-solutions/search-ch-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "startUrls": [{ "url": "https://search.ch/tel/?was=hotel" }],
    "query": "hotel",
}

# Run the Actor and wait for it to finish
run = client.actor("lexis-solutions/search-ch-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "startUrls": [
    {
      "url": "https://search.ch/tel/?was=hotel"
    }
  ],
  "query": "hotel"
}' |
apify call lexis-solutions/search-ch-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,lexis-solutions/search-ch-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/upR7XUZhkjWH5V7W7/builds/4zNvAMGcwRbkBgTxq/openapi.json
