# Sletat Hotel Price Scraper (`tufantoksoz/sletat-hotel-price-scraper`) Actor

Scrape real-time hotel offers, prices, and comprehensive hotel data from Sletat.ru. This Actor fetches hotel offers from both B2B and B2C endpoints with rich hotel metadata including ratings, reviews, contact info, and descriptions.

- **URL**: https://apify.com/tufantoksoz/sletat-hotel-price-scraper.md
- **Developed by:** [Tufan Toksöz](https://apify.com/tufantoksoz) (community)
- **Categories:** Travel, Developer tools, Automation
- **Stats:** 3 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

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

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## 🏨 Sletat.ru B2B & B2C Hotel Price Scraper

Collect real-time hotel offers, prices, and comprehensive hotel data from Sletat.ru. This Actor fetches hotel offers (no package tours) from both B2B and B2C endpoints with rich hotel metadata including ratings, reviews, contact info, and descriptions.

### 🌍 What does this scraper do?

This tool extracts hotel room offers, prices, and detailed hotel information from Sletat.ru, one of the largest travel marketplaces in the CIS region.

- Aggregates offers from 100+ travel agencies in seconds.
- Returns up to `maxOffersPerHotel` offers per hotel with room type, meal plan, nights, and total price.
- Enriches data with comprehensive hotel details: TripAdvisor ratings, contact info, descriptions, amenities, and more.
- Quick start by providing hotel page URLs.

### 👥 Who is it for?

- Travel tech companies, data analysts, and agencies
- Pricing intelligence, market research, and reporting teams

### ⚙️ Features

- ✅ Supports both **B2B** and **B2C** modes
- ✅ Up to **100 offers per hotel** (configurable)
- ✅ **Real-time** pricing and availability
- ✅ **Comprehensive hotel data**: ratings, reviews, contact info, location, amenities
- ✅ **TripAdvisor integration**: ratings and review counts
- ✅ **Rich metadata**: photos, descriptions, star ratings, room counts
- ✅ **Configurable** stay length (computed from check-in/out)
- ✅ **Clean, structured JSON** output (Apify Dataset)
- ✅ Optimized for price comparison, hotel research, and market intelligence

### 🧠 Input Parameters

| Parameter           | Type    | Required | Description                                                                                          |
| ------------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------- |
| `startUrls`         | Array   | Yes      | Sletat.ru hotel page URLs to scrape. e.g., `https://sletat.ru/uae/ras_al-khaimah/rixos_bab_al_bahr/` |
| `mode`              | String  | Yes      | `b2b` or `b2c`                                                                                       |
| `adults`            | Integer | Yes      | Number of adults (default: 2)                                                                        |
| `checkInDate`       | String  | Yes      | Check-in date (`YYYY-MM-DD`)                                                                         |
| `checkOutDate`      | String  | Yes      | Check-out date (`YYYY-MM-DD`)                                                                        |
| `currency`          | String  | Yes      | Currency: `USD`, `EUR`, `RUB`, `UAH`, `BYN`, `KZT`                                                   |
| `maxOffersPerHotel` | Integer | Yes      | Maximum offers per hotel (default: 100)                                                              |

Example input:

```json
{
  "startUrls": [{ "url": "https://sletat.ru/uae/ras_al-khaimah/rixos_bab_al_bahr/" }],
  "mode": "b2b",
  "adults": 2,
  "checkInDate": "2025-06-10",
  "checkOutDate": "2025-06-17",
  "currency": "RUB",
  "maxOffersPerHotel": 100
}
```

### 📤 Output

All results are stored as JSON items in Apify's default Dataset. Each item represents a single hotel offer.

Key fields:

- `hotelInfo`: Comprehensive hotel information including:
  - Basic info: `hotelId`, `name`, `photoUrl`, `latitude`, `longitude`, `starRating`
  - Location: `country`, `city`, `address`, `distanceToAirport`
  - Contact: `email`, `phone`, `fax`, `website`
  - Ratings: `rate`, `tripAdvisorRate`, `tripAdvisorNumberOfReviews`, `reviewsCount`
  - Details: `description`, `shortDescription`, `roomsCount`
- `offerId`
- `tourOperatorId`, `tourOperatorName`, `tourOperatorLogo`
- `checkInDate`, `checkOutDate`, `stayDuration`
- `roomType`, `mealType`
- `totalPrice`, `currency`

Example output item:

```json
{
  "hotelInfo": {
    "hotelId": 80571,
    "name": "Rixos Bab Al Bahr",
    "photoUrl": "https://hotels.sletat.ru/i/p/80571_0.jpg",
    "latitude": 25.6647,
    "longitude": 55.747631,
    "starRating": "5*",
    "country": "ОАЭ",
    "city": "Рас-эль-Хайма",
    "address": null,
    "distanceToAirport": "75 km",
    "email": "sales.rak@rixos.com",
    "phone": "+971 (7) 244-44-00",
    "fax": "+971 (7) 244-44-11",
    "website": "https://www.rixos.com/en/hotel-resort/rixos-bab-al-bahr",
    "rate": 9.26,
    "tripAdvisorRate": 4.5,
    "tripAdvisorNumberOfReviews": 11194,
    "reviewsCount": 1420,
    "roomsCount": 650,
    "description": "...",
    "shortDescription": "Для отдыхающих в Рас аль-Хайме..."
  },
  "offerId": "814796696",
  "tourOperatorId": 820,
  "tourOperatorName": "Русский Экспресс",
  "tourOperatorLogo": "https://static.sletat.ru/images/to/820.png",
  "checkInDate": "15.06.2026",
  "checkOutDate": "21.06.2026",
  "totalPrice": 134948,
  "currency": "RUB",
  "roomType": "Deluxe Garden View",
  "stayDuration": 6,
  "mealType": "UAI"
}
```

### 🧩 Use Cases

- **Price Comparison**: Compare prices for the same hotel across different agencies.
- **B2B vs B2C Analysis**: Measure differences between B2B and B2C pricing.
- **Price Intelligence**: Track trends and min/max across time periods.
- **Negotiation Support**: Identify the most competitive operator-specific offers.
- **Hotel Research**: Access comprehensive hotel details including ratings, reviews, contact info, and descriptions.
- **Market Analysis**: Analyze hotel inventory, star ratings, and location data across regions.
- **Review Monitoring**: Track TripAdvisor ratings and review counts for quality insights.
- **Reporting & Automation**: Pipe rich hotel data into BI tools or data warehouses.

### ❓ Frequently Asked Questions (FAQ)

#### What is the difference between B2B and B2C results?

B2B reflects agency-oriented offers and grouping, while B2C mirrors end-customer pricing.

#### Do I need to use a proxy?

Not required. The project already includes built-in proxy handling; no additional proxy setup is needed.

#### How are dates handled?

`checkInDate` and `checkOutDate` use `YYYY-MM-DD`. The number of nights is calculated from these dates.

#### How many offers are fetched?

Controlled by `maxOffersPerHotel` (default 100).

#### Which currencies are supported?

`currency` is mandatory. Supported values: `USD`, `EUR`, `RUB`, `UAH`, `BYN`, `KZT`.

# Actor input Schema

## `startUrls` (type: `array`):

List of Sletat.ru hotel page URLs to scrape

## `mode` (type: `string`):

Select the mode to scrape

## `adults` (type: `integer`):

The number of adults to scrape the offers for

## `checkInDate` (type: `string`):

The date to check-in. Format: YYYY-MM-DD

## `checkOutDate` (type: `string`):

The date to check-out. Format: YYYY-MM-DD

## `currency` (type: `string`):

The currency to scrape the offers in

## `maxOffersPerHotel` (type: `integer`):

The maximum number of offers to scrape per hotel

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://sletat.ru/uae/dubai_marina/rove_dubai_marina/"
    }
  ],
  "mode": "b2c",
  "adults": 2,
  "checkInDate": "2026-06-15",
  "checkOutDate": "2026-06-22",
  "currency": "RUB",
  "maxOffersPerHotel": 100
}
```

# Actor output Schema

## `dataset` (type: `string`):

All scraped hotels with their offers

# 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 = {
    "startUrls": [
        {
            "url": "https://sletat.ru/uae/dubai_marina/rove_dubai_marina/"
        }
    ],
    "mode": "b2c",
    "adults": 2,
    "checkInDate": "2026-06-15",
    "checkOutDate": "2026-06-22",
    "currency": "RUB",
    "maxOffersPerHotel": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("tufantoksoz/sletat-hotel-price-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 = {
    "startUrls": [{ "url": "https://sletat.ru/uae/dubai_marina/rove_dubai_marina/" }],
    "mode": "b2c",
    "adults": 2,
    "checkInDate": "2026-06-15",
    "checkOutDate": "2026-06-22",
    "currency": "RUB",
    "maxOffersPerHotel": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("tufantoksoz/sletat-hotel-price-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "startUrls": [
    {
      "url": "https://sletat.ru/uae/dubai_marina/rove_dubai_marina/"
    }
  ],
  "mode": "b2c",
  "adults": 2,
  "checkInDate": "2026-06-15",
  "checkOutDate": "2026-06-22",
  "currency": "RUB",
  "maxOffersPerHotel": 100
}' |
apify call tufantoksoz/sletat-hotel-price-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,tufantoksoz/sletat-hotel-price-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/bAhDEcewmCCKusdEr/builds/hE0SkY2CID4mXyOPV/openapi.json
