flightpowers-com Hotels API

The Hotels API from flightpowers-com — 4 operation(s) for hotels.

Operations 4

POST /v1/hotels/search Hotels: search #
POST /v1/hotels/by-name Hotels: by name #
POST /v1/hotels/rooms Hotels: rooms #
POST /v1/hotels/resolve Hotels: resolve #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/flightpowers-com:flightpowers-com-hotels-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

flightpowers-com-hotels-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Flightpowers Com Hotels API
  version: '1.0'
  description: 'Operations tagged Hotels across 2 of this provider''s published API definitions: flightpowers-com-api-openapi.json, flightpowers-com-openapi.json. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api.flightpowers.com
  description: Production. The RapidAPI hosts (google-flights-live-api.p.rapidapi.com, booking-live-api.p.rapidapi.com) serve the same engines with RapidAPI-native paths; this host is the canonical REST front.
tags:
- name: Hotels
paths:
  /v1/hotels/search:
    post:
      summary: 'Hotels: search'
      operationId: v1_hotels_search_v1_hotels_search_post
      parameters:
      - name: _path
        in: query
        required: false
        schema:
          type: string
          default: /v1/hotels/search
          title: ' Path'
      - name: provider
        in: query
        required: false
        schema:
          type: string
          enum:
          - airbnb
          - booking
          default: booking
        description: Same field as the body one, for callers that can only set a query string. Sending both with different values is a 400.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                title: Response V1 Hotels Search V1 Hotels Search Post
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                provider:
                  type: string
                  enum:
                  - airbnb
                  - booking
                  default: booking
                  description: 'Which source to price the stay from. `booking` (default) searches Booking.com and is billed to your Booking Live API subscription. `airbnb` searches Airbnb and returns the same row shape; it is available on /v1/hotels/search only, because Airbnb publishes prices on search results and not on a room page. Airbnb-only filters: infants, pets, price_min, price_max, min_bedrooms, min_beds, min_bathrooms, room_types, min_rating. Booking-only filters (`filters`) are refused on an Airbnb request rather than ignored; `budget_per_night` is translated to `price_max` and the rewrite is reported in the X-Field-Aliased response header. The provider that served a response is echoed in the X-Provider header, and in the response body on Airbnb searches.'
      tags:
      - Hotels
  /v1/hotels/by-name:
    post:
      summary: 'Hotels: by name'
      operationId: v1_hotels_by_name_v1_hotels_by_name_post
      parameters:
      - name: _path
        in: query
        required: false
        schema:
          type: string
          default: /v1/hotels/by-name
          title: ' Path'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                title: Response V1 Hotels By Name V1 Hotels By Name Post
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      tags:
      - Hotels
  /v1/hotels/rooms:
    post:
      summary: 'Hotels: rooms'
      operationId: v1_hotels_rooms_v1_hotels_rooms_post
      parameters:
      - name: _path
        in: query
        required: false
        schema:
          type: string
          default: /v1/hotels/rooms
          title: ' Path'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                title: Response V1 Hotels Rooms V1 Hotels Rooms Post
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      tags:
      - Hotels
  /v1/hotels/resolve:
    post:
      summary: 'Hotels: resolve'
      operationId: v1_hotels_resolve_v1_hotels_resolve_post
      parameters:
      - name: _path
        in: query
        required: false
        schema:
          type: string
          default: /v1/hotels/resolve
          title: ' Path'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                title: Response V1 Hotels Resolve V1 Hotels Resolve Post
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      tags:
      - Hotels
components:
  schemas:
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
            - type: string
            - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
        input:
          title: Input
        ctx:
          type: object
          title: Context
      type: object
      required:
      - loc
      - msg
      - type
      title: ValidationError
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    HotelByNameRequest:
      type: object
      required:
      - hotel_name
      - checkin_date
      - checkout_date
      properties:
        hotel_name:
          type: string
          description: Free-text hotel name, e.g. `Kremlin Palace`.
          examples:
          - Four Seasons Limassol
        checkin_date:
          type: string
          format: date
        checkout_date:
          type: string
          format: date
        area:
          type: string
          description: City/region to disambiguate generic hotel names, e.g. `Budapest`. Search uses `<hotel_name>, <area>`; name matching still uses only `hotel_name`.
        adults:
          type: integer
          default: 2
        children:
          type: integer
          default: 0
        currency:
          type: string
          default: USD
        proxy_country:
          type: string
          description: Two-letter country code to route the request through a residential proxy in that country (e.g. `us`, `de`, `il`). Booking.com shows different prices to different markets; this is how you observe them - the basis for rate-parity and geo-pricing monitoring. When omitted, the request uses the full global residential pool.
        free_cancellation:
          type: boolean
          default: false
    HotelProperty:
      type: object
      properties:
        name:
          type: string
        price_string:
          type: string
          description: Display price for the whole stay, e.g. `US$2,434`.
        price:
          type: number
        review_score:
          type:
          - number
          - 'null'
        review_count:
          type:
          - integer
          - 'null'
        room_type:
          type:
          - string
          - 'null'
        location:
          type:
          - string
          - 'null'
          description: e.g. `2.9 km from downtown`.
        image_url:
          type:
          - string
          - 'null'
          format: uri
        link:
          type: string
          format: uri
          description: Deep link to the property on Booking.com with dates and occupancy pre-filled.
        latitude:
          type:
          - number
          - 'null'
          description: The property's latitude in WGS84 decimal degrees, from Booking.com, e.g. `41.9057575`. Null when Booking.com publishes no position.
        longitude:
          type:
          - number
          - 'null'
          description: The property's longitude in WGS84 decimal degrees, from Booking.com, e.g. `12.4724811`. Null when Booking.com publishes no position.
    HotelSearchRequest:
      type: object
      required:
      - destination
      - checkin_date
      - checkout_date
      properties:
        destination:
          type: string
          description: 'Free-text destination, e.g. `Paris`, `Tokyo Shibuya`. NOTE: the field is `destination` - a `location` key is rejected with a 400.'
          examples:
          - Lisbon
        checkin_date:
          type: string
          format: date
        checkout_date:
          type: string
          format: date
        adults:
          type: integer
          default: 2
        children:
          type: integer
          default: 0
        currency:
          type: string
          default: USD
        proxy_country:
          type: string
          description: Two-letter country code to route the request through a residential proxy in that country (e.g. `us`, `de`, `il`). Booking.com shows different prices to different markets; this is how you observe them - the basis for rate-parity and geo-pricing monitoring. When omitted, the request uses the full global residential pool.
        budget_per_night:
          type: number
          description: Maximum price per night, in the request currency.
        filters:
          type: array
          items:
            type: string
            enum:
            - free_cancellation
            - breakfast_included
            - breakfast_and_lunch
            - breakfast_and_dinner
            - all_meals_included
            - all_inclusive
            - free_wifi
            - swimming_pool
            - gym
            - parking
            - front_desk_24h
            - review_score_7
            - review_score_8
            - review_score_9
            - private_bathroom
            - air_conditioning
            - stars_3
            - stars_4
            - stars_5
            - pets_allowed
            - adults_only
            - sauna
            - very_good_breakfast
            - accepts_online_payment
          default: []
          description: Booking.com search filters, 24 supported.
        sort:
          type: string
          enum:
          - price_asc
          - price_desc
          - rating_desc
          - price
          - rating
          description: 'Result order: `price_asc` cheapest first, `price_desc` most expensive first, `rating_desc` highest review score first; `price` and `rating` are shorthands for `price_asc` and `rating_desc`. Booking.com sorts the whole destination first, then the rows are ordered by the tax-inclusive `price` (or `review_score`), rows without one last. Omit it for Booking.com''s own order. Any other value is a 400 that lists the valid ones, before any search runs.'
    ResolveResponse:
      type: object
      properties:
        hotel_name:
          type: string
        hotel_booking_id:
          type: string
          description: Use with `/v1/hotels/rooms`.
        matched_name:
          type: string
    HotelRoomsResponse:
      type: object
      properties:
        hotel_booking_id:
          type: string
        checkin_date:
          type: string
          format: date
        checkout_date:
          type: string
          format: date
        booking_url:
          type: string
          format: uri
        rooms:
          type: array
          items:
            type: object
            properties:
              room_type:
                type: string
              room_economy:
                type: string
                description: Board line, e.g. `Exceptional breakfast included`.
              guests:
                type: integer
              price_as_number:
                type: number
              price:
                type: string
    Error:
      type: object
      properties:
        error:
          type: object
          properties:
            type:
              type: string
              description: e.g. `missing_api_key`, `invalid_api_key`, `invalid_request`, `search_incomplete`.
            reason:
              type: string
              description: Present on `search_incomplete`, e.g. `blocked_page`.
            message:
              type: string
    HotelSearchResponse:
      type: object
      properties:
        destination:
          type: string
        checkin_date:
          type: string
          format: date
        checkout_date:
          type: string
          format: date
        applied_filters:
          type: array
          items:
            type: string
        budget_per_night:
          type:
          - number
          - 'null'
        properties:
          type: array
          items:
            $ref: '#/components/schemas/HotelProperty'
    ResolveRequest:
      type: object
      required:
      - hotel_name
      properties:
        hotel_name:
          type: string
          description: Free-text hotel name.
          examples:
          - boffenigo boutique italy
        proxy_country:
          type: string
          description: Two-letter country code to route the request through a residential proxy in that country (e.g. `us`, `de`, `il`). Booking.com shows different prices to different markets; this is how you observe them - the basis for rate-parity and geo-pricing monitoring. When omitted, the request uses the full global residential pool.
    HotelRoomsRequest:
      type: object
      required:
      - hotel_booking_id
      - checkin_date
      - checkout_date
      properties:
        hotel_booking_id:
          type: string
          description: Booking.com hotel path id, e.g. `cy/four-seasons-limassol`. Get it from `/v1/hotels/resolve`.
          examples:
          - cy/four-seasons-limassol
        checkin_date:
          type: string
          format: date
        checkout_date:
          type: string
          format: date
        adults:
          type: integer
          default: 2
        children:
          type: integer
          default: 0
        currency:
          type: string
          default: USD
        proxy_country:
          type: string
          description: Two-letter country code to route the request through a residential proxy in that country (e.g. `us`, `de`, `il`). Booking.com shows different prices to different markets; this is how you observe them - the basis for rate-parity and geo-pricing monitoring. When omitted, the request uses the full global residential pool.
        free_cancellation:
          type: boolean
          default: false
    HotelByNameResponse:
      type: object
      description: Availability and price for the named hotel. When `available` is false, price fields are null.
      properties:
        name:
          type:
          - string
          - 'null'
        available:
          type: boolean
        price_string:
          type:
          - string
          - 'null'
        price:
          type:
          - number
          - 'null'
        review_score:
          type:
          - number
          - 'null'
        review_count:
          type:
          - integer
          - 'null'
        room_type:
          type:
          - string
          - 'null'
        image_url:
          type:
          - string
          - 'null'
        link:
          type:
          - string
          - 'null'
        nights:
          type:
          - integer
          - 'null'
        adults:
          type:
          - integer
          - 'null'
        children:
          type:
          - integer
          - 'null'
        latitude:
          type:
          - number
          - 'null'
          description: The property's latitude in WGS84 decimal degrees, from Booking.com. Null when Booking.com publishes no position, and when the hotel was not found.
        longitude:
          type:
          - number
          - 'null'
          description: The property's longitude in WGS84 decimal degrees, from Booking.com. Null when Booking.com publishes no position, and when the hotel was not found.
  securitySchemes:
    ApiKeyHeader:
      type: apiKey
      in: header
      name: x-api-key
      description: Your RapidAPI key. The default for Zapier-style custom auth.
    RapidApiKeyHeader:
      type: apiKey
      in: header
      name: x-rapidapi-key
      description: Your RapidAPI key, in the header RapidAPI users already have in hand.
    BearerAuth:
      type: http
      scheme: bearer
      description: '`Authorization: Bearer <RapidAPI key>`. `?api_key=` in the query string also works but is discouraged: keys in URLs end up in logs and history.'
externalDocs:
  description: Human docs with captured example responses
  url: https://flightpowers.com/flights-api
x-refined-from:
- flightpowers-com-api-openapi.json
- flightpowers-com-openapi.json