# Royal Caribbean Cruises Scraper - Itineraries & Prices (`vulnv/royal-caribbean-cruises-scraper`) Actor

Scrape Royal Caribbean cruises by destination, departure port, ship, date and duration. Extract itineraries, sailing dates, day-by-day ports of call and the full stateroom price grid (Interior, Outside, Balcony, Suite). Export to JSON, CSV or Excel.

- **URL**: https://apify.com/vulnv/royal-caribbean-cruises-scraper.md
- **Developed by:** [VulnV](https://apify.com/vulnv) (community)
- **Categories:** Travel, Integrations
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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

## Royal Caribbean Cruises Scraper

Scrape **Royal Caribbean** cruise data at scale: itineraries, ships, day-by-day ports of call,
every sailing date and the complete **stateroom price grid** (Interior, Outside, Balcony,
Suite) - exported as clean, structured JSON, CSV or Excel.

This Royal Caribbean cruise scraper mirrors the filters on royalcaribbean.com (destination,
departure port, ship, ports of call, dates, duration, price) and returns one record per cruise,
with every sailing date and its prices included. No login or browser needed - it reads the
official cruise search data directly, so runs are fast and cheap.

### 🚀 How to use

1. Click **Try for free** / **Start**.
2. Pick your filters - destination, departure port, ship, dates, duration, price
   (or leave them empty to scrape all available cruises).
3. Run the Actor and download the results as **JSON, CSV, Excel, HTML or via API**.

### ✨ Features

- 🔎 **Full search filtering** - destination, departure port, ports of call, ship, departure
  date range, number of nights, max price, accessible staterooms and sort order.
- 🚢 **Rich per-cruise data** - ship, embarkation port, ordered day-by-day ports of call,
  duration, destination region and every sailing date.
- 💷 **Complete stateroom pricing** - lowest available price per stateroom class (Interior,
  Outside, Balcony, Suite) across all sailings, plus per-sailing pricing for each class.
- 🗓️ **Every sailing date** - each cruise lists all of its departures with their own price grid.
- 🔗 **Detail page URL** - a ready-to-open link to each cruise on royalcaribbean.com, plus the
  direct booking link.
- 🌍 **Any market** - defaults to the GBR market (GBP); the country/currency is configurable
  (e.g. USA/USD, CAN/CAD, AUS/AUD).

### 🧭 Input

All fields are optional. Run with no input to scrape all available cruises.

| Field | Type | Description |
|-------|------|-------------|
| `destinations` | array | Destination regions, e.g. `CARIB`, `ALCAN`, `EUROP`. |
| `departurePorts` | array | Embarkation port codes, e.g. `MIA`, `TPA`, `STH`. |
| `ships` | array | Ship codes, e.g. `IC` (Icon), `WN` (Wonder), `RD` (Radiance). |
| `portsOfCall` | array | Keep cruises that visit these port codes (any stop), e.g. `CZM`, `RTB`. |
| `minNights` / `maxNights` | integer | Cruise duration range, in nights. |
| `departureDateFrom` / `departureDateTo` | string (YYYY-MM-DD) | Keep cruises sailing in this range. |
| `maxPrice` | integer | Keep cruises with a stateroom at or below this price (market currency). |
| `accessible` | boolean | Only cruises with accessible staterooms available. |
| `sortBy` | string | `RECOMMENDED`, `PRICE_LOW_TO_HIGH`, `PRICE_HIGH_TO_LOW`, `SAIL_DATE`, `DURATION_LOW_TO_HIGH`, `DURATION_HIGH_TO_LOW`. |
| `custom` | array | Curated collections, e.g. `EBB` (Early Booking Bonus), `STH` (Southampton). |
| `includeSailings` | boolean | Embed full itinerary (day-by-day ports) and every sailing + price grid under `cruiseDetails` (default `true`). |
| `maxResults` | integer | Maximum number of cruises to store (default `100`). |
| `country`, `language` | string | Market overrides. Defaults target `GBR` / `en` (GBP). |
| `baseUrl` | string | Storefront base URL. Defaults to `https://www.royalcaribbean.com`. |
| `proxyConfiguration` | object | Optional proxy for outbound requests. |

#### Example input

```json
{
  "destinations": ["CARIB"],
  "departurePorts": ["MIA"],
  "minNights": 7,
  "maxNights": 7,
  "departureDateFrom": "2026-11-01",
  "departureDateTo": "2027-03-31",
  "sortBy": "PRICE_LOW_TO_HIGH",
  "maxResults": 50
}
````

### 📦 Output

Each dataset item is one cruise. Abridged example:

```json
{
  "id": "RD07TPA-2072238172",
  "cruiseName": "Western Caribbean Cruise",
  "packageCode": "RD07W765",
  "shipCode": "RD",
  "shipName": "Radiance of the Seas",
  "nights": 7,
  "destinationCode": "CARIB",
  "destination": "Caribbean",
  "departurePortCode": "TPA",
  "departurePort": "Tampa",
  "departureRegion": "Florida",
  "portsOfCall": ["Tampa", "Cozumel", "Roatan", "Puerto Costa Maya", "Tampa"],
  "portsOfCallText": "Tampa -> Cozumel -> Roatan -> Puerto Costa Maya -> Tampa",
  "masterSailDate": "2026-12-05",
  "sailingsCount": 3,
  "firstSailDate": "2026-12-05",
  "lastSailDate": "2027-11-06",
  "lowestPrice": 353.5,
  "priceFromInterior": 353.5,
  "priceFromOutside": 389.5,
  "priceFromBalcony": 563.5,
  "priceFromSuite": 829.5,
  "currency": "GBP",
  "taxesAndFees": 125,
  "imageUrl": "https://www.royalcaribbean.com/content/dam/royal/data/ports/roatan-honduras/roatan-honduras-beach.jpg",
  "detailUrl": "https://www.royalcaribbean.com/gbr/en/itinerary/7-night-western-caribbean-cruise-from-tampa-on-radiance-RD07W765?...",
  "bookingUrl": "https://www.royalcaribbean.com/booking/landing?groupId=RD07TPA-2072238172&...",
  "cruiseDetails": {
    "itinerary": {
      "name": "Western Caribbean Cruise",
      "ship": { "code": "RD", "name": "Radiance of the Seas" },
      "days": [ { "number": 1, "type": "PORT", "ports": [ { "departureTime": "16:00:00", "port": { "code": "TPA", "name": "Tampa" } } ] } ]
    },
    "sailings": [
      { "id": "RD07W765_2026-12-05", "sailDate": "2026-12-05", "stateroomClassPricing": [ { "stateroomClass": { "id": "INTERIOR", "name": "Interior" }, "price": { "value": 353.5, "currency": { "code": "GBP" } } } ] }
    ]
  }
}
```

The most useful facts (ship, ports, per-cabin "from" prices, sailing dates) are flattened to
the **top level** so they appear directly in the dataset table; the full nested itinerary and
per-sailing pricing live under `cruiseDetails`. The dataset has two views: **Overview** (flat
table) and **Cruise details** (full nested object).

### 💡 Use cases

- Monitor Royal Caribbean cruise prices and deals for specific routes or ships.
- Build a cruise comparison or price-alerting tool.
- Analyse itineraries, ports of call and sailing durations across a season.
- Feed structured cruise data into a travel agency or affiliate site.

### 💳 Pricing

This Actor is monetized on a **pay-per-result + usage** basis: you pay a small fee per cruise
result, plus the Apify platform usage your run consumes. Runs are lightweight - direct API
calls with no headless browser - so usage stays low. New users can try it on the Apify free
tier (capped sample). See the **Pricing** tab for the current rate.

### ❓ FAQ

**Is scraping Royal Caribbean data legal?**
The Actor collects only publicly available information shown on the Royal Caribbean website.
Use the data responsibly and in line with applicable laws and the site's terms.

**Which market is scraped?**
It defaults to the `GBR` market (GBP). The `country` and `language` inputs let you target
other markets (e.g. `USA`/`en` for USD).

**Can I get all cabin prices and every sailing date?**
Yes - keep `includeSailings` enabled (the default). Each cruise then includes the full
day-by-day itinerary and every sailing with its complete stateroom price grid.

### 🛠️ Our Other Scrapers

Explore our full suite of scraping tools to power your data needs:

- **[NCL Cruises Scraper](https://apify.com/vulnv/ncl-cruises-scraper)** - Scrape Norwegian Cruise Line itineraries, cabin prices and deals.
- **[MSC Cruises Scraper](https://apify.com/vulnv/msc-cruises-scraper)** - Scrape MSC Cruises itineraries, cabin prices and deals.
- **[Booking.com Cruises Scraper](https://apify.com/vulnv/booking-cruises-scraper)** - Extract cruise deals, prices and itineraries from Booking.com.
- **[Yelp Business Scraper](https://apify.com/vulnv/yelp-scraper)** - Scrape Yelp business listings, ratings and contact details.

📬 **Need help or have a feature request?** Contact us at <support@vulnv.com> or visit our [Apify profile](https://apify.com/vulnv).

# Actor input Schema

## `destinations` (type: `array`):

Filter by destination region. Leave empty for all destinations.

## `ships` (type: `array`):

Filter by Royal Caribbean ship. Leave empty for all ships.

## `departurePorts` (type: `array`):

Filter by embarkation port. Leave empty for all ports.

## `portsOfCall` (type: `array`):

Only keep cruises that visit these ports (port codes, e.g. CZM, RTB, CMM). Different from departure ports - these can be any stop on the itinerary.

## `minNights` (type: `integer`):

Only include cruises with at least this many nights.

## `maxNights` (type: `integer`):

Only include cruises with at most this many nights.

## `departureDateFrom` (type: `string`):

Only include cruises sailing on or after this date (YYYY-MM-DD).

## `departureDateTo` (type: `string`):

Only include cruises sailing on or before this date (YYYY-MM-DD).

## `maxPrice` (type: `integer`):

Only include cruises with an available stateroom at or below this price (lowest cabin price, in the market currency).

## `accessible` (type: `boolean`):

Only include cruises that have accessible staterooms available.

## `sortBy` (type: `string`):

Order the results returned by the Royal Caribbean search.

## `custom` (type: `array`):

Filter by a curated Royal Caribbean collection.

## `includeSailings` (type: `boolean`):

Embed the full nested itinerary (day-by-day ports) and every sailing date with its complete stateroom price grid under `cruiseDetails`. Disable for a leaner, flatter output.

## `maxResults` (type: `integer`):

Maximum number of cruises to store.

## `country` (type: `string`):

Three-letter market country code that sets the currency and pricing, e.g. GBR (GBP), USA (USD), CAN (CAD), AUS (AUD), DEU (EUR).

## `language` (type: `string`):

Two-letter language code for the storefront, e.g. en.

## `baseUrl` (type: `string`):

Storefront base URL.

## `proxyConfiguration` (type: `object`):

Proxy used for all outbound requests. Royal Caribbean blocks datacenter IPs, so residential Apify Proxy is the default.

## Actor input object example

```json
{
  "accessible": false,
  "sortBy": "RECOMMENDED",
  "includeSailings": true,
  "maxResults": 50,
  "country": "GBR",
  "language": "en",
  "baseUrl": "https://www.royalcaribbean.com",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# 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 = {
    "maxResults": 50,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("vulnv/royal-caribbean-cruises-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 = {
    "maxResults": 50,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("vulnv/royal-caribbean-cruises-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 '{
  "maxResults": 50,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call vulnv/royal-caribbean-cruises-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Royal Caribbean Cruises Scraper - Itineraries & Prices",
        "description": "Scrape Royal Caribbean cruises by destination, departure port, ship, date and duration. Extract itineraries, sailing dates, day-by-day ports of call and the full stateroom price grid (Interior, Outside, Balcony, Suite). Export to JSON, CSV or Excel.",
        "version": "1.0",
        "x-build-id": "a512rLcO6WA00RwF7"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/vulnv~royal-caribbean-cruises-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-vulnv-royal-caribbean-cruises-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/vulnv~royal-caribbean-cruises-scraper/runs": {
            "post": {
                "operationId": "runs-sync-vulnv-royal-caribbean-cruises-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/vulnv~royal-caribbean-cruises-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-vulnv-royal-caribbean-cruises-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": {
                    "destinations": {
                        "title": "Destinations",
                        "type": "array",
                        "description": "Filter by destination region. Leave empty for all destinations.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "ALCAN",
                                "FAR.E",
                                "AUSTL",
                                "BAHAM",
                                "BERMU",
                                "ATLCO",
                                "CARIB",
                                "EUROP",
                                "HAWAI",
                                "MEXCO",
                                "PACIF",
                                "T.PAN",
                                "ISLAN",
                                "SOPAC",
                                "T.ATL",
                                "TPACI"
                            ],
                            "enumTitles": [
                                "Alaska",
                                "Asia",
                                "Australia & New Zealand",
                                "Bahamas",
                                "Bermuda",
                                "Canada & New England",
                                "Caribbean",
                                "Europe",
                                "Hawaii",
                                "Mexico",
                                "Pacific Northwest",
                                "Panama Canal",
                                "Repositioning",
                                "South Pacific",
                                "Transatlantic",
                                "Transpacific"
                            ]
                        }
                    },
                    "ships": {
                        "title": "Ships",
                        "type": "array",
                        "description": "Filter by Royal Caribbean ship. Leave empty for all ships.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "IC",
                                "ST",
                                "UT",
                                "WN",
                                "SY",
                                "OA",
                                "AL",
                                "HM",
                                "OY",
                                "QN",
                                "AN",
                                "OV",
                                "SC",
                                "FR",
                                "LB",
                                "ID",
                                "NV",
                                "EX",
                                "VY",
                                "MA",
                                "AD",
                                "LE",
                                "RD",
                                "BR",
                                "SR",
                                "JW",
                                "GR",
                                "EN",
                                "RH",
                                "VI"
                            ],
                            "enumTitles": [
                                "Icon of the Seas",
                                "Star of the Seas",
                                "Utopia of the Seas",
                                "Wonder of the Seas",
                                "Symphony of the Seas",
                                "Oasis of the Seas",
                                "Allure of the Seas",
                                "Harmony of the Seas",
                                "Odyssey of the Seas",
                                "Quantum of the Seas",
                                "Anthem of the Seas",
                                "Ovation of the Seas",
                                "Spectrum of the Seas",
                                "Freedom of the Seas",
                                "Liberty of the Seas",
                                "Independence of the Seas",
                                "Navigator of the Seas",
                                "Explorer of the Seas",
                                "Voyager of the Seas",
                                "Mariner of the Seas",
                                "Adventure of the Seas",
                                "Legend of the Seas",
                                "Radiance of the Seas",
                                "Brilliance of the Seas",
                                "Serenade of the Seas",
                                "Jewel of the Seas",
                                "Grandeur of the Seas",
                                "Enchantment of the Seas",
                                "Rhapsody of the Seas",
                                "Vision of the Seas"
                            ]
                        }
                    },
                    "departurePorts": {
                        "title": "Departure ports",
                        "type": "array",
                        "description": "Filter by embarkation port. Leave empty for all ports.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "MIA",
                                "FLL",
                                "PCN",
                                "GAL",
                                "TPA",
                                "BYE",
                                "BWI",
                                "MSY",
                                "SJU",
                                "LAX",
                                "SAN",
                                "SEA",
                                "YVR",
                                "SWD",
                                "HNL",
                                "STH",
                                "BCN",
                                "ROM",
                                "ATH",
                                "IST",
                                "BLQ",
                                "TRS",
                                "SIN",
                                "HKG",
                                "BAO",
                                "YOK",
                                "SYD",
                                "BNE",
                                "ONX",
                                "CTG"
                            ],
                            "enumTitles": [
                                "Miami, Florida",
                                "Fort Lauderdale, Florida",
                                "Orlando (Port Canaveral), Florida",
                                "Galveston, Texas",
                                "Tampa, Florida",
                                "Cape Liberty (New York), New Jersey",
                                "Baltimore, Maryland",
                                "New Orleans, Louisiana",
                                "San Juan, Puerto Rico",
                                "Los Angeles, California",
                                "San Diego, California",
                                "Seattle, Washington",
                                "Vancouver, British Columbia",
                                "Seward, Alaska",
                                "Oahu (Honolulu), Hawaii",
                                "Southampton, England",
                                "Barcelona, Spain",
                                "Rome (Civitavecchia), Italy",
                                "Athens (Piraeus), Greece",
                                "Istanbul, Turkey",
                                "Ravenna, Italy",
                                "Trieste, Italy",
                                "Singapore",
                                "Hong Kong, China",
                                "Shanghai (Baoshan), China",
                                "Tokyo (Yokohama), Japan",
                                "Sydney, Australia",
                                "Brisbane, Australia",
                                "Colon, Panama",
                                "Cartagena, Colombia"
                            ]
                        }
                    },
                    "portsOfCall": {
                        "title": "Ports of call",
                        "type": "array",
                        "description": "Only keep cruises that visit these ports (port codes, e.g. CZM, RTB, CMM). Different from departure ports - these can be any stop on the itinerary.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "minNights": {
                        "title": "Minimum nights",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Only include cruises with at least this many nights."
                    },
                    "maxNights": {
                        "title": "Maximum nights",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Only include cruises with at most this many nights."
                    },
                    "departureDateFrom": {
                        "title": "Departure date from",
                        "type": "string",
                        "description": "Only include cruises sailing on or after this date (YYYY-MM-DD)."
                    },
                    "departureDateTo": {
                        "title": "Departure date to",
                        "type": "string",
                        "description": "Only include cruises sailing on or before this date (YYYY-MM-DD)."
                    },
                    "maxPrice": {
                        "title": "Maximum price",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Only include cruises with an available stateroom at or below this price (lowest cabin price, in the market currency)."
                    },
                    "accessible": {
                        "title": "Accessible staterooms only",
                        "type": "boolean",
                        "description": "Only include cruises that have accessible staterooms available.",
                        "default": false
                    },
                    "sortBy": {
                        "title": "Sort by",
                        "enum": [
                            "RECOMMENDED",
                            "PRICE_LOW_TO_HIGH",
                            "PRICE_HIGH_TO_LOW",
                            "SAIL_DATE",
                            "DURATION_LOW_TO_HIGH",
                            "DURATION_HIGH_TO_LOW"
                        ],
                        "type": "string",
                        "description": "Order the results returned by the Royal Caribbean search.",
                        "default": "RECOMMENDED"
                    },
                    "custom": {
                        "title": "Special collections",
                        "type": "array",
                        "description": "Filter by a curated Royal Caribbean collection.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "EBB",
                                "STH",
                                "LIBERTY",
                                "RBCS"
                            ],
                            "enumTitles": [
                                "Early Booking Bonus",
                                "Southampton departures",
                                "Liberty of the Seas",
                                "Royal Beach Club Santorini"
                            ]
                        }
                    },
                    "includeSailings": {
                        "title": "Include full sailing & itinerary details",
                        "type": "boolean",
                        "description": "Embed the full nested itinerary (day-by-day ports) and every sailing date with its complete stateroom price grid under `cruiseDetails`. Disable for a leaner, flatter output.",
                        "default": true
                    },
                    "maxResults": {
                        "title": "Maximum results",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum number of cruises to store.",
                        "default": 100
                    },
                    "country": {
                        "title": "Country / market",
                        "type": "string",
                        "description": "Three-letter market country code that sets the currency and pricing, e.g. GBR (GBP), USA (USD), CAN (CAD), AUS (AUD), DEU (EUR).",
                        "default": "GBR"
                    },
                    "language": {
                        "title": "Language",
                        "type": "string",
                        "description": "Two-letter language code for the storefront, e.g. en.",
                        "default": "en"
                    },
                    "baseUrl": {
                        "title": "Base URL",
                        "type": "string",
                        "description": "Storefront base URL.",
                        "default": "https://www.royalcaribbean.com"
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Proxy used for all outbound requests. Royal Caribbean blocks datacenter IPs, so residential Apify Proxy is the default.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ]
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
