Local.ch Scraper - Swiss Business Directory Leads avatar

Local.ch Scraper - Swiss Business Directory Leads

Pricing

from $12.00 / 1,000 result scrapeds

Go to Apify Store
Local.ch Scraper - Swiss Business Directory Leads

Local.ch Scraper - Swiss Business Directory Leads

Extract Swiss business leads from local.ch. Search by keyword and location for company name, phone, email, website, full address, category and rating. Data comes from the results page. The site caps each query at ~180 results, so pass one or more cities to segment. Export CSV, JSON, Excel.

Pricing

from $12.00 / 1,000 result scrapeds

Rating

0.0

(0)

Developer

Studio Amba

Studio Amba

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Share

Local.ch Scraper — Swiss Business Directory Leads

Extract business leads from local.ch, Switzerland's leading online business directory and phone book. Search by keyword and city and get company name, phone, email, website, full address, category and rating — straight from the results pages.

Why use this actor?

Local.ch is the Swiss equivalent of the yellow pages, covering every trade in German, French and Italian-speaking Switzerland. It is an excellent lead source: the results already carry phone, email and website for most listings. This actor turns any keyword and city into a structured list of Swiss businesses with contact details, ready for sales, research or directory building.

How to scrape Local.ch data

  1. Enter a search query in German, French or Italian — a business type such as restaurant, sanitär, coiffeur or garage.
  2. Enter one or more cities, comma-separated (for example Zurich, Bern, Geneva). A location is needed because local.ch caps each city search at about 180 results — see below.
  3. Set max results.
  4. Click Start. The actor reads the structured data embedded in each results page, de-duplicates by business, and returns one clean row per business.
  5. Download as CSV, JSON, Excel or via the API.

The optional Fetch details toggle opens each business page for full weekly opening hours, description, fax and social links.

Input

FieldTypeRequiredDescription
searchQueryStringNoKeyword or business type (default: restaurant)
locationStringNoOne or more cities, comma-separated (default: Zurich). Segment big searches by city
fetchDetailsBooleanNoVisit each business page for full hours, description and social links. Slower. Default false
maxResultsIntegerNoMaximum number of businesses to return (default: 100)
proxyConfigurationObjectNoApify proxy settings. Swiss residential proxies are used by default

Example input

{
"searchQuery": "restaurant",
"location": "Zurich, Bern, Geneva",
"maxResults": 300,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"],
"apifyProxyCountry": "CH"
}
}

Output

Each result contains:

FieldTypeExample
businessNameString"Bar Rossi"
categoryString"Bar"
addressString"Sihlhallenstrasse 3"
cityString"Zürich"
postalCodeString"8004"
regionStringcanton code when published
phoneString"+41432438025"
websiteString"https://www.bar-rossi.ch/"
emailString"info@bar-rossi.ch"
registrationNumberString""
extraFieldsObject{ "rating": 4.5, "coordinates": { "latitude": 47.37, "longitude": 8.52 }, "social": [...] }
urlStringBusiness page URL
scrapedAtStringISO timestamp

Example output

{
"businessName": "Bar Rossi",
"category": "Bar",
"address": "Sihlhallenstrasse 3",
"city": "Zürich",
"postalCode": "8004",
"region": "",
"phone": "+41432438025",
"website": "https://www.bar-rossi.ch/",
"email": "info@bar-rossi.ch",
"registrationNumber": "",
"extraFields": {
"rating": 4.5,
"coordinates": { "latitude": 47.379591, "longitude": 8.527295 },
"isPremium": true,
"social": [
{ "provider": "INSTAGRAM", "url": "https://www.instagram.com/barrossizuerich/" }
]
},
"url": "https://www.local.ch/en/d/zurich/8004/bar/bar-rossi-fCFDtKGhok9htNCZvQhQgA",
"scrapedAt": "2026-07-13T09:35:52.000Z"
}

The 180-per-city cap and why location matters

Local.ch serves 20 businesses per page but blocks pagination past page 9, so a single city search returns at most about 180 businesses. To cover a whole trade nationwide, pass several cities in the location field (comma-separated) and the actor walks each one, de-duplicating businesses that appear in more than one search. That is why a location is expected rather than optional — it is how you get complete coverage.

Switzerland's directory blocks datacenter IP addresses, so the actor uses Swiss residential proxies by default. Leave the proxy setting as-is unless you know you need something different.

Cost estimate

The actor uses plain HTTP (no browser), so it is fast: one request returns 20 businesses. Residential proxy traffic is the main cost driver. Expect roughly a few hundred to a couple of thousand leads per US dollar of Apify usage depending on your plan. fetchDetails adds one request per business.

Limitations

  • ~180 results per city. Segment by passing multiple cities.
  • Datacenter IPs are blocked — Swiss residential proxies are used by default.
  • Registration numbers are not published on local.ch.
  • Phone and email coverage is high but not 100%; the actor returns every field the site exposes.

FAQ

Do I need a Local.ch account or cookies? No. Everything comes from public results pages.

Why do I have to provide a city? Because local.ch caps each search at about 180 results. Searching city by city is how you get past that limit and build complete lists.

Why residential proxies? Local.ch returns 403 to datacenter IP addresses. Swiss residential proxies pass cleanly and are set by default.