Browse documentation
GET

Hotel Search API

Search for available hotels in any destination with flexible date and guest configurations.

Overview

Availability Search

Search for hotels with real-time availability and pricing information based on dates and guest requirements.

Need a Destination ID?

Don't know the dest_id for your location? Use the Destinations Lookup endpoint to convert any location name (e.g., "Barcelona", "Paris") into a Booking.com destination ID.

The Hotel Search endpoint allows you to search for available hotels in any destination with specific check-in/check-out dates, number of guests, and rooms. Returns real-time availability and pricing data.

Endpoint URL

GET https://api.stayapi.com/v1/booking/search

Query Parameters

Parameter Type Required Description
dest_id string Required Destination ID from Booking.com (e.g., "-2167973" for Lisbon). Get it from Destinations Lookup
dest_type string Optional Destination type (default: "CITY")
checkin string Optional Check-in date in YYYY-MM-DD format
checkout string Optional Check-out date in YYYY-MM-DD format
adults integer Optional Number of adults (default: 2)
rooms integer Optional Number of rooms (default: 1)
children integer Optional Number of children (default: 0)
children_ages string Optional Comma-separated ages of children
rows_per_page integer Optional Results per page (default: 25, max: 100)
offset integer Optional Starting offset for pagination (default: 0). Booking.com serves results up to offset 1000 — data.pagination.total_results is the real match count, and has_next_page turns false at that limit.
language string Optional Language preference (default: "en-us")
currency string Optional Currency code (default: "USD")
country_market string (ISO-3166) Optional Two-letter market country (default: US). Booking.com prices by the visitor's country, so the same stay can cost different amounts per market. Use the same value across search, rooms, and prices for matching numbers; the value used is echoed in the response.
Request
curl -X GET "https://api.stayapi.com/v1/booking/search?dest_id=-2167973&checkin=2026-12-01&checkout=2026-12-04&adults=2&rooms=1&rows_per_page=2" \
  -H "x-api-key: YOUR_API_KEY"
Response
{
  "success": true,
  "url": "https://www.booking.com/searchresults.html?dest_id=-2167973&dest_type=city&group_adults=2&no_rooms=1&group_children=0&offset=0&checkin=2026-12-01&checkout=2026-12-04&lang=en-us&sb=1&src_elem=sb&aid=304142",
  "hotel_id": null,
  "data": {
    "hotels": [
      {
        "hotel_id": "4045490",
        "name": "Maxime Boutique Hotel Avenida da Liberdade",
        "address": "58 Praça da Alegria",
        "city": "Lisboa",
        "display_location": "Lisboa",
        "distance": "0.4 miles",
        "latitude": 38.71833447459589,
        "longitude": -9.145319386577626,
        "star_rating": 3,
        "price": {
          "amount": 376.0343526281907,
          "currency": "USD",
          "display": "$376",
          "before_discount": "$470"
        },
        "rating": {
          "score": 8.8,
          "review_count": 3617,
          "display": "Excellent"
        },
        "image_url": "https://cf.bstatic.com/xdata/images/hotel/square200/646162366.jpg?k=...&o=",
        "free_cancellation": true,
        "no_prepayment": false,
        "is_sold_out": false,
        "room_name": "Deluxe Twin Room"
      },
      {
        "hotel_id": "10131840",
        "name": "MASA Hotel & Spa Campo Grande Collection",
        "address": "Campo Grande 56",
        "city": "Lisboa",
        "display_location": "Lisboa",
        "distance": "2.6 miles",
        "latitude": 38.750851,
        "longitude": -9.148746,
        "star_rating": 4,
        "price": {
          "amount": 258.1471755326366,
          "currency": "USD",
          "display": "$258",
          "before_discount": "$323"
        },
        "rating": {
          "score": 8.5,
          "review_count": 11888,
          "display": "Very Good"
        },
        "image_url": "https://cf.bstatic.com/xdata/images/hotel/square200/535564893.jpg?k=...&o=",
        "free_cancellation": true,
        "no_prepayment": false,
        "is_sold_out": false,
        "room_name": "Standard Double Room"
      }
    ],
    "pagination": {
      "current_page": 1,
      "per_page": 2,
      "total_results": 5036,
      "total_pages": 501,
      "has_next_page": true,
      "has_previous_page": false,
      "offset": 0
    },
    "hotels_found": 2,
    "search_url": "https://www.booking.com/searchresults.html?dest_id=-2167973&dest_type=city&group_adults=2&no_rooms=1&group_children=0&offset=0&checkin=2026-12-01&checkout=2026-12-04&lang=en-us&sb=1&src_elem=sb&aid=304142",
    "metadata": {
      "dest_id": -2167973,
      "dest_type": "CITY",
      "checkin": "2026-12-01",
      "checkout": "2026-12-04",
      "adults": 2,
      "children": 0,
      "rooms": 1,
      "children_ages": [],
      "highlighted_hotels": [],
      "rows_per_page": 2,
      "offset": 0,
      "travel_purpose": 2,
      "language": "en-us",
      "currency": "USD",
      "country_market": "US",
      "scraped_at": "2026-09-24T17:06:47.365477Z",
      "api_method": "mobile_graphql",
      "diagnostics": {
        "upstream_results_count": 2,
        "parsed_hotels_count": 2,
        "invalid_hotel_id_count": 0,
        "invalid_hotel_id_examples": []
      }
    }
  },
  "message": "Found 2 hotels using URL-based search",
  "retrieved_at": "2026-09-24T17:06:47.365477Z"
}