# Retrieve hotels review by IDs

URL: https://docs.emergingtravel.com/docs/content-api/retrieve-hotels-review-by-ids/

Tags: content-api

---



**Sandbox**

```
https://api-sandbox.worldota.net/api/content/v1/hotel_reviews_by_ids
```

**Production**

```
https://api.worldota.net/api/content/v1/hotel_reviews_by_ids/
```




In this call can get reviews on the requested hotel IDs.

> [!NOTE]
> * Use this call instead of call [Retrieve hotel reviews’ dump](/docs/affiliate-api/static-content/retrieve-incremental-hotel-reviews-dump/).
> * Use this call after [Retrieve hotels content by IDs](/docs/content-api/retrieve-hotels-content-by-ids/).
> * Call is limited to 1200 requests per minute (QPM).



## 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>




## Request example


**Sandbox**

```shell
curl --user '<KEY_ID>:<API_KEY>' 'https://api-sandbox.worldota.net/api/content/v1/hotel_reviews_by_ids/' \
--header 'Content-Type: application/json' \
--data '{
    "hids": [6291688,
            6296387,
            6296716,
            6303545,
            6303742,
            6304320,
            6304603,
            6304886,
            6304887,
            6314064,
            6314532,
            6315546,
            6317902,
            6333750,
            6334068,
            6344525,
            6352359,
            6353673,
            6374316],
    "language": "en"
}'
```

**Production**

```shell
curl --user '<KEY_ID>:<API_KEY>' 'https://api.worldota.net/api/content/v1/hotel_reviews_by_ids/' \
--header 'Content-Type: application/json' \
--data '{
    "hids": [6291688,
            6296387,
            6296716,
            6303545,
            6303742,
            6304320,
            6304603,
            6304886,
            6304887,
            6314064,
            6314532,
            6315546,
            6317902,
            6333750,
            6334068,
            6344525,
            6352359,
            6353673,
            6374316],
    "language": "en"
}'
```




## Request body



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

  <p>A list of unique hotel IDs in the new numeric format.</p>
  <blockquote>
  <p>[!NOTE]</p>
  <ul>
  <li>Each ID is an integer no longer than 10 digits.</li>
  <li>We are gradually migrating all clients to use this format.</li>
  <li>Use the <code>hids</code> field from the call [Retrieve hotel IDs by filter](/docs/content-api/retrieve-hotel-ids-by-filter/#hids)
  .</li>
  </ul></blockquote>


[//]: # (ids)
- **ids** *([String], deprecated)*

  <p>A list of unique hotel IDs in the legacy string format.</p>


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

  <p>The language.</p>
  <blockquote>
  <p>[!NOTE]</p>
  <ul>
  <li>Use the <code>value</code> field from the call [Retrieve filter values](/docs/content-api/retrieve-filter-values/#language)
  .</li>
  </ul></blockquote>





## Response



[//]: # (id)
- **id** *(String, deprecated)*

  <p>The unique hotel ID in the legacy string format.</p>


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

  <p>The unique hotel IDs in the new numeric format.</p>


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

  <p>A list of user reviews about the hotel.</p>
  <ul>
  <li>
  <p><strong>id</strong> <em>(int, deprecated)</em></p>
  <p>Unique review identifier.</p>
  </li>
  <li>
  <p><strong>review_plus</strong> <em>(String)</em></p>
  <p>Positive comment, highlighting what the guest liked during their stay.</p>
  </li>
  <li>
  <p><strong>review_minus</strong> <em>(String)</em></p>
  <p>Negative comment, describing what the guest disliked during their stay.</p>
  </li>
  <li>
  <p><strong>created</strong> <em>(String)</em></p>
  <p>Date and time when the review was submitted.</p>
  </li>
  <li>
  <p><strong>author</strong> <em>(String)</em></p>
  <p>Name of the guest who left the review.</p>
  </li>
  <li>
  <p><strong>adults</strong> <em>(Int)</em></p>
  <p>Number of adults staying in the room for the reviewed booking.</p>
  </li>
  <li>
  <p><strong>children</strong> <em>(Int)</em></p>
  <p>Number of children staying in the room for the reviewed booking.</p>
  </li>
  <li>
  <p><strong>room_name</strong> <em>(String)</em></p>
  <p>The name and description of the room that was booked.</p>
  </li>
  <li>
  <p><strong>nights</strong> <em>(Int)</em></p>
  <p>Number of nights the guest stayed.</p>
  </li>
  <li>
  <p><strong>images</strong> <em>([String])</em></p>
  <p>The list of the URLs for the hotel images.</p>
  > [!WARNING]
  > Please use the `images_ext` field instead of this one.
  <blockquote>
  <p>[!NOTE]</p>
  <ul>
  <li>The recommended method for displaying these images in our UI (e.g., direct linking to the provided URLs).</li>
  <li>We do not block users arbitrarily; restrictions are only applied in case of suspected DDoS attacks.</li>
  <li>Each URL has the <code>{size}</code> placeholder. Meaning, the size of the image you can get.
  <ul>
  <li>The possible size meanings:
  <ul>
  <li><code>crop</code> — the image is fit by the width and is cut equally from the bottom and top till the middle part of the height.</li>
  <li><code>fit-h</code> — the image is fit into the rectangle by the height.</li>
  <li><code>fit-w</code> — the image is scaled so that its width fits the given value, and the height is adjusted proportionally.</li>
  <li><code>fit-w-min</code> — the image is scaled so that its width is at least the specified value (if it&rsquo;s smaller, it is enlarged; if it&rsquo;s larger, it is reduced), while the height is adjusted proportionally. No cropping occurs.</li>
  <li><code>fit</code> — the image is fit into the rectangle by the size in question.</li>
  </ul>
  </li>
  <li>The possible values:
  <ul>
  <li><code>1024x768</code> — fit.</li>
  <li><code>x220</code> — fit-h.</li>
  <li><code>x500</code> — fit-h.</li>
  <li><code>x768</code> — fit-h.</li>
  <li><code>40x40</code> — crop.</li>
  <li><code>80x80</code> — crop.</li>
  <li><code>100x100</code> — crop.</li>
  <li><code>120x120</code> — crop.</li>
  <li><code>241x241</code> — crop.</li>
  <li><code>240x240</code> — crop.</li>
  <li><code>154x105</code> — crop.</li>
  <li><code>170x154</code> — crop.</li>
  <li><code>640x350</code> — crop.</li>
  <li><code>320x175</code> — crop.</li>
  <li><code>200x200</code> — crop.</li>
  <li><code>1080x522</code> — crop.</li>
  <li><code>750x400</code> — crop.</li>
  <li><code>640x400</code> — crop.</li>
  <li><code>120x90</code> — crop.</li>
  <li><code>90x75</code> — crop.</li>
  <li><code>x300</code> — fit-h.</li>
  <li><code>x600</code> — fit-h.</li>
  <li><code>100x130</code> — crop.</li>
  <li><code>x296</code> — fit-h.</li>
  <li><code>100x50</code> — crop.</li>
  <li><code>x100</code> — fit-h.</li>
  <li><code>100x</code> — fit-w.</li>
  <li><code>640x230</code> — crop.</li>
  <li><code>370x</code> — fit-w.</li>
  <li><code>645x255</code> — crop.</li>
  <li><code>450x161</code> — crop.</li>
  <li><code>x102</code> — fit-h.</li>
  <li><code>225x60</code> — fit.</li>
  <li><code>828x560</code> — fit.</li>
  <li><code>640x640</code> — crop.</li>
  <li><code>196x196</code> — crop.</li>
  <li><code>1298x</code> — fit-w.</li>
  <li><code>295x220</code> — crop.</li>
  <li><code>2048x2048</code> — crop.</li>
  <li><code>304x</code> — fit-w.</li>
  <li><code>304x140</code> — crop.</li>
  <li><code>x700</code> — fit-h.</li>
  <li><code>112x112</code> — crop.</li>
  <li><code>695x</code> — fit-w-min.</li>
  <li><code>1300x620</code> — fit-w.</li>
  <li><code>2600x1240</code> — fit-w.</li>
  <li><code>600x313</code> — fit-w.</li>
  <li><code>1200x616</code> — fit-w.</li>
  <li><code>326x220</code> — fit-w.</li>
  <li><code>768x1024</code> — fit-h.</li>
  <li><code>900x900</code> — crop.</li>
  <li><code>1920x1080</code> — fit.</li>
  <li><code>1080x1920</code> — fit-h.</li>
  <li><code>x1080</code> — fit-h.</li>
  <li><code>x1920</code> — fit-h.</li>
  <li><code>1920x</code> — fit-w.</li>
  <li><code>1080x</code> — fit-w.</li>
  </ul>
  </li>
  </ul>
  </li>
  </ul></blockquote>
  </li>
  </ul>
  <ul>
  <li>
  <p><strong>detailed_review</strong> <em>([Object])</em></p>
  <p>Detailed ratings for different aspects of the stay (see subfields below).</p>
  <ul>
  <li>
  <p><strong>cleanness</strong> <em>(Int)</em></p>
  <p>Guest rating of the cleanliness.</p>
  <blockquote>
  <p>[!NOTE]</p>
  <ul>
  <li>The minimum value is <code>0</code>.</li>
  <li>The maximum value is <code>10</code>.</li>
  </ul></blockquote>
  </li>
  <li>
  <p><strong>location</strong> <em>(Int)</em></p>
  <p>Guest rating of the location.</p>
  <blockquote>
  <p>[!NOTE]</p>
  <ul>
  <li>The minimum value is <code>0</code>.</li>
  <li>The maximum value is <code>10</code>.</li>
  </ul></blockquote>
  </li>
  <li>
  <p><strong>price</strong> <em>(Int)</em></p>
  <p>Value for money rating.</p>
  <blockquote>
  <p>[!NOTE]</p>
  <ul>
  <li>The minimum value is <code>0</code>.</li>
  <li>The maximum value is <code>10</code>.</li>
  </ul></blockquote>
  </li>
  <li>
  <p><strong>services</strong> <em>(Int)</em></p>
  <p>Rating of the provided services.</p>
  <blockquote>
  <p>[!NOTE]</p>
  <ul>
  <li>The minimum value is <code>0</code>.</li>
  <li>The maximum value is <code>10</code>.</li>
  </ul></blockquote>
  </li>
  <li>
  <p><strong>room</strong> <em>(Int)</em></p>
  <p>Rating of the room itself.</p>
  <blockquote>
  <p>[!NOTE]</p>
  <ul>
  <li>The minimum value is <code>0</code>.</li>
  <li>The maximum value is <code>10</code>.</li>
  </ul></blockquote>
  </li>
  <li>
  <p><strong>meal</strong> <em>(Int)</em></p>
  <p>Rating of the meals.</p>
  <blockquote>
  <p>[!NOTE]</p>
  <ul>
  <li>The minimum value is <code>0</code>.</li>
  <li>The maximum value is <code>10</code>.</li>
  </ul></blockquote>
  </li>
  <li>
  <p><strong>wifi</strong> <em>(String)</em></p>
  <p>Guest’s feedback on the Wi-Fi; may be <code>unspecified</code> if not reviewed.</p>
  </li>
  <li>
  <p><strong>hygiene</strong> <em>(String)</em></p>
  <p>Guest’s feedback on hygiene; may be <code>unspecified</code> if not reviewed.</p>
  </li>
  </ul>
  </li>
  <li>
  <p><strong>traveller_type</strong> <em>(String)</em></p>
  <p>Type of traveller (e.g., <code>solo</code>, <code>couple</code>, <code>family</code>, or <code>unspecified</code> if not provided).</p>
  </li>
  <li>
  <p><strong>trip_type</strong> <em>(String)</em></p>
  <p>Type of trip, such as <code>leisure</code> or <code>business</code>.</p>
  </li>
  <li>
  <p><strong>rating</strong> <em>(Int)</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>
  > [!NOTE]
  > * The minimum value is `0`.
  > * The maximum value is `5`.
  </li>
  </ul>





## Response example

```json
{
  "data": [
    {
      "id": "black_shrimps_house",
      "hid": 6314532,
      "reviews": []
    },
    {
      "id": "jaz_fanara_residence_2",
      "hid": 6374316,
      "reviews": []
    },
    {
      "id": "aladdin_beach_resort_",
      "hid": 6353673,
      "reviews": []
    },
    {
      "id": "le_mirage_new_tower",
      "hid": 6296716,
      "reviews": []
    },
    {
      "id": "les_appartements_de_la_concorde",
      "hid": 6317902,
      "reviews": []
    },
    {
      "id": "chalets_in_porto_sokhna_resort_units__20117__12018__20411",
      "hid": 6296387,
      "reviews": []
    },
    {
      "id": "fleur_du_nil_2",
      "hid": 6303742,
      "reviews": []
    },
    {
      "id": "dessole_royal_rojana_resort_",
      "hid": 6333750,
      "reviews": []
    },
    {
      "id": "dessole_pyramisa_beach_resort_y_sahl_hasheesh_",
      "hid": 6304886,
      "reviews": []
    },
    {
      "id": "bedouin_house",
      "hid": 6303545,
      "reviews": []
    },
    {
      "id": "dahab_sea_view_apartment",
      "hid": 6304320,
      "reviews": []
    },
    {
      "id": "dahab_beach_homes",
      "hid": 6314064,
      "reviews": []
    },
    {
      "id": "senmut_luxor_hotel",
      "hid": 6334068,
      "reviews": []
    },
    {
      "id": "aliyah_lodge",
      "hid": 6304887,
      "reviews": []
    },
    {
      "id": "lagoon_hotel_and_spa_alexandria",
      "hid": 6291688,
      "reviews": []
    },
    {
      "id": "dreamers_hotel",
      "hid": 6344525,
      "reviews": []
    },
    {
      "id": "amenophis_hotel",
      "hid": 6352359,
      "reviews": []
    },
    {
      "id": "el_gouna_hill_villa",
      "hid": 6304603,
      "reviews": []
    }
  ],
  "debug": {
    "api_endpoint": {
      "endpoint": "api/content/v1/hotel_reviews_by_ids",
      "is_active": true,
      "is_limited": true,
      "remaining": 9,
      "requests_number": 10,
      "reset": "2026-01-30T10:13:00",
      "seconds_number": 60
    },
    "request": {
      "hids": [
        6291688,
        6296387,
        6296716,
        6303545,
        6303742,
        6304320,
        6304603,
        6304886,
        6304887,
        6314064,
        6314532,
        6315546,
        6317902,
        6333750,
        6334068,
        6344525,
        6352359,
        6353673,
        6374316
      ],
      "language": "en"
    },
    "method": "POST",
    "real_ip": "104.30.161.77",
    "request_id": "19600da4bbe2928a60c854ab27fe5e70",
    "key_id": 1234,
    "api_key_id": 1234,
    "utcnow": "2026-01-30T10:12:38.305275"
  },
  "status": "ok",
  "error": null
}
```

## Errors

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

### `invalid_params`

One or more input parameters are incorrect.  For more details, see the response field debug [validation_error](/docs/fundamentals/errors/#400).

### `no_hotel_reviews`

An internal search error. Has `500` status code.
