MSC Cruises Scraper avatar

MSC Cruises Scraper

Pricing

from $4.00 / 1,000 results

Go to Apify Store
MSC Cruises Scraper

MSC Cruises Scraper

Search MSC Cruises sailings by destination, port, ship, date and duration, and extract full cruise details including day-by-day itineraries and pricing.

Pricing

from $4.00 / 1,000 results

Rating

0.0

(0)

Developer

VulnV

VulnV

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Categories

Share

Search MSC Cruises sailings and extract full cruise details — ship, ports, dates, duration, cabin pricing, promotions and the complete day-by-day itinerary shown on each cruise's detail page — as clean, structured JSON.

The scraper mirrors the filters on the MSC Cruises search page (destination, departure port, ship, departure dates, duration, cabin type and guest count) and returns one record per sailing.

🚀 How to use

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

✨ Features

  • 🔎 Full search filtering — destination, departure port, ship, departure date range, number of nights, cabin type and number of guests.
  • 🚢 Rich per-sailing data — ship, embarkation/disembarkation ports, ports of call, number of nights, season, availability, ribbons/promotions and flight options.
  • 💶 Pricing — best price per adult and per cabin, strike-through (was) prices, port charges and discounts for the requested guest configuration.
  • 🗓️ Details page scraping — for each cruise it visits the details page and extracts the full day-by-day itinerary (port, arrival/departure times, descriptions) and the complete cabin price matrix (every cabin category, experience and rate, with strike-through prices).
  • 🔗 Detail page URL — a ready-to-open link to each cruise on msccruises.eu.
  • 🌍 Any MSC storefront — defaults to the Eastern Europe storefront but every market (base URL, locale, currency) is configurable.

🧭 Input

All fields are optional. Run with no input to scrape upcoming cruises for the default storefront.

FieldTypeDescription
departureDateFromstring (YYYY-MM-DD)Earliest departure date. Defaults to today.
departureDateTostring (YYYY-MM-DD)Latest departure date. Defaults to ~2 years out.
destinationsarrayDestination area codes, e.g. MED, NOR, CAR.
departurePortsarrayEmbarkation port codes, e.g. PIR, BCN, GOA.
shipsarrayShip codes, e.g. SX (MSC Sinfonia), EU (MSC World Europa).
cabinTypesarrayINS (Interior), OUT (Ocean View), BAL (Balcony), SUI (Suite), YTC (Yacht Club).
minNights / maxNightsintegerCruise duration range, in nights.
adultsintegerAdults the prices are calculated for (default 2).
juniors / minorsintegerYounger guests / children in the cabin (default 0).
availableOnlybooleanOnly return bookable sailings (default true).
scrapeDetailsbooleanVisit each cruise's details page for the day-by-day itinerary and full cabin price matrix (default true).
maxResultsintegerMaximum number of records to store (default 100).
advancedFilterstringRaw Algolia filter clause appended with AND. Power users.
baseUrl, marketPath, locale, currencyCode, languageCode, countryCodestringStorefront / market overrides. Defaults target https://www.msccruises.eu Eastern Europe.
proxyConfigurationobjectOptional proxy for outbound requests.

Example input

{
"departurePorts": ["PIR"],
"departureDateFrom": "2026-10-01",
"departureDateTo": "2026-11-30",
"adults": 2,
"scrapeDetails": true,
"maxResults": 50
}

📦 Output

Each dataset item is one sailing. Abridged example:

{
"cruiseID": "SX20261020PIRPIR",
"itinCd": "UYOR",
"itineraryName": "Mediterranean",
"shipCd": { "key": "SX", "value": "MSC Sinfonia" },
"embkPort": { "key": "PIR", "value": "Piraeus" },
"disembkPort": { "key": "PIR", "value": "Piraeus" },
"departureStartDate": "2026-10-20",
"numberOfNights": 6,
"macroCategory": { "key": "INS", "value": "Interior" },
"portOfCalls": ["SEADAY", "CFU", "KAK", "BRI", "ARM"],
"bestSavingPricePerAdult": 210,
"bestSavingPricePerCabin": 420,
"prices": {
"cabinPrice": 862,
"adultPrice": 431,
"portCharges": 150,
"strikethroughPrice": { "cabinPrice": 1282, "adultPrice": 641 }
},
"detailUrl": "https://www.msccruises.eu/easterneurope/search/itinerary?cruiseId=SX20261020PIRPIR&itineraryCode=UYOR&...",
"cruiseDetails": {
"itinerary": {
"code": "UYOR",
"cruiseDuration": 6,
"days": [
{
"date": "2026-10-20",
"dayOfWeek": "TUESDAY",
"departureTime": "17:00:00",
"port": { "code": "PIR", "name": "Piraeus", "description": "..." }
}
]
},
"cabinPrices": [
{
"category": { "key": "IB", "value": "Interior" },
"macroCategory": { "key": "INS", "value": "Interior" },
"priceCode": "SXC00209AR6036FL",
"priceType": "FLASH",
"prices": {
"adultPrice": 431,
"cabinPrice": 862,
"portCharges": 150,
"strikethroughPrice": { "adultPrice": 641, "cabinPrice": 1282 }
}
}
]
}
}

When scrapeDetails is enabled, cruiseDetails.cabinPrices contains every cabin category / experience / rate combination available for the sailing (e.g. ~40 options), exactly as listed on the cruise's details page.

For convenience, the most useful detail facts are also flattened to the top level of each record (so they appear directly in the dataset table view, not only in the nested cruiseDetails):

FieldDescription
itineraryDayCountNumber of days in the day-by-day itinerary.
itineraryPorts / itineraryPortsTextOrdered list of port names / a A → B → C string.
cabinOptionsCountNumber of cabin/rate options found on the details page.
priceFromInterior, priceFromOceanView, priceFromBalcony, priceFromSuite, priceFromYachtClubLowest per-adult price for each cabin category.
lowestCabinPriceAdultLowest per-adult price across all cabins.

The dataset has two views: Overview (flat table with the summary columns above) and Cruise details (includes the full nested cruiseDetails).

💡 Use cases

  • Monitor MSC cruise prices and promotions for specific routes or ships.
  • Build a cruise comparison or alerting tool.
  • Analyse itineraries, ports of call and sailing durations across a season.
  • Feed structured cruise data into travel agency or affiliate sites.

⚙️ Notes

  • The search API caps deep pagination at 1,000 results per query, so the scraper automatically pages through results month by month and de-duplicates to retrieve large ranges. Narrow the date range or filters for very broad searches.
  • Destination, port and ship codes are listed in the input form's dropdowns.

💳 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 on the Actor's page for the current rate.

❓ FAQ

Is scraping MSC Cruises data legal? The Actor collects only publicly available information shown on the MSC Cruises website. As with any scraping, use the data responsibly and in line with applicable laws and the site's terms.

Which markets are supported? It defaults to the Eastern Europe storefront (msccruises.eu, EUR), and the market, locale and currency are fully configurable to target other MSC storefronts.

Can I get the day-by-day itinerary and all cabin prices? Yes — keep scrapeDetails enabled (the default). Each cruise then includes the full day-by-day itinerary and the complete cabin price matrix.

How do I scrape only a few results to test? Set maxResults to a small number (e.g. 5) and add a narrow date range or a single departure port.

🛠️ Our Other Scrapers

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

📬 Need help or have a feature request? Contact us at support@vulnv.com or visit our Apify profile.