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: 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