Find a hotel by name
Fuzzy search over the names of every hotel FX-Port knows.
/api/v1/hotels/name-searchIt tolerates typos, partial names and accents. Each hit carries the FX-Port hotel id to send as hotel_id to get_rates and search_advanced. Hits with a match_score below about 80 are often other hotels (a search for Sofitel Algiers also finds a hotel called Algiers in Las Vegas): show the score or keep the best few. The ids are the same in the sandbox and on live, and a hit is not necessarily bookable in the sandbox. POST / takes the same fields as a JSON body.
curl 'https://api.fx-port.com/api/v1/hotels/name-search?query=Sofitel%20Algiers&limit=3' \
-H "Authorization: Bearer fxp_test_YOUR_KEY"{
"environment": "sandbox",
"query": "Sofitel Algiers",
"results_count": 2,
"search_time": "0.060s",
"hotels": [
{
"id": "sofitel_algiers_hamma_garden",
"name": "Sofitel Algiers Hamma Garden",
"match_score": 83.39,
"match_type": "partial",
"address": "172, rue Hassiba Benbouali, Algiers",
"city": "Algiers",
"country_code": "DZ",
"postal_code": "16014"
},
{
"id": "algiers_hotel",
"name": "Algiers",
"match_score": 76.67,
"match_type": "partial",
"address": "2845 South Las Vegas Boulevard Las Vegas, South Las Vegas Boulevard, Las Vegas",
"city": "Las Vegas",
"country_code": "US",
"postal_code": "89109"
}
]
}Request
Query parameters
querystringrequiredThe hotel name or a part of it, 2 to 100 characters.
limitintegerMost hits to return, 1 to 100. A number outside that range, or text that is not a number, answers 400 invalid_limit.
Between 1 and 100. Default 10.
min_scorenumberLowest match score to return, 0 to 100. A number outside that range, or text that is not a number, answers 400 invalid_min_score.
Between 0 and 100. Default 60.
include_locationbooleanAdd the address, city, country code and postal code to each hit.
Default true.
include_detailsbooleanReturn the whole cached hotel document of each hit (about 26 KB each) instead of the summary.
Default false.
Response
200The hotels that match, best match first.
environmentstringThe environment of the key that made the call: sandbox for fxp_test_ keys, live for fxp_live_ keys. Present in every JSON body.
One of sandbox, live.
request_idstringThe id of the request, also in the X-Request-Id header.
warningsarray of objectPresent only when the request used a previous spelling of a field or something the endpoint ignored.
ShowHide 5 attributes
codestringWhat the warning is about.
One of deprecated_field, ignored_field, coerced_value, deprecated_value, deprecated_endpoint.
fieldstringThe request field the warning is about.
replacementstringThe name to use instead, for deprecated_* warnings.
messagestringA sentence that says what happened and what to do.
documentation_urlstringWhere the naming rules are explained.
querystringThe text you searched for.
results_countintegerHow many hotels are in hotels.
search_timestringTime the search took, as text with its unit, such as 0.061s.
hotelsarray of objectThe hotels that match, best match first.
ShowHide 8 attributes
idstringThe FX-Port hotel id: send it as hotel_id.
namestringName of the hotel.
match_scorenumberHow well the name matches your text, 0 to 100, two decimals. Below about 80 the hit is often another hotel.
Between 0 and 100.
match_typestringHow the name matched.
One of exact, partial, fuzzy.
addressstringStreet address.
citystringCity.
country_codestringISO 3166-1 alpha-2 country code.
postal_codestringPostal code; an empty string when unknown.
Errors
| Status | Code | Example message |
|---|---|---|
| 400 | invalid_query | 'query' must be 2 to 100 characters long. |
| 400 | invalid_limit | 'limit' must be at most 100. |
| 400 | invalid_min_score | 'min_score' must be a number between 0 and 100. |
| 400 | bad_request | Query cannot be empty |
| 422 | validation_error | Field required |
| 503 | service_busy | Hotel name search is busy right now. Retry in a couple of seconds. |
The shape of the error body depends on the endpoint. See Errors for every shape and code.