Prebook rate from search step

Prebook rate from search step

#affiliate

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/
ℹ️

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, new book_hash and match_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 the payment_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 than 0.

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.