> ## Documentation Index
> Fetch the complete documentation index at: https://docs.hasdata.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Booking.com Search API

The Booking.com Search API returns the collection of accommodations from a Booking.com search results page for a given destination and stay dates, with rich filtering by property type, rating, facilities, price and more.

<Info>
  HasData is an independent service and is not affiliated with, endorsed by, or sponsored by Booking.com. Booking.com is a trademark of its respective owner. This API works with publicly available data only.
</Info>

## Get Your API Key

Sign in at [hasdata.com](https://app.hasdata.com/sign-in), go to your account settings, and copy your API key.
All requests must include your key in the `x-api-key` header.

## Request Cost and API Credits

Each request to the Booking.com Search API consumes **API Credits** from your account balance.

* **Cost per request:** 10 API Credits
* Credits are deducted only for successful requests.
* Your total available credits depend on your active plan.

<Tip>You can use your credits across all HasData APIs. The same credit balance is shared platform-wide.</Tip>
<Warning>**Unused credits do not roll over.** Any remaining credits expire at the end of the current billing period.</Warning>

To monitor your credit usage and remaining balance, sign in to your account dashboard at [app.hasdata.com](https://app.hasdata.com/sign-in).

## Make Your First Request

<CodeGroup>
  ```bash cURL theme={null}
  curl --request GET -G \
    --url 'https://api.hasdata.com/scrape/booking/search' \
    --data-urlencode 'keyword=Paris' \
    --data-urlencode 'checkInDate=2026-06-01' \
    --data-urlencode 'checkOutDate=2026-06-05' \
    --data-urlencode 'rooms=1' \
    --data-urlencode 'adults=2' \
    --data-urlencode 'children=0' \
    --header 'Content-Type: application/json' \
    --header 'x-api-key: <your-api-key>'
  ```

  ```javascript Node.js theme={null}
  const axios = require('axios').default;

  const options = {
    method: 'GET',
    url: 'https://api.hasdata.com/scrape/booking/search',
    params: {
      keyword: 'Paris',
      checkInDate: '2026-06-01',
      checkOutDate: '2026-06-05',
      rooms: '1',
      adults: '2',
      children: '0'
    },
    headers: {'Content-Type': 'application/json', 'x-api-key': '<your-api-key>'}
  };

  try {
    const { data } = await axios.request(options);
    console.log(data);
  } catch (error) {
    console.error(error);
  }
  ```

  ```python Python theme={null}
  import requests

  url = "https://api.hasdata.com/scrape/booking/search"

  querystring = {"keyword":"Paris","checkInDate":"2026-06-01","checkOutDate":"2026-06-05","rooms":"1","adults":"2","children":"0"}

  headers = {
      "Content-Type": "application/json",
      "x-api-key": "<your-api-key>"
  }

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

  print(response.json())
  ```

  ```php PHP theme={null}
  <?php

  $params = [
      "keyword" => "Paris",
      "checkInDate" => "2026-06-01",
      "checkOutDate" => "2026-06-05",
      "rooms" => "1",
      "adults" => "2",
      "children" => "0",
  ];

  $curl = curl_init();

  curl_setopt_array($curl, [
    CURLOPT_URL => "https://api.hasdata.com/scrape/booking/search?" . http_build_query($params),
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => "GET",
    CURLOPT_HTTPHEADER => [
      "Content-Type: application/json",
      "x-api-key: <your-api-key>",
    ],
  ]);

  $response = curl_exec($curl);
  curl_close($curl);

  echo $response;
  ```

  ```java Java theme={null}
  OkHttpClient client = new OkHttpClient();

  HttpUrl url = HttpUrl.parse("https://api.hasdata.com/scrape/booking/search")
    .newBuilder()
    .addQueryParameter("keyword", "Paris")
    .addQueryParameter("checkInDate", "2026-06-01")
    .addQueryParameter("checkOutDate", "2026-06-05")
    .addQueryParameter("rooms", "1")
    .addQueryParameter("adults", "2")
    .addQueryParameter("children", "0")
    .build();

  Request request = new Request.Builder()
    .url(url)
    .get()
    .addHeader("Content-Type", "application/json")
    .addHeader("x-api-key", "<your-api-key>")
    .build();

  Response response = client.newCall(request).execute();
  ```

  ```csharp C# theme={null}
  using System.Net.Http;
  using System.Web;

  var client = new HttpClient();

  var query = HttpUtility.ParseQueryString(string.Empty);
  query["keyword"] = "Paris";
  query["checkInDate"] = "2026-06-01";
  query["checkOutDate"] = "2026-06-05";
  query["rooms"] = "1";
  query["adults"] = "2";
  query["children"] = "0";

  var url = $"https://api.hasdata.com/scrape/booking/search?{query}";

  var request = new HttpRequestMessage(new HttpMethod("GET"), url);
  request.Headers.Add("x-api-key", "<your-api-key>");

  using var response = await client.SendAsync(request);
  response.EnsureSuccessStatusCode();
  var content = await response.Content.ReadAsStringAsync();
  Console.WriteLine(content);
  ```

  ```ruby Ruby theme={null}
  require 'net/http'
  require 'uri'

  uri = URI("https://api.hasdata.com/scrape/booking/search")
  params = {
    "keyword" => "Paris",
    "checkInDate" => "2026-06-01",
    "checkOutDate" => "2026-06-05",
    "rooms" => "1",
    "adults" => "2",
    "children" => "0",
  }
  uri.query = URI.encode_www_form(params)

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

  request = Net::HTTP::Get.new(uri)
  request["Content-Type"] = 'application/json'
  request["x-api-key"] = '<your-api-key>'

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

  ```rust Rust theme={null}
  use reqwest::blocking::Client;

  fn main() -> Result<(), Box<dyn std::error::Error>> {
      let client = Client::new();
      let res = client
          .get("https://api.hasdata.com/scrape/booking/search")
          .query(&[("keyword", "Paris")])
          .query(&[("checkInDate", "2026-06-01")])
          .query(&[("checkOutDate", "2026-06-05")])
          .query(&[("rooms", "1")])
          .query(&[("adults", "2")])
          .query(&[("children", "0")])
          .header("Content-Type", "application/json")
          .header("x-api-key", "<your-api-key>")
          .send()?
          .text()?;
      println!("{}", res);
      Ok(())
  }
  ```

  ```go Go theme={null}
  package main

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

  func main() {
  	params := url.Values{}
  	params.Set("keyword", "Paris")
  	params.Set("checkInDate", "2026-06-01")
  	params.Set("checkOutDate", "2026-06-05")
  	params.Set("rooms", "1")
  	params.Set("adults", "2")
  	params.Set("children", "0")

  	u := "https://api.hasdata.com/scrape/booking/search?" + params.Encode()

  	req, _ := http.NewRequest("GET", u, nil)
  	req.Header.Add("Content-Type", "application/json")
  	req.Header.Add("x-api-key", "<your-api-key>")

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

  	body, _ := io.ReadAll(res.Body)
  	fmt.Println(string(body))
  }
  ```
</CodeGroup>

## API Parameters

| Parameter                 | Default Value | Required | Description                                                                                                                                                                           |
| ------------------------- | ------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `keyword`                 | Paris         | Yes      | Free-text destination query. Usually a city, region or neighborhood (e.g. `Paris`, `Manhattan, New York`); a specific property name is also accepted.                                 |
| `sort`                    | -             | No       | Sort order applied by Booking.com to the results page.                                                                                                                                |
| `checkInDate`             | 2026-06-01    | Yes      | Check-in date in `YYYY-MM-DD` format. Must be in the future and earlier than `checkOutDate`.                                                                                          |
| `checkOutDate`            | 2026-06-05    | Yes      | Check-out date in `YYYY-MM-DD` format. Must be later than `checkInDate`.                                                                                                              |
| `rooms`                   | 1             | Yes      | Number of rooms to book.                                                                                                                                                              |
| `adults`                  | 2             | Yes      | Number of adult guests across all rooms.                                                                                                                                              |
| `children`                | -             | Yes      | Number of child guests across all rooms (0–10). Pass `0` if there are no children.                                                                                                    |
| `childrenAges`            | -             | No       | Comma-separated list of child ages, one entry per child (each `0`–`17`). Required when `children > 0` and the number of ages must equal `children`.<br /><br />Example: `1,3,7`<br /> |
| `price[min]`              | -             | No       | Minimum total price for the stay, in the requested `currency`. Must be `>= 10`. Required if `price[max]` is omitted.                                                                  |
| `price[max]`              | -             | No       | Maximum total price for the stay, in the requested `currency`. Must be `>= 20` and greater than `price[min]`. Required if `price[min]` is omitted.                                    |
| `bedrooms`                | -             | No       | Minimum number of bedrooms in the property.                                                                                                                                           |
| `bathrooms`               | -             | No       | Minimum number of bathrooms in the property.                                                                                                                                          |
| `propertyType[]`          | -             | No       | Filter by property type. Multiple values are combined with OR.                                                                                                                        |
| `rating[]`                | -             | No       | Filter by official star rating. Multiple values are combined with OR.                                                                                                                 |
| `reviewScore[]`           | -             | No       | Filter by minimum guest review score bucket. Multiple values are combined with OR.                                                                                                    |
| `distanceFromCenter[]`    | -             | No       | Filter by distance from the destination center. Multiple values are combined with OR.                                                                                                 |
| `propertyAccessibility[]` | -             | No       | Filter by property-level accessibility features. Multiple values are combined with OR.                                                                                                |
| `meals[]`                 | -             | No       | Filter by available meal plans. Multiple values are combined with OR.                                                                                                                 |
| `facilities[]`            | -             | No       | Filter by property-level facilities. Multiple values are combined with OR.                                                                                                            |
| `roomFacilities[]`        | -             | No       | Filter by in-room facilities. Multiple values are combined with OR.                                                                                                                   |
| `roomAccessibility[]`     | -             | No       | Filter by in-room accessibility features. Multiple values are combined with OR.                                                                                                       |
| `bedPreference[]`         | -             | No       | Filter by bed configuration. Multiple values are combined with OR.                                                                                                                    |
| `reservationPolicy[]`     | -             | No       | Filter by reservation flexibility. Multiple values are combined with OR.                                                                                                              |
| `onlinePayment[]`         | -             | No       | Filter by online payment options.                                                                                                                                                     |
| `travelGroup[]`           | -             | No       | Filter by travel-group oriented stay options. Multiple values are combined with OR.                                                                                                   |
| `language`                | -             | No       | Language of the Booking.com interface and localized fields in the response.                                                                                                           |
| `currency`                | -             | No       | Currency of the prices returned in the response. Use `hotelCurrency` to keep each property's native currency.                                                                         |
| `page`                    | -             | No       | Page number of the search results. Booking.com returns 25 results per page; pass `2` for results 26–50, `3` for 51–75, etc.                                                           |
