VOOZH about

URL: https://apify.com/automation-lab/local-ch-business-directory-scraper

⇱ Local.ch Business Directory Scraper | Swiss Leads Β· Apify


πŸ‘ Local.ch Business Directory Scraper avatar

Local.ch Business Directory Scraper

Pricing

Pay per event

Go to Apify Store

Local.ch Business Directory Scraper

Extract Swiss business leads from Local.ch: names, contacts, ratings, addresses, websites, social links, and coordinates.

Pricing

Pay per event

Rating

0.0

(0)

Developer

πŸ‘ Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

4

Total users

1

Monthly active users

22 days ago

Last modified

Categories

Share

Extract Swiss business leads from Local.ch search results. The actor collects company names, profile URLs, categories, subtitles, addresses, phone numbers, emails, websites, social links, ratings, opening status, coordinates, thumbnails, and premium-listing flags.

What It Does

Local.ch Business Directory Scraper turns Local.ch search pages into clean structured business data. Use it for Swiss lead generation, local market mapping, sales prospecting, recruiting research, location intelligence, and contact enrichment.

Typical Use Cases

  • Build lead lists for Swiss restaurants, dentists, agencies, hotels, trades, clinics, and service providers.
  • Collect phone, email, website, and social profile coverage for outreach preparation.
  • Map local business density by city, region, canton, or postal code.
  • Compare Local.ch ratings and review counts across Swiss markets.
  • Enrich existing CRM records with Local.ch profile URLs and public contact details.

Who Is It For

This actor is for sales teams, growth agencies, recruiters, local SEO teams, market researchers, founders, and data teams that need structured Swiss business-directory data from Local.ch without manually copying search results.

Input Options

You can run the actor with direct Local.ch URLs, structured searches, or the quick search fields.

Local.ch Search URLs

Paste one or more Local.ch result URLs in startUrls.

{
"startUrls":[
"https://www.local.ch/en/q?what=Restaurant&where=Zurich"
],
"maxResults":50
}

Structured Searches

Use searches when you want several category and location combinations in one run.

{
"searches":[
{"what":"Restaurant","where":"Zurich"},
{"what":"Dentist","where":"Geneva"}
],
"maxResults":100
}

Quick Search

Use what and where for a single search.

{
"what":"Architect",
"where":"Basel",
"maxResults":25
}

Pagination

The actor follows Local.ch pagination links and stops when it reaches maxResults, maxPagesPerSearch, or the end of available result pages.

Result Limits

maxResults is the total number of unique businesses saved across all input searches. Duplicate Local.ch business IDs are saved only once per run.

Language

Set language to en, de, fr, or it. This controls the Local.ch path used for generated searches and profile URLs.

Output Fields

Each saved item contains:

  • search_url
  • query
  • city_or_region
  • business_name
  • profile_url
  • category
  • subtitles
  • address
  • phone
  • email
  • website
  • social_links
  • rating_average
  • rating_count
  • opening_status
  • latitude
  • longitude
  • thumbnail_url
  • is_premium

Example Output

{
"search_url":"https://www.local.ch/en/q?what=Restaurant&where=Zurich",
"query":"Restaurant",
"city_or_region":"Zurich",
"business_name":"Restaurant Kindli",
"profile_url":"https://www.local.ch/en/d/zurich/8001/restaurant/restaurant-kindli-CwBn7y7fwlbv85oZUYly1A",
"category":"restaurant",
"subtitles":[],
"address":"Strehlgasse 24, 8001 Zurich, ZH, CH",
"phone":"043 888 76 76",
"email":"restaurant@kindli.ch",
"website":"https://www.kindli.ch/restaurant",
"social_links":["https://www.instagram.com/kindlizuerich/"],
"rating_average":4.5,
"rating_count":10,
"opening_status":"OPEN_UNTIL",
"latitude":47.372335,
"longitude":8.541026,
"thumbnail_url":"https://images.services.local.ch/...",
"is_premium":true
}

Data Source

The actor reads public Local.ch search result pages. It extracts the structured data embedded in the initial HTML response.

Contact Fields

Local.ch may expose several contact types. The actor stores the first phone, first email, first website, and all social media links found in the listing payload.

Ratings

Ratings are included when Local.ch provides a visible rating summary. Listings without ratings return null for rating_average and rating_count.

Coordinates

Latitude and longitude are included when Local.ch provides coordinates in the listing payload. Some listings may not include coordinates.

Premium Listings

is_premium indicates whether Local.ch marks the listing as premium in the search payload.

Costs

The actor charges one run-start event and one result event per saved business listing. BRONZE users pay $0.005 per run plus $0.000039864 per listing. Use small maxResults values while testing.

Pricing

Pricing uses Apify pay-per-event billing. A run has a small start charge, and each saved Local.ch business listing is charged through the result event. Higher Apify tiers receive the standard tier discounts configured on the actor.

Recommended Settings

Start with:

  • maxResults: 20
  • maxPagesPerSearch: 3
  • one city and one category

Increase limits after validating that the output matches your workflow.

Swiss Market Examples

Useful searches include:

  • Restaurant in Zurich
  • Dentist in Geneva
  • Plumber in Basel
  • Architect in Bern
  • Hotel in Lausanne
  • Electrician in Lucerne
  • Lawyer in Lugano

Export Formats

Apify datasets can be exported as JSON, CSV, Excel, XML, RSS, or HTML table formats.

Automation

Schedule runs to refresh Swiss business lead lists, monitor rating changes, or periodically collect new listings for a category and region.

API Usage

Run the actor from Node.js:

import{ ApifyClient }from'apify-client';
const client =newApifyClient({token: process.env.APIFY_TOKEN});
const run =await client.actor('automation-lab/local-ch-business-directory-scraper').call({
what:'Restaurant',
where:'Zurich',
maxResults:20,
maxPagesPerSearch:1,
language:'en'
});
console.log(run.defaultDatasetId);

Run the actor from Python:

from apify_client import ApifyClient
import os
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("automation-lab/local-ch-business-directory-scraper").call(
run_input={
"what":"Restaurant",
"where":"Zurich",
"maxResults":20,
"maxPagesPerSearch":1,
"language":"en",
}
)
print(run["defaultDatasetId"])

Run the actor with cURL:

curl"https://api.apify.com/v2/acts/automation-lab~local-ch-business-directory-scraper/runs?token=$APIFY_TOKEN"\
-H"Content-Type: application/json"\
-d'{
"what": "Restaurant",
"where": "Zurich",
"maxResults": 20,
"maxPagesPerSearch": 1,
"language": "en"
}'

MCP

Use this actor from MCP clients through the Apify MCP server. The actor-specific MCP endpoint is:

https://mcp.apify.com?tools=automation-lab/local-ch-business-directory-scraper

Claude Code MCP setup

Register the actor-specific Apify MCP server in Claude Code:

claude mcp add local-ch-business-directory-scraper \
--transport http \
"https://mcp.apify.com?tools=automation-lab/local-ch-business-directory-scraper"\
--header"Authorization: Bearer $APIFY_TOKEN"

Claude Desktop MCP setup

Add the Apify MCP server to claude_desktop_config.json:

{
"mcpServers":{
"local-ch-business-directory-scraper":{
"type":"http",
"url":"https://mcp.apify.com?tools=automation-lab/local-ch-business-directory-scraper",
"headers":{
"Authorization":"Bearer YOUR_APIFY_TOKEN"
}
}
}
}

Cursor and VS Code MCP setup

Use the same HTTP server configuration in .cursor/mcp.json, .vscode/mcp.json, or the MCP settings file used by your client:

{
"mcpServers":{
"local-ch-business-directory-scraper":{
"type":"http",
"url":"https://mcp.apify.com?tools=automation-lab/local-ch-business-directory-scraper",
"headers":{
"Authorization":"Bearer ${APIFY_TOKEN}"
}
}
}
}

MCP prompts

Example prompt 1:

Run automation-lab/local-ch-business-directory-scraper for restaurants in Zurich with maxResults 20. Return business_name, phone, website, city_or_region, and rating.

Example prompt 2:

Use the Local.ch business directory scraper with {"startUrls":["https://www.local.ch/en/q?what=Dentist&where=Geneva"],"maxResults":25,"maxPagesPerSearch":2,"language":"en"} and summarize the saved listings by city_or_region.

Example prompt 3:

Find Swiss accounting firms in Basel with Local.ch, limit the run to 30 listings, and return only records that include a website or phone number.

For MCP workflows, pass the same input schema fields (startUrls, searches, what, where, maxResults, maxPagesPerSearch, language, maxRequestRetries).

Data Quality Notes

Local.ch decides which contacts are public for each listing. Some records have rich contact data, while others may include only a name, category, and locality.

Troubleshooting

If a run returns fewer records than expected, increase maxPagesPerSearch, check that the Local.ch search URL returns results in a browser, and confirm that maxResults is not lower than the number you need.

Privacy

Use the exported data responsibly. Follow applicable privacy, outreach, and marketing rules for Switzerland and your own jurisdiction.

Legality

The actor extracts public Local.ch search result data. You are responsible for using the data lawfully, respecting Local.ch terms, and following applicable privacy, marketing, and data-protection requirements.

Limitations

The actor extracts data available on search result pages. It does not log in, bypass private access controls, or collect non-public information.

FAQ

Can I scrape multiple cities in one run? Yes. Add several objects to searches or several URLs to startUrls.

Does every listing include email and website data? No. Local.ch only exposes contact fields that are public for each listing.

Can I use German, French, or Italian Local.ch pages? Yes. Set language to de, fr, or it.

Why did I get fewer results than Local.ch shows? Increase maxPagesPerSearch and maxResults; Local.ch may also return duplicate or partial entries that the actor deduplicates by ID.

Related scrapers

Other automation-lab business directory and lead-generation scrapers:

Changelog

Initial version extracts public Local.ch business listings from HTTP search result pages.

Support

Open an Apify issue with the run ID, input, and expected Local.ch result page when reporting a problem.

Field Reference

search_url is the source URL used for extraction.

query is the keyword or category supplied by the input or inferred from Local.ch URL parts.

city_or_region is the input location or parsed Local.ch locality.

business_name is the public Local.ch listing title.

profile_url is the Local.ch business profile URL.

category is the main Local.ch URL category slug.

subtitles contains Local.ch subtitle lines.

address is a formatted address string.

phone is the first phone or mobile contact.

email is the first email contact.

website is the first website contact.

social_links contains public social media URLs.

rating_average is the visible average rating.

rating_count is the visible number of ratings.

opening_status is the Local.ch opening status token.

latitude and longitude are listing coordinates when available.

thumbnail_url is a Local.ch logo or thumbnail image URL.

is_premium is the Local.ch premium listing flag.

You might also like

search.ch Swiss Business Directory Scraper

automation-lab/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.

πŸ‘ User avatar

Stas Persiianenko

2

local.ch Scraper - Swiss Business Contacts & B2B Leads

benthepythondev/business-contact-scraper

local.ch Scraper to extract business contacts from local.ch, Switzerland's leading business directory. Get company name, phone, email, website, address, postcode, city, category and rating by business type and city. For B2B lead generation, sales prospecting and CRM enrichment in Switzerland.

Local.ch Scraper - Preiswert Low-costπŸ’²πŸ”₯πŸ‡¨πŸ‡­

delectable_incubator/local-ch-scraper---preiswert-low-cost

Scrape business listings from local.ch πŸ’πŸ”Ž with a powerful Switzerland directory scraper. Extract company names, categories, addresses, cities, ratings, phone numbers, emails, websites, and opening hours. Ideal for B2B lead generation, local SEO, and structured business datasets at scale πŸ“ŠπŸš€

local.ch scraper Β· Swiss business directory & local leads

corent1robert/local-ch-scraper

Extract Swiss businesses and healthcare providers from local.ch (local.ch). Search URL (/s/, /q/) or profile URLs (/d/). Full profile export: phone, email, website, address, ratings, treatments, GPS. Lead gen & CRM enrichment β€” Geneva, Zurich, Vaud, Bern, all cantons.

πŸ‘ User avatar

Corentin Robert

3

Local.ch Business Scraper - Billig CheapπŸ”πŸ“žπŸ‡¨πŸ‡­πŸ’

scrapestorm/local-ch-business-scraper---billig-cheap

Looking to collect business listings from local.ch? πŸ’πŸ”Ž With this scraper, you can extract business data including name, categories, address, city, ratings, contact details (phone, email), websites, opening hours & more Perfect for lead generation, competitor research, and structured datasets πŸ“Š

14

3.3

Search.ch Scraper - Preiswert Low-costπŸ’²πŸ”₯πŸ‡¨πŸ‡­

delectable_incubator/search-ch-scraper---preiswert-low-cost

Scrape business listings from search.ch πŸ“žπŸ”ŽπŸ‡¨πŸ‡­ with a powerful Switzerland directory scraper. Extract company names, categories, addresses, phone numbers, websites, ratings, and detail URLs. Ideal for B2B lead generation, local SEO, and market analysis with structured datasets at scale πŸ“ŠπŸš€

search.ch ScraperπŸ‡¨πŸ‡­Swiss Business Directory (2M+ Listings)

santamaria-automations/search-ch-scraper

Scrape Swiss business listings from search.ch. Extract names, addresses, phone numbers, emails, websites, opening hours & GPS coordinates. Covers 2M+ entries across all cantons. HTTP-only, fast & lightweight. Pay-per-result pricing.

Search.ch Scraper

lexis-solutions/search-ch-scraper

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.

πŸ‘ User avatar

Lexis Solutions

16

Search.ch Scraper - Cheap Billig πŸ‡¨πŸ‡­πŸ“žπŸ”

scrapestorm/search-ch-scraper---cheap-billig

Looking to collect business listings from search.ch? πŸ“žπŸ”ŽπŸ‡¨πŸ‡­ With this scraper you can extract company data from search.ch including business name, categories, address, phone number, website, ratings, detail URL & much more Perfect for lead generation & market analysis πŸ“Š

2

5.0

Local Business Data API

sparkling_yardstick/local-business-data-api

Extract clean, structured local business data by category and location in a single run. Ideal for lead generation, market research, and local SEO workflows. Returns reliable JSON with names, addresses, ratings, and contact details.

πŸ‘ User avatar

Prithvi Chavan

5