# Ostrovok Reviews Scraper: Отзывы Островок (`getascraper/ostrovok-reviews-scraper`) Actor

Scrape hotel guest reviews from Ostrovok (Островок) with the full review text, star rating, category scores, traveller type, guest photos, and the hotel's reply. Filter by rating or traveller type and export to JSON, CSV, or Excel.

- **URL**: https://apify.com/getascraper/ostrovok-reviews-scraper.md
- **Developed by:** [GetAScraper](https://apify.com/getascraper) (community)
- **Categories:** Travel, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.32 / 1,000 guest reviews

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Ostrovok Reviews Scraper: Отзывы Островок

<table width="100%">
<tr>
<td colspan="2" style="padding:14px 18px;background:#EEF4FC;border-top:3px solid #0E5FC0;border-left:1px solid #D6D3D1;border-right:1px solid #D6D3D1;border-radius:8px 8px 0 0">
<span style="font-size:16px;font-weight:700;color:#1C1917">Read what guests actually wrote, not just the score they left.</span> <span style="font-size:15px;color:#57534E">Full review text split into what each guest liked and disliked, with category scores, photos, and the hotel's own reply. Built for hotel operators, review analysts, and travel researchers.</span>
</td>
</tr>
<tr>
<td colspan="2" style="padding:10px 14px;background:#0A4A96;border-left:1px solid #D6D3D1;border-right:1px solid #D6D3D1">
<span style="color:#FFFFFF;font-size:14px;font-weight:700;letter-spacing:0.5px">OSTROVOK SUITE</span>
<span style="color:#CFE0F5;font-size:13px">&nbsp;&nbsp;&bull;&nbsp;&nbsp;Hotel rates and guest reviews from Russia's largest hotel booking site</span>
</td>
</tr>
<tr>
<td style="padding:10px 12px;border-left:1px solid #D6D3D1;border-bottom:1px solid #D6D3D1;vertical-align:top;width:50%;background:#FFFFFF;border-radius:0 0 0 8px">
<span style="white-space:nowrap">🏨 &nbsp;<a href="https://apify.com/getascraper/ostrovok-hotels-scraper" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">Ostrovok&nbsp;Hotels&nbsp;Scraper</a></span><br>
<span style="color:#57534E;font-size:11px">Live hotel prices by city and date</span>
</td>
<td style="padding:10px 12px;border-left:1px solid #D6D3D1;border-right:1px solid #D6D3D1;border-bottom:1px solid #D6D3D1;vertical-align:top;width:50%;background:#EEF4FC;border-radius:0 0 8px 0">
<span style="white-space:nowrap">💬 &nbsp;<a href="https://apify.com/getascraper/ostrovok-reviews-scraper" style="color:#0E5FC0;text-decoration:none;font-weight:700;font-size:13px">Ostrovok&nbsp;Reviews&nbsp;Scraper</a></span><br>
<span style="color:#0E5FC0;font-size:11px;font-weight:700">&#10148; You are here</span>
</td>
</tr>
</table>

<table width="100%">
<tr>
<td style="padding:24px 28px;background:#EEF4FC;border:1px solid #C5D9F1;border-top:4px solid #0E5FC0;border-radius:12px">
<span style="font-size:23px;font-weight:800;color:#1C1917;line-height:1.3">Every guest review in full, with the praise and the complaints separated</span><br>
<span style="font-size:15px;color:#57534E;line-height:1.6">Pull complete guest reviews from Ostrovok (Островок) for any hotel: the written text, seven category scores, guest photos, and the hotel's reply, ready to analyse.</span>
</td>
</tr>
</table>

<table width="100%">
<tr>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #C5D9F1;border-radius:10px 0 0 10px;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#0A4A96">💬 The actual text</span><br>
<span style="font-size:12px;color:#57534E">What the guest liked and disliked, kept as separate fields</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #C5D9F1;border-left:none;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#0A4A96">📊 Seven scores</span><br>
<span style="font-size:12px;color:#57534E">Cleanliness, location, price, service, room, meal, and WiFi</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #C5D9F1;border-left:none;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#0A4A96">🏨 Hotel replies</span><br>
<span style="font-size:12px;color:#57534E">See how management responded, and where they stayed silent</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #C5D9F1;border-left:none;border-radius:0 10px 10px 0;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#0A4A96">📸 Guest photos</span><br>
<span style="font-size:12px;color:#57534E">Real room photos guests attached, as ready-to-open links</span>
</td>
</tr>
</table>

Ostrovok (Островок) asks guests two questions: what did you like, and what did you not.
This Actor keeps that split intact, so you can read complaints on their own instead of
digging them out of a wall of mixed text.

### 🔍 What does Ostrovok Reviews Scraper do?

It pulls guest reviews from any [Ostrovok](https://ostrovok.ru) hotel page and returns one
row per review: the written text, the overall rating, seven category scores, who wrote it,
what room they booked, any photos they attached, and the hotel's reply.

<table width="100%"><tr>
<td style="padding:12px 18px;background:#EEF4FC;border-left:4px solid #0E5FC0">
<span style="font-size:15px;color:#1C1917">&#9889; <b>Paste a hotel URL, or reuse a hotel ID from the Hotels Scraper.</b> No dates, no guest counts, and no login required.</span>
</td>
</tr></table>

### 💡 Why use it

* **I manage a hotel** and want every complaint about my property in one export, so I can see whether cleanliness or WiFi is dragging my score down.
* **I run competitor research** for a hotel group and need to read what guests say about nearby properties, not just the number they scored.
* **I build review analytics** and want the text, the category scores, and the traveller type in one row so I can run sentiment analysis without scraping anything myself.
* **I am a travel researcher** studying what Russian travellers complain about most, and I need the raw written reviews rather than the aggregate.

### 🚀 How to use it

<table width="100%">
<tr>
<td style="padding:16px 14px;width:33%;background:#EEF4FC;border:1px solid #C5D9F1;border-radius:10px 0 0 10px;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#0E5FC0;letter-spacing:1px">STEP 1</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Point at a hotel</span><br>
<span style="font-size:12px;color:#57534E">Paste an Ostrovok hotel URL, or use a hotel ID from the Hotels Scraper.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#EEF4FC;border:1px solid #C5D9F1;border-left:none;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#0E5FC0;letter-spacing:1px">STEP 2</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Choose what matters</span><br>
<span style="font-size:12px;color:#57534E">Filter by rating or traveller type, or pull complaints only.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#EEF4FC;border:1px solid #C5D9F1;border-left:none;border-radius:0 10px 10px 0;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#0E5FC0;letter-spacing:1px">STEP 3</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Export the reviews</span><br>
<span style="font-size:12px;color:#57534E">One row per review, ready as JSON, CSV, or Excel.</span>
</td>
</tr>
</table>

Set `maxRating` to 6 to pull only the reviews where something went wrong.

### 📋 Input

| Field | Type | Required | Description |
|---|---|---|---|
| `hotels` | array of strings | No | Hotel IDs such as `radisson_blu_olympiyskiy_hotel`. Found in the Hotels Scraper output. |
| `urls` | array of URLs | No | Ostrovok hotel page URLs. The hotel is read from the URL. |
| `language` | enum | No | `ru` or `en` for reviews and room names. Defaults to `ru`. |
| `sortBy` | enum | No | `relevance_desc`, `date_desc`, `rate_desc`, or `rate_asc`. Defaults to most relevant. |
| `minRating` | integer | No | Only reviews rated at or above this score, out of 10. |
| `maxRating` | integer | No | Only reviews rated at or below this score. Set to 6 for complaints only. |
| `withTextOnly` | boolean | No | Skip ratings-only reviews where the guest wrote nothing. |
| `travellerTypes` | array of strings | No | Only these traveller types, such as `["family", "couple"]`. |
| `maxItemsPerHotel` | integer | No | Maximum reviews per hotel. Defaults to 100. |
| `includeRawData` | boolean | No | Attach the original unprocessed review under `raw`. |
| `proxyConfiguration` | object | No | Proxy settings. The default works for most runs. |

### 📊 Data table

| Field | Type | Description |
|---|---|---|
| `reviewId` | number | Ostrovok's review identifier |
| `hotelSlug` | string | Which hotel the review belongs to |
| `hotelTotalReviews` | number | How many reviews that hotel has in total |
| `author` | string | Guest's display name |
| `authorResidency` | string | Language and country the guest booked from |
| `reviewDate` | string | When the review was written |
| `rating` | number | Overall rating out of 10 |
| `textPositive` | string | What the guest liked |
| `textNegative` | string | What the guest disliked |
| `text` | string | Both halves joined, for tools that expect one review body |
| `travellerType` | string | Family, couple, solo, or business |
| `tripType` | string | Leisure or business |
| `roomName` | string | The room the guest actually booked |
| `adults` | number | How many adults stayed |
| `ratingCleanness` | number | Cleanliness score out of 10 |
| `ratingLocation` | number | Location score out of 10 |
| `ratingPrice` | number | Value-for-money score out of 10 |
| `ratingServices` | number | Service score out of 10 |
| `ratingRoom` | number | Room score out of 10 |
| `ratingMeal` | number | Meal score out of 10 |
| `ratingWifi` | number | WiFi score out of 10 |
| `wifiQuality` | string | Guest's WiFi verdict in words |
| `hotelReply` | string | The hotel's written response |
| `hasHotelReply` | boolean | Whether management replied at all |
| `images` | array | Photo links the guest attached |
| `imagesCount` | number | How many photos are attached |
| `scrapedAt` | string | When the row was captured |

### 💰 Pricing

Pricing is pay per result: you are billed for the review rows actually saved to your
dataset. Empty runs cost nothing. There are no subscriptions or fixed monthly fees.

### ⭐ Enjoying Ostrovok Reviews Scraper?

<table width="100%">
<tr>
<td style="padding:20px 24px 14px;background:#EEF4FC;border:1px solid #C5D9F1;border-left:5px solid #0E5FC0;border-radius:10px 10px 0 0">
<span style="font-size:20px;letter-spacing:4px">⭐ ⭐ ⭐ ⭐ ⭐</span><br>
<span style="font-size:17px;font-weight:800;color:#1C1917">If this saved you from reading hundreds of reviews one page at a time, a rating helps a lot.</span><br>
<span style="font-size:14px;color:#57534E">A 5-star rating takes 10 seconds and helps other hotel managers and review analysts find it. Your feedback also tells us what to build next.</span>
</td>
</tr>
<tr>
<td style="padding:0;background:#0E5FC0;border:1px solid #C5D9F1;border-top:none;border-radius:0 0 10px 10px;text-align:center">
<a href="https://apify.com/getascraper/ostrovok-reviews-scraper/reviews" style="display:block;padding:13px 16px;color:#FFFFFF;text-decoration:none;font-weight:800;font-size:15px;letter-spacing:0.3px">★&nbsp;&nbsp;Rate this Actor on Apify</a>
</td>
</tr>
</table>

### 💡 Tips

* Set `maxRating` to 6 and `withTextOnly` to true to get a clean list of written complaints.
* Use `sortBy` as `date_desc` on a schedule to catch new reviews as they land.
* Run the [Ostrovok Hotels Scraper](https://apify.com/getascraper/ostrovok-hotels-scraper) first, then feed its `hotelId` values into `hotels` here to cover a whole city.
* Most Ostrovok reviews are written in Russian, since that is where its guests book from.

### ❓ FAQ

##### Как спарсить отзывы об отеле с Островка?

Paste the hotel's Ostrovok URL into `urls` and run the Actor. It returns every review with
the full text, the rating, and the category scores. No login or API key is needed.

##### Можно ли выгрузить только плохие отзывы?

Yes. Set `maxRating` to 6 and the Actor returns only reviews scored at or below that,
which is the quickest way to read complaints on their own.

##### Do reviews include the text, or just the score?

Both. Each row carries what the guest liked and what they disliked as separate fields,
plus a combined version if your tools expect a single review body.

##### Where do I find a hotel ID?

Run the Ostrovok Hotels Scraper and use the `hotelId` column, or just paste the hotel's
page URL here and let this Actor work it out.

### 🔗 Other actors

- [Ostrovok Hotels Scraper](https://apify.com/getascraper/ostrovok-hotels-scraper) ↗ - Pulls live hotel prices and ratings for any city and date.
- [Yandex Maps Review Monitor](https://apify.com/getascraper/yandex-maps-review-monitor) ↗ - Tracks new Yandex Maps reviews for places you care about.
- [Teamblind Reviews Scraper](https://apify.com/getascraper/teamblind-reviews-scraper) ↗ - Collects employee reviews and company discussion from Blind.
- [Wildberries Reviews Scraper](https://apify.com/getascraper/wildberries-reviews-scraper) ↗ - Extracts product reviews and ratings from Wildberries.
- [Yandex Eda Scraper](https://apify.com/getascraper/yandex-eda-scraper) ↗ - Extracts restaurant menus and prices from Yandex Eda.

# Actor input Schema

## `hotels` (type: `array`):

Hotel IDs to scrape reviews for, e.g. 'radisson_blu_olympiyskiy_hotel'. You can find these in the Ostrovok Hotels Scraper output, or just paste hotel page URLs below instead.
## `urls` (type: `array`):

Paste full Ostrovok hotel page URLs. The hotel is read from the URL, so no dates or guest parameters are needed.
## `language` (type: `string`):

Language for reviews and room names. Most Ostrovok reviews are written in Russian.
## `sortBy` (type: `string`):

Order in which reviews are returned.
## `minRating` (type: `integer`):

Only return reviews rated at or above this score. Ostrovok rates out of 10.
## `maxRating` (type: `integer`):

Only return reviews rated at or below this score. Set this to 6 to pull complaints only.
## `withTextOnly` (type: `boolean`):

Skip ratings-only reviews where the guest left no comment.
## `travellerTypes` (type: `array`):

Only return reviews from these traveller types, e.g. ['family', 'couple', 'solo', 'business']. Leave empty for all.
## `maxItemsPerHotel` (type: `integer`):

Maximum number of reviews to return for each hotel.
## `includeRawData` (type: `boolean`):

Attach Ostrovok's original unprocessed review object under a 'raw' field.
## `proxyConfiguration` (type: `object`):

Datacenter proxies (the default) work reliably here and cost far less. Switch to Residential only if a very large run hits rate limits.

## Actor input object example

```json
{
  "hotels": [
    "radisson_blu_olympiyskiy_hotel"
  ],
  "urls": [],
  "language": "ru",
  "sortBy": "relevance_desc",
  "withTextOnly": false,
  "travellerTypes": [],
  "maxItemsPerHotel": 100,
  "includeRawData": false,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
````

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "hotels": [
        "radisson_blu_olympiyskiy_hotel"
    ],
    "urls": [],
    "language": "ru",
    "sortBy": "relevance_desc",
    "withTextOnly": false,
    "travellerTypes": [],
    "maxItemsPerHotel": 100,
    "includeRawData": false,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("getascraper/ostrovok-reviews-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "hotels": ["radisson_blu_olympiyskiy_hotel"],
    "urls": [],
    "language": "ru",
    "sortBy": "relevance_desc",
    "withTextOnly": False,
    "travellerTypes": [],
    "maxItemsPerHotel": 100,
    "includeRawData": False,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("getascraper/ostrovok-reviews-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "hotels": [
    "radisson_blu_olympiyskiy_hotel"
  ],
  "urls": [],
  "language": "ru",
  "sortBy": "relevance_desc",
  "withTextOnly": false,
  "travellerTypes": [],
  "maxItemsPerHotel": 100,
  "includeRawData": false,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call getascraper/ostrovok-reviews-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=getascraper/ostrovok-reviews-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Ostrovok Reviews Scraper: Отзывы Островок",
        "description": "Scrape hotel guest reviews from Ostrovok (Островок) with the full review text, star rating, category scores, traveller type, guest photos, and the hotel's reply. Filter by rating or traveller type and export to JSON, CSV, or Excel.",
        "version": "0.1",
        "x-build-id": "DcuDz096fpWBDTuEE"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/getascraper~ostrovok-reviews-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-getascraper-ostrovok-reviews-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/getascraper~ostrovok-reviews-scraper/runs": {
            "post": {
                "operationId": "runs-sync-getascraper-ostrovok-reviews-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/getascraper~ostrovok-reviews-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-getascraper-ostrovok-reviews-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "hotels": {
                        "title": "Hotels",
                        "type": "array",
                        "description": "Hotel IDs to scrape reviews for, e.g. 'radisson_blu_olympiyskiy_hotel'. You can find these in the Ostrovok Hotels Scraper output, or just paste hotel page URLs below instead.",
                        "default": [
                            "radisson_blu_olympiyskiy_hotel"
                        ],
                        "items": {
                            "type": "string"
                        }
                    },
                    "urls": {
                        "title": "Ostrovok hotel URLs",
                        "type": "array",
                        "description": "Paste full Ostrovok hotel page URLs. The hotel is read from the URL, so no dates or guest parameters are needed.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "language": {
                        "title": "Language",
                        "enum": [
                            "ru",
                            "en"
                        ],
                        "type": "string",
                        "description": "Language for reviews and room names. Most Ostrovok reviews are written in Russian.",
                        "default": "ru"
                    },
                    "sortBy": {
                        "title": "Sort reviews by",
                        "enum": [
                            "relevance_desc",
                            "date_desc",
                            "rate_desc",
                            "rate_asc"
                        ],
                        "type": "string",
                        "description": "Order in which reviews are returned.",
                        "default": "relevance_desc"
                    },
                    "minRating": {
                        "title": "Minimum rating",
                        "minimum": 0,
                        "maximum": 10,
                        "type": "integer",
                        "description": "Only return reviews rated at or above this score. Ostrovok rates out of 10."
                    },
                    "maxRating": {
                        "title": "Maximum rating",
                        "minimum": 0,
                        "maximum": 10,
                        "type": "integer",
                        "description": "Only return reviews rated at or below this score. Set this to 6 to pull complaints only."
                    },
                    "withTextOnly": {
                        "title": "Only reviews with written text",
                        "type": "boolean",
                        "description": "Skip ratings-only reviews where the guest left no comment.",
                        "default": false
                    },
                    "travellerTypes": {
                        "title": "Traveller types",
                        "type": "array",
                        "description": "Only return reviews from these traveller types, e.g. ['family', 'couple', 'solo', 'business']. Leave empty for all.",
                        "default": []
                    },
                    "maxItemsPerHotel": {
                        "title": "Max reviews per hotel",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum number of reviews to return for each hotel.",
                        "default": 100
                    },
                    "includeRawData": {
                        "title": "Include raw API data",
                        "type": "boolean",
                        "description": "Attach Ostrovok's original unprocessed review object under a 'raw' field.",
                        "default": false
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Datacenter proxies (the default) work reliably here and cost far less. Switch to Residential only if a very large run hits rate limits.",
                        "default": {
                            "useApifyProxy": true
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
