Search salons
search_merchantsFilter collection=public-research for researched menus, add-ons, public stylist information and policies. Call get_merchant for the full public_research object. Discovery and name/address lookup, not an extras-inclusive price decision. For a supported service with budget, extras or date, start with compare_options. Find San Francisco hair salons and barbers by name/street (q), neighborhood (with nearby), service, date/time and online booking. Returns compact task summaries by default: depth (profiled = researched in depth; listed = public records + the business’s own site, see depth_note), booking_cta, hours_for_day (published hours for date, not live slots), up to 3 matched_offerings with prices, license_status, freshness, availability_basis (published_hours / schedule_candidates = unconfirmed / none); profiled salons add candidate_start_times. Unknown values are null. For published hours/detail only, call check_availability. Before selecting a budget option, call compare_options; follow next_action to confirm unresolved charges and actual appointment availability with the merchant.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Business name or street, fuzzy (e.g. "cinta", "hairshaper", "23 grant") | |
| day | No | Open on this day per published hours: Mo..Su or e.g. "saturday" | |
| date | No | YYYY-MM-DD in the city’s timezone (default today): hours_for_day is computed for this date | |
| view | No | summary = compact task view (default); full = every field | |
| after | No | HH:MM earliest start (with date); applied to start times only under require_availability | |
| depth | No | Only salons of this depth: profiled (booking-system depth), detailed (priced menu + booking link + hours or durations), listed (the rest) | |
| limit | No | Default 10, max 25 | |
| before | No | HH:MM latest start (with date); applied to start times only under require_availability | |
| offset | No | ||
| service | No | Service tag (e.g. "balayage"), intent slug (e.g. "hair-color", "open-saturday", "mens-haircut") or free text | |
| stylist | No | Stylist display name (profiled salons) | |
| max_price | No | Base offering price in USD, not the complete service with extras; use compare_options for that. Only offerings whose price is KNOWN to be at most this (fixed or bounded range); starting prices do not count | |
| specialty | No | ||
| collection | No | Only independently researched public-source profiles; missing fields are UNKNOWN; booking stays on salon website | |
| open_after | No | Closes after HH:MM (on `day` if given) | |
| time_after | No | HH:MM — with date: only intervals open after this time count | |
| hair_length | No | ||
| has_booking | No | Only salons with (true) / without (false) an online booking link | |
| time_before | No | HH:MM — with date: only intervals open before this time count | |
| haircut_type | No | Only salons with an offering of this normalized haircut type (profiled salons) | |
| neighborhood | No | Neighborhood slug, label or alias (e.g. "soma", "mission") or an area (e.g. "union-square") | |
| open_on_date | No | Only salons open on `date` per published hours (not live slots) | |
| include_nearby | No | With neighborhood: also include salons within ~400 m (match="nearby", distance_label). Default true. | |
| require_availability | No | Only offerings with PROVIDER-CONFIRMED start times in the date/after/before window. Schedule-derived candidate start times never satisfy it; salons that have only candidates are returned under `unconfirmed` with unconfirmed_reason. No salon has provider-confirmed availability today. |