> **For AI agents:** this page is a focused, LLM-optimized view of a
> single Fiber AI operation. Before calling it, fetch the routing
> instructions at [`https://api.fiber.ai/llms.txt`](https://api.fiber.ai/llms.txt) and the full operation
> index at [`https://api.fiber.ai/ai-docs/index.md`](https://api.fiber.ai/ai-docs/index.md).

# bookingSearch

`POST /v1/booking/search`

**Tags:** `Market intelligence`

Search Booking.com properties

**Endpoint:** `https://api.fiber.ai/v1/booking/search`

## Description

Searches Booking.com stays for a destination and returns matching properties with rates, ratings, and availability.

⚡ Rate limit: 120 requests per 1 minute

💰 Cost: 2 credits per search ⓘ

## Request body (JSON Schema)

```json
{
  "type": "object",
  "properties": {
    "apiKey": {
      "type": "string",
      "description": "Your Fiber API key"
    },
    "query": {
      "type": "string",
      "minLength": 1,
      "description": "Destination to search (city, region, or landmark). For example, 'Dubrovnik' or 'Rome, Italy'."
    },
    "checkInDate": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Check-in date for the stay."
    },
    "checkOutDate": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Check-out date for the stay. Must be at least one calendar day after `checkInDate`."
    },
    "hotelStarClasses": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "integer",
        "minimum": 1,
        "maximum": 5,
        "description": "Hotel star class from 1 to 5. This is a property classification, not a guest review score."
      },
      "description": "Filter to specific hotel star classes. This is a list of exact classes, not a range: [3, 5] returns only 3- and 5-star properties and excludes 4-star, so list every class you want (e.g. [3, 4, 5])."
    },
    "sortBy": {
      "type": [
        "string",
        "null"
      ],
      "enum": [
        "relevance",
        "lowestPrice",
        "highestRating",
        "mostReviewed",
        null
      ],
      "description": "Sort criterion for results. 'relevance' ranks by overall match. 'lowestPrice' sorts cheapest first. 'highestRating' sorts by guest review score. 'mostReviewed' uses Booking.com's top-reviewed ranking, which weighs review score by review volume. Omit to sort by relevance."
    },
    "nextPageToken": {
      "type": [
        "string",
        "null"
      ],
      "description": "Opaque pagination token from a prior search response's `nextPageToken`. Send it with the same search parameters that produced it. Omit (or pass null) to fetch the first page."
    },
    "adults": {
      "type": "integer",
      "minimum": 1,
      "maximum": 30,
      "default": 2,
      "description": "Number of adult guests (at least 1). Total guests (`adults` + `children`) must not exceed 30."
    },
    "children": {
      "type": "integer",
      "minimum": 0,
      "maximum": 29,
      "default": 0,
      "description": "Number of child guests. Total guests (`adults` + `children`) must not exceed 30."
    },
    "childrenAges": {
      "type": "array",
      "items": {
        "type": "integer",
        "minimum": 0,
        "maximum": 17,
        "description": "Child age from 0 to 17."
      },
      "default": [],
      "description": "Ages of each child guest. Must contain exactly `children` entries when `children` is greater than zero."
    },
    "rooms": {
      "type": "integer",
      "minimum": 1,
      "maximum": 8,
      "default": 1,
      "description": "Number of rooms to search for. Defaults to 1."
    },
    "currencyCode": {
      "type": "string",
      "pattern": "^[A-Za-z]{3}$",
      "default": "USD",
      "description": "ISO 4217 currency code for prices in the response (e.g. 'EUR', 'GBP', 'CAD'). Case-insensitive. Defaults to USD."
    },
    "languageCode": {
      "type": [
        "string",
        "null"
      ],
      "pattern": "^[a-z]{2,3}(?:-[A-Za-z0-9]{2,8})*$",
      "description": "Language for property names, descriptions, and labels. Pass a BCP-47 language tag such as 'en', 'en-US', 'fr', 'de', or 'es'. Omit for English."
    }
  },
  "required": [
    "apiKey",
    "query",
    "checkInDate",
    "checkOutDate"
  ]
}
```

## Response — success (JSON Schema)

```json
{
  "type": "object",
  "properties": {
    "output": {
      "type": "object",
      "properties": {
        "properties": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "propertyId": {
                "type": "string",
                "description": "Booking.com property identifier."
              },
              "name": {
                "type": "string",
                "description": "Property display name."
              },
              "propertyUrl": {
                "type": "string",
                "description": "Full Booking.com property URL. Pass as `propertyUrl` in POST /v1/booking/property."
              },
              "address": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Street address."
              },
              "city": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "City name."
              },
              "district": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "District or neighborhood."
              },
              "countryCode": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "ISO 3166-1 alpha-3 country code (e.g. 'USA')."
              },
              "coordinates": {
                "type": [
                  "object",
                  "null"
                ],
                "properties": {
                  "latitude": {
                    "type": "number",
                    "description": "Latitude in decimal degrees."
                  },
                  "longitude": {
                    "type": "number",
                    "description": "Longitude in decimal degrees."
                  }
                },
                "required": [
                  "latitude",
                  "longitude"
                ],
                "description": "Geographic coordinates of the property in decimal degrees."
              },
              "hotelStarClass": {
                "type": [
                  "integer",
                  "null"
                ],
                "minimum": 1,
                "maximum": 5,
                "description": "Hotel star class from 1 to 5, indicating how upscale the property is. This is a property classification, not a guest review score."
              },
              "reviewScore": {
                "type": [
                  "number",
                  "null"
                ],
                "minimum": 0,
                "maximum": 10,
                "description": "Guest review score from 0 to 10."
              },
              "reviewCount": {
                "type": [
                  "integer",
                  "null"
                ],
                "description": "Total number of guest reviews."
              },
              "thumbnailUrl": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Thumbnail image URL."
              },
              "isPreferred": {
                "type": [
                  "boolean",
                  "null"
                ],
                "description": "True when the property belongs to Booking.com's Preferred Partner programme, which promotes it in Booking.com's own result ranking."
              },
              "totalPrice": {
                "type": [
                  "object",
                  "null"
                ],
                "properties": {
                  "currencyCode": {
                    "type": "string",
                    "pattern": "^[A-Z]{3}$",
                    "description": "ISO 4217 currency code for this amount (e.g. 'USD')."
                  },
                  "amount": {
                    "type": "number",
                    "minimum": 0,
                    "description": "Price amount in the specified currency."
                  }
                },
                "required": [
                  "currencyCode",
                  "amount"
                ],
                "description": "Total price for the requested stay. Null when Booking.com shows no rate for these dates, for example when the property is sold out."
              },
              "nightlyPrice": {
                "type": [
                  "object",
                  "null"
                ],
                "properties": {
                  "currencyCode": {
                    "type": "string",
                    "pattern": "^[A-Z]{3}$",
                    "description": "ISO 4217 currency code for this amount (e.g. 'USD')."
                  },
                  "amount": {
                    "type": "number",
                    "minimum": 0,
                    "description": "Price amount in the specified currency."
                  }
                },
                "required": [
                  "currencyCode",
                  "amount"
                ],
                "description": "Average nightly price for the requested stay."
              },
              "originalPrice": {
                "type": [
                  "object",
                  "null"
                ],
                "properties": {
                  "currencyCode": {
                    "type": "string",
                    "pattern": "^[A-Z]{3}$",
                    "description": "ISO 4217 currency code for this amount (e.g. 'USD')."
                  },
                  "amount": {
                    "type": "number",
                    "minimum": 0,
                    "description": "Price amount in the specified currency."
                  }
                },
                "required": [
                  "currencyCode",
                  "amount"
                ],
                "description": "List price before discounts, when a promotion applies."
              },
              "hasFreeCancellation": {
                "type": [
                  "boolean",
                  "null"
                ],
                "description": "True when the listed rate includes free cancellation."
              },
              "isSoldOut": {
                "type": [
                  "boolean",
                  "null"
                ],
                "description": "True when the property has no remaining availability for the requested dates."
              },
              "mealPlan": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Meal plan included with the listed rate, as Booking.com publishes it (e.g. 'Breakfast included')."
              }
            },
            "required": [
              "propertyId",
              "name",
              "propertyUrl"
            ]
          },
          "description": "Matching Booking.com properties."
        },
        "nextPageToken": {
          "type": [
            "string",
            "null"
          ],
          "description": "Token to retrieve the next page. Pass as `nextPageToken` in the next request. Null if no more pages."
        },
        "currencyCode": {
          "type": [
            "string",
            "null"
          ],
          "pattern": "^[A-Z]{3}$",
          "description": "ISO 4217 currency code for prices in this response (e.g. 'USD', 'EUR', 'GBP')."
        },
        "searchInformation": {
          "type": [
            "object",
            "null"
          ],
          "properties": {
            "totalResultCount": {
              "type": [
                "integer",
                "null"
              ],
              "description": "Approximate total number of matching properties."
            }
          },
          "description": "Summary information about the search results."
        }
      },
      "required": [
        "properties"
      ]
    },
    "chargeInfo": {
      "oneOf": [
        {
          "type": "object",
          "properties": {
            "method": {
              "type": "string",
              "enum": [
                "charged-now"
              ]
            },
            "creditsCharged": {
              "type": "number"
            },
            "lowCreditAlert": {
              "type": [
                "object",
                "null"
              ],
              "properties": {
                "getMoreCreditsUrl": {
                  "type": "string",
                  "format": "uri",
                  "description": "URL to top up credits or restart billing cycle to get fresh credits."
                },
                "message": {
                  "type": "string",
                  "description": "Human-readable credits warning."
                },
                "availableCredits": {
                  "type": "number",
                  "description": "Number of credits remaining in the current billing period."
                }
              },
              "required": [
                "getMoreCreditsUrl",
                "message",
                "availableCredits"
              ],
              "description": "Contains a link to get more credits, a warning message, and the remaining credit count."
            }
          },
          "required": [
            "method",
            "creditsCharged"
          ],
          "description": "Credits were charged immediately for this operation"
        },
        {
          "type": "object",
          "properties": {
            "method": {
              "type": "string",
              "enum": [
                "charging-later"
              ]
            },
            "message": {
              "type": "string"
            },
            "lowCreditAlert": {
              "type": [
                "object",
                "null"
              ],
              "properties": {
                "getMoreCreditsUrl": {
                  "type": "string",
                  "format": "uri",
                  "description": "URL to top up credits or restart billing cycle to get fresh credits."
                },
                "message": {
                  "type": "string",
                  "description": "Human-readable credits warning."
                },
                "availableCredits": {
                  "type": "number",
                  "description": "Number of credits remaining in the current billing period."
                }
              },
              "required": [
                "getMoreCreditsUrl",
                "message",
                "availableCredits"
              ],
              "description": "Contains a link to get more credits, a warning message, and the remaining credit count."
            }
          },
          "required": [
            "method",
            "message"
          ],
          "description": "Credits will be charged after the operation completes"
        },
        {
          "type": "object",
          "properties": {
            "method": {
              "type": "string",
              "enum": [
                "charged-for-async-process"
              ]
            },
            "creditsCharged": {
              "type": "number"
            },
            "message": {
              "type": "string"
            },
            "lowCreditAlert": {
              "type": [
                "object",
                "null"
              ],
              "properties": {
                "getMoreCreditsUrl": {
                  "type": "string",
                  "format": "uri",
                  "description": "URL to top up credits or restart billing cycle to get fresh credits."
                },
                "message": {
                  "type": "string",
                  "description": "Human-readable credits warning."
                },
                "availableCredits": {
                  "type": "number",
                  "description": "Number of credits remaining in the current billing period."
                }
              },
              "required": [
                "getMoreCreditsUrl",
                "message",
                "availableCredits"
              ],
              "description": "Contains a link to get more credits, a warning message, and the remaining credit count."
            }
          },
          "required": [
            "method",
            "creditsCharged",
            "message"
          ],
          "description": "Credits that were charged for an asynchronous operation"
        },
        {
          "type": "object",
          "properties": {
            "method": {
              "type": "string",
              "enum": [
                "free"
              ]
            },
            "message": {
              "type": "string"
            },
            "lowCreditAlert": {
              "type": [
                "object",
                "null"
              ],
              "properties": {
                "getMoreCreditsUrl": {
                  "type": "string",
                  "format": "uri",
                  "description": "URL to top up credits or restart billing cycle to get fresh credits."
                },
                "message": {
                  "type": "string",
                  "description": "Human-readable credits warning."
                },
                "availableCredits": {
                  "type": "number",
                  "description": "Number of credits remaining in the current billing period."
                }
              },
              "required": [
                "getMoreCreditsUrl",
                "message",
                "availableCredits"
              ],
              "description": "Contains a link to get more credits, a warning message, and the remaining credit count."
            }
          },
          "required": [
            "method",
            "message"
          ],
          "description": "No credits were charged for this operation"
        },
        {
          "type": "object",
          "properties": {
            "method": {
              "type": "string",
              "enum": [
                "credits-refunded"
              ]
            },
            "creditsRefunded": {
              "type": "number"
            },
            "message": {
              "type": "string"
            },
            "lowCreditAlert": {
              "type": [
                "object",
                "null"
              ],
              "properties": {
                "getMoreCreditsUrl": {
                  "type": "string",
                  "format": "uri",
                  "description": "URL to top up credits or restart billing cycle to get fresh credits."
                },
                "message": {
                  "type": "string",
                  "description": "Human-readable credits warning."
                },
                "availableCredits": {
                  "type": "number",
                  "description": "Number of credits remaining in the current billing period."
                }
              },
              "required": [
                "getMoreCreditsUrl",
                "message",
                "availableCredits"
              ],
              "description": "Contains a link to get more credits, a warning message, and the remaining credit count."
            }
          },
          "required": [
            "method",
            "creditsRefunded",
            "message"
          ],
          "description": "Credits were refunded for this operation"
        }
      ]
    },
    "warnings": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "object",
        "properties": {
          "field": {
            "type": "string",
            "description": "Full path to extraneous field (e.g., 'searchParams.ExtraField')"
          },
          "message": {
            "type": "string",
            "description": "Warning message"
          }
        },
        "required": [
          "field",
          "message"
        ]
      },
      "description": "Warnings about extraneous fields in request"
    },
    "advice": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "string"
      },
      "description": "Tips, recommendations, and suggestions for using this API effectively."
    }
  },
  "required": [
    "output",
    "chargeInfo"
  ],
  "additionalProperties": false
}
```

---

Canonical JSON: [`https://api.fiber.ai/openapi.json`](https://api.fiber.ai/openapi.json)
Operation index: [`https://api.fiber.ai/ai-docs/index.md`](https://api.fiber.ai/ai-docs/index.md)
