Prebook rate from search step
This call is available to only certified partners who don’t use the Retrieve hotelpage call in their flow.
https://api.worldota.net/api/b2b/v3/serp/prebook/
ℹ️
- This call is required if you don’t use the Prebook rate from hotelpage step call.
- Request this call right after the SERP calls withing 6 hours.
The call checks if the requested rate is still available before it can be booked and improves the booking success rate:
- When the original rate is not available, the system searches only for alternative rates of the same room type and board type (e.g., switching between refundable and non-refundable conditions within the
price_increase_percent
limit). The search does not extend to different room types or board types. If an alternative rate is found, newbook_hash
andmatch_hash
values are returned. - In cases where the same rate cannot be found and a price increase is permitted via the
price_increase_percent
field. The call will attempt to find the same room and board type at an increased price, but not exceeding the allowed percentage. The value in thepayment_options
field may change.
ℹ️
The limitations:
- The recommended call timeout is 60 seconds.
- The minimum call timeout is 30 seconds.
Request example
curl --user '<KEY_ID>:<API_KEY>' 'https://api.worldota.net/api/b2b/v3/serp/prebook/' \
--header 'Content-Type: application/json' \
--data '{
"hash": "sr-019975cf-b533-71e1-975c-a8fd3fa72d3e",
"price_increase_percent": 20
}'
Request body
Response
Response example
{
"data": {
"hotels": [
{
"id": "clipper_city_home_apartments_berlin",
"hid": 7497022,
"rates": [
{
"book_hash": "p-b623d956-4a96-40c8-b238-44e3956f6b75",
"match_hash": "m-db65226c-7201-5e9c-a5ea-dd7d9a42361d",
"daily_prices": [
"268.00",
"268.00"
],
"meal": "nomeal",
"meal_data": {
"value": "nomeal",
"has_breakfast": false,
"no_child_meal": true
},
"payment_options": {
"payment_types": [
{
"amount": "630.00",
"show_amount": "536.00",
"currency_code": "USD",
"show_currency_code": "EUR",
"by": null,
"is_need_credit_card_data": false,
"is_need_cvc": false,
"type": "deposit",
"vat_data": {
"included": false,
"applied": false,
"amount": "0.00",
"currency_code": "EUR",
"value": "0.00"
},
"tax_data": {
"taxes": [
{
"name": "city_tax",
"included_by_supplier": false,
"amount": "15.73",
"currency_code": "EUR"
},
{
"name": "vat",
"included_by_supplier": true,
"amount": "35.07",
"currency_code": "EUR"
}
]
},
"perks": {},
"commission_info": {
"show": {
"amount_gross": "536.00",
"amount_net": "536.00",
"amount_commission": "0.00"
},
"charge": {
"amount_gross": "630.00",
"amount_net": "630.00",
"amount_commission": "0.00"
}
},
"cancellation_penalties": {
"policies": [
{
"start_at": null,
"end_at": null,
"amount_charge": "630.00",
"amount_show": "536.00",
"commission_info": {
"show": {
"amount_gross": "536.00",
"amount_net": "536.00",
"amount_commission": "0.00"
},
"charge": {
"amount_gross": "630.00",
"amount_net": "630.00",
"amount_commission": "0.00"
}
}
}
],
"free_cancellation_before": null
},
"recommended_price": null
}
]
},
"bar_rate_price_data": null,
"rg_ext": {
"class": 7,
"quality": 2,
"sex": 0,
"bathroom": 2,
"bedding": 0,
"family": 0,
"capacity": 0,
"club": 0,
"bedrooms": 0,
"balcony": 1,
"view": 0,
"floor": 0
},
"room_name": "Standard Studio with balcony",
"room_name_info": null,
"serp_filters": [
"has_bathroom"
],
"sell_price_limits": null,
"allotment": 1,
"amenities_data": [
"non-smoking",
"balcony"
],
"any_residency": false,
"deposit": null,
"no_show": null,
"room_data_trans": {
"main_room_type": "Standard Studio mit Balkon",
"main_name": "Standard Studio mit Balkon",
"bathroom": null,
"bedding_type": null,
"misc_room_type": null
},
"legal_info": null,
"is_package": false
}
],
"bar_price_data": null
}
],
"changes": {
"price_changed": false
}
},
"debug": {
"api_endpoint": {
"endpoint": "api/b2b/v3/serp/prebook",
"is_active": true,
"is_limited": true,
"remaining": 199,
"requests_number": 200,
"reset": "2025-09-23T09:52:00",
"seconds_number": 60
},
"request": {
"hash": "sr-019975cf-b533-71e1-975c-a8fd3fa72d3e",
"price_increase_percent": 20
},
"method": "POST",
"real_ip": "10.97.2.10",
"request_id": "bd1efacb9f5db637964c2cea8ee0324d",
"key_id": 1234,
"api_key_id": 1234,
"utcnow": "2025-09-23T09:51:27.888902"
},
"status": "ok",
"error": null
}
Errors
The error
field has the value specified in the headers below.
no_available_rates
The rate with the price_increase_percent
field value isn’t found. Try to change the value.
rate_not_found
- The rate with the
hash
field value isn’t found. - The
hash
field value has expired.
Send another search request and change the hash
field value.
invalid_params
- The
hash
field is required. - The
hash
field value is incorrect. - The
price_increase_percent
field value is less than0
.
unknown
The internal ETG services’ timeout.
prebook_from_serp_disabled
There is no permission to use this call for this contract. Contact the API support team.
contract_mismatch
The pre-book contract differs from the rate contract. They should be the same.