# API Reference
# The Metasearch Endpoint
Returns real-time pricing from multiple OTAs and direct channels for a specific hotel.
# Endpoint
GET /metasearch
# Base URL
https://api.hotel-universe.travel
# Required Parameters
| Parameter | Type | Description |
|---|---|---|
hotelId | string | Hotel identifier (can be Hotel Universe ID, Google Hotel ID, or other supported formats) |
checkIn | string | Check-in date in YYYY-MM-DD format |
nights | number | Number of nights to stay |
adults | number | Number of adult guests |
children | number | Number of child guests (use 0 if none) |
# Optional Parameters
| Parameter | Type | Default | Options | Description |
|---|---|---|---|---|
hotelIdType | string | huId, googleHotelId, etc. | Type of hotel identifier provided | |
rateType | string | cheapest | cheapest, refundable | Filter by rate type |
currency | string | GBP | Any ISO 4217 code | Currency code (e.g., USD, EUR, GBP) |
locale | string | us | Any locale code | Locale for localisation |
deviceType | string | desktop | desktop, mobile | Device type |
Defaults: If you omit optional parameters, the API uses the defaults above. For example, omitting currency will return prices in GBP.
# Example Requests
# Basic Request
curl --location 'https://api.hotel-universe.travel/metasearch?hotelId=07b7c69652&checkIn=2025-12-25&nights=2&adults=2&children=0' \
--header 'Authorization: Bearer YOUR_TOKEN' \
--header 'Accept: application/json'
# With Optional Parameters
curl --location 'https://api.hotel-universe.travel/metasearch?hotelId=07b7c69652&checkIn=2025-12-25&nights=3&adults=2&children=0&rateType=refundable¤cy=USD&locale=us&deviceType=desktop' \
--header 'Authorization: Bearer YOUR_TOKEN' \
--header 'Accept: application/json'
# Using Different Hotel ID Types
# Using Google Hotel ID with explicit type
curl --location 'https://api.hotel-universe.travel/metasearch?hotelId=ChIJN1t_tDeuEmsRUsoyG83frY4&hotelIdType=googleHotelId&checkIn=2025-12-25&nights=2&adults=2&children=0' \
--header 'Authorization: Bearer YOUR_TOKEN' \
--header 'Accept: application/json'
# Understanding the Response
The API returns an array of provider offers, each containing pricing and availability information.
# Core Fields (Always Present)
| Field | Type | Description |
|---|---|---|
advertiser | object | Provider information |
advertiser.fullname | string | Full provider name (e.g., "Booking.com") |
advertiser.shortname | string | Short provider name (e.g., "Booking") |
advertiser.url | string | Booking URL for this offer |
advertiser.isHotel | boolean | true if this is the hotel's direct site, false for OTAs |
advertiser.isSponsored | boolean | Whether this is a sponsored placement |
pricePerNight | object | Per-night pricing |
pricePerNight.gross | object | Price including taxes (or net for pre-tax price) |
pricePerNight.gross.text | string | Formatted price string (e.g., "£53") |
pricePerNight.gross.value | number | Numeric price value (e.g., 52.87742) |
totalPrice | object | Total stay pricing (same structure as pricePerNight) |
# Optional Fields (May Be Present)
| Field | Type | Description |
|---|---|---|
cancellationDate | string | Cancellation deadline (e.g., "Nov 28") |
rooms | array | Array of room offers with detailed rate information |
# Room Details (When Available)
Each item in the rooms array contains:
| Field | Type | Description |
|---|---|---|
name | string | Room type name (e.g., "Standard Double Room") |
imageUrls | array | Array of room image URLs |
rates | array | Array of rate options for this room |
Each rate contains:
| Field | Type | Description |
|---|---|---|
description | string/null | Rate description (e.g., "Free cancellation") |
pricePerNight | object | Per-night price for this rate |
totalPrice | object | Total price for this rate |
refundable | boolean | Whether this rate is refundable (optional) |
cancellationUntil | string | Cancellation deadline (optional) |
breakfastIncluded | boolean | Whether breakfast is included (optional) |
Important
Not all fields are guaranteed. Provider data completeness varies by region and hotel. Design your integration to handle missing fields gracefully.
# Related Resources
- Response Codes - Complete error reference
- Data Samples - Full schema and examples
- Best Practices - Production guidelines