Booking.com Demand API

The Booking.com Demand API is a RESTful API that enables Affiliate Partners to access Booking.com's extensive travel inventory. It provides endpoints for searching accommodations such as hotels and apartments, checking availability, retrieving reviews, and getting detailed property information. The API uses JSON responses and requires HTTPS POST requests with Affiliate ID and token authentication.

OpenAPI Specification

booking-com-demand-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Booking.com Demand API
  description: >-
    The Booking.com Demand API is a RESTful API that enables Affiliate Partners
    to access Booking.com's extensive travel inventory. It provides endpoints
    for searching accommodations such as hotels and apartments, checking
    availability, retrieving reviews, and getting detailed property information.
    The API uses JSON responses and requires HTTPS POST requests with Affiliate
    ID and Bearer token authentication. The latest version (V3.1) offers improved
    functionality and additional endpoints for building travel booking
    experiences including orders management, messaging, and payment information.
  version: '3.1'
  contact:
    name: Booking.com Developer Support
    url: https://developers.booking.com/demand/docs
  termsOfService: https://www.booking.com/content/terms.html
externalDocs:
  description: Booking.com Demand API Documentation
  url: https://developers.booking.com/demand/docs/open-api/demand-api
servers:
  - url: https://demandapi.booking.com/3.1
    description: Production Server
tags:
  - name: Accommodations
    description: >-
      Endpoints to search for stays such as hotels and apartments, check
      availability, retrieve reviews, and get detailed property information.
  - name: Constants
    description: >-
      Endpoints for retrieving reference data such as accommodation types,
      facility types, room types, and other enumerated values.
  - name: Conversations
    description: >-
      Endpoints to retrieve and manage messaging conversations, list
      conversations, fetch conversation details, and track updates.
  - name: Locations
    description: >-
      Endpoints for retrieving geographical location data including
      countries, cities, regions, and airports.
  - name: Messages
    description: >-
      Endpoints for two-way post-booking communication between guests and
      properties, allowing you to send and retrieve messages, exchange
      images, and check conversation details.
  - name: Orders
    description: >-
      Endpoints to preview and create new orders, check order details,
      cancel or modify existing orders.
  - name: Payments
    description: >-
      Generic payment-related endpoints, including supported currencies
      and payment types.
security:
  - bearerAuth: []
    affiliateId: []
paths:
  /accommodations/search:
    post:
      operationId: searchAccommodations
      summary: Search accommodations
      description: >-
        Returns the cheapest available product for each accommodation that
        matches the specified search criteria. When location filters such as
        country or region ID are applied, results are sorted by Booking.com
        popularity instead of price. Results include product availability,
        price, and charges by default.
      tags:
        - Accommodations
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AccommodationSearchRequest'
      responses:
        '200':
          description: Successful search results
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccommodationSearchResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /accommodations/details:
    post:
      operationId: getAccommodationDetails
      summary: Get accommodation details
      description: >-
        Returns detailed information on all accommodation properties matching
        the given criteria including property descriptions, facilities, photos,
        location data, and policies.
      tags:
        - Accommodations
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AccommodationDetailsRequest'
      responses:
        '200':
          description: Accommodation details retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccommodationDetailsResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /accommodations/availability:
    post:
      operationId: checkAccommodationAvailability
      summary: Check accommodation availability
      description: >-
        Checks availability for a specific accommodation, returning detailed
        product availability, pricing, and extra charges. The checkin date must
        be within 500 days and checkout must be between 1 and 90 days after
        checkin.
      tags:
        - Accommodations
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AccommodationAvailabilityRequest'
      responses:
        '200':
          description: Availability information retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccommodationAvailabilityResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /accommodations/bulk-availability:
    post:
      operationId: checkBulkAccommodationAvailability
      summary: Check multiple accommodation availability
      description: >-
        Checks availability for multiple accommodations at once. Accepts an
        array of accommodation IDs along with dates, guest information, and
        optional filters for meal plan and cancellation type.
      tags:
        - Accommodations
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkAvailabilityRequest'
      responses:
        '200':
          description: Bulk availability results retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkAvailabilityResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /accommodations/reviews:
    post:
      operationId: getAccommodationReviews
      summary: Get accommodation reviews
      description: >-
        Retrieves traveler reviews for specified accommodations, providing
        feedback associated with particular properties. Reviews can be
        filtered by reviewer parameters and languages.
      tags:
        - Accommodations
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AccommodationReviewsRequest'
      responses:
        '200':
          description: Reviews retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccommodationReviewsResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /accommodations/reviews/scores:
    post:
      operationId: getAccommodationReviewScores
      summary: Get accommodation review scores
      description: >-
        Returns score distribution and score breakdown for the specified
        accommodations. The scores information can be filtered by reviewer
        parameters and languages.
      tags:
        - Accommodations
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AccommodationReviewScoresRequest'
      responses:
        '200':
          description: Review scores retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccommodationReviewScoresResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /accommodations/chains:
    post:
      operationId: getAccommodationChains
      summary: Get accommodation chains
      description: >-
        Retrieves information about hotel chains and brand affiliations
        for accommodations listed on Booking.com.
      tags:
        - Accommodations
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                chain_ids:
                  type: array
                  description: List of chain IDs to retrieve
                  items:
                    type: integer
      responses:
        '200':
          description: Chain information retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccommodationChainsResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /accommodations/constants:
    post:
      operationId: getAccommodationConstants
      summary: Get accommodation constants
      description: >-
        Retrieves reference data constants including accommodation types,
        accommodation facilities, accommodation themes, bed types, charge
        types, facility types, review scores, room facilities, and room types.
      tags:
        - Constants
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                constants:
                  type: array
                  description: >-
                    List of constant types to retrieve such as accommodation_types,
                    accommodation_facilities, bed_types, room_types, etc.
                  items:
                    type: string
                    enum:
                      - accommodation_facilities
                      - accommodation_themes
                      - accommodation_types
                      - bed_types
                      - charge_types
                      - facility_types
                      - review_scores
                      - room_facilities
                      - room_types
      responses:
        '200':
          description: Constants retrieved successfully
          content:
            application/json:
              schema:
                type: object
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /orders/preview:
    post:
      operationId: previewOrder
      summary: Preview an order
      description: >-
        Generates a preview of an order before creation, allowing the
        traveler to review the booking details, pricing, and policies
        before committing.
      tags:
        - Orders
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrderPreviewRequest'
      responses:
        '200':
          description: Order preview generated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrderPreviewResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /orders/create:
    post:
      operationId: createOrder
      summary: Create an order
      description: >-
        Creates a new booking order, allowing travelers to book and pay for
        travel services and products directly from the affiliate application.
        Manages bookings efficiently without redirecting users to Booking.com.
      tags:
        - Orders
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrderCreateRequest'
      responses:
        '200':
          description: Order created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrderResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /orders/details:
    post:
      operationId: getOrderDetails
      summary: Get order details
      description: >-
        Retrieves relevant booking details for a specific order, including
        status, pricing, guest information, and accommodation details.
      tags:
        - Orders
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrderDetailsRequest'
      responses:
        '200':
          description: Order details retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrderResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Order not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /orders/cancel:
    post:
      operationId: cancelOrder
      summary: Cancel an order
      description: >-
        Processes the cancellation of an existing order. Cancellation policies
        and any applicable fees are determined by the property and rate plan.
      tags:
        - Orders
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrderCancelRequest'
      responses:
        '200':
          description: Order cancelled successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrderCancelResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Order not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /messages/send:
    post:
      operationId: sendMessage
      summary: Send a message
      description: >-
        Sends a message within a conversation. The message body supports
        plain text and optionally allows attaching a file by referencing
        a previously uploaded attachment ID.
      tags:
        - Messages
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SendMessageRequest'
      responses:
        '200':
          description: Message sent successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SendMessageResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /messages/latest:
    post:
      operationId: fetchLatestMessages
      summary: Fetch latest messages
      description: >-
        Retrieves up to 100 of the most recent messages from a specified
        conversation, including messages from both property and guest,
        returned in reverse chronological order (newest first). Can be
        used to sync message threads or poll for updates.
      tags:
        - Messages
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FetchMessagesRequest'
      responses:
        '200':
          description: Messages retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FetchMessagesResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /messages/latest/confirm:
    post:
      operationId: confirmMessages
      summary: Confirm message receipt
      description: >-
        Confirms receipt of specified messages. This confirmation is required
        before receiving new messages from the POST /messages/latest endpoint.
      tags:
        - Messages
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConfirmMessagesRequest'
      responses:
        '200':
          description: Messages confirmed successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConfirmMessagesResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /conversations/list:
    post:
      operationId: listConversations
      summary: List conversations
      description: >-
        Retrieves a list of messaging conversations, allowing you to browse
        and manage communication threads between guests and properties.
      tags:
        - Conversations
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ListConversationsRequest'
      responses:
        '200':
          description: Conversations listed successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListConversationsResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /conversations/details:
    post:
      operationId: getConversationDetails
      summary: Get conversation details
      description: >-
        Fetches detailed information about a specific conversation, including
        participants, message count, and status.
      tags:
        - Conversations
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConversationDetailsRequest'
      responses:
        '200':
          description: Conversation details retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConversationDetailsResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /payments/currencies:
    post:
      operationId: getPaymentCurrencies
      summary: Get supported currencies
      description: >-
        Retrieves the list of currencies supported for payments on
        Booking.com, including currency codes and display information.
      tags:
        - Payments
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      responses:
        '200':
          description: Currencies retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CurrenciesResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /payments/types:
    post:
      operationId: getPaymentTypes
      summary: Get payment types
      description: >-
        Retrieves the list of payment types supported on Booking.com,
        including credit cards and other payment methods.
      tags:
        - Payments
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      responses:
        '200':
          description: Payment types retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentTypesResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /locations/countries:
    post:
      operationId: getCountries
      summary: Get countries
      description: >-
        Retrieves geographical location data for countries supported
        on Booking.com.
      tags:
        - Locations
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                countries:
                  type: array
                  description: List of country codes to filter by
                  items:
                    type: string
      responses:
        '200':
          description: Countries retrieved successfully
          content:
            application/json:
              schema:
                type: object
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /locations/cities:
    post:
      operationId: getCities
      summary: Get cities
      description: >-
        Retrieves geographical location data for cities, including city
        identifiers used in accommodation search queries.
      tags:
        - Locations
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                city_ids:
                  type: array
                  description: List of city IDs to retrieve
                  items:
                    type: integer
                country:
                  type: string
                  description: Country code to filter cities
      responses:
        '200':
          description: Cities retrieved successfully
          content:
            application/json:
              schema:
                type: object
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /locations/regions:
    post:
      operationId: getRegions
      summary: Get regions
      description: >-
        Retrieves geographical location data for regions, including
        region identifiers used in accommodation search queries.
      tags:
        - Locations
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                region_ids:
                  type: array
                  description: List of region IDs to retrieve
                  items:
                    type: integer
                country:
                  type: string
                  description: Country code to filter regions
      responses:
        '200':
          description: Regions retrieved successfully
          content:
            application/json:
              schema:
                type: object
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        Bearer token authentication. Include your API key token in the
        Authorization header.
    affiliateId:
      type: apiKey
      in: header
      name: X-Affiliate-Id
      description: >-
        Your Booking.com Affiliate ID, required with every request.
  schemas:
    Booker:
      type: object
      description: Information about the person making the booking
      properties:
        country:
          type: string
          description: Two-letter country code of the booker
          example: nl
        platform:
          type: string
          description: Platform the booker is using
          enum:
            - desktop
            - mobile
            - tablet
          example: desktop
    Guests:
      type: object
      description: Guest allocation for the search or booking
      required:
        - number_of_adults
        - number_of_rooms
      properties:
        number_of_adults:
          type: integer
          description: Number of adult guests
          minimum: 1
          example: 2
        number_of_rooms:
          type: integer
          description: Number of rooms needed
          minimum: 1
          example: 1
        children_ages:
          type: array
          description: Ages of children traveling
          items:
            type: integer
            minimum: 0
            maximum: 17
    AccommodationSearchRequest:
      type: object
      required:
        - booker
        - checkin
        - checkout
        - guests
      properties:
        booker:
          $ref: '#/components/schemas/Booker'
        checkin:
          type: string
          format: date
          description: >-
            Check-in date in yyyy-mm-dd format. Must be within 500 days
            in the future.
        checkout:
          type: string
          format: date
          description: >-
            Check-out date in yyyy-mm-dd format. Must be between 1 and 90
            days after checkin and within 500 days in the future.
        city:
          type: integer
          description: City identifier for location-based search
          example: -2140479
        country:
          type: string
          description: Country code to filter by
        region:
          type: integer
          description: Region identifier for location-based search
        accommodation_ids:
          type: array
          description: Specific accommodation IDs to search
          items:
            type: integer
        guests:
          $ref: '#/components/schemas/Guests'
        extras:
          type: array
          description: Additional data to include in the response
          items:
            type: string
            enum:
              - extra_charges
              - products
        filters:
          type: object
          description: Filters to narrow search results
          properties:
            meal_plan:
              type: string
              description: Filter by meal plan type
            cancellation_type:
              type: string
              description: Filter by cancellation policy type
    AccommodationSearchResponse:
      type: object
      properties:
        result:
          type: array
          description: List of matching accommodations
          items:
            $ref: '#/components/schemas/AccommodationSearchResult'
    AccommodationSearchResult:
      type: object
      properties:
        accommodation_id:
          type: integer
          description: Unique identifier for the accommodation
        name:
          type: string
          description: Name of the accommodation
        city:
          type: string
          description: City where the accommodation is located
        country:
          type: string
          description: Country code of the accommodation
        price:
          $ref: '#/components/schemas/Price'
        products:
          type: array
          description: Available products/rooms
          items:
            $ref: '#/components/schemas/Product'
    AccommodationDetailsRequest:
      type: object
      required:
        - accommodation_ids
      properties:
        accommodation_ids:
          type: array
          description: List of accommodation IDs to retrieve details for
          items:
            type: integer
        extras:
          type: array
          description: Additional detail categories to include
          items:
            type: string
    AccommodationDetailsResponse:
      type: object
      properties:
        result:
          type: array
          description: List of accommodation details
          items:
            $ref: '#/components/schemas/AccommodationDetail'
    AccommodationDetail:
      type: object
      properties:
        accommodation_id:
          type: integer
          description: Unique identifier for the accommodation
        name:
          type: string
          description: Name of the accommodation
        description:
          type: string
          description: Detailed description of the accommo

# --- truncated at 32 KB (52 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/booking-com/refs/heads/main/openapi/booking-com-demand-api-openapi.yml