{
  "openapi": "3.0.1",
  "info": {
    "title": "Cruise Data Feed: Lines, Itineraries, Ports & Prices",
    "description": "Download structured cruise inventory from 60+ cruise lines (MSC, Disney, Royal Caribbean, Carnival, Viking and more) in one clean schema: ships, sailing dates, durations, ports of call, day-by-day itineraries and pricing. Unofficial; public data only.",
    "version": "1.4",
    "x-build-id": "aenc340wIythEMwN5"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/vulnv~cruise-data-feed/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-vulnv-cruise-data-feed",
        "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~cruise-data-feed/runs": {
      "post": {
        "operationId": "runs-sync-vulnv-cruise-data-feed",
        "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~cruise-data-feed/run-sync": {
      "post": {
        "operationId": "run-sync-vulnv-cruise-data-feed",
        "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": {
          "cruiseLines": {
            "title": "Cruise lines",
            "type": "array",
            "description": "Filter by one or more cruise lines (70 bookable brands). Leave empty for all lines. Ship owners and browse categories are deliberately not listed, because no one books under those names — select the retail brand that carries their sailings instead (Mystic Cruises → nicko cruises; Scylla Cruises → Tauck, Riviera Travel; StarDream Cruises → Resorts World Cruises).",
            "items": {
              "type": "string",
              "enum": [
                "AIDA Cruises",
                "APT River Cruises Travelmarvel Cruises",
                "AmaWaterways",
                "Ambassador Cruise Line Cruises",
                "American Cruise Lines",
                "American Queen Voyages",
                "Arosa Cruises",
                "Aroya Cruises Saudi Cruises",
                "Atlas Ocean Voyages",
                "Aurora Expeditions",
                "Aurora Expeditions Cruises",
                "Avalon Waterways",
                "Azamara",
                "Carnival Cruise Line",
                "Celebrity Cruises",
                "Celebrity River Cruises",
                "Celestyal Cruises",
                "Costa Cruises",
                "CroisiEurope Cruises",
                "Crystal Cruises",
                "Cunard",
                "Disney Cruise Line",
                "Douro Azul",
                "Emerald Cruises",
                "Explora Journeys",
                "Fred Olsen Cruise Lines",
                "Grand Circle Cruise Line Cruises",
                "HX Expeditions",
                "Hapag-Lloyd Cruises",
                "Holland America Line",
                "Hurtigruten Cruises",
                "Lindblad Expeditions Cruises",
                "Luftner-Amadeus River Cruises",
                "MSC Cruises",
                "Marella Cruises",
                "Margaritaville at Sea Cruises",
                "Norwegian Cruise Line",
                "Oceania Cruises",
                "P&O Cruises",
                "Paul Gauguin Cruises",
                "Phoenix Reisen Cruises",
                "Ponant",
                "Princess Cruises",
                "Quark Expeditions",
                "Regent Seven Seas Cruises",
                "Ritz-Carlton Yacht Collection",
                "Riviera Travel Cruises",
                "Royal Caribbean",
                "Saga Cruises",
                "Scenic Cruises",
                "Scenic Ocean Cruises",
                "Scenic River Cruises",
                "SeaDream Yacht Club",
                "Seabourn",
                "Silversea",
                "Star Clippers Cruises",
                "Star Cruises",
                "TUI Cruises",
                "Tauck",
                "Tauck River Cruises",
                "UnCruise Adventures Cruises",
                "Uniworld River Cruises",
                "VIVA Cruises",
                "Viking Cruises",
                "Viking Expeditions",
                "Viking Ocean Cruises",
                "Viking River Cruises",
                "Virgin Voyages",
                "Windstar Cruises",
                "nicko cruises"
              ]
            }
          },
          "region": {
            "title": "Region / destination",
            "type": "string",
            "description": "Match cruises whose region/destination contains this text, e.g. \"Caribbean\", \"Alaska\", \"Mediterranean\", \"Baltic\", \"Norwegian Fjords\". Matching is partial and case-insensitive."
          },
          "embarkPort": {
            "title": "Departure port",
            "enum": [
              "",
              "Amsterdam",
              "Miami",
              "Budapest",
              "Paris",
              "Barcelona",
              "Port Canaveral",
              "Basel",
              "Civitavecchia",
              "Porto",
              "Piraeus",
              "Bergen",
              "Passau",
              "Vancouver",
              "Cairo",
              "Southampton",
              "Fort Lauderdale",
              "Luxor",
              "Lyon",
              "Venice",
              "Lisbon",
              "Oslo",
              "Galveston",
              "Marseille",
              "Siem Reap",
              "Tampa",
              "Baltra Island",
              "New Orleans",
              "Ho Chi Minh City",
              "Singapore",
              "San Juan",
              "Hamburg",
              "Strasbourg",
              "Cologne",
              "Kirkenes",
              "Palma de Mallorca",
              "Avignon",
              "Bridgetown",
              "Bordeaux",
              "Tokyo",
              "Köln",
              "Quito",
              "Los Angeles",
              "Las Palmas",
              "Juneau",
              "Cape Town",
              "Johannesburg",
              "Seattle",
              "Hanoi",
              "Prague",
              "Buenos Aires",
              "Vienna",
              "La Romana",
              "Tromso",
              "Kiel",
              "Sydney",
              "Portland, Oregon",
              "Istanbul",
              "Ushuaia",
              "London",
              "New York",
              "Bucharest",
              "Papeete",
              "Guayaquil",
              "Reykjavik",
              "Zurich",
              "Valletta",
              "Vilshofen an der Donau",
              "Seward",
              "Genua",
              "Santa Cruz de Tenerife",
              "Regensburg",
              "Ft. Lauderdale",
              "Copenhagen",
              "Clarkston",
              "Warnemunde",
              "Long Beach",
              "Palermo",
              "Jacksonville",
              "Miami, Florida",
              "Dusseldorf",
              "Genoa",
              "Tacoma WA",
              "Fairbanks",
              "Trondheim",
              "Nuremberg",
              "Dubrovnik",
              "Trieste",
              "Trier",
              "Hong Kong",
              "Savona",
              "San Diego",
              "Frankfurt am Main",
              "Neapel",
              "Callao",
              "Brisbane",
              "Arles",
              "Anchorage",
              "Fort-de-France",
              "Baltimore",
              "Shanghai",
              "Malaga",
              "Bari",
              "Svolvaer",
              "Brussels",
              "Memphis",
              "Munich",
              "Valencia",
              "Boston",
              "San Cristobal",
              "Rotterdam",
              "Nice",
              "Philipsburg",
              "Dubai",
              "Livorno",
              "Santos",
              "Port of Palm Beach",
              "Marseilles",
              "Cape Liberty",
              "Duisburg",
              "Amelia Island Florida",
              "Charleston SC",
              "Berlin",
              "Providence RI",
              "Naples",
              "Corfu Island",
              "Stockholm",
              "Honolulu",
              "Abu Dhabi",
              "Lima",
              "Kampong Cham",
              "Helsinki",
              "Decin",
              "Rio de Janeiro",
              "Colon",
              "Ravenna",
              "Lutherstadt Wittenberg",
              "Cartagena",
              "Longyearbyen",
              "Messina",
              "Whittier",
              "Auckland",
              "Bremerhaven",
              "Doha",
              "Keelung",
              "Jeddah",
              "Vancouver, Canada",
              "Nauta",
              "Port Tampa Bay",
              "Madrid",
              "Norfolk",
              "Toronto",
              "Giurgiu",
              "Portsmouth",
              "Kehl-Strasbourg",
              "San Francisco",
              "Pointe-a-Pitre",
              "Nuuk",
              "Tarragona",
              "Split",
              "Heraklion",
              "Bamberg",
              "Cagliari",
              "Milwaukee",
              "Dover",
              "Seville",
              "Le Havre",
              "Kopenhagen",
              "Philadelphia",
              "Montreal",
              "Nantes",
              "Newcastle upon Tyne",
              "Tenerife",
              "Trogir",
              "Benoa",
              "Liverpool",
              "Antwerp",
              "New Delhi",
              "Arnhem",
              "Villefranche-sur-Mer",
              "Tahiti",
              "Mobile",
              "Valparaiso",
              "Puntarenas",
              "Phnom Penh",
              "Albany NY",
              "Arrecife",
              "Barranquilla",
              "Kailua-Kona",
              "Kobe",
              "Panama City",
              "Mahe",
              "Chioggia",
              "Cannes",
              "Darwin",
              "Marmaris",
              "Minneapolis-Saint Paul",
              "Alicante",
              "Echuca",
              "Brindisi",
              "Ancona"
            ],
            "type": "string",
            "description": "Departure (embarkation) port. The 200 busiest ports are listed; they cover the large majority of sailings.",
            "default": ""
          },
          "shipName": {
            "title": "Ship name",
            "type": "string",
            "description": "Exact ship name, e.g. \"Nordkapp\", \"Kong Harald\", \"Richard With\". Over 1,000 vessels are covered, so this is a free text field. Leave empty for all ships."
          },
          "departureDateFrom": {
            "title": "Departure date from",
            "type": "string",
            "description": "Earliest departure date to include (YYYY-MM-DD)."
          },
          "departureDateTo": {
            "title": "Departure date to",
            "type": "string",
            "description": "Latest departure date to include (YYYY-MM-DD)."
          },
          "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."
          },
          "minPrice": {
            "title": "Minimum price",
            "minimum": 0,
            "type": "integer",
            "description": "Only include cruises priced at or above this amount (in the cruise's own currency)."
          },
          "maxPrice": {
            "title": "Maximum price",
            "minimum": 0,
            "type": "integer",
            "description": "Only include cruises priced at or below this amount (in the cruise's own currency)."
          },
          "cabinCategory": {
            "title": "Cabin category",
            "enum": [
              "",
              "interior",
              "oceanview",
              "balcony",
              "suite",
              "other"
            ],
            "type": "string",
            "description": "Keep only sailings that sell a fare in this cabin category. A sailing matches if any of its fares falls in the bucket, so \"Balcony\" means \"this sailing sells a balcony\", not \"its lead-in price is for a balcony\". Leave empty for all cabins.",
            "default": ""
          },
          "onlyWithBookingUrl": {
            "title": "Only sailings with a booking link",
            "type": "boolean",
            "description": "Keep only sailings that carry a direct booking_url. About 26% of the catalogue does. The feed applies this filter itself, so your result count is unchanged - you still receive up to 'Maximum results' records, drawn from a smaller pool. Off by default: nothing is filtered unless you ask.",
            "default": false
          },
          "scrapedSince": {
            "title": "Last confirmed on or after",
            "type": "string",
            "description": "Keep only sailings last confirmed against their source on or after this date (YYYY-MM-DD), matched against each record's own last_seen_at. Roughly 27% of upcoming sailings were last read before 2026-06-28. Off by default."
          },
          "roundTrip": {
            "title": "Round trip",
            "enum": [
              "any",
              "true",
              "false"
            ],
            "type": "string",
            "description": "Filter by trip type: round-trip (returns to the embarkation port) or one-way.",
            "default": "any"
          },
          "sort": {
            "title": "Sort by",
            "enum": [
              "departure_date",
              "-departure_date",
              "price",
              "-price"
            ],
            "type": "string",
            "description": "Order of returned cruises. The default is soonest departure first, with ties broken by freshness - departure dates are heavily tied, so this puts the most-recently-confirmed sailings at the front of a short run: the first 25 rows carry a booking link 40.0% of the time against 26.0% catalogue-wide, and none of them is stale. Imminent departures are not lower quality than the catalogue either (25.0% stale vs 26.8%). A short run is still a slice rather than a random sample, so use 'Data quality' above if every row must be bookable or recent.",
            "default": "departure_date"
          },
          "maxResults": {
            "title": "Maximum results",
            "minimum": 1,
            "type": "integer",
            "description": "Maximum number of cruise records to store.",
            "default": 100
          },
          "includePast": {
            "title": "Include departed sailings",
            "type": "boolean",
            "description": "Include sailings that have already departed. Off by default, so a plain run returns upcoming sailings only. Ignored when a departure date range is set, since an explicit date bound always wins.",
            "default": false
          },
          "apiKey": {
            "title": "Data API key (optional)",
            "type": "string",
            "description": "An optional data API key, if you have one. Not required - the Actor works without it."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}