{
  "openapi": "3.0.1",
  "info": {
    "title": "NCL Cruises Scraper — Itineraries, Cabin Prices & Deals",
    "description": "Scrape Norwegian Cruise Line (NCL) itineraries by destination, port, ship, date and duration. Extract full cruise details: sailing dates, ports of call, the complete stateroom price grid and deals.",
    "version": "1.0",
    "x-build-id": "PeR259ggaLTDzmdka"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/vulnv~ncl-cruises-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-vulnv-ncl-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~ncl-cruises-scraper/runs": {
      "post": {
        "operationId": "runs-sync-vulnv-ncl-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~ncl-cruises-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-vulnv-ncl-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": [
                "CARIBBEAN",
                "BAHAMAS",
                "BERMUDA",
                "MEXICAN_RIVIERA",
                "ALASKA",
                "HAWAII",
                "PACIFIC_COASTAL",
                "CANADA_NEW_ENGL",
                "PANAMA_CANAL",
                "MEDITERRANEAN",
                "GREEK_ISLES",
                "NORTHERN_EUROPE",
                "TRANSATLANTIC",
                "SOUTH_AMERICA",
                "AFRICA",
                "ASIA",
                "AUSTRALIA",
                "SOUTH_PACIFIC",
                "EXTRAORDINARY_JOURNEYS",
                "WEEKEND"
              ],
              "enumTitles": [
                "Caribbean",
                "Bahamas",
                "Bermuda",
                "Mexican Riviera",
                "Alaska",
                "Hawaii",
                "Pacific Coastal",
                "Canada & New England",
                "Panama Canal",
                "Mediterranean",
                "Greek Isles",
                "Northern Europe",
                "Transatlantic",
                "South America",
                "Africa",
                "Asia",
                "Australia & New Zealand",
                "South Pacific",
                "Extraordinary Journeys",
                "Weekend & Getaways"
              ]
            }
          },
          "ships": {
            "title": "Ships",
            "type": "array",
            "description": "Filter by NCL ship. Leave empty for all ships.",
            "items": {
              "type": "string",
              "enum": [
                "PRIMA",
                "VIVA",
                "AQUA",
                "AURA",
                "LUNA",
                "ENCORE",
                "BLISS",
                "JOY",
                "ESCAPE",
                "BREAKAWAY",
                "GETAWAY",
                "EPIC",
                "JADE",
                "JEWEL",
                "PEARL",
                "GEM",
                "DAWN",
                "STAR",
                "SPIRIT",
                "SUN",
                "SKY",
                "PRIDE_AMER"
              ],
              "enumTitles": [
                "Norwegian Prima",
                "Norwegian Viva",
                "Norwegian Aqua",
                "Norwegian Aura",
                "Norwegian Luna",
                "Norwegian Encore",
                "Norwegian Bliss",
                "Norwegian Joy",
                "Norwegian Escape",
                "Norwegian Breakaway",
                "Norwegian Getaway",
                "Norwegian Epic",
                "Norwegian Jade",
                "Norwegian Jewel",
                "Norwegian Pearl",
                "Norwegian Gem",
                "Norwegian Dawn",
                "Norwegian Star",
                "Norwegian Spirit",
                "Norwegian Sun",
                "Norwegian Sky",
                "Pride of America"
              ]
            }
          },
          "embarkationPorts": {
            "title": "Departure ports",
            "type": "array",
            "description": "Filter by embarkation port (code). Leave empty for all ports.",
            "items": {
              "type": "string",
              "enum": [
                "MIA",
                "TPA",
                "PCV",
                "NYC",
                "LAX",
                "SEA",
                "SAN",
                "GAL",
                "BOS",
                "MSY",
                "JAX",
                "PHL",
                "HNL",
                "SJU",
                "VAN",
                "QUE",
                "BCN",
                "CIV",
                "VCE",
                "RAV",
                "PIR",
                "IST",
                "LIS",
                "TAR",
                "SOU",
                "CPH",
                "REY",
                "HEL",
                "BUE",
                "SYD",
                "AKL",
                "PPT",
                "TOK",
                "YOK",
                "HKG",
                "SIN",
                "INC",
                "SAI",
                "LTK",
                "WQF"
              ],
              "enumTitles": [
                "Miami",
                "Tampa",
                "Port Canaveral",
                "New York",
                "Los Angeles",
                "Seattle",
                "San Diego",
                "Galveston",
                "Boston",
                "New Orleans",
                "Jacksonville",
                "Philadelphia",
                "Honolulu",
                "San Juan",
                "Vancouver",
                "Quebec City",
                "Barcelona",
                "Rome (Civitavecchia)",
                "Venice",
                "Ravenna",
                "Athens (Piraeus)",
                "Istanbul",
                "Lisbon",
                "Tarragona",
                "Southampton",
                "Copenhagen",
                "Reykjavik",
                "Helsinki",
                "Buenos Aires",
                "Sydney",
                "Auckland",
                "Papeete (Tahiti)",
                "Tokyo",
                "Yokohama",
                "Hong Kong",
                "Singapore",
                "Incheon (Seoul)",
                "SAI",
                "LTK",
                "WQF"
              ]
            }
          },
          "cabinTypes": {
            "title": "Cabin types",
            "type": "array",
            "description": "Only keep itineraries with availability in these stateroom categories. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "INSIDE",
                "OCEANVIEW",
                "BALCONY",
                "MINISUITE",
                "SUITE",
                "HAVEN"
              ],
              "enumTitles": [
                "Inside",
                "Oceanview",
                "Balcony",
                "Club Balcony Suite",
                "Suite",
                "The Haven"
              ]
            }
          },
          "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 with a sailing departing on or after this date (YYYY-MM-DD)."
          },
          "departureDateTo": {
            "title": "Departure date to",
            "type": "string",
            "description": "Only include cruises with a sailing departing on or before this date (YYYY-MM-DD)."
          },
          "maxPrice": {
            "title": "Maximum price",
            "minimum": 1,
            "type": "integer",
            "description": "Only include cruises with an available cabin at or below this price (per the cabin types filter, in the market currency)."
          },
          "guests": {
            "title": "Guests",
            "minimum": 1,
            "maximum": 4,
            "type": "integer",
            "description": "Number of guests the prices are calculated for.",
            "default": 2
          },
          "scrapeDetails": {
            "title": "Scrape cruise details page",
            "type": "boolean",
            "description": "Visit each cruise's details page to add the title, images, full ship and ports-of-call info, taxes and the detailed stateroom price grid. Slower, but captures everything on the details page.",
            "default": true
          },
          "maxResults": {
            "title": "Maximum results",
            "minimum": 1,
            "type": "integer",
            "description": "Maximum number of itineraries to store.",
            "default": 100
          },
          "baseUrl": {
            "title": "Base URL",
            "type": "string",
            "description": "Storefront base URL.",
            "default": "https://www.ncl.com"
          },
          "marketPath": {
            "title": "Market path (does NOT choose the market)",
            "type": "string",
            "description": "Path segment only. It does NOT select a market: NCL rewrites it at the edge to whichever storefront your IP address resolves to. Measured 2026-08-09 from one address, fr/en, uk/en, de/de and the empty default all returned the SAME 2,529,425-byte payload of 481 itineraries priced in GBP, and us/en returns 404 from every address. Leave this empty (the default) so the edge can resolve your own market; set it only to pin a storefront you know answers from your egress. To influence the currency, use the proxy country instead -- and check the Expected currency warning in the log.",
            "default": ""
          },
          "expectedCurrency": {
            "title": "Expected currency",
            "type": "string",
            "description": "The currency the catalogue is expected to come back in. This is a CHECK, not a request -- the origin has no currency parameter. If the catalogue arrives in another currency the run re-asks on a fresh proxy session a few times, then stores what it got and logs a warning. Records are always labelled with the currency each itinerary itself states, never with this value. Leave empty to skip the check.",
            "default": "USD"
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Proxy used for all outbound requests. Apify Proxy (datacenter) is usually sufficient. If you enable Apify Proxy without choosing a country, the run requests a US egress, because the egress address is the only thing that influences which storefront -- and which currency -- NCL serves. It makes USD likely, not certain: two addresses in the same country have resolved to different storefronts.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}