Docs
POST /v1/search
Search finds restaurants for a dietary query and returns a compass_id you can pass to Decide.
Complete food menu
Every returned restaurant includes vegan_dining.menu: all food dishes, stored prices and ingredients, without drinks or descriptions. No option is required. Search accepts at most 10 restaurants per request. Credits stay unchanged. Google-labeled menus return an empty menu with null counts and excluded: "source_not_permitted".
Ingredients as printed on the restaurant's menu, when listed. May be incomplete. Not for allergy decisions.
Menus deduplicate by normalized dish name. The first stored food row supplies display fields. Original sections are grouped with main courses first; other sections retain stored order, and unknown sections come last. False is_vegan includes unconfirmed classifications. Menus are never truncated: JSON responses above 250 KB return 413 full_menu_too_large; streaming Search emits an error event with status 413. Reduce the Search limit or retrieve restaurants individually.
Request
| Field | Type | Notes |
|---|---|---|
| query | string | Required. Natural-language restaurant query, maximum 500 characters. A US city named in the query, such as in Austin, TX, is searched within 50,000 meters unless the query gives a distance. Price, hours, and ingredient exclusions such as under $20 are not supported constraints. |
| dish | string | Optional explicit dish, maximum 120 characters. Each restaurant includes the complete food menu; matching dishes describe the explicit dish request. |
| user_profile.diet | enum | Optional preference input. vegan_options is an alias of strict_vegan: a vegan meal is available, judged from dishes. Set fully_vegan_only to judge only fully vegan restaurants. vegetarian is judged only from vegan evidence. pescatarian, halal, kosher, and low_fodmap are accepted but always return unknown with reason code DIET_NOT_SUPPORTED. |
| location | object | Optional lat, lng, and radius_m. Required for near me, nearby, or around me queries unless place gives a city. When supplied, returned results stay inside the requested radius. Default radius is 5,000 meters; max is 50,000 meters. Send location or place, not both. |
| place.country_code | string | Optional structured destination, an alternative to location. ISO 3166-1 alpha-2, such as US or FR. A country other than US, including US territories such as PR, returns coverage.status out_of_coverage with empty results. |
| place.region | string | US state code or name, such as ID or Idaho, or DC. Alone, it limits results to that state. Required with place.city. |
| place.city | string | City or town in place.region. Search runs within place.radius_m of it. An unknown state or city returns 400 invalid_place or place_not_found. |
| place.radius_m | integer | Optional radius around place.city in meters. Default 50,000; max 50,000. |
| limit | integer | Optional result count. Fast mode defaults to 5 and maxes at 5. Rich mode defaults to 10 and maxes at 10. |
| include_evidence | boolean | Optional. Defaults to true. |
Use rich mode when you need fuller evidence and query interpretation.
$env:COMPASS_API_KEY = "<YOUR_COMPASS_API_KEY>"
$headers = @{
"X-Compass-API-Key" = $env:COMPASS_API_KEY
"X-Compass-Mode" = "rich"
}
$body = @'
{
"query": "strict vegan ramen near Brooklyn",
"dish": "ramen",
"user_profile": {
"diet": "strict_vegan"
},
"location": {
"lat": 40.6782,
"lng": -73.9442,
"radius_m": 5000
},
"limit": 10,
"include_evidence": true
}
'@
Invoke-RestMethod `
-Method Post `
-Uri "https://api.compassfoodtechnologies.com/v1/search" `
-Headers $headers `
-ContentType "application/json" `
-Body $bodyResponse
Search and Enrich return complete food menus with stored prices and ingredients. Matching dish lists remain request-specific.
SearchResponse: 204 contract leaves. A row is one contract leaf. Optional leaves, missing restaurant evidence, and fast mode can omit fields. This count is the schema, not a promise that every response contains every field.
| Field | Type | Notes |
|---|---|---|
| ai_generated | boolean | Required on this object. |
| client_ref | string | Optional. Omitted when the value is absent. |
| compass_request_id | string | Required on this object. |
| coverage.covered_geography | US | Required on this object. |
| coverage.interpreted_location | string | Optional. Omitted when the value is absent. |
| coverage.note | string | Optional. Omitted when the value is absent. |
| coverage.status | in_coverage | out_of_coverage | coverage_unknown | Required on this object. |
| human_review_recommended | boolean | Optional. Omitted when the value is absent. |
| location_disambiguation.candidates_considered[] | string | Required on this object. |
| location_disambiguation.chosen | string | Required on this object. |
| location_disambiguation.input | string | Required on this object. |
| location_disambiguation.rule | us_wins_when_ambiguous | Required on this object. |
| metadata | object | Optional. Omitted when the value is absent. |
| named_candidates[].address.city | string | null | Required on this object. Optional named-matching/1 capability: selectable addresses independent of dietary recommendations. Possible names are not confirmed identities. |
| named_candidates[].address.country | string | null | Required on this object. Optional named-matching/1 capability: selectable addresses independent of dietary recommendations. Possible names are not confirmed identities. |
| named_candidates[].address.postal_code | string | null | Required on this object. Optional named-matching/1 capability: selectable addresses independent of dietary recommendations. Possible names are not confirmed identities. |
| named_candidates[].address.state | string | null | Required on this object. Optional named-matching/1 capability: selectable addresses independent of dietary recommendations. Possible names are not confirmed identities. |
| named_candidates[].address.street | string | null | Required on this object. Optional named-matching/1 capability: selectable addresses independent of dietary recommendations. Possible names are not confirmed identities. |
| named_candidates[].compass_id | string | Required on this object. Optional named-matching/1 capability: selectable addresses independent of dietary recommendations. Possible names are not confirmed identities. |
| named_candidates[].coordinates.lat | number (double) | null | Required on this object. Optional named-matching/1 capability: selectable addresses independent of dietary recommendations. Possible names are not confirmed identities. |
| named_candidates[].coordinates.lng | number (double) | null | Required on this object. Optional named-matching/1 capability: selectable addresses independent of dietary recommendations. Possible names are not confirmed identities. |
| named_candidates[].cuisine_types[] | string | Required on this object. Optional named-matching/1 capability: selectable addresses independent of dietary recommendations. Possible names are not confirmed identities. |
| named_candidates[].dietary_profile.food_availability.fish | yes | no | unknown | Required on this object. Optional named-matching/1 capability: selectable addresses independent of dietary recommendations. Possible names are not confirmed identities. |
| named_candidates[].dietary_profile.food_availability.meat | yes | no | unknown | Required on this object. Optional named-matching/1 capability: selectable addresses independent of dietary recommendations. Possible names are not confirmed identities. |
| named_candidates[].dietary_profile.food_availability.pescatarian_options | yes | no | unknown | Required on this object. Optional named-matching/1 capability: selectable addresses independent of dietary recommendations. Possible names are not confirmed identities. |
| named_candidates[].dietary_profile.food_availability.shellfish | yes | no | unknown | Required on this object. Optional named-matching/1 capability: selectable addresses independent of dietary recommendations. Possible names are not confirmed identities. |
| named_candidates[].dietary_profile.food_availability.vegan_options | yes | no | unknown | Required on this object. Optional named-matching/1 capability: selectable addresses independent of dietary recommendations. Possible names are not confirmed identities. |
| named_candidates[].dietary_profile.food_availability.vegetarian_options | yes | no | unknown | Required on this object. Optional named-matching/1 capability: selectable addresses independent of dietary recommendations. Possible names are not confirmed identities. |
| named_candidates[].dietary_profile.fully_vegan | boolean | null | Required on this object. Optional named-matching/1 capability: selectable addresses independent of dietary recommendations. Possible names are not confirmed identities. |
| named_candidates[].dietary_profile.vegan_friendly | boolean | null | Required on this object. Optional named-matching/1 capability: selectable addresses independent of dietary recommendations. Possible names are not confirmed identities. |
| named_candidates[].dish_match.dishes[].category | string | null | Required on this object. Optional named-matching/1 capability: selectable addresses independent of dietary recommendations. Possible names are not confirmed identities. |
| named_candidates[].dish_match.dishes[].is_vegan | boolean | Required on this object. Optional named-matching/1 capability: selectable addresses independent of dietary recommendations. Possible names are not confirmed identities. |
| named_candidates[].dish_match.dishes[].match_type | exact | variant | Required on this object. Optional named-matching/1 capability: selectable addresses independent of dietary recommendations. Possible names are not confirmed identities. |
| named_candidates[].dish_match.dishes[].name | string | Required on this object. Optional named-matching/1 capability: selectable addresses independent of dietary recommendations. Possible names are not confirmed identities. |
| named_candidates[].dish_match.match_type | dish | cuisine_only | Required on this object. Optional named-matching/1 capability: selectable addresses independent of dietary recommendations. Possible names are not confirmed identities. |
| named_candidates[].dish_match.requested_dish | string | Required on this object. Optional named-matching/1 capability: selectable addresses independent of dietary recommendations. Possible names are not confirmed identities. |
| named_candidates[].distance_m | number | Optional. Omitted when the value is absent. Optional named-matching/1 capability: selectable addresses independent of dietary recommendations. Possible names are not confirmed identities. |
| named_candidates[].evidence[].evidence_id | string | Required on this object. Optional named-matching/1 capability: selectable addresses independent of dietary recommendations. Possible names are not confirmed identities. |
| named_candidates[].evidence[].excerpt | string | Optional. Omitted when the value is absent. Optional named-matching/1 capability: selectable addresses independent of dietary recommendations. Possible names are not confirmed identities. |
| named_candidates[].evidence[].paraphrase_method | automatic | manual | none | Optional. Omitted when the value is absent. Optional named-matching/1 capability: selectable addresses independent of dietary recommendations. Possible names are not confirmed identities. |
| named_candidates[].evidence[].source | string (uri) | Required on this object. Optional named-matching/1 capability: selectable addresses independent of dietary recommendations. Possible names are not confirmed identities. |
| named_candidates[].evidence[].tier | A | B | Required on this object. Optional named-matching/1 capability: selectable addresses independent of dietary recommendations. Possible names are not confirmed identities. |
| named_candidates[].evidence[].type | menu_item | review_signal | external_source | user_report | restaurant_declared | Required on this object. Optional named-matching/1 capability: selectable addresses independent of dietary recommendations. Possible names are not confirmed identities. |
| named_candidates[].evidence[].weight | primary | supporting | Required on this object. Optional named-matching/1 capability: selectable addresses independent of dietary recommendations. Possible names are not confirmed identities. |
| named_candidates[].last_evaluated_at | string (date-time) | null | Required on this object. Optional named-matching/1 capability: selectable addresses independent of dietary recommendations. Possible names are not confirmed identities. |
| named_candidates[].last_verified_at | string (date-time) | null | Required on this object. Optional named-matching/1 capability: selectable addresses independent of dietary recommendations. Possible names are not confirmed identities. |
| named_candidates[].match_for_profile.confidence | high | medium | low | Required on this object. Optional named-matching/1 capability: selectable addresses independent of dietary recommendations. Possible names are not confirmed identities. |
| named_candidates[].match_for_profile.decision | fit | not_fit | unknown | Required on this object. Optional named-matching/1 capability: selectable addresses independent of dietary recommendations. Possible names are not confirmed identities. |
| named_candidates[].match_for_profile.reason_codes[] | VEGAN_MENU_CONFIRMED | VEGAN_OPTIONS_MENTIONED | NO_VEGAN_EVIDENCE_FOUND | VEGETARIAN_ONLY_NOT_STRICT_VEGAN | VEGAN_MENU_FULL_RESTAURANT | VEGAN_FRIENDLY_PARTIAL | FRYER_CONTAMINATION_RISK | SHARED_GRILL_RISK | SHARED_PREP_SURFACE_RISK | DEDICATED_VEGAN_PREP_CONFIRMED | CROSS_CONTAMINATION_UNKNOWN | MENU_OUTDATED | REVIEW_SIGNAL_POSITIVE | REVIEW_SIGNAL_NEGATIVE | REVIEW_SIGNAL_CONFLICTING | SOURCE_CONFIDENCE_LOW | SOURCE_CONFIDENCE_HIGH | RESTAURANT_VERIFICATION_RECOMMENDED | DATA_FRESHNESS_POOR | INSUFFICIENT_EVIDENCE | HIGH_CONFIDENCE_DECISION | EDGE_CASE_FLAGGED | USER_PROFILE_AMBIGUOUS | DIET_NOT_SUPPORTED | LOCATION_OUT_OF_COVERAGE | LOCATION_INTERPRETED_US | LOCATION_UNRESOLVED_US_ONLY | VEGAN_MEAL_AVAILABLE | VEGAN_OPTIONS_LIMITED | NO_VEGAN_DISHES_IN_COLLECTED_MENU | INSUFFICIENT_MENU_EVIDENCE | NO_DISH_DATA | REQUESTED_DISH_AVAILABLE | FULLY_VEGAN_RESTAURANT | NOT_FULLY_VEGAN | NO_RESTAURANT_FLAG | Required on this object. Optional named-matching/1 capability: selectable addresses independent of dietary recommendations. Possible names are not confirmed identities. |
| named_candidates[].match_for_profile.recommended_user_text | string | Required on this object. Optional named-matching/1 capability: selectable addresses independent of dietary recommendations. Possible names are not confirmed identities. |
| named_candidates[].match_for_profile.risk_flags[] | cross_contamination_risk | limited_evidence | stale_data | third_party_unverified | user_report_only | language_barrier | Required on this object. Optional named-matching/1 capability: selectable addresses independent of dietary recommendations. Possible names are not confirmed identities. |
| named_candidates[].match_for_profile.verification_required | boolean | Required on this object. Optional named-matching/1 capability: selectable addresses independent of dietary recommendations. Possible names are not confirmed identities. |
| named_candidates[].name | string | null | Required on this object. Optional named-matching/1 capability: selectable addresses independent of dietary recommendations. Possible names are not confirmed identities. |
| named_candidates[].name_match.kind | exact | variant | possible | Required on this object. Optional named-matching/1 capability: selectable addresses independent of dietary recommendations. Possible names are not confirmed identities. |
| named_candidates[].name_match.reason_codes[] | NORMALIZED_NAME | COMPATIBLE_TEXT_KEY | DISTINCTIVE_CORE | EXPLAINED_SUFFIX | UNEXPLAINED_QUERY_TERMS | CONSTRAINED_TYPO | Required on this object. Optional named-matching/1 capability: selectable addresses independent of dietary recommendations. Possible names are not confirmed identities. |
| named_candidates[].name_match.selection_required | boolean | Required on this object. Optional named-matching/1 capability: selectable addresses independent of dietary recommendations. Possible names are not confirmed identities. |
| named_candidates[].services | object of boolean | Optional. Omitted when the value is absent. Optional named-matching/1 capability: selectable addresses independent of dietary recommendations. Possible names are not confirmed identities. |
| named_candidates[].source_freshness.newest_signal_age_days | integer | Required on this object. Optional named-matching/1 capability: selectable addresses independent of dietary recommendations. Possible names are not confirmed identities. |
| named_candidates[].source_freshness.oldest_signal_age_days | integer | Required on this object. Optional named-matching/1 capability: selectable addresses independent of dietary recommendations. Possible names are not confirmed identities. |
| named_candidates[].vegan_dining.dishes_availability | yes | unknown | Required on this object. Optional named-matching/1 capability: selectable addresses independent of dietary recommendations. Possible names are not confirmed identities. |
| named_candidates[].vegan_dining.match_status | matched | no_supported_match | evidence_unavailable | Required on this object. Optional named-matching/1 capability: selectable addresses independent of dietary recommendations. Possible names are not confirmed identities. |
| named_candidates[].vegan_dining.matched_dishes[].category | string | null | Required on this object. Optional named-matching/1 capability: selectable addresses independent of dietary recommendations. Possible names are not confirmed identities. |
| named_candidates[].vegan_dining.matched_dishes[].evidence_id | string | Required on this object. Optional named-matching/1 capability: selectable addresses independent of dietary recommendations. Possible names are not confirmed identities. |
| named_candidates[].vegan_dining.matched_dishes[].match_type | exact | variant | not_requested | Required on this object. Optional named-matching/1 capability: selectable addresses independent of dietary recommendations. Possible names are not confirmed identities. |
| named_candidates[].vegan_dining.matched_dishes[].name | string | Required on this object. Optional named-matching/1 capability: selectable addresses independent of dietary recommendations. Possible names are not confirmed identities. |
| named_candidates[].vegan_dining.matched_dishes[].vegan_basis | validated_menu_classification | Required on this object. Optional named-matching/1 capability: selectable addresses independent of dietary recommendations. Possible names are not confirmed identities. |
| named_candidates[].vegan_dining.matching_dish_count | integer | null | Required on this object. Optional named-matching/1 capability: selectable addresses independent of dietary recommendations. Possible names are not confirmed identities. |
| named_candidates[].vegan_dining.menu_collected_at | string (date-time) | null | Required on this object. Optional named-matching/1 capability: selectable addresses independent of dietary recommendations. Possible names are not confirmed identities. |
| named_candidates[].vegan_dining.menu_collected_at_status | known | unknown | Required on this object. Optional named-matching/1 capability: selectable addresses independent of dietary recommendations. Possible names are not confirmed identities. |
| named_candidates[].vegan_dining.menu.dish_count | integer | null | Required on this object. Optional named-matching/1 capability: selectable addresses independent of dietary recommendations. Possible names are not confirmed identities. |
| named_candidates[].vegan_dining.menu.dishes[].category | string | null | Required on this object. Optional named-matching/1 capability: selectable addresses independent of dietary recommendations. Possible names are not confirmed identities. |
| named_candidates[].vegan_dining.menu.dishes[].ingredients_as_listed[] | string | Required on this object. Optional named-matching/1 capability: selectable addresses independent of dietary recommendations. Possible names are not confirmed identities. |
| named_candidates[].vegan_dining.menu.dishes[].is_vegan | boolean | Required on this object. Optional named-matching/1 capability: selectable addresses independent of dietary recommendations. Possible names are not confirmed identities. |
| named_candidates[].vegan_dining.menu.dishes[].name | string | Required on this object. Optional named-matching/1 capability: selectable addresses independent of dietary recommendations. Possible names are not confirmed identities. |
| named_candidates[].vegan_dining.menu.dishes[].price | string | null | Required on this object. Optional named-matching/1 capability: selectable addresses independent of dietary recommendations. Possible names are not confirmed identities. |
| named_candidates[].vegan_dining.menu.excluded | source_not_permitted | null | Required on this object. Optional named-matching/1 capability: selectable addresses independent of dietary recommendations. Possible names are not confirmed identities. |
| named_candidates[].vegan_dining.menu.vegan_dish_count | integer | null | Required on this object. Optional named-matching/1 capability: selectable addresses independent of dietary recommendations. Possible names are not confirmed identities. |
| named_candidates[].vegan_dining.truncated | boolean | Required on this object. Optional named-matching/1 capability: selectable addresses independent of dietary recommendations. Possible names are not confirmed identities. |
| named_candidates[].vegan_dining.vegan_dish_count | integer | null | Required on this object. Optional named-matching/1 capability: selectable addresses independent of dietary recommendations. Possible names are not confirmed identities. |
| named_candidates[].vegan_score.base | 10 | 30 | 50 | 70 | 80 | null | Required on this object. Optional named-matching/1 capability: selectable addresses independent of dietary recommendations. Possible names are not confirmed identities. |
| named_candidates[].vegan_score.is_fully_vegan | boolean | null | Required on this object. Optional named-matching/1 capability: selectable addresses independent of dietary recommendations. Possible names are not confirmed identities. |
| named_candidates[].vegan_score.overall | number | null | Required on this object. Optional named-matching/1 capability: selectable addresses independent of dietary recommendations. Possible names are not confirmed identities. |
| named_candidates[].vegan_score.quality_adj | 0 | 10 | null | Required on this object. Optional named-matching/1 capability: selectable addresses independent of dietary recommendations. Possible names are not confirmed identities. |
| named_candidates[].vegan_score.quality_adj_reason | praised | no_standout | not_applicable | null | Required on this object. Optional named-matching/1 capability: selectable addresses independent of dietary recommendations. Possible names are not confirmed identities. |
| named_candidates[].vegan_score.scored_at | string (date-time) | null | Required on this object. Optional named-matching/1 capability: selectable addresses independent of dietary recommendations. Possible names are not confirmed identities. |
| named_candidates[].vegan_score.scoring_version | string | null | Required on this object. Optional named-matching/1 capability: selectable addresses independent of dietary recommendations. Possible names are not confirmed identities. |
| named_candidates[].vegan_score.vegan_adj | -10 | 0 | 10 | null | Required on this object. Optional named-matching/1 capability: selectable addresses independent of dietary recommendations. Possible names are not confirmed identities. |
| named_candidates[].vegan_score.vegan_adj_reason | praised | weak | not_enough_reviews | mixed | not_applicable | null | Required on this object. Optional named-matching/1 capability: selectable addresses independent of dietary recommendations. Possible names are not confirmed identities. |
| named_candidates[].vegan_score.vegan_dish_count | integer | null | Required on this object. Optional named-matching/1 capability: selectable addresses independent of dietary recommendations. Possible names are not confirmed identities. |
| named_candidates[].vegan_score.vegan_main_count | integer | null | Required on this object. Optional named-matching/1 capability: selectable addresses independent of dietary recommendations. Possible names are not confirmed identities. |
| named_lookup.complete | boolean | Required on this object. The bounded retrieval plan completed. This does not establish corpus coverage, absence, or approximate uniqueness. |
| named_lookup.policy_version | named-matching/1 | named-matching/1.1 | named-matching/1.2 | named-matching/1.3 | named-matching/1.4 | Required on this object. |
| named_lookup.truncated | boolean | Required on this object. |
| named_match.alternatives[].compass_id | string | Required on this object. |
| named_match.alternatives[].name | string | Required on this object. |
| named_match.alternatives[].reason | same_name_without_location | multiple_matches_without_location | Required on this object. |
| named_match.compass_ids[] | string | Required on this object. |
| named_match.match_method | normalized_name | normalized_slug | Optional. Omitted when the value is absent. |
| named_match.status | confident | ambiguous | no_confident_match | lookup_incomplete | Required on this object. |
| named_match.target | string | Required on this object. |
| nearest_match | value | null | Optional. Omitted when the value is absent. |
| nearest_match_note | string | Optional. Omitted when the value is absent. |
| nearest_match.address.city | string | null | Required on this object. |
| nearest_match.address.country | string | null | Required on this object. |
| nearest_match.address.postal_code | string | null | Required on this object. |
| nearest_match.address.state | string | null | Required on this object. |
| nearest_match.address.street | string | null | Required on this object. |
| nearest_match.compass_id | string | Required on this object. |
| nearest_match.coordinates.lat | number | null | Optional. Omitted when the value is absent. |
| nearest_match.coordinates.lng | number | null | Optional. Omitted when the value is absent. |
| nearest_match.distance_km | number | Required on this object. |
| nearest_match.matching_dishes[].category | string | null | Required on this object. |
| nearest_match.matching_dishes[].is_vegan | boolean | Required on this object. |
| nearest_match.matching_dishes[].match_type | exact | variant | Required on this object. |
| nearest_match.matching_dishes[].name | string | Required on this object. |
| nearest_match.name | string | null | Required on this object. |
| query_interpretation.cuisine_inferred | string | Optional. Omitted when the value is absent. Key field. Rich mode only. Fast responses omit query_interpretation. |
| query_interpretation.diet_inferred | string | Optional. Omitted when the value is absent. Key field. Rich mode only. Fast responses omit query_interpretation. |
| query_interpretation.dish_inferred | string | null | Optional. Omitted when the value is absent. Key field. Rich mode only. Fast responses omit query_interpretation. |
| query_interpretation.dish_source | explicit | query | Optional. Omitted when the value is absent. Key field. Rich mode only. Fast responses omit query_interpretation. |
| query_interpretation.ignored_query_terms[] | string | Optional. Omitted when the value is absent. Key field. Rich mode only. Fast responses omit query_interpretation. |
| query_interpretation.intent_inferred | named | dish | cuisine | general | Optional. Omitted when the value is absent. Key field. Rich mode only. Fast responses omit query_interpretation. |
| query_interpretation.location_inferred | string | Optional. Omitted when the value is absent. Key field. Rich mode only. Fast responses omit query_interpretation. |
| query_interpretation.neighborhood_inferred | string | Optional. Omitted when the value is absent. Key field. Rich mode only. Fast responses omit query_interpretation. |
| query_interpretation.radius_m | integer | Optional. Omitted when the value is absent. Key field. Rich mode only. Fast responses omit query_interpretation. |
| query_interpretation.radius_m_inferred | boolean | Optional. Omitted when the value is absent. Key field. Rich mode only. Fast responses omit query_interpretation. |
| query_interpretation.radius_m_text_ignored | boolean | Optional. Omitted when the value is absent. Key field. Rich mode only. Fast responses omit query_interpretation. |
| query_interpretation.target_inferred | string | null | Optional. Omitted when the value is absent. Key field. Rich mode only. Fast responses omit query_interpretation. |
| result_status | matched | no_match | no_supported_match | out_of_coverage | Required on this object. |
| results[].address.city | string | null | Required on this object. |
| results[].address.country | string | null | Required on this object. |
| results[].address.postal_code | string | null | Required on this object. |
| results[].address.state | string | null | Required on this object. |
| results[].address.street | string | null | Required on this object. |
| results[].compass_id | string | Required on this object. Key field. Pass this ID to Decide. |
| results[].coordinates.lat | number (double) | null | Required on this object. |
| results[].coordinates.lng | number (double) | null | Required on this object. |
| results[].cuisine_types[] | string | Required on this object. |
| results[].dietary_profile.food_availability.fish | yes | no | unknown | Required on this object. |
| results[].dietary_profile.food_availability.meat | yes | no | unknown | Required on this object. |
| results[].dietary_profile.food_availability.pescatarian_options | yes | no | unknown | Required on this object. |
| results[].dietary_profile.food_availability.shellfish | yes | no | unknown | Required on this object. |
| results[].dietary_profile.food_availability.vegan_options | yes | no | unknown | Required on this object. |
| results[].dietary_profile.food_availability.vegetarian_options | yes | no | unknown | Required on this object. |
| results[].dietary_profile.fully_vegan | boolean | null | Required on this object. |
| results[].dietary_profile.vegan_friendly | boolean | null | Required on this object. |
| results[].dish_match.dishes[].category | string | null | Required on this object. |
| results[].dish_match.dishes[].is_vegan | boolean | Required on this object. |
| results[].dish_match.dishes[].match_type | exact | variant | Required on this object. |
| results[].dish_match.dishes[].name | string | Required on this object. |
| results[].dish_match.match_type | dish | cuisine_only | Required on this object. |
| results[].dish_match.requested_dish | string | Required on this object. |
| results[].distance_m | number | Optional. Omitted when the value is absent. |
| results[].evidence[].evidence_id | string | Required on this object. Fast responses include at most two evidence items. |
| results[].evidence[].excerpt | string | Optional. Omitted when the value is absent. Fast responses include at most two evidence items. |
| results[].evidence[].paraphrase_method | automatic | manual | none | Optional. Omitted when the value is absent. Fast responses include at most two evidence items. |
| results[].evidence[].source | string (uri) | Required on this object. Fast responses include at most two evidence items. |
| results[].evidence[].tier | A | B | Required on this object. Fast responses include at most two evidence items. |
| results[].evidence[].type | menu_item | review_signal | external_source | user_report | restaurant_declared | Required on this object. Fast responses include at most two evidence items. |
| results[].evidence[].weight | primary | supporting | Required on this object. Fast responses include at most two evidence items. |
| results[].last_evaluated_at | string (date-time) | null | Required on this object. |
| results[].last_verified_at | string (date-time) | null | Required on this object. |
| results[].match_for_profile.confidence | high | medium | low | Required on this object. Key field when the request includes user_profile. |
| results[].match_for_profile.decision | fit | not_fit | unknown | Required on this object. Key field when the request includes user_profile. |
| results[].match_for_profile.reason_codes[] | VEGAN_MENU_CONFIRMED | VEGAN_OPTIONS_MENTIONED | NO_VEGAN_EVIDENCE_FOUND | VEGETARIAN_ONLY_NOT_STRICT_VEGAN | VEGAN_MENU_FULL_RESTAURANT | VEGAN_FRIENDLY_PARTIAL | FRYER_CONTAMINATION_RISK | SHARED_GRILL_RISK | SHARED_PREP_SURFACE_RISK | DEDICATED_VEGAN_PREP_CONFIRMED | CROSS_CONTAMINATION_UNKNOWN | MENU_OUTDATED | REVIEW_SIGNAL_POSITIVE | REVIEW_SIGNAL_NEGATIVE | REVIEW_SIGNAL_CONFLICTING | SOURCE_CONFIDENCE_LOW | SOURCE_CONFIDENCE_HIGH | RESTAURANT_VERIFICATION_RECOMMENDED | DATA_FRESHNESS_POOR | INSUFFICIENT_EVIDENCE | HIGH_CONFIDENCE_DECISION | EDGE_CASE_FLAGGED | USER_PROFILE_AMBIGUOUS | DIET_NOT_SUPPORTED | LOCATION_OUT_OF_COVERAGE | LOCATION_INTERPRETED_US | LOCATION_UNRESOLVED_US_ONLY | VEGAN_MEAL_AVAILABLE | VEGAN_OPTIONS_LIMITED | NO_VEGAN_DISHES_IN_COLLECTED_MENU | INSUFFICIENT_MENU_EVIDENCE | NO_DISH_DATA | REQUESTED_DISH_AVAILABLE | FULLY_VEGAN_RESTAURANT | NOT_FULLY_VEGAN | NO_RESTAURANT_FLAG | Required on this object. Key field when the request includes user_profile. Fast responses include at most three match_for_profile reason codes. |
| results[].match_for_profile.recommended_user_text | string | Required on this object. Key field when the request includes user_profile. |
| results[].match_for_profile.risk_flags[] | cross_contamination_risk | limited_evidence | stale_data | third_party_unverified | user_report_only | language_barrier | Required on this object. Key field when the request includes user_profile. |
| results[].match_for_profile.verification_required | boolean | Required on this object. Key field when the request includes user_profile. |
| results[].name | string | null | Required on this object. |
| results[].services | object of boolean | Optional. Omitted when the value is absent. |
| results[].source_freshness.newest_signal_age_days | integer | Required on this object. |
| results[].source_freshness.oldest_signal_age_days | integer | Required on this object. |
| results[].vegan_dining.dishes_availability | yes | unknown | Required on this object. |
| results[].vegan_dining.match_status | matched | no_supported_match | evidence_unavailable | Required on this object. |
| results[].vegan_dining.matched_dishes[].category | string | null | Required on this object. |
| results[].vegan_dining.matched_dishes[].evidence_id | string | Required on this object. |
| results[].vegan_dining.matched_dishes[].match_type | exact | variant | not_requested | Required on this object. |
| results[].vegan_dining.matched_dishes[].name | string | Required on this object. |
| results[].vegan_dining.matched_dishes[].vegan_basis | validated_menu_classification | Required on this object. |
| results[].vegan_dining.matching_dish_count | integer | null | Required on this object. |
| results[].vegan_dining.menu_collected_at | string (date-time) | null | Required on this object. |
| results[].vegan_dining.menu_collected_at_status | known | unknown | Required on this object. |
| results[].vegan_dining.menu.dish_count | integer | null | Required on this object. |
| results[].vegan_dining.menu.dishes[].category | string | null | Required on this object. |
| results[].vegan_dining.menu.dishes[].ingredients_as_listed[] | string | Required on this object. |
| results[].vegan_dining.menu.dishes[].is_vegan | boolean | Required on this object. |
| results[].vegan_dining.menu.dishes[].name | string | Required on this object. |
| results[].vegan_dining.menu.dishes[].price | string | null | Required on this object. |
| results[].vegan_dining.menu.excluded | source_not_permitted | null | Required on this object. |
| results[].vegan_dining.menu.vegan_dish_count | integer | null | Required on this object. |
| results[].vegan_dining.truncated | boolean | Required on this object. |
| results[].vegan_dining.vegan_dish_count | integer | null | Required on this object. |
| results[].vegan_score.base | 10 | 30 | 50 | 70 | 80 | null | Required on this object. Key field. Both modes return the same menu-based v5 score components; unavailable legacy components are null. |
| results[].vegan_score.is_fully_vegan | boolean | null | Required on this object. Key field. Both modes return the same menu-based v5 score components; unavailable legacy components are null. |
| results[].vegan_score.overall | number | null | Required on this object. Key field. Both modes return the same menu-based v5 score components; unavailable legacy components are null. |
| results[].vegan_score.quality_adj | 0 | 10 | null | Required on this object. Key field. Both modes return the same menu-based v5 score components; unavailable legacy components are null. |
| results[].vegan_score.quality_adj_reason | praised | no_standout | not_applicable | null | Required on this object. Key field. Both modes return the same menu-based v5 score components; unavailable legacy components are null. |
| results[].vegan_score.scored_at | string (date-time) | null | Required on this object. Key field. Both modes return the same menu-based v5 score components; unavailable legacy components are null. |
| results[].vegan_score.scoring_version | string | null | Required on this object. Key field. Both modes return the same menu-based v5 score components; unavailable legacy components are null. |
| results[].vegan_score.vegan_adj | -10 | 0 | 10 | null | Required on this object. Key field. Both modes return the same menu-based v5 score components; unavailable legacy components are null. |
| results[].vegan_score.vegan_adj_reason | praised | weak | not_enough_reviews | mixed | not_applicable | null | Required on this object. Key field. Both modes return the same menu-based v5 score components; unavailable legacy components are null. |
| results[].vegan_score.vegan_dish_count | integer | null | Required on this object. Key field. Both modes return the same menu-based v5 score components; unavailable legacy components are null. |
| results[].vegan_score.vegan_main_count | integer | null | Required on this object. Key field. Both modes return the same menu-based v5 score components; unavailable legacy components are null. |
| total_results | integer | Required on this object. |
The example answers the ramen request above. Each result is a restaurant with its matching vegan dishes and the date the menu was collected. A ramen request returns ramen dishes only.
Abridged SearchResponse example — 31 of 204 contract leaves. Illustrative values, not a live payload.
{
"compass_request_id": "req_example_quickstart",
"coverage": {
"status": "in_coverage",
"covered_geography": "US"
},
"results": [
{
"compass_id": "cmp_example_ramen_house_001",
"name": "Example Ramen House",
"dish_match": {
"requested_dish": "ramen",
"match_type": "dish",
"dishes": [
{
"name": "Shoyu Vegan Ramen",
"category": "Pasta & Noodles",
"match_type": "variant",
"is_vegan": true
},
{
"name": "Spicy Miso Vegan Ramen",
"category": "Pasta & Noodles",
"match_type": "variant",
"is_vegan": true
}
]
},
"vegan_dining": {
"dishes_availability": "yes",
"vegan_dish_count": 6,
"matching_dish_count": 2,
"matched_dishes": [
{
"name": "Shoyu Vegan Ramen",
"category": "Pasta & Noodles",
"match_type": "variant",
"evidence_id": "ev_dish_example_shoyu_vegan_ramen",
"vegan_basis": "validated_menu_classification"
},
{
"name": "Spicy Miso Vegan Ramen",
"category": "Pasta & Noodles",
"match_type": "variant",
"evidence_id": "ev_dish_example_spicy_miso_vegan_ramen",
"vegan_basis": "validated_menu_classification"
}
],
"truncated": false,
"menu_collected_at": "2026-10-07T16:00:00Z",
"menu_collected_at_status": "known",
"match_status": "matched"
},
"match_for_profile": {
"decision": "fit",
"confidence": "medium",
"reason_codes": [
"REQUESTED_DISH_AVAILABLE"
],
"risk_flags": [],
"verification_required": true,
"recommended_user_text": "Compass found a vegan version of the requested dish on the collected menu (menu collected 2026-10-07)."
}
}
],
"result_status": "matched",
"total_results": 1,
"ai_generated": true
}Decision Safety
| Field | Type | Notes |
|---|---|---|
| fit | decision | Compass has strong supporting evidence for the submitted profile and no weak, stale, or conflicting evidence signals. |
| not_fit | decision | Compass has enough structured evidence to reject the submitted profile. |
| unknown | decision | Compass cannot confirm fit or non-fit with current evidence. Treat this as verify with the restaurant before safety-critical use. |
| verification_required | boolean | True when the customer should verify details directly with the restaurant before relying on the result. |
Modes
| Field | Type | Notes |
|---|---|---|
| fast | default 5, max 5 | Complete food menus with compact score and evidence details. |
| rich | default 10, max 10 | Fuller evidence, query interpretation, and per-result fit reasoning. |
Fast mode keeps the same v5 score components and omits query_interpretation. It keeps at most two evidence items and three match_for_profile reason codes. Those limits are marked on the generated response rows above.