Swiss Business Directory Scraper — local.ch
Under maintenancePricing
from $0.80 / 1,000 record scrapeds
Swiss Business Directory Scraper — local.ch
Under maintenanceSwiss business directory data: company names, addresses, phone numbers, emails, ratings, and opening hours for the Swiss SMB market. Filter by industry vertical. Structured JSON output ready for lead lists or CRM import.
Pricing
from $0.80 / 1,000 record scrapeds
Rating
0.0
(0)
Developer
BowTiedRaccoon
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Scrape business listings from local.ch, the Swiss national business directory. Returns company name, address, canton, phone, mobile, email, website, opening hours, ratings, and more for the full Swiss SMB market — filterable by 18 industry verticals.
Swiss Business Directory Scraper Features
- Extracts complete company records — name, street, postal code, city, canton, coordinates
- Returns landline, mobile, fax, email, and website in the same record, when the business lists them
- Filters by 18 industry verticals (restaurants, garages, health specialists, retail, and more)
- Captures ratings, review counts, spoken languages, accepted payment methods, and booking availability
- Formats opening hours per weekday, ready to parse without touching raw HTML
- Covers the entire Swiss directory — every canton, every listed business, not a single-city sample
Who Uses Swiss Business Directory Data?
- Outbound sales teams — build canton-level prospect lists with phone and email already attached
- Fintech and insurance underwriters — enrich KYB checks with a business's registered address and contact details
- Agencies — assemble trade-specific lead lists (plumbers in Zürich, restaurants in Geneva) without hand-copying from a map
- Market researchers — measure SMB density and category mix by canton, or track which verticals cluster where
- CRM and data teams — feed structured Swiss business records straight into an existing pipeline, no cleanup pass required
How Swiss Business Directory Scraper Works
- Pick one or more business verticals (or leave it blank for the whole directory).
- The scraper walks the complete published listing for each selected vertical and pulls every business record it finds.
- Each record is normalized into a consistent JSON shape — same field names whether the source page had three phone numbers or none.
- Results land in your dataset as they're collected, so a run you stop early still keeps what it already gathered.
Input
{"maxItems": 500,"categories": ["garage", "restaurants"]}
| Field | Type | Default | Description |
|---|---|---|---|
maxItems | integer | 10 | Maximum records to scrape. Set to 0 for an unlimited run across the full selected corpus. |
categories | array | (all) | Business verticals to include. Leave empty to crawl every vertical — the entire directory. |
resumeCursor | string | — | Cursor from a previous run's Output, used to continue a stopped crawl. See below. |
Leaving categories empty and maxItems at 0 crawls the full Swiss directory — millions of businesses across every canton. Expect a long run.
Swiss Business Directory Scraper Output Fields
{"entry_id": "Q_Z8HPLKuC9PEw9R5hNc9g","name": "Sutterlüti AG","category": "Sanitär","categories_all": ["Sanitär", "Heizungen"],"street": "Feldeggstrasse 61","postal_code": "8008","city": "Zürich","canton": "ZH","latitude": 47.360905,"longitude": 8.55343,"phone": "044 384 91 00","mobile": null,"fax": null,"email": "info@sutterluetiag.ch","website": "http://www.sutterluetiag.ch","opening_hours": "Mon 07:30-12:00,13:00-16:30; Tue 07:30-12:00,13:00-16:30","languages": ["Deutsch", "Englisch"],"payment_methods": ["Barzahlung", "TWINT"],"has_booking": true,"rating_avg": 5,"rating_count": 4,"description": "Seit 1925 Ihr Partner für Haustechnik im Kanton Zürich","listing_url": "https://www.local.ch/de/d/zuerich/8008/sanitaer/sutterlueti-ag-Q_Z8HPLKuC9PEw9R5hNc9g","locale": "de","source_query_category": "garage","scraped_at": "2026-09-01T22:14:44.370Z"}
| Field | Type | Description |
|---|---|---|
entry_id | string | local.ch's canonical business id |
name | string | Business trade name |
category | string | Primary category |
categories_all | array | Every category the business is tagged under |
street | string | Street and house number |
postal_code | string | Swiss postal code |
city | string | City / locality |
canton | string | Canton code (ZH, GE, VD, etc.) |
latitude / longitude | number | Coordinates |
phone / mobile / fax | string | Contact numbers, when listed |
email | string | Contact email |
website | string | Business website |
opening_hours | string | Weekday opening hours, formatted (e.g. "Mon 07:30-12:00,13:00-16:30") |
languages | array | Spoken/service languages, when the business lists them |
payment_methods | array | Accepted payment methods, when listed |
has_booking | boolean | Whether the business offers online booking |
rating_avg / rating_count | number/integer | Rating and review count |
description | string | Short business tagline |
listing_url | string | Canonical local.ch page for the business |
locale | string | Always "de" |
source_query_category | string | The vertical this record was discovered under |
scraped_at | string | Timestamp the record was delivered |
Resuming a large crawl
Every run emits a resumeCursor in its Output. If a large crawl stops before it finishes — because it hit maxItems, your spend cap (maxTotalChargeUsd), or was aborted — start a new run with the same input plus that resumeCursor to continue from where it left off. The crawl resumes from the queued work the previous run didn't reach.
- You are not re-charged for records the earlier run already delivered.
- Resume within your account's run-retention window — on the free tier, roughly your 10 most recent runs. Once the source run is pruned, its
resumeCursoris no longer valid. resumeCursoris opaque — supply it unmodified.
FAQ
How do I scrape local.ch business listings?
Give Swiss Business Directory Scraper a maxItems value and, optionally, a list of verticals. It returns structured records — one per business — with contact details, address, ratings, and hours already parsed out.
What data can I get from local.ch?
Name, full address with canton, phone, mobile, email, website, opening hours, languages, payment methods, rating, and category — 26 fields per business, covering the whole Swiss directory rather than one city or trade.
Can I filter by industry or business type?
Yes. The categories input restricts a run to any combination of 18 verticals — restaurants, garages, health specialists, retail, and more. Leave it empty to pull everything.
Do I need an account or API key for local.ch?
No. Swiss Business Directory Scraper needs no local.ch account, login, or API key — just an Apify run.
How much does this cost to run?
Pricing is per record collected, so a 50-business test run and a full-directory crawl scale the same way per unit. Check the actor's pricing tab for current rates.
Need More Features?
Need custom fields, filters, or a different target site? File an issue or get in touch.
Why Use Swiss Business Directory Scraper?
- Complete coverage — every canton, every listed vertical, not a single-city sample you have to stitch together yourself.
- Contact-ready output — phone, mobile, email, and website in one record, so a lead list doesn't need a second enrichment pass.
- Consistent schema — 26 fields, same names on every record, whether the source business listed three phone numbers or none.