# Search by geo coordinates

URL: https://docs.emergingtravel.com/docs/affiliate-api/hotel-search/search-by-geo-coordinates/

Tags: affiliate

---



**Sandbox**

```
https://api-sandbox.worldota.net/api/b2b/v3/search/serp/geo/
```

**Production**

```
https://api.worldota.net/api/b2b/v3/search/serp/geo/'
```




The call gets hotels’ rates by the [SERP mechanism](/docs/glossary/#search-engine-results-page) and the given geographical details.

> [!WARNING]
> * Let users choose the rates from this call response isn’t recommended.
> * A full match with a response from the [Retrieve hotelpage](/docs/affiliate-api/hotel-search/retrieve-hotelpage/) request isn’t expected.



## Sandbox limitations { #limitations }

> [!WARNING]
> Use only field values, IDs, API keys, and any static content from the sandbox environment within the sandbox. <strong>Do not use sandbox data in test or production environments, and do not mix data or configuration between different environments.</strong>




* The value of the `language` field is always set to `en`.
* When using `latitude` and `longitude`, use one of the following coordinate pairs for convenience:
* `latitude`: `34.077194`, `longitude`: `-118.36068`.
* `latitude`: `25.0753`, `longitude`: `55.1385`.
* `latitude`: `55.8034`, `longitude`: `37.5226`.
* `latitude`: `48.87844`, `longitude`: `2.35829`.
* The value of the `currency` field is always set to `USD`.
* The maximum number of items in `hotels.rates` is `5`.
* The following fields are not supported:
  * `hotels.rates.payment_options.payment_types.cancellation_penalties.policies.commission_info.charge.amount_gross`.
  * `hotels.rates.payment_options.payment_types.cancellation_penalties.policies.commission_info.charge.amount_commission`.
* Internal search errors are not supported.

## Request example


**Sandbox**

```shell
curl --user '<KEY_ID>:<API_KEY>' 'https://api-sandbox.worldota.net/api/b2b/v3/search/serp/geo/' \
--header 'Content-Type: application/json' \
--data '{
  "checkin": "2026-10-22",
  "checkout": "2026-10-25",
  "residency": "gb",
  "language": "en",
  "guests": [
    {
      "adults": 2,
      "children": []
    }
  ],
  "latitude": 25.091604,
  "longitude": 55.146603,
  "radius": 150,
  "currency": "EUR",
  "filter": {
    "star_rating": [],
    "kind": [],
    "meal_type": [
      "all-inclusive",
      "super-all-inclusive",
      "soft-all-inclusive",
      "ultra-all-inclusive"
    ]
  }
}'
```

**Production**

```shell
curl --user '<KEY_ID>:<API_KEY>' 'https://api.worldota.net/api/b2b/v3/search/serp/geo/' \
--header 'Content-Type: application/json' \
--data '{
  "checkin": "2026-10-22",
  "checkout": "2026-10-25",
  "residency": "gb",
  "language": "en",
  "guests": [
    {
      "adults": 2,
      "children": []
    }
  ],
  "latitude": 25.091604,
  "longitude": 55.146603,
  "radius": 150,
  "currency": "EUR",
  "filter": {
    "star_rating": [],
    "kind": [],
    "meal_type": [
      "all-inclusive",
      "super-all-inclusive",
      "soft-all-inclusive",
      "ultra-all-inclusive"
    ]
  }
}'
```




## Request body



[//]: # (checkin)
- **checkin** *(String, required)*

  <p>The check-in date. The value must be not later than 730 days from the day when the request is made.</p>


[//]: # (checkout)
- **checkout** *(String, required)*

  <p>The check-out date. The value must be not later than 30 days from the checkin field value.</p>


[//]: # (currency)
- **currency** *(String, optional)*

  <p>The currency of all rooms’ prices.</p>
  <p>If passed, the <code>show_amount</code> and <code>show_currency_amount</code> fields will have the currency of this field.</p>
  > [!NOTE]
  > * The default value is the contract currency for prepaid rates.


[//]: # (language)
- **language** *(String, optional)*

  <p>The hotel data language.</p>
  > [!NOTE]
  > * The default value is the contract language.
  > * The possible values:
  >   * `ar` — Arabic.
  >   * `bg` — Bulgarian.
  >   * `cs` — Czech.
  >   * `da` — Danish.
  >   * `de` — German.
  >   * `el` — Greek.
  >   * `en` — English.
  >   * `es` — Spanish.
  >   * `fi` — Finnish.
  >   * `fr` — French.
  >   * `he` — Hebrew.
  >   * `hu` — Hungarian.
  >   * `it` — Italian.
  >   * `ja` — Japanese.
  >   * `kk` — Kazakh.
  >   * `ko` — Korean.
  >   * `nl` — Dutch.
  >   * `no` — Norwegian.
  >   * `pl` — Polish.
  >   * `pt` — Portuguese.
  >   * `pt_PT` — Portuguese (Portugal).
  >   * `ro` — Romanian.
  >   * `ru` — Russian.
  >   * `sq` — Albanian.
  >   * `sr` — Serbian.
  >   * `sv` — Swedish.
  >   * `th` — Thai.
  >   * `tr` — Turkish.
  >   * `uk` — Ukrainian.
  >   * `vi` — Vietnamese.
  >   * `zh_CN` — Simplified Chinese.
  >   * `zh_TW` — Traditional Chinese.


[//]: # (latitude)
- **latitude** *(Float, required)*

  <p>The hotel geographical latitude.</p>


[//]: # (longitude)
- **longitude** *(Float, required)*

  <p>The hotel geographical longitude.</p>


[//]: # (radius)
- **radius** *(Int, required)*

  <p>The radius size for circular search in meters.</p>
  > [!NOTE]
  > * The minimum value is `1`.
  > * The maximum value is `70000`.


[//]: # (hotels_limit)
- **hotels_limit** *(Int, optional)*

  <p>The maximum number of the available hotels in the response.</p>


[//]: # (residency)
- **residency** *(String, required or optional)*

  <p>The guests’ citizenship in the [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)
   format.</p>
  <p>Use this field if there are doubts regarding the country or the hotel policy towards citizens.</p>
  > [!NOTE]
  > The possible values:
  > * `ad` — Andorra.
  > * `ae` — United Arab Emirates.
  > * `af` — Afghanistan.
  > * `ag` — Antigua and Barbuda.
  > * `ai` — Anguilla.
  > * `al` — Albania.
  > * `am` — Armenia.
  > * `ao` — Angola.
  > * `aq` — Antarctica.
  > * `ar` — Argentina.
  > * `as` — American Samoa.
  > * `at` — Austria.
  > * `au` — Australia.
  > * `aw` — Aruba.
  > * `ax` — Åland Islands.
  > * `az` — Azerbaijan.
  > * `ba` — Bosnia and Herzegovina.
  > * `bb` — Barbados.
  > * `bd` — Bangladesh.
  > * `be` — Belgium.
  > * `bf` — Burkina Faso.
  > * `bg` — Bulgaria.
  > * `bh` — Bahrain.
  > * `bi` — Burundi.
  > * `bj` — Benin.
  > * `bl` — Saint Barthélemy.
  > * `bm` — Bermuda.
  > * `bn` — Brunei Darussalam.
  > * `bo` — Bolivia.
  > * `bq` — Bonaire, Sint Eustatius and Saba.
  > * `br` — Brazil.
  > * `bs` — Bahamas.
  > * `bt` — Bhutan.
  > * `bv` — Bouvet Island.
  > * `bw` — Botswana.
  > * `by` — Belarus.
  > * `bz` — Belize.
  > * `ca` — Canada.
  > * `cc` — Cocos (Keeling) Islands.
  > * `cd` — Democratic Republic of the Congo, also known as Congo-Kinshasa.
  > * `cf` — Central African Republic.
  > * `cg` — The Republic of the Congo, also known as Congo-Brazzaville.
  > * `ch` — Switzerland.
  > * `ci` — Côte d'Ivoire.
  > * `ck` — Cook Islands.
  > * `cl` — Chile.
  > * `cm` — Cameroon.
  > * `cn` — China.
  > * `co` — Colombia.
  > * `cr` — Costa Rica.
  > * `cu` — Cuba.
  > * `cv` — Cabo Verde.
  > * `cw` — Curaçao.
  > * `cx` — Christmas Island.
  > * `cy` — Cyprus.
  > * `cz` — Czechia.
  > * `de` — Germany.
  > * `dj` — Djibouti.
  > * `dk` — Denmark.
  > * `dm` — Dominica.
  > * `do` — Dominican Republic.
  > * `dz` — Algeria.
  > * `ec` — Ecuador.
  > * `ee` — Estonia.
  > * `eg` — Egypt.
  > * `eh` — Western Sahara.
  > * `er` — Eritrea.
  > * `es` — Spain.
  > * `et` — Ethiopia.
  > * `fi` — Finland.
  > * `fj` — Fiji.
  > * `fk` — Falkland Islands (Malvinas).
  > * `fm` — Micronesia.
  > * `fo` — Faroe Islands.
  > * `fr` — France.
  > * `ga` — Gabon.
  > * `gb` — United Kingdom of Great Britain and Northern Ireland.
  > * `gd` — Grenada.
  > * `ge` — Georgia.
  > * `gf` — French Guiana.
  > * `gg` — Guernsey.
  > * `gh` — Ghana.
  > * `gi` — Gibraltar.
  > * `gl` — Greenland.
  > * `gm` — Gambia.
  > * `gn` — Guinea.
  > * `gp` — Guadeloupe.
  > * `gq` — Equatorial Guinea.
  > * `gr` — Greece.
  > * `gs` — South Georgia and the South Sandwich Islands.
  > * `gt` — Guatemala.
  > * `gu` — Guam.
  > * `gw` — Guinea-Bissau.
  > * `gy` — Guyana.
  > * `hk` — Hong Kong.
  > * `hm` — Heard Island and McDonald Islands.
  > * `hn` — Honduras.
  > * `hr` — Croatia.
  > * `ht` — Haiti.
  > * `hu` — Hungary.
  > * `id` — Indonesia.
  > * `ie` — Ireland.
  > * `il` — Israel.
  > * `im` — Isle of Man.
  > * `in` — India.
  > * `io` — British Indian Ocean Territory.
  > * `iq` — Iraq.
  > * `ir` — Iran.
  > * `is` — Iceland.
  > * `it` — Italy.
  > * `je` — Bailiwick of Jersey.
  > * `jm` — Jamaica.
  > * `jo` — Jordan.
  > * `jp` — Japan.
  > * `ke` — Kenya.
  > * `kg` — Kyrgyzstan.
  > * `kh` — Cambodia.
  > * `ki` — Kiribati.
  > * `km` — Comoros.
  > * `kn` — Saint Kitts and Nevis.
  > * `kp` — North Korea.
  > * `kr` — South Korea.
  > * `kw` — Kuwait.
  > * `ky` — Cayman Islands.
  > * `kz` — Kazakhstan.
  > * `la` — Laos.
  > * `lb` — Lebanon.
  > * `lc` — Saint Lucia.
  > * `li` — Liechtenstein.
  > * `lk` — Sri Lanka.
  > * `lr` — Liberia.
  > * `ls` — Lesotho.
  > * `lt` — Lithuania.
  > * `lu` — Luxembourg.
  > * `lv` — Latvia.
  > * `ly` — Libya.
  > * `ma` — Morocco.
  > * `mc` — Monaco.
  > * `md` — Moldova.
  > * `me` — Montenegro.
  > * `mf` — Saint Martin.
  > * `mg` — Madagascar.
  > * `mh` — Marshall Islands.
  > * `mk` — North Macedonia.
  > * `ml` — Mali.
  > * `mm` — Myanmar.
  > * `mn` — Mongolia.
  > * `mo` — Macao.
  > * `mp` — Northern Mariana Islands.
  > * `mq` — Martinique.
  > * `mr` — Mauritania.
  > * `ms` — Montserrat.
  > * `mt` — Malta.
  > * `mu` — Mauritius.
  > * `mv` — Maldives.
  > * `mw` — Malawi.
  > * `mx` — Mexico.
  > * `my` — Malaysia.
  > * `mz` — Mozambique.
  > * `na` — Namibia.
  > * `nc` — New Caledonia.
  > * `ne` — Niger.
  > * `nf` — Norfolk Island.
  > * `ng` — Nigeria.
  > * `ni` — Nicaragua.
  > * `nl` — Netherlands.
  > * `no` — Norway.
  > * `np` — Nepal.
  > * `nr` — Nauru.
  > * `nu` — Niue.
  > * `nz` — New Zealand.
  > * `om` — Oman.
  > * `pa` — Panama.
  > * `pe` — Peru.
  > * `pf` — French Polynesia.
  > * `pg` — Papua New Guinea.
  > * `ph` — Philippines.
  > * `pk` — Pakistan.
  > * `pl` — Poland.
  > * `pm` — Saint Pierre and Miquelon.
  > * `pn` — Pitcairn.
  > * `pr` — Puerto Rico.
  > * `ps` — Palestine.
  > * `pt` — Portugal.
  > * `pw` — Palau.
  > * `py` — Paraguay.
  > * `qa` — Qatar.
  > * `re` — Réunion.
  > * `ro` — Romania.
  > * `rs` — Serbia.
  > * `ru` — Russian Federation.
  > * `rw` — Rwanda.
  > * `sa` — Saudi Arabia.
  > * `sb` — Solomon Islands.
  > * `sc` — Seychelles.
  > * `sd` — Sudan.
  > * `se` — Sweden.
  > * `sg` — Singapore.
  > * `sh` — Saint Helena, Ascension and Tristan da Cunha.
  > * `si` — Slovenia.
  > * `sj` — Svalbard and Jan Mayen.
  > * `sk` — Slovakia.
  > * `sl` — Sierra Leone.
  > * `sm` — San Marino.
  > * `sn` — Senegal.
  > * `so` — Somalia.
  > * `sr` — Suriname.
  > * `ss` — South Sudan.
  > * `st` — Sao Tome and Principe.
  > * `sv` — El Salvador.
  > * `sx` — Sint Maarten.
  > * `sy` — Syrian Arab Republic.
  > * `sz` — Eswatini.
  > * `tc` — Turks and Caicos Islands.
  > * `td` — Chad.
  > * `tf` — French Southern Territories.
  > * `tg` — Togo.
  > * `th` — Thailand.
  > * `tj` — Tajikistan.
  > * `tk` — Tokelau.
  > * `tl` — Timor-Leste.
  > * `tm` — Turkmenistan.
  > * `tn` — Tunisia.
  > * `to` — Tonga.
  > * `tr` — Turkey.
  > * `tt` — Trinidad and Tobago.
  > * `tv` — Tuvalu.
  > * `tw` — Taiwan.
  > * `tz` — Tanzania.
  > * `ua` — Ukraine.
  > * `ug` — Uganda.
  > * `um` — United States Minor Outlying Islands.
  > * `us` — United States of America.
  > * `uy` — Uruguay.
  > * `uz` — Uzbekistan.
  > * `va` — Holy See.
  > * `vc` — Saint Vincent and the Grenadines.
  > * `ve` — Venezuela.
  > * `vg` — Virgin Islands (British).
  > * `vi` — Virgin Islands (U.S.).
  > * `vn` — Vietnam.
  > * `vu` — Vanuatu.
  > * `wf` — Wallis and Futuna.
  > * `ws` — Samoa.
  > * `xk` — Kosovo.
  > * `ye` — Yemen.
  > * `yt` — Mayotte.
  > * `za` — South Africa.
  > * `zm` — Zambia.
  > * `zw` — Zimbabwe.


[//]: # (timeout)
- **timeout** *(Float, optional)*

  <p>The maximum amount of time in seconds within which searching for rates will be executed.</p>
  > [!NOTE]
  > * The maximum value is `100`.


[//]: # (guests)
- **guests** *([Object], required)*

  <p>The list of guests in the rooms.</p>
  > [!NOTE]
  > * One list item represents one room.
  > * The maximum number of guests per room is `10`:
  >   * Maximum number of adults per room is `6`.
  >   * Maximum number of children per room is `4`.
  > * The maximum number of rooms per request is `9`.
  > * The multiroom search:
  >   * Each request should have from `2` to `9` rooms.
  >   * A request may contain rooms with different number of guests.
  >   * Once the request is sent, you can’t:
  >     * Change the number of guests or rooms.
  >     * Cancel one of the guests or rooms.
  > 
  >   The ETG API returns rooms suitable for the maximum number of the requested guests.
  <ul>
  <li>
  <p><strong>adults</strong> <em>(Int, required)</em></p>
  <p>The number of adult guests in one room.</p>
  > [!NOTE]
  > * The minimum value is `1`.
  > * The maximum value is `6`.
  </li>
  <li>
  <p><strong>children</strong> <em>([Int], optional)</em></p>
  <p>The age list of the children who will stay in the room.</p>
  > [!NOTE]
  > * The maximum age per child is `17` years.
  > * The maximum number of children in the room is `4`.
  </li>
  </ul>


[//]: # (filter)
- **filter** *([Object], optional)*

  <p>Filter parameters for the search request. Allows you to specify additional conditions to refine the search results. Each field represents a particular filter criterion.</p>
  <ul>
  <li>
  <p><strong>star_rating</strong> <em>([Int], optional)</em></p>
  <p>The hotel rating on a scale from <code>1</code> to <code>5</code>. Has the <code>0</code> value for no available rating.</p>
  <blockquote>
  <p>[!NOTE]
  The list of possible <code>star_rating</code> field values is obtained from the call [Retrieve filter values](/docs/content-api/retrieve-filter-values/#star_rating)
  .</p></blockquote>
  </li>
  <li>
  <p><strong>kind</strong> <em>([String], optional)</em></p>
  <p>The hotel type.</p>
  <blockquote>
  <p>[!NOTE]
  The list of possible <code>kind</code> field values is obtained from the call [Retrieve filter values](/docs/content-api/retrieve-filter-values/#kind)
  .</p></blockquote>
  </li>
  <li>
  <p><strong>meal_type</strong> <em>(String, optional)</em></p>
  <p>Meal type included in the rate. You can specify multiple values to return rates that match any of the provided meal types.</p>
  <blockquote>
  <p>[!NOTE]
  The list of possible <code>meal_type</code> field values is obtained from the call [Retrieve hotel static data](/docs/affiliate-api/static-content/retrieve-hotel-static-data/#meals)
  .</p></blockquote>
  </li>
  <li>
  <p><strong>price_from</strong> <em>(Int, optional)</em></p>
  <p>Minimum rate price. The value must be an integer greater than <code>0</code> and less than the value of <code>price_to</code>.</p>
  <p>Filtering is applied to rate prices in the search currency (<code>show_amount</code>).</p>
  </li>
  <li>
  <p><strong>price_to</strong> <em>(Int, optional)</em></p>
  <p>Maximum rate price. The value must be an integer greater than <code>0</code> and greater than the value of <code>price_from</code>.</p>
  <p>Filtering is applied to rate prices in the search currency (<code>show_amount</code>).</p>
  </li>
  </ul>





## Response



[//]: # (total_hotels)
- **total_hotels** *(Int)*

  <p>The total number of unique hotels.</p>


[//]: # (hotels)
- **hotels** *([Object])*

  <p>The list of hotels and their rates.</p>
  <ul>
  <li>
  <p><strong>id</strong> <em>(String, deprecated)</em></p>
  <p>The unique hotel ID in the legacy string format.</p>
  > [!NOTE]
  > * Either this field or the `hid` field is required.
  </li>
  <li>
  <p><strong>hid</strong> <em>(Int)</em></p>
  <p>The unique hotel ID in the new numeric format.</p>
  > [!NOTE]
  > * Each ID is an integer no longer than 10 digits.
  > * We are gradually migrating all clients to use this format.
  </li>
  <li>
  <p><strong>rates</strong> <em>([Object])</em></p>
  <p>The list of available hotel rates.</p>
  <ul>
  <li>
  <p><strong>allotment</strong> <em>(Int)</em></p>
  <p>The number of rooms available for the rate.</p>
  </li>
  <li>
  <p><strong>amenities_data</strong> <em>([String])</em></p>
  <p>The room amenity list.</p>
  <p>To get all available room amenities and their definitions, use the <code>room_amenities</code> field from the [Retrieve hotel static data](/docs/affiliate-api/static-content/retrieve-hotel-static-data/)
   call.</p>
  </li>
  <li>
  <p><strong>any_residency</strong> <em>(Boolean)</em></p>
  <p>Whether the rate is allowed to be booked by the guest with any kind of residency or not.</p>
  <p>Use it if you don’t collect the guests’ residency.</p>
  </li>
  </ul>
  <ul>
  <li>
  <p><strong>search_hash</strong> <em>(String)</em></p>
  <p>The unique search rate ID used to identify the selected rate.</p>
  > [!NOTE]
  > * Use this value in the `hash` field of the [Prebook rate from search step](/docs/affiliate-api/hotel-search/prebook-rate-from-search-step/) call.
  > * The value lifetime is 38 minutes after you have got the rate from the search results. 
  > * If an outdated or invalid hash is used, an error will be returned.
  </li>
  <li>
  <p><strong>daily_prices</strong> <em>([String])</em></p>
  <p>The list of daily rate prices breakdown in the request currency.</p>
  </li>
  <li>
  <p><strong>deposit</strong> <em>(Object)</em></p>
  <p>The deposit information of the order.</p>
  <p>Has a value if the rate <code>payment_types.type</code> field has the <code>hotel</code> value.</p>
  <ul>
  <li>
  <p><strong>amount</strong> <em>(String)</em></p>
  <p>The deposit amount in the currency specified by the <code>currency_code</code> field.</p>
  </li>
  <li>
  <p><strong>currency_code</strong> <em>(String)</em></p>
  <p>The deposit amount currency code. Is the same as the charged (hotel) currency code.</p>
  </li>
  <li>
  <p><strong>is_refundable</strong> <em>(Boolean)</em></p>
  <p>Whether the deposit is refundable or not.</p>
  </li>
  </ul>
  </li>
  <li>
  <p><strong>match_hash</strong> <em>(String)</em></p>
  <p>The <code>match_hash</code> field of the rate from the call made by the SERP mechanism.</p>
  <p>Use this field if you are:</p>
  <ul>
  <li>Showing rates to the users from the call made by the [SERP mechanism](/docs/glossary/#search-engine-results-page)
  .</li>
  <li>Making a booking from these rates.</li>
  <li>Using this call response as actual data on the rate.</li>
  <li>Using this call response to actualize the exact rate from the calls made by the SERP mechanism.</li>
  </ul>
  <p>Usage of this field can help the ETG collect analytics for SERP-HP matching.</p>
  </li>
  <li>
  <p><strong>meal</strong> <em>(String, deprecated)</em></p>
  <blockquote>
  <p>[!WARNING]
  Use the <code>meal_data</code> field instead.</p></blockquote>
  <p>The meal type.</p>
  <p>If there is no meal type provided by the rate source, the <code>nomeal</code> value is returned.</p>
  <p>To get all available meals and their definitions, use the <code>meals</code> field from the [Retrieve hotel static data](/docs/affiliate-api/static-content/retrieve-hotel-static-data/)
   call.</p>
  </li>
  <li>
  <p><strong>meal_data</strong> <em>(Object)</em></p>
  <p>The rate meals information.</p>
  <ul>
  <li>
  <p><strong>value</strong> <em>(String)</em></p>
  <p>The meal type in the rate.</p>
  <p>To get all available meal types and their definitions, use the <code>meals</code> field from the [Retrieve hotel static data](/docs/affiliate-api/static-content/retrieve-hotel-static-data/)
   call.</p>
  <p>Has the <code>nomeal</code> value if no meal type is provided.</p>
  </li>
  <li>
  <p><strong>has_breakfast</strong> <em>(Boolean)</em></p>
  <p>Whether breakfast is included to the rate or not.</p>
  </li>
  <li>
  <p><strong>no_child_meal</strong> <em>(Boolean)</em></p>
  <p>Whether the children meal is absent in the rate or not.</p>
  </li>
  </ul>
  </li>
  <li>
  <p><strong>no_show</strong> <em>(Object)</em></p>
  <p>The no-show penalty information.</p>
  <ul>
  <li>
  <p><strong>amount</strong> <em>(String)</em></p>
  <p>The no-show penalty amount in the currency specified by the <code>currency_code</code> field.</p>
  </li>
  <li>
  <p><strong>currency_code</strong> <em>(String)</em></p>
  <p>The no-show penalty amount currency code. Is the same as the charged (hotel) currency code.</p>
  </li>
  <li>
  <p><strong>from_time</strong> <em>(String)</em></p>
  <p>The time in the hotel timezone from which the no-show penalty is charged, in <code>HH:MM:SS</code> format (24-hour).</p>
  </li>
  </ul>
  </li>
  <li>
  <p><strong>payment_options</strong> <em>(Object)</em></p>
  <p>The accepted payment options with the specified amount to be charged.</p>
  <p>For a booking, this amount in the requested currency should be paid.</p>
  <ul>
  <li>
  <p><strong>payment_types</strong> <em>(String)</em></p>
  <p>The list with accepted payment options.</p>
  <ul>
  <li>
  <p><strong>amount</strong> <em>(String)</em></p>
  <p>The amount to be charged for the booking in the contract currency code.</p>
  </li>
  <li>
  <p><strong>by</strong> <em>(String)</em></p>
  <p>Whether the booking can be paid by a card or not.</p>
  > [!NOTE]
  > * The possible values:
  >   * `credit_card`
  >   * `null`
  </li>
  <li>
  <p><strong>cancellation_penalties</strong> <em>(String)</em></p>
  <p>The cancellation rules and commission information.</p>
  <ul>
  <li>
  <p><strong>free_cancellation_before</strong> <em>(String)</em></p>
  <p>The date and time when the free cancellation policy expires.</p>
  <p>Has the <code>null</code> value, if there is no free cancellation.</p>
  <p>The timezone is in UTC±0.</p>
  </li>
  <li>
  <p><strong>policies</strong> <em>(String)</em></p>
  <p>The cancellation policies breakdown by periods.</p>
  <ul>
  <li>
  <p><strong>amount_charge</strong> <em>(String)</em></p>
  <p>The cancellation penalty amount in the contract currency.</p>
  </li>
  <li>
  <p><strong>amount_show</strong> <em>(String)</em></p>
  <p>The cancellation penalty amount in the request currency.</p>
  </li>
  <li>
  <p><strong>end_at</strong> <em>(String)</em></p>
  <p>The date and time when this cancellation policy expires.</p>
  <p>Has the <code>null</code> value, if it is in the time from the <code>start_at</code> field value till check-in.</p>
  <p>If the <code>start_at</code> and <code>end_at</code> fields have the <code>null</code> value, this particular cancellation policy:</p>
  <ul>
  <li>Has no time restrictions.</li>
  <li>Is in effect all the time.</li>
  </ul>
  <p>The timezone is in UTC±0.</p>
  </li>
  <li>
  <p><strong>start_at</strong> <em>(String)</em></p>
  <p>The date and time when this cancellation policy takes effect.</p>
  <p>Has the <code>null</code> value, if it is in effect till the <code>end_at</code> field value.</p>
  <p>The timezone is in UTC±0.</p>
  </li>
  </ul>
  </li>
  </ul>
  </li>
  <li>
  <p><strong>currency_code</strong> <em>(String)</em></p>
  <p>The amount currency code. Is the same as the charged (contract) currency code.</p>
  > [!NOTE]
  > If the `payment_types` is `hotel`, the hotel `currency_code` will be used here.
  </li>
  <li>
  <p><strong>is_need_credit_card_data</strong> <em>(Boolean)</em></p>
  <p>Whether the credit card information is needed or not.</p>
  </li>
  <li>
  <p><strong>is_need_cvc</strong> <em>(Boolean)</em></p>
  <p>Whether the CVC is needed or not.</p>
  </li>
  <li>
  <p><strong>type</strong> <em>(String)</em></p>
  <p>The payment type.</p>
  > [!NOTE]
  > * The possible values:
  >   * `now`. Use it to allow the user to pay for the booking via the ETG payment system:
  >     1. Request the [Create booking process](/docs/affiliate-api/booking/create-booking-process/) call and get the card details.
  >     1. Request the [Create credit card token](/docs/affiliate-api/booking/create-credit-card-token/) call with the card details.
  >   * `hotel`. Use it to allow the user to pay for the booking upon check-in at the hotel. The user won’t be charged now.
  >   * `deposit`. Use it to allow you to charge the user bank card for the booking by yourself:
  >     1. You need to keep your ETG deposit sufficient. To increase funds, contact your account manager.
  >     1. The user makes a booking.
  >     1. You charge the user bank card.
  >     1. The ETG writes funds from your deposit by themselves during the reporting period.
  </li>
  <li>
  <p><strong>show_amount</strong> <em>(String)</em></p>
  <p>The rate price in the request currency code of this object <code>show_currency_code</code> field value.</p>
  <p>Isn’t necessarily the sum in the charged or payment currency code.</p>
  </li>
  <li>
  <p><strong>show_currency_code</strong> <em>(String)</em></p>
  <p>The currency code in the request body.</p>
  </li>
  <li>
  <p><strong>tax_data</strong> <em>(Object)</em></p>
  <p>The tax information.</p>
  <ul>
  <li>
  <p><strong>taxes</strong> <em>(Object)</em></p>
  <p>The taxes list.</p>
  <ul>
  <li>
  <p><strong>amount</strong> <em>(String)</em></p>
  <p>The tax amount in the currency specified by the <code>currency_code</code> field.</p>
  </li>
  <li>
  <p><strong>currency_code</strong> <em>(String)</em></p>
  <p>The tax amount currency code in the [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217)
   format.</p>
  <blockquote>
  <p>[!NOTE]</p>
  <ul>
  <li>The length is <code>3</code> characters.</li>
  <li>The possible values:
  <ul>
  <li><code>AED</code>.</li>
  <li><code>AFN</code>.</li>
  <li><code>ALL</code>.</li>
  <li><code>AMD</code>.</li>
  <li><code>ANG</code>.</li>
  <li><code>AOA</code>.</li>
  <li><code>ARS</code>.</li>
  <li><code>AUD</code>.</li>
  <li><code>AWG</code>.</li>
  <li><code>AZN</code>.</li>
  <li><code>BAM</code>.</li>
  <li><code>BBD</code>.</li>
  <li><code>BDT</code>.</li>
  <li><code>BGN</code>.</li>
  <li><code>BHD</code>.</li>
  <li><code>BIF</code>.</li>
  <li><code>BMD</code>.</li>
  <li><code>BND</code>.</li>
  <li><code>BOB</code>.</li>
  <li><code>BOV</code>.</li>
  <li><code>BRL</code>.</li>
  <li><code>BSD</code>.</li>
  <li><code>BTN</code>.</li>
  <li><code>BWP</code>.</li>
  <li><code>BYR</code>.</li>
  <li><code>BYN</code>.</li>
  <li><code>BZD</code>.</li>
  <li><code>CAD</code>.</li>
  <li><code>CDF</code>.</li>
  <li><code>CHE</code>.</li>
  <li><code>CHF</code>.</li>
  <li><code>CHW</code>.</li>
  <li><code>CLF</code>.</li>
  <li><code>CLP</code>.</li>
  <li><code>CNY</code>.</li>
  <li><code>COP</code>.</li>
  <li><code>COU</code>.</li>
  <li><code>CRC</code>.</li>
  <li><code>CUC</code>.</li>
  <li><code>CUP</code>.</li>
  <li><code>CVE</code>.</li>
  <li><code>CZK</code>.</li>
  <li><code>DJF</code>.</li>
  <li><code>DKK</code>.</li>
  <li><code>DOP</code>.</li>
  <li><code>DZD</code>.</li>
  <li><code>EGP</code>.</li>
  <li><code>ERN</code>.</li>
  <li><code>ETB</code>.</li>
  <li><code>EUR</code>.</li>
  <li><code>FJD</code>.</li>
  <li><code>FKP</code>.</li>
  <li><code>GBP</code>.</li>
  <li><code>GEL</code>.</li>
  <li><code>GHS</code>.</li>
  <li><code>GIP</code>.</li>
  <li><code>GMD</code>.</li>
  <li><code>GNF</code>.</li>
  <li><code>GTQ</code>.</li>
  <li><code>GYD</code>.</li>
  <li><code>HKD</code>.</li>
  <li><code>HNL</code>.</li>
  <li><code>HRK</code>.</li>
  <li><code>HTG</code>.</li>
  <li><code>HUF</code>.</li>
  <li><code>IDR</code>.</li>
  <li><code>ILS</code>.</li>
  <li><code>INR</code>.</li>
  <li><code>IQD</code>.</li>
  <li><code>IRR</code>.</li>
  <li><code>ISK</code>.</li>
  <li><code>JMD</code>.</li>
  <li><code>JOD</code>.</li>
  <li><code>JPY</code>.</li>
  <li><code>KES</code>.</li>
  <li><code>KGS</code>.</li>
  <li><code>KHR</code>.</li>
  <li><code>KMF</code>.</li>
  <li><code>KPW</code>.</li>
  <li><code>KRW</code>.</li>
  <li><code>KWD</code>.</li>
  <li><code>KYD</code>.</li>
  <li><code>KZT</code>.</li>
  <li><code>LAK</code>.</li>
  <li><code>LBP</code>.</li>
  <li><code>LKR</code>.</li>
  <li><code>LRD</code>.</li>
  <li><code>LSL</code>.</li>
  <li><code>LTL</code>.</li>
  <li><code>LVL</code>.</li>
  <li><code>LYD</code>.</li>
  <li><code>MAD</code>.</li>
  <li><code>MDL</code>.</li>
  <li><code>MGA</code>.</li>
  <li><code>MKD</code>.</li>
  <li><code>MMK</code>.</li>
  <li><code>MNT</code>.</li>
  <li><code>MOP</code>.</li>
  <li><code>MRO</code>.</li>
  <li><code>MUR</code>.</li>
  <li><code>MVR</code>.</li>
  <li><code>MWK</code>.</li>
  <li><code>MXN</code>.</li>
  <li><code>MXV</code>.</li>
  <li><code>MYR</code>.</li>
  <li><code>MZN</code>.</li>
  <li><code>NAD</code>.</li>
  <li><code>NGN</code>.</li>
  <li><code>NIO</code>.</li>
  <li><code>NOK</code>.</li>
  <li><code>NPR</code>.</li>
  <li><code>NZD</code>.</li>
  <li><code>OMR</code>.</li>
  <li><code>PAB</code>.</li>
  <li><code>PEN</code>.</li>
  <li><code>PGK</code>.</li>
  <li><code>PHP</code>.</li>
  <li><code>PKR</code>.</li>
  <li><code>PLN</code>.</li>
  <li><code>PYG</code>.</li>
  <li><code>QAR</code>.</li>
  <li><code>RON</code>.</li>
  <li><code>RSD</code>.</li>
  <li><code>RUB</code>.</li>
  <li><code>RWF</code>.</li>
  <li><code>SAR</code>.</li>
  <li><code>SBD</code>.</li>
  <li><code>SCR</code>.</li>
  <li><code>SDG</code>.</li>
  <li><code>SEK</code>.</li>
  <li><code>SGD</code>.</li>
  <li><code>SHP</code>.</li>
  <li><code>SLL</code>.</li>
  <li><code>SOS</code>.</li>
  <li><code>SRD</code>.</li>
  <li><code>SSP</code>.</li>
  <li><code>STD</code>.</li>
  <li><code>SVC</code>.</li>
  <li><code>SYP</code>.</li>
  <li><code>SZL</code>.</li>
  <li><code>THB</code>.</li>
  <li><code>TJS</code>.</li>
  <li><code>TMT</code>.</li>
  <li><code>TND</code>.</li>
  <li><code>TOP</code>.</li>
  <li><code>TRY</code>.</li>
  <li><code>TTD</code>.</li>
  <li><code>TWD</code>.</li>
  <li><code>TZS</code>.</li>
  <li><code>UAH</code>.</li>
  <li><code>UGX</code>.</li>
  <li><code>USD</code>.</li>
  <li><code>USN</code>.</li>
  <li><code>USS</code>.</li>
  <li><code>UYI</code>.</li>
  <li><code>UYU</code>.</li>
  <li><code>UZS</code>.</li>
  <li><code>VEF</code>.</li>
  <li><code>VND</code>.</li>
  <li><code>VUV</code>.</li>
  <li><code>WST</code>.</li>
  <li><code>XAF</code>.</li>
  <li><code>XAG</code>.</li>
  <li><code>XAU</code>.</li>
  <li><code>XBA</code>.</li>
  <li><code>XBB</code>.</li>
  <li><code>XBC</code>.</li>
  <li><code>XBD</code>.</li>
  <li><code>XCD</code>.</li>
  <li><code>XDR</code>.</li>
  <li><code>XFU</code>.</li>
  <li><code>XOF</code>.</li>
  <li><code>XPD</code>.</li>
  <li><code>XPF</code>.</li>
  <li><code>XPT</code>.</li>
  <li><code>XSU</code>.</li>
  <li><code>XTS</code>.</li>
  <li><code>XUA</code>.</li>
  <li><code>YER</code>.</li>
  <li><code>ZAR</code>.</li>
  <li><code>ZMW</code>.</li>
  <li><code>ZWL</code>.</li>
  </ul>
  </li>
  </ul></blockquote>
  </li>
  <li>
  <p><strong>included_by_supplier</strong> <em>(Boolean)</em></p>
  <p>Whether the tax is included by the supplier or not.</p>
  <p>When it has:</p>
  <ul>
  <li>The <code>false</code> value, the tax is supposed to be paid at the hotel in this object currency.</li>
  <li>The <code>true</code> value, the tax is included in the price.</li>
  </ul>
  </li>
  <li>
  <p><strong>name</strong> <em>(String)</em></p>
  <p>The ETG tax ID.</p>
  <p>To get all available tax IDs and their definitions, use the <code>taxes</code> field from the [Retrieve hotel static data](/docs/affiliate-api/static-content/retrieve-hotel-static-data/)
   call.</p>
  </li>
  </ul>
  </li>
  </ul>
  </li>
  </ul>
  </li>
  </ul>
  </li>
  <li>
  <p><strong>rg_ext</strong> <em>(Object)</em></p>
  <p>The hotel room type.</p>
  <p>Use this field to get extra data on the room from the hotel static data. For example, room images, descriptions.</p>
  <ul>
  <li>
  <p><strong>balcony</strong> <em>(Int)</em></p>
  <p>Whether there is a balcony or not.</p>
  > [!NOTE]
  > The possible values:
  > * `0` — no balcony.
  > * `1` — a balcony.
  </li>
  <li>
  <p><strong>bathroom</strong> <em>(Int)</em></p>
  <p>The room bathroom information.</p>
  > [!NOTE]
  > The possible values:
  > * `0` — undefined.
  > * `1` — a shared bathroom.
  > * `2` — a private bathroom.
  > * `3` — an external private bathroom.
  </li>
  <li>
  <p><strong>bedding</strong> <em>(Int)</em></p>
  <p>The room bedding information.</p>
  > [!NOTE]
  > The possible values:
  > * `0` — undefined.
  > * `1` — a bunk bed.
  > * `2` — a single bed.
  > * `3` — a double bed.
  > * `4` — a twin bed.
  > * `7` — multiple beds.
  </li>
  <li>
  <p><strong>bedrooms</strong> <em>(Int)</em></p>
  <p>The bedroom number.</p>
  > [!NOTE]
  > The possible values:
  > * `0` — undefined.
  > * `1` — 1 bedroom.
  > * `2` — 2 bedrooms.
  > * `3` — 3 bedrooms.
  > * `4` — 4 bedrooms.
  > * `5` — 5 bedrooms.
  > * `6` — 6 bedrooms.
  </li>
  <li>
  <p><strong>capacity</strong> <em>(Int)</em></p>
  <p>The maximum number of main bed places without additional charges and excluding extra beds, cots, etc.</p>
  > [!NOTE]
  > The possible values:
  > * `0` — undefined.
  > * `1` — single.
  > * `2` — double.
  > * `3` — triple.
  > * `4` — quadruple.
  > * `5` — quintuple.
  > * `6` — sextuplet.
  </li>
  <li>
  <p><strong>class</strong> <em>(Int)</em></p>
  <p>The room class information.</p>
  > [!NOTE]
  > The possible values:
  > * `0` — run of house.
  > * `1` — dorm.
  > * `2` — capsule.
  > * `3` — room.
  > * `4` — junior suite.
  > * `5` — suite.
  > * `6` — apartment.
  > * `7` — studio.
  > * `8` — villa.
  > * `9` — cottage.
  > * `17` — bungalow.
  > * `18` — chalet.
  > * `19` — camping.
  > * `20` — tent.
  </li>
  <li>
  <p><strong>club</strong> <em>(Int)</em></p>
  <p>Whether it is a club room or not.</p>
  > [!NOTE]
  > The possible values:
  > * `0` — not a club room.
  > * `1` — a club room.
  </li>
  <li>
  <p><strong>family</strong> <em>(Int)</em></p>
  <p>Whether it is a family room or not.</p>
  > [!NOTE]
  > The possible values:
  > * `0` — not a family room.
  > * `1` — a family room.
  </li>
  <li>
  <p><strong>floor</strong> <em>(Int)</em></p>
  <p>The room floor Information.</p>
  > [!NOTE]
  > The possible values:
  > * `0` — undefined.
  > * `1` — a penthouse floor.
  > * `2` — a duplex floor.
  > * `3` — a basement floor.
  > * `4` — an attic floor.
  </li>
  <li>
  <p><strong>quality</strong> <em>(Int)</em></p>
  <p>The room quality information.</p>
  > [!NOTE]
  > The possible values:
  > * `0` — undefined.
  > * `1` — economy.
  > * `2` — standard.
  > * `3` — comfort.
  > * `4` — business.
  > * `5` — superior.
  > * `6` — deluxe.
  > * `7` — premier.
  > * `8` — executive.
  > * `9` — presidential.
  > * `17` — premium.
  > * `18` — classic.
  > * `19` — ambassador.
  > * `20` — grand.
  > * `21` — luxury.
  > * `22` — platinum.
  > * `23` — prestige.
  > * `24` — privilege.
  > * `25` — royal.
  </li>
  <li>
  <p><strong>sex</strong> <em>(Int)</em></p>
  <p>The room gender restrictions.</p>
  > [!NOTE]
  > The possible values:
  > * `0` — undefined.
  > * `1` — male.
  > * `2` — female.
  > * `3` — mixed.
  </li>
  <li>
  <p><strong>view</strong> <em>(Int)</em></p>
  <p>The room view information.</p>
  > [!NOTE]
  > The possible values:
  > * `0` — undefined.
  > * `1` — bay view.
  > * `2` — bosphorus view.
  > * `3` — burj-khalifa view.
  > * `4` — canal view.
  > * `5` — city view.
  > * `6` — courtyard view.
  > * `7` — dubai-marina view.
  > * `8` — garden view.
  > * `9` — golf view.
  > * `17` — harbour view.
  > * `18` — inland view.
  > * `19` — kremlin view.
  > * `20` — lake view.
  > * `21` — land view.
  > * `22` — mountain view.
  > * `23` — ocean view.
  > * `24` — panoramic view.
  > * `25` — park view.
  > * `26` — partial-ocean view.
  > * `27` — partial-sea view.
  > * `28` — partial view.
  > * `29` — pool view.
  > * `30` — river view.
  > * `31` — sea view.
  > * `32` — sheikh-zayed view.
  > * `33` — street view.
  > * `34` — sunrise view.
  > * `35` — sunset view.
  > * `36` — water view.
  > * `37` — with view.
  > * `38` — beachfront.
  > * `39` — ocean front.
  > * `40` — sea front.
  </li>
  </ul>
  </li>
  <li>
  <p><strong>room_data_trans</strong> <em>(Object)</em></p>
  <p>The room information in the request language.</p>
  <ul>
  <li>
  <p><strong>bathroom</strong> <em>(String)</em></p>
  <p>The room bathroom information.</p>
  <p>Has the <code>null</code> value, if it is a private bathroom.</p>
  </li>
  <li>
  <p><strong>bedding_type</strong> <em>(String)</em></p>
  <p>The room bedding information.</p>
  </li>
  <li>
  <p><strong>main_name</strong> <em>(String)</em></p>
  <p>The room name.</p>
  </li>
  <li>
  <p><strong>main_room_type</strong> <em>(String)</em></p>
  <p>The room type.</p>
  </li>
  <li>
  <p><strong>misc_room_type</strong> <em>(String)</em></p>
  <p>The room additional information.</p>
  </li>
  <li>
  <p><strong>beds</strong> <em>(Object)</em></p>
  <p>An array listing the types and quantities of beds available in the room.</p>
  > [!NOTE]
  > This field and its nested fields are **not available in the Sandbox environment**.
  <ul>
  <li>
  <p><strong>bed</strong> <em>(String)</em></p>
  <p>Type of bed.</p>
  </li>
  <li>
  <p><strong>count</strong> <em>(String)</em></p>
  <p>Quantity of this bed type.</p>
  </li>
  </ul>
  </li>
  </ul>
  </li>
  <li>
  <p><strong>legal_info</strong> <em>(Object)</em></p>
  <p>The hotel and service provider legal information.</p>
  > [!NOTE]
  > The information provided depends on the supplier of the specific rate.
  <p>Has the value different from <code>null</code> for only countries where it is mandatory to have this information.</p>
  <p>Has the <code>null</code> value for the calls made by the [SERP mechanism](/docs/glossary/#search-engine-results-page)
  .</p>
  <ul>
  <li>
  <p><strong>hotel</strong> <em>(Object)</em></p>
  <p>The hotel legal information.</p>
  <ul>
  <li>
  <p><strong>name</strong> <em>(String)</em></p>
  <p>The hotel legal name.</p>
  </li>
  <li>
  <p><strong>address</strong> <em>(String)</em></p>
  <p>The hotel legal address.</p>
  </li>
  <li>
  <p><strong>taxpayer_number</strong> <em>(String)</em></p>
  <p>The Taxpayer Personal Identification Number (INN) of the hotel.</p>
  > [!NOTE]
  > * The length is `10` characters.
  </li>
  <li>
  <p><strong>state_registration_number</strong> <em>(String)</em></p>
  <p>The State Registration Number for Companies (OGRN) of the hotel.</p>
  > [!NOTE]
  > * The length is `13` characters.
  </li>
  <li>
  <p><strong>work_time</strong> <em>(String)</em></p>
  <p>The hotel legal address working hours.</p>
  </li>
  </ul>
  </li>
  <li>
  <p><strong>provider</strong> <em>(Object)</em></p>
  <p>The service provider legal information.</p>
  <ul>
  <li>
  <p><strong>name</strong> <em>(String)</em></p>
  <p>The service provider legal name.</p>
  </li>
  <li>
  <p><strong>address</strong> <em>(String)</em></p>
  <p>The service provider legal address.</p>
  </li>
  <li>
  <p><strong>taxpayer_number</strong> <em>(String)</em></p>
  <p>The Taxpayer Personal Identification Number (INN) of the service provider.</p>
  > [!NOTE]
  > * The length is `10` characters.
  </li>
  <li>
  <p><strong>state_registration_number</strong> <em>(String)</em></p>
  <p>The State Registration Number for Companies (OGRN) of the service provider.</p>
  > [!NOTE]
  > * The length is `13` characters.
  </li>
  </ul>
  </li>
  </ul>
  </li>
  <li>
  <p><strong>room_name</strong> <em>(String)</em></p>
  <p>The room name in the request language.</p>
  </li>
  <li>
  <p><strong>room_name_info</strong> <em>(Object)</em></p>
  <p>The optional object that may help to resolve certain matching problems. To get access to the object, contact your account manager.</p>
  </li>
  <li>
  <p><strong>serp_filters</strong> <em>([String], deprecated)</em></p>
  <p>The list of hotel amenities. Accepts a list of limited hotel amenities of amenity values. This limit is not stable and may vary between different rates within the same hotel — some values may be applicable for one rate but not considered for another.</p>
  <blockquote>
  <p>[!NOTE]
  Supported values:</p>
  <ul>
  <li>has_airport_transfer.</li>
  <li>has_parking.</li>
  <li>air-conditioning.</li>
  <li>has_internet.</li>
  <li>has_breakfast.</li>
  </ul></blockquote>
  </li>
  <li>
  <p><strong>is_package</strong> <em>(Boolean)</em></p>
  <p>Rates marked with <code>is_package = true</code> should be sold as a part of package, and the price for the hotel should not be shown separately.</p>
  </li>
  </ul>
  </li>
  </ul>





## Response example

```json
{
  "data": {
    "hotels": [
      {
        "id": "w_dubai_mina_seyahi",
        "hid": 10004873,
        "rates": [
          {
            "match_hash": "m-7ddd263c-a97b-5d02-90a8-99c80d51fd89",
            "search_hash": null,
            "daily_prices": [
              "714.00",
              "714.00",
              "714.00"
            ],
            "meal": "all-inclusive",
            "meal_data": {
              "value": "all-inclusive",
              "has_breakfast": true,
              "no_child_meal": false
            },
            "payment_options": {
              "payment_types": [
                {
                  "amount": "192821.00",
                  "show_amount": "2142.00",
                  "currency_code": "EUR",
                  "show_currency_code": "EUR",
                  "by": "credit_card",
                  "is_need_credit_card_data": true,
                  "is_need_cvc": true,
                  "type": "now",
                  "tax_data": {
                    "taxes": [
                      {
                        "name": "city_tax",
                        "included_by_supplier": false,
                        "amount": "60.00",
                        "currency_code": "AED"
                      },
                      {
                        "name": "occupancy_tax",
                        "included_by_supplier": true,
                        "amount": "121.88",
                        "currency_code": "EUR"
                      },
                      {
                        "name": "service_fee",
                        "included_by_supplier": true,
                        "amount": "191.96",
                        "currency_code": "EUR"
                      },
                      {
                        "name": "vat",
                        "included_by_supplier": true,
                        "amount": "87.06",
                        "currency_code": "EUR"
                      }
                    ]
                  },
                  "cancellation_penalties": {
                    "policies": [
                      {
                        "start_at": null,
                        "end_at": null,
                        "amount_charge": "192821.00",
                        "amount_show": "2142.00"
                      }
                    ],
                    "free_cancellation_before": null
                  }
                }
              ]
            },
            "rg_ext": {
              "class": 3,
              "quality": 6,
              "sex": 0,
              "bathroom": 2,
              "bedding": 3,
              "family": 1,
              "capacity": 2,
              "club": 0,
              "bedrooms": 0,
              "balcony": 0,
              "view": 0,
              "floor": 0
            },
            "room_name": "Deluxe Corner Double room (full double bed) (bed type is subject to availability, corner room)",
            "room_name_info": null,
            "serp_filters": [
              "has_bathroom"
            ],
            "allotment": 1,
            "amenities_data": [
              "not-guaranteed",
              "non-smoking"
            ],
            "any_residency": false,
            "deposit": null,
            "no_show": null,
            "room_data_trans": {
              "main_room_type": "Deluxe Corner Double room",
              "main_name": "Deluxe Corner Double room",
              "bathroom": null,
              "bedding_type": "full double bed",
              "misc_room_type": "bed type is subject to availability, corner room",
              "beds": [
                {
                  "bed": "double",
                  "count": 1
                }
              ]
            },
            "legal_info": null,
            "is_package": false
          }
        ]
      },
      {
        "id": "le_meridien_mina_seyahi_beach_resort_marina",
        "hid": 7548288,
        "rates": [
          {
            "match_hash": "m-5daa2409-4b9f-5420-932c-227cee048a4c",
            "search_hash": null,
            "daily_prices": [
              "821.33",
              "821.33",
              "821.33"
            ],
            "meal": "all-inclusive",
            "meal_data": {
              "value": "all-inclusive",
              "has_breakfast": true,
              "no_child_meal": false
            },
            "payment_options": {
              "payment_types": [
                {
                  "amount": "221741.00",
                  "show_amount": "2464.00",
                  "currency_code": "EUR",
                  "show_currency_code": "EUR",
                  "by": "credit_card",
                  "is_need_credit_card_data": true,
                  "is_need_cvc": true,
                  "type": "now",
                  "tax_data": {
                    "taxes": [
                      {
                        "name": "city_tax",
                        "included_by_supplier": false,
                        "amount": "60.00",
                        "currency_code": "AED"
                      },
                      {
                        "name": "occupancy_tax",
                        "included_by_supplier": true,
                        "amount": "140.20",
                        "currency_code": "EUR"
                      },
                      {
                        "name": "service_fee",
                        "included_by_supplier": true,
                        "amount": "220.81",
                        "currency_code": "EUR"
                      },
                      {
                        "name": "vat",
                        "included_by_supplier": true,
                        "amount": "100.14",
                        "currency_code": "EUR"
                      }
                    ]
                  },
                  "cancellation_penalties": {
                    "policies": [
                      {
                        "start_at": null,
                        "end_at": "2026-10-07T20:00:00",
                        "amount_charge": "0.00",
                        "amount_show": "0.00"
                      },
                      {
                        "start_at": "2026-10-07T20:00:00",
                        "end_at": null,
                        "amount_charge": "221741.00",
                        "amount_show": "2464.00"
                      }
                    ],
                    "free_cancellation_before": "2026-10-07T20:00:00"
                  }
                }
              ]
            },
            "rg_ext": {
              "class": 3,
              "quality": 6,
              "sex": 0,
              "bathroom": 2,
              "bedding": 3,
              "family": 0,
              "capacity": 2,
              "club": 0,
              "bedrooms": 0,
              "balcony": 0,
              "view": 37,
              "floor": 0
            },
            "room_name": "Deluxe Double room Skyline View (full double bed) (bed type is subject to availability)",
            "room_name_info": null,
            "serp_filters": [
              "has_bathroom"
            ],
            "allotment": 1,
            "amenities_data": [
              "non-smoking",
              "not-guaranteed"
            ],
            "any_residency": false,
            "deposit": null,
            "no_show": null,
            "room_data_trans": {
              "main_room_type": "Deluxe Double room Skyline View",
              "main_name": "Deluxe Double room Skyline View",
              "bathroom": null,
              "bedding_type": "full double bed",
              "misc_room_type": "bed type is subject to availability",
              "beds": [
                {
                  "bed": "double",
                  "count": 1
                }
              ]
            },
            "legal_info": null,
            "is_package": false
          }
        ]
      }
    ],
    "total_hotels": 2
  },
  "debug": {
    "api_endpoint": {
      "endpoint": "api/b2b/v3/search/serp/geo",
      "is_active": true,
      "is_limited": true,
      "remaining": 9,
      "requests_number": 10,
      "reset": "2026-04-16T20:34:00",
      "seconds_number": 60
    },
    "request": {
      "checkin": "2026-10-22",
      "checkout": "2026-10-25",
      "residency": "gb",
      "language": "en",
      "guests": [
        {
          "adults": 2,
          "children": []
        }
      ],
      "latitude": 25.091604,
      "longitude": 55.146603,
      "radius": 150,
      "currency": "EUR",
      "filter": {
        "star_rating": [],
        "kind": [],
        "meal_type": [
          "all-inclusive",
          "super-all-inclusive",
          "soft-all-inclusive",
          "ultra-all-inclusive"
        ]
      }
    },
    "method": "POST",
    "real_ip": "104.30.161.77",
    "request_id": "5f7e6e7a86a6bb14635da59965ada078",
    "key_id": 1234,
    "api_key_id": 1234,
    "utcnow": "2026-04-16T20:33:55.480438"
  },
  "status": "ok",
  "error": null
}
```

## Errors

### Invalid JSON

The `error` field has the `invalid_json_format` value. The `debug.validation_error` field has the value specified in the headers below.

#### `body_must_be_json`

The passed JSON isn’t valid.

### Invalid parameters or request body

For these, the `error` field has the `invalid_params` value. The `debug.validation_error` field has the value specified in the headers below.

#### `date should be ISO8601 (YYYY-MM-DD)`
The passed `checkin` and `checkout` fields have an invalid format. The valid format is `YYYY-MM-DD`.

#### `checkin date must be current or future date`
The `checkin` field value is in the past. Provide the current or future date.

#### `checkin date must be less than or equal to 730 days since today`
The `checkin` field value should be no later than 730 days from the day of the request.

#### `checkout date must be less than or equal to %d days since today`
The `checkout` field value should be no later than 30 days from the `checkin` field value.

#### `checkout date must be after checkin date`
The `checkout` field value should be later than the `checkin` field value.

#### `checkout cannot be later than X days since checkin`
The `checkout` field value should be no later than 30 days from the `checkin` field value.

#### `residency is required`
The `residency` field is required.

#### `residency must be one of X`
The `residency` field has an invalid format. The valid format is in the [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).

#### `unknown currency`
The currency field has an invalid format. The valid format is in the [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217).

#### `early checkin date must be equal checkin date`
The `upsells.early_checkin.time` field value should be the same as the `checkin` field value.

#### `late checkout date must be equal checkout date`
The `upsells.late_checkout.time` field value should be the same as the `checkout` field value.

#### `early checkin must be in datetime format`
The `checkin` field has an invalid format. The valid formats are:

* `2006-01-02`.
* `2006-01-02 15:04`.
* `2006-01-02T15:04`.
* `2006-01-02 15:04:05`.
* `2006-01-02T15:04:05`.
* `2006-01-02T15:04:05-07:00`.
* `2006-01-02T15:04:05Z07:00`.

#### `late checkout must be in datetime format`
The `checkout` field has an invalid format. The valid formats are:

* `2006-01-02`.
* `2006-01-02 15:04`.
* `2006-01-02T15:04`.
* `2006-01-02 15:04:05`.
* `2006-01-02T15:04:05`.
* `2006-01-02T15:04:05-07:00`.
* `2006-01-02T15:04:05Z07:00`.

#### `guests number must be positive`
The `guests` field value must be positive.

#### `too many rooms, value should be no more than X`
The item number of the `guests` field must be between `1` and `9`.

#### `adults number per room must be in range 1 to X inc`
The `adults` field value must be between `1` and `6`.

#### `children number per room must be not greater then X`
The `children` field value must be between `1` and `4`.

#### `child's age must be in range 0 to X incl`
The `age` field value must be between `0` and `17`.

#### `radius is required`

The `radius` field is required.

#### `radius must be in range 1 to X inc`

The `radius` field value is invalid. The valid value is between `1` and `70000`.

#### `longitude is required`

The `longitude` field is required.

#### `latitude is required`

The `latitude` field is required.

### Internal search error

The `error` field has the `core_search_error` value. The `debug.validation_error` field has the `null` value.

The error occurs if the ETG has:

* An internal search error.
* A geo search error.

The number of recurrent identical requests must be limited.
