local.ch Scraper - Swiss Business Directory avatar

local.ch Scraper - Swiss Business Directory

Pricing

from $3.00 / 1,000 results

Go to Apify Store
local.ch Scraper - Swiss Business Directory

local.ch Scraper - Swiss Business Directory

Scrape local.ch, Switzerland's leading business directory. Search by category and city/canton, or fetch full business profiles by URL. Get names, addresses, phone numbers, emails, websites, ratings, opening hours, coordinates, and social links.

Pricing

from $3.00 / 1,000 results

Rating

0.0

(0)

Developer

Crawler Bros

Crawler Bros

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Scrape local.ch — Switzerland's leading business directory. Search any business category in any Swiss city or canton and get names, addresses, phone numbers, ratings, opening status, and websites. Optionally follow through to each business's full profile page for email, website, social links, precise GPS coordinates, structured opening hours, and photos. No login, no cookies, no API key required.

What this actor does

  • Two modes: search (category + city/canton) and detail (direct business profile URLs)
  • 75+ curated categories to pick from, or type any custom category (local.ch matches free text like a keyword search)
  • All 26 Swiss cantons available as a one-click filter, in addition to free-text city search
  • 4 languages — English, German, French, Italian (same underlying data, localized labels)
  • Sort by relevance, rating, or name (A-Z)
  • Filter by "open now" or minimum star rating (1-5)
  • Full Swiss character support — ü, é, à, ç etc. are handled correctly in both input and output
  • Rich business profiles — GPS coordinates, structured opening hours, email, website, Facebook/Instagram/LinkedIn/Twitter/YouTube links, photos, logo
  • Empty fields are omitted — you only ever see fields that were actually found for a business

Output per business

  • name — business name
  • subtitle — short business-provided subtitle shown under the name (sometimes a legal entity name, sometimes a tagline; when profile fetched)
  • category — primary listed category, categories[] — all registered categories (mode=search)
  • rating, ratingCount — average star rating (1-5) and total number of ratings
  • reviewCount — number of written reviews (when profile fetched; distinct from ratingCount, which includes star-only ratings)
  • street, zipCode, city, country
  • latitude, longitude — precise GPS coordinates (when profile fetched)
  • isOpenNow — live open/closed status from the search listing
  • openingHours[] — structured opening hours ({day, opens, closes} per slot; when profile fetched and the business publishes schema.org hours)
  • phone, email, website
  • facebookUrl, instagramUrl, linkedinUrl, twitterUrl, youtubeUrl — social links the business has published (when profile fetched)
  • thumbnailUrl — small logo/photo thumbnail shown on the search-results card (mode=search, no fetchDetails needed)
  • images[], logoUrl — business photos and logo (when profile fetched)
  • searchCategory, searchLocation, language — the search parameters used (mode=search)
  • sourceUrl — canonical local.ch profile URL for the business
  • recordType: "business", scrapedAt

Input

FieldTypeDefaultDescription
modestring (select)searchsearch (category + city/canton) or detail (fetch by URL)
categorystring (select)restaurantPick a common category, or custom to use customCategory (mode=search)
customCategorystringAny free-text category, overrides category (mode=search)
locationstringZurichSwiss city or canton name to search in (mode=search)
cantonstring (select)Pick one of the 26 Swiss cantons to search the whole canton instead of location
languagestring (select)enSite language: en, de, fr, it
sortBystring (select)relevancerelevance / rating (highest first) / name (A-Z) — applied client-side across the fetched batch
openNowOnlybooleanfalseOnly return businesses currently open
minRatinginteger0 (no minimum)Only return businesses rated at least 1-5 stars
fetchDetailsbooleanfalseAlso visit each business's profile page for richer data (slower)
businessUrlsarraylocal.ch profile URLs to fetch directly (mode=detail)
maxItemsint20Hard cap on returned records (1-1000)

Example: search restaurants in Zurich

{
"mode": "search",
"category": "restaurant",
"location": "Zurich",
"maxItems": 20
}

Example: highest-rated dentists in Geneva, with full profiles

{
"mode": "search",
"category": "dentist",
"location": "Geneva",
"sortBy": "rating",
"fetchDetails": true,
"maxItems": 30
}

Example: 4+ star restaurants open right now across all of Ticino canton

{
"mode": "search",
"category": "restaurant",
"canton": "ticino",
"openNowOnly": true,
"minRating": 4,
"maxItems": 50
}

Example: lawyers across the whole of Switzerland, A-Z, in French

{
"mode": "search",
"category": "attorneys-at-law",
"location": "Switzerland",
"language": "fr",
"sortBy": "name",
"maxItems": 100
}

Example: fetch specific business profiles

{
"mode": "detail",
"businessUrls": [
{ "url": "https://www.local.ch/en/d/zurich/8001/restaurant/george-bar-grill-E2FE14_t_A8FFW9_xUkXBQ" }
]
}

Use cases

  • Local lead generation — build a prospect list of Swiss businesses by trade and city/canton for B2B outreach
  • Market research — measure business density and average ratings for a category across Swiss regions
  • Directory aggregation — feed structured Swiss business data into your own local-search product
  • Competitor mapping — see who else operates in a category and area, with ratings and contact info
  • Franchise & site-selection analysis — evaluate service-business coverage across cantons and cities

Limitations

  • Deep pagination on very broad searches. local.ch enforces a per-IP rate limit on its search-results pages of roughly 9 page requests before returning 403s (confirmed via testing: this triggers at a fixed request count, not a request-rate/time window). In practice this caps a single run at roughly 150-180 records for very broad, single-category-nationwide searches (e.g. category: "restaurant", location: "Switzerland"). The actor automatically rotates through Apify's free AUTO proxy to recover from this where possible and always returns every record it collected before the limit hit (never an empty/failed run). For larger volumes, run multiple smaller searches (e.g. one per city or canton) instead of one very broad nationwide pull — city- and canton-scoped searches rarely reach this limit.
  • sortBy is applied client-side. local.ch's search-results pages don't honor a server-side sort parameter (verified: ?sort=rating returns results in the same order as no sort parameter), so rating/name sorting is applied across the batch of records this run actually fetched, not the entire category.
  • openNowOnly and minRating are applied client-side. A business with no open/closed badge or no rating on local.ch is only excluded by minRating (which requires a rating to compare against); it is not excluded by openNowOnly, since an unknown status is treated as "don't filter this one out" rather than "closed".

FAQ

What data source does this actor use? It reads the publicly available search and business-profile pages on local.ch, Switzerland's leading business directory. No account or API key is needed.

Is this affiliated with local.ch? No. This is an independent, third-party actor that reads publicly accessible pages.

Why do some businesses have no rating, phone, or website? local.ch only shows a rating once a business has received at least one review, and only shows contact/social details a business itself provided. Fields with no data are simply omitted from the record rather than shown as empty or null.

What's the difference between ratingCount and reviewCount? ratingCount is the total number of star ratings a business has received. reviewCount is the (usually smaller) number of ratings that include a written review. Both come directly from local.ch's own aggregate rating data.

Can I search a whole canton instead of a single city? Yes — set canton to any of the 26 Swiss cantons; it takes priority over location. You can also just type a canton name (e.g. "Vaud") directly into location.

Can I search all of Switzerland at once? Yes — set location to "Switzerland" (or leave both location/canton and just rely on the default) for a nationwide search.

How accurate are the GPS coordinates? latitude/longitude come directly from the business's own local.ch profile page (only available with fetchDetails: true in search mode, or always in detail mode).

Why is fetchDetails off by default? Fetching each business's full profile page requires one extra request per result, which is slower. Turn it on when you need email, website, social links, coordinates, structured opening hours, or photos.

Does this actor need a proxy or login? No — local.ch's search and profile pages are served without any anti-bot challenge, so this actor runs entirely on Apify's free plan with no proxy and no credentials.

What does subtitle mean? local.ch lets businesses show a short line under their name. For registered companies this is often their legal entity name (e.g. "Selnau Gastro AG"); for others it can be a marketing tagline or keyword list. It's included as-is since we can't reliably tell the two apart.