Build a hotel data workflow with the APIVex Booking.com API by resolving a destination, searching for a specific stay, and retrieving details for selected hotels. The key is to keep dates, guests, rooms, and currency attached to every price observation.
This guide uses APIVex's third-party data service. Booking.com's own Demand API has a separate partner onboarding process and credentials. Do not mix its authentication or endpoints with APIVex requests.
The hotel search workflow
- Search for a destination using a city or place name.
- Select the returned destination identifier and type.
- Search hotels with future check-in and check-out dates.
- Retain hotel identifiers for details, facilities, photos, or reviews.
- Store the query context together with the result.
The base path is https://api.apivex.com/booking. Authenticate with your APIVex key in the x-apivex-key header. See the Booking API documentation for the full parameter reference.
Find the destination ID
Set APIVEX_API_KEY in your shell environment, then run this Bash/cURL example:
curl --get 'https://api.apivex.com/booking/api/v1/hotels/searchDestination' \
--header "x-apivex-key: $APIVEX_API_KEY" \
--data-urlencode 'query=Paris'Select the location that matches your intended geography. Use its destination identifier as dest_id, and the appropriate documented type as search_type. A city, airport, and landmark with similar names can produce different searches.
The search type values include CITY, REGION, LANDMARK, DISTRICT, LATLONG, HOTEL, COUNTRY, and AIRPORT. Preserve their capitalization.
Search hotels for a future stay
Set DEST_ID to the identifier you selected. Set ARRIVAL_DATE and DEPARTURE_DATE to future dates in YYYY-MM-DD format, with departure later than arrival. This example assumes you chose a city:
curl --get 'https://api.apivex.com/booking/api/v1/hotels/searchHotels' \
--header "x-apivex-key: $APIVEX_API_KEY" \
--data-urlencode "dest_id=$DEST_ID" \
--data-urlencode 'search_type=CITY' \
--data-urlencode "arrival_date=$ARRIVAL_DATE" \
--data-urlencode "departure_date=$DEPARTURE_DATE" \
--data-urlencode 'adults=2' \
--data-urlencode 'room_qty=1' \
--data-urlencode 'currency_code=USD' \
--data-urlencode 'page_number=1'Inspect the returned hotels and price representation before transforming the response. Do not assume an amount is per night, per room, or the full stay unless the returned context supports that interpretation. Keep information about taxes and conditions when available.
The documented page_number begins at 1. Request further pages only as needed, with a page limit and a stop condition for exhausted or repeated results.
Enrich selected hotels
| Information needed | Endpoint suffix | Required inputs |
|---|---|---|
| Stay-specific hotel details | /api/v1/hotels/getHotelDetails | hotel_id, arrival_date, departure_date |
| Facilities | /api/v1/hotels/getHotelFacilities | hotel_id |
| Photos | /api/v1/hotels/getHotelPhotos | hotel_id |
| Reviews | /api/v1/hotels/getHotelReviews | hotel_id |
Use hotel IDs obtained from the matching search response. Fetch enrichment only for the hotels you want to display or analyze, rather than requesting every endpoint for every search result.
Make price comparisons reproducible
A useful observation includes the hotel ID, search destination, stay dates, guest and room configuration, currency, retrieval time, and the returned price context. When you repeat the request, compare equivalent configurations.
Changing the dates or number of guests can change availability as well as price. A missing room or hotel is not automatically a price increase. Record unavailable results separately from numeric observations.
Treat results as time-sensitive. This read workflow does not reserve a room or guarantee a rate at checkout. If you need a transactional booking integration, evaluate the relevant booking product and its requirements separately.
Troubleshooting
Empty hotel search: verify that dest_id and search_type describe the same destination, dates are valid and future-facing, and optional filters are not excluding the available results.
Unexpected prices: compare currency, room count, guests, dates, and price units before attributing the difference to a change in the market.
Details request fails: use a hotel ID from the current search flow and include the required stay dates. Keep destination IDs and hotel IDs in separate fields.
Request rejected: inspect the HTTP status and error response, confirm x-apivex-key, and review your account access and usage before retrying.
Next step
Test destination lookup in the Booking API reference, then follow it with one hotel search. If you want a spreadsheet report, use the Sheets add-on tutorial after validating the query and selected fields.



