> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://bcdtravel.ferndocs.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://bcdtravel.ferndocs.com/_mcp/server.

# List hotels

GET https://api.bcdtravel.com/{version}/hotels/get_list/

Retrieves a list of hotels near a location.

**Use case**

This endpoint can be used on the back-end by your application to retrieve a list of the hotels near a particular location (please limit your requests to 250 hotels at a time). It supports geographic coordinates, hotel brand keyword, city or code from the `destination_lookup` endpoint as the destination. It supports the master hotel chain code from the `get_hotel_chains_list` endpoint for chains. The response contains the location and basic hotel information, including hotel chain, images, distance, neighborhood, sort order, hotel property and room amenity codes.

**What's next?**

The list of hotel IDs in the response can be used to pre-populate the request of the `get_availability` endpoint to get hotel rates and availability.


Reference: https://bcdtravel.ferndocs.com/hotel/api-reference/hotel-api/hotels/get-list

## Request

### Path parameters

- `version` (string, required)

### Query parameters

- `api_key` (string, optional) — Your public API key. Example: `api_key=testkey`.
- `timestamp` (string, optional) — The UNIX (UTC) timestamp created by your application for this request (in seconds). Must be within 2.5 minutes of the current time.
- `nonce` (string, optional) — A unique cryptographic identifier created by your application to secure the request. Must be 32 characters or less and cannot be reused within 5 minutes.
- `locale` (string, optional) — The language preference of your user. Valid values: en_US, fr_FR, de_DE, es_ES, it_IT, pt_PT, ja_JP, ko_KR. Default is en_US.
- `customer_ip` (string, optional) — The IP address of your user. Allows determination of the user's location for fraud recovery and analytics purposes.
- `session_id` (string, optional) — A unique user session identifier created by your application. Do not use the real user's session identifier. Allows identification of all requests throughout a user session for error handling and troubleshooting.
- `user_agent` (string, optional) — The user agent (device, application or browser) of your user. Allows retrieval of mobile rates and discounts from some providers. Must be properly encoded. Max 32 characters. Required to get discounted mobile rates.
- `configuration_id` (integer, optional) — Configuration ID for proper company settings. Obtain via the get_configurations endpoint.
- `system` (string, optional) — The booking channel. Valid values include: aft, obt, web.
- `destination` (string, optional) — The search destination. Supports geographic coordinates, hotel brand keyword, city or code from the destination_lookup endpoint. Must be percent-encoded.
- `chains` (string, optional) — Filter results to specific hotel chains using the master chain code from get_hotel_chains_list.
- `checkin` (string, optional) — The check-in date for the hotel search. Format: YYYY-MM-DD.
- `hotel_name_keyword` (string, optional) — Filter results by hotel name keyword.
- `limit` (integer, optional) — Maximum number of hotels to return per page. Maximum allowed is 250.
- `order` (string, optional) — Sort order for results. Valid values: name, -preference, distance, price.
- `page` (integer, optional) — Page number for paginated results.
- `search_radius` (integer, optional) — Radius around the destination to search within.
- `search_radius_unit` (string, optional) — Unit for search_radius. Valid values: KM (kilometers), MI (miles).
- `star_rating_filter` (string, optional) — Comma-separated star ratings to filter by. Example: 4,4.5,5.

### Headers

- `Authorization` (string, optional) — Request signature for authentication. Format: Signature YOUR_SIGNATURE. Calculated using HMAC-SHA256 with your secret key.

## Examples

**SDK Code**

```python
import requests

url = "https://api.bcdtravel.com/version/hotels/get_list/"

querystring = {"api_key":"your-api-key","timestamp":"2024-01-15T10:30:00Z","nonce":"abc123def456","locale":"en_US","customer_ip":"127.0.0.1","session_id":"sess-a1b2c3d4-e5f6-7890","user_agent":"curl/7.64.0","configuration_id":"4","system":"aft","destination":"Region%3Ae%7C2786","chains":"HH","checkin":"2023-07-11","hotel_name_keyword":"Inn","limit":"10","order":"name","page":"1","search_radius":"5","search_radius_unit":"KM","star_rating_filter":"4,4.5,5"}

headers = {"Authorization": "Signature your-signature-token"}

response = requests.get(url, headers=headers, params=querystring)

print(response.json())
```

```javascript
const url = 'https://api.bcdtravel.com/version/hotels/get_list/?api_key=your-api-key&timestamp=2024-01-15T10%3A30%3A00Z&nonce=abc123def456&locale=en_US&customer_ip=127.0.0.1&session_id=sess-a1b2c3d4-e5f6-7890&user_agent=curl%2F7.64.0&configuration_id=4&system=aft&destination=Region%253Ae%257C2786&chains=HH&checkin=2023-07-11&hotel_name_keyword=Inn&limit=10&order=name&page=1&search_radius=5&search_radius_unit=KM&star_rating_filter=4%2C4.5%2C5';
const options = {method: 'GET', headers: {Authorization: 'Signature your-signature-token'}};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://api.bcdtravel.com/version/hotels/get_list/?api_key=your-api-key&timestamp=2024-01-15T10%3A30%3A00Z&nonce=abc123def456&locale=en_US&customer_ip=127.0.0.1&session_id=sess-a1b2c3d4-e5f6-7890&user_agent=curl%2F7.64.0&configuration_id=4&system=aft&destination=Region%253Ae%257C2786&chains=HH&checkin=2023-07-11&hotel_name_keyword=Inn&limit=10&order=name&page=1&search_radius=5&search_radius_unit=KM&star_rating_filter=4%2C4.5%2C5"

	req, _ := http.NewRequest("GET", url, nil)

	req.Header.Add("Authorization", "Signature your-signature-token")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://api.bcdtravel.com/version/hotels/get_list/?api_key=your-api-key&timestamp=2024-01-15T10%3A30%3A00Z&nonce=abc123def456&locale=en_US&customer_ip=127.0.0.1&session_id=sess-a1b2c3d4-e5f6-7890&user_agent=curl%2F7.64.0&configuration_id=4&system=aft&destination=Region%253Ae%257C2786&chains=HH&checkin=2023-07-11&hotel_name_keyword=Inn&limit=10&order=name&page=1&search_radius=5&search_radius_unit=KM&star_rating_filter=4%2C4.5%2C5")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Signature your-signature-token'

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://api.bcdtravel.com/version/hotels/get_list/?api_key=your-api-key&timestamp=2024-01-15T10%3A30%3A00Z&nonce=abc123def456&locale=en_US&customer_ip=127.0.0.1&session_id=sess-a1b2c3d4-e5f6-7890&user_agent=curl%2F7.64.0&configuration_id=4&system=aft&destination=Region%253Ae%257C2786&chains=HH&checkin=2023-07-11&hotel_name_keyword=Inn&limit=10&order=name&page=1&search_radius=5&search_radius_unit=KM&star_rating_filter=4%2C4.5%2C5")
  .header("Authorization", "Signature your-signature-token")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://api.bcdtravel.com/version/hotels/get_list/?api_key=your-api-key&timestamp=2024-01-15T10%3A30%3A00Z&nonce=abc123def456&locale=en_US&customer_ip=127.0.0.1&session_id=sess-a1b2c3d4-e5f6-7890&user_agent=curl%2F7.64.0&configuration_id=4&system=aft&destination=Region%253Ae%257C2786&chains=HH&checkin=2023-07-11&hotel_name_keyword=Inn&limit=10&order=name&page=1&search_radius=5&search_radius_unit=KM&star_rating_filter=4%2C4.5%2C5', [
  'headers' => [
    'Authorization' => 'Signature your-signature-token',
  ],
]);

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://api.bcdtravel.com/version/hotels/get_list/?api_key=your-api-key&timestamp=2024-01-15T10%3A30%3A00Z&nonce=abc123def456&locale=en_US&customer_ip=127.0.0.1&session_id=sess-a1b2c3d4-e5f6-7890&user_agent=curl%2F7.64.0&configuration_id=4&system=aft&destination=Region%253Ae%257C2786&chains=HH&checkin=2023-07-11&hotel_name_keyword=Inn&limit=10&order=name&page=1&search_radius=5&search_radius_unit=KM&star_rating_filter=4%2C4.5%2C5");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Signature your-signature-token");
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = ["Authorization": "Signature your-signature-token"]

let request = NSMutableURLRequest(url: NSURL(string: "https://api.bcdtravel.com/version/hotels/get_list/?api_key=your-api-key&timestamp=2024-01-15T10%3A30%3A00Z&nonce=abc123def456&locale=en_US&customer_ip=127.0.0.1&session_id=sess-a1b2c3d4-e5f6-7890&user_agent=curl%2F7.64.0&configuration_id=4&system=aft&destination=Region%253Ae%257C2786&chains=HH&checkin=2023-07-11&hotel_name_keyword=Inn&limit=10&order=name&page=1&search_radius=5&search_radius_unit=KM&star_rating_filter=4%2C4.5%2C5")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```