local APIlocal.ch ↗
Search Swiss businesses, retrieve contact details, opening hours, ratings, and perform reverse phone lookups via the local.ch directory API.
What is the local API?
The local.ch API exposes 4 endpoints for querying Switzerland's largest business directory, covering keyword search, business detail lookup, reverse phone number lookup, and search-by-URL retrieval. The search_businesses endpoint returns paginated results with fields including address, telephone, mobile, email, website, rating, and review_count. The get_business_detail endpoint adds opening hours, categories, and images for any individual listing.
curl -X GET 'https://api.parse.bot/scraper/44627546-fc9a-414a-b949-1ecffd9f66b8/search_businesses?page=1&what=restaurant&where=Zurich' \ -H 'X-API-Key: $PARSE_API_KEY'
Search for businesses in the local.ch directory by keyword and location. Returns a paginated list of business listings with basic contact information. Pagination is page-number based. Each result includes a detail_url for fetching full business information via get_business_detail.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination |
| whatrequired | string | Search keyword for business type or name (e.g. 'garage', 'restaurant', 'bank') |
| whererequired | string | Location to search in, typically a Swiss city name (e.g. 'Zurich', 'Geneva', 'Basel') |
{
"type": "object",
"fields": {
"query": "object containing what, where, and page parameters used",
"businesses": "array of business listing objects with name, detail_url, id, address, telephone, mobile, email, website, rating, review_count, and categories",
"total_count": "integer or null — total number of results if available"
},
"sample": {
"data": {
"query": {
"page": 1,
"what": "restaurant",
"where": "Zurich"
},
"businesses": [
{
"id": "E2FE14_t_A8FFW9_xUkXBQ",
"name": "George Bar & Grill",
"email": null,
"mobile": null,
"rating": null,
"address": "Gessnerallee 5, 8001 Zürich",
"website": null,
"telephone": "+1 (555) 012-3456",
"categories": [],
"detail_url": "https://www.local.ch/en/d/zurich/8001/restaurant/george-bar-grill-E2FE14_t_A8FFW9_xUkXBQ",
"review_count": 0
}
],
"total_count": null
},
"status": "success"
}
}About the local API
Search and Retrieve Swiss Business Listings
The search_businesses endpoint accepts two required parameters — what (a keyword such as garage or restaurant) and where (a Swiss city name such as Zurich or Basel) — and returns a paginated list of matching directory entries. Each entry exposes name, address, telephone, mobile, email, website, rating, review_count, and a detail_url that can be passed directly to get_business_detail. The total_count field tells you how many results the directory holds for that query, though it may be null for some searches.
Business Detail and Phone Lookup
get_business_detail takes a full local.ch business URL and returns the complete available profile: contact fields (telephone, mobile, email, website), categories as an array of strings, images as an array of URLs, rating, and address. Not every field is populated for every listing — businesses that haven't filled out their profile will return null or empty values for some fields. The phone_number_lookup endpoint accepts a Swiss phone number in either spaced or unspaced format and returns all directory entries associated with that number, including the name, address, and contact details of any matched business or person.
Browsing by Search URL
The get_search_results_by_url endpoint accepts a full local.ch search-results URL — including German (/de/), French (/fr/), Italian (/it/), or English (/en/) path variants — and returns listings in the order the site displays them. Each result includes a 1-based position, name, detail_url, and contact fields. The has_next_page boolean and total_count make it straightforward to paginate through an entire result set. The optional page parameter overrides any page already embedded in the supplied URL.
The local API is a managed, monitored endpoint for local.ch — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when local.ch changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official local.ch API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a lead list of Swiss businesses by category and city using
search_businesseswithwhatandwhereparameters - Enrich a CRM with verified phone numbers, email addresses, and website URLs pulled from
get_business_detail - Identify the owner of an unknown Swiss phone number using
phone_number_lookup - Monitor directory presence and ratings for a chain of Swiss locations across multiple cities
- Aggregate business listings for a specific search URL to compare rankings over time with
get_search_results_by_url - Collect category tags and images for Swiss business profiles to populate a local services app
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does local.ch offer an official developer API?+
What does `get_business_detail` return that `search_businesses` does not?+
get_business_detail adds categories (array of category strings), images (array of image URLs), and a full address field. The search endpoint returns these same contact fields at a summary level, but some fields — particularly categories and images — are only populated in the detail response.Does every phone number lookup return a result?+
results array. The total_count field will be 0 or null in those cases.Does the API return opening hours for businesses?+
get_business_detail response. The endpoint covers contact details, categories, images, and ratings. You can fork this API on Parse and revise get_business_detail to add an opening hours field if the source listing includes that data.Can I retrieve user reviews and review text, not just the aggregate rating?+
rating (numeric average) and review_count (integer) but do not expose individual review text or reviewer metadata. You can fork this API on Parse and revise it to add a reviews endpoint that returns individual review entries for a given business.