{
  "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}