{
  "openapi": "3.0.1",
  "info": {
    "title": "Royal Caribbean Scraper - Complete Cruise Data Extractor",
    "description": "Royal Caribbean cruise pricing API — 9 markets with per-cabin pricing, discount tracking, and 33 departure ports. Extract sailings, itineraries, and direct booking links. Ideal for travel agencies, comparison sites, and affiliate marketers. ✅ Apify/custom proxy support.",
    "version": "0.0",
    "x-build-id": "8Zt3E5ir61c3iNIX8"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/sercul~royal-caribbean/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-sercul-royal-caribbean",
        "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/sercul~royal-caribbean/runs": {
      "post": {
        "operationId": "runs-sync-sercul-royal-caribbean",
        "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/sercul~royal-caribbean/run-sync": {
      "post": {
        "operationId": "run-sync-sercul-royal-caribbean",
        "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",
        "required": [
          "region"
        ],
        "properties": {
          "region": {
            "title": "Region",
            "enum": [
              "USA",
              "GBR",
              "AUS",
              "ITA",
              "DEU",
              "NLD",
              "CAN",
              "FRA",
              "IRL"
            ],
            "type": "string",
            "description": "Region/country for Royal Caribbean website to scrape",
            "default": "USA"
          },
          "maxRows": {
            "title": "Maximum Rows",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Maximum number of cruise results to fetch",
            "default": 500
          },
          "departurePorts": {
            "title": "Departure Ports",
            "type": "array",
            "description": "Filter cruises by departure port code. Verified against RC's live catalog 2026-08-18; the line-up is seasonal, so a valid port can legitimately return no sailings. Leave empty to include all ports.",
            "items": {
              "type": "string",
              "enum": [
                "MIA",
                "FLL",
                "PCN",
                "TPA",
                "GAL",
                "MSY",
                "SJU",
                "BOS",
                "BYE",
                "BWI",
                "SEA",
                "LAX",
                "SAN",
                "HNL",
                "STH",
                "BCN",
                "ROM",
                "BLQ",
                "TRS",
                "ATH",
                "CTG",
                "LIS",
                "IST",
                "SYD",
                "BNE",
                "SIN",
                "HKG",
                "BAO",
                "YOK",
                "YVR",
                "SWD",
                "ONX",
                "CPT"
              ],
              "enumTitles": [
                "Miami, FL",
                "Fort Lauderdale, FL",
                "Port Canaveral, FL",
                "Tampa, FL",
                "Galveston, TX",
                "New Orleans, LA",
                "San Juan, PR",
                "Boston, MA",
                "New York, NY",
                "Baltimore, MD",
                "Seattle, WA",
                "Los Angeles, CA",
                "San Diego, CA",
                "Honolulu, HI",
                "Southampton, UK",
                "Barcelona, Spain",
                "Rome (Civitavecchia), Italy",
                "Venice (Ravenna), Italy",
                "Trieste, Italy",
                "Athens (Piraeus), Greece",
                "Cartagena, Spain",
                "Lisbon, Portugal",
                "Istanbul, Turkey",
                "Sydney, Australia",
                "Brisbane, Australia",
                "Singapore",
                "Hong Kong, China",
                "Shanghai, China",
                "Tokyo (Yokohama), Japan",
                "Vancouver, Canada",
                "Seward, AK",
                "Colon, Panama",
                "Cape Town, South Africa"
              ]
            }
          },
          "destinations": {
            "title": "Destinations",
            "type": "array",
            "description": "Filter cruises by destination code. Codes and labels match Royal Caribbean's own search facets, verified 2026-08-18. Leave empty to include 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"
              ]
            }
          },
          "maxRequestRetries": {
            "title": "Max Request Retries",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Maximum number of retries for failed requests",
            "default": 5
          },
          "minConcurrency": {
            "title": "Min Concurrency",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Minimum number of concurrent requests",
            "default": 1
          },
          "maxConcurrency": {
            "title": "Max Concurrency",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "Maximum number of concurrent requests",
            "default": 10
          },
          "requestHandlerTimeoutSecs": {
            "title": "Request Handler Timeout (seconds)",
            "minimum": 10,
            "maximum": 300,
            "type": "integer",
            "description": "Timeout for request handlers in seconds",
            "default": 30
          },
          "useApifyProxy": {
            "title": "Use Apify Proxy",
            "type": "boolean",
            "description": "Whether to use Apify Proxy for requests",
            "default": false
          },
          "proxyUrl": {
            "title": "Custom Proxy URL",
            "type": "string",
            "description": "Custom proxy URL (if not using Apify Proxy). Format: http://user:pass@proxy.com:port"
          },
          "apifyProxyGroups": {
            "title": "Apify Proxy Groups",
            "type": "array",
            "description": "Proxy groups to use with Apify Proxy (e.g., RESIDENTIAL, DATACENTER)",
            "items": {
              "type": "string"
            },
            "default": [
              "RESIDENTIAL"
            ]
          },
          "apifyProxyCountryCode": {
            "title": "Apify Proxy Country Code",
            "type": "string",
            "description": "Country code for Apify Proxy geo-targeting (e.g., US, GB, AU, IT, DE, NL). If not set, will auto-match to region."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}