MSC Cruises scraper - Complete Cruise Data Extractor avatar

MSC Cruises scraper - Complete Cruise Data Extractor

Pricing

from $2.00 / 1,000 results

Go to Apify Store
MSC Cruises scraper - Complete Cruise Data Extractor

MSC Cruises scraper - Complete Cruise Data Extractor

Why Choose This Scraper? ✅ Extract from 5 MSC markets (US, UK, IT, DE, AT) ✅ Complete cruise data with multi-cabin pricing (Interior, Oceanview, Balcony, Suite, Yacht Club) ✅ Filter by 25 destination regions ✅ Three API strategies for maximum coverage ✅ Apify/custom proxy support

Pricing

from $2.00 / 1,000 results

Rating

0.0

(0)

Developer

Jeremy G

Jeremy G

Maintained by Community

Actor stats

1

Bookmarked

58

Total users

6

Monthly active users

11 days ago

Last modified

Share

MSC Cruises Scraper — Complete Cruise Data Extractor

Extract cruise listings, itineraries, and per-cabin pricing from MSC Cruises across 7 regional markets. Built for travel agencies, price comparison sites, affiliate marketers, and cruise-industry analysts.

Updates

  • 2026-06-13 — Much broader European coverage: UK, Italy, Germany, Austria, France & Spain now return all departure dates for each itinerary (previously only one representative sailing) — roughly 4–5× more cruises per market.
  • 2026-06-11 — New markets added: France (fr_FR, EUR), Spain (es_ES, EUR).

Why Choose This Scraper?

  • ✅ Extract from 7 MSC markets (US, UK, IT, DE, AT, FR, ES) with local-currency pricing
  • ✅ Complete cruise data with multi-cabin pricing tiers (Interior, Oceanview, Balcony, Suite, Yacht Club)
  • ✅ Filter by 25 destination regions (Mediterranean, Caribbean, Northern Europe, Dubai, Asia, and more)
  • ✅ Full forward catalog — every available sailing across the booking window
  • ✅ Direct booking/source URLs + itinerary images on every sailing
  • ✅ Apify + custom proxy support with geo-matched country codes

Use Cases

  • European travel agencies — MSC's biggest strength is Mediterranean and Northern Europe routes
  • Affiliate/comparison sites — deep-linkable booking URLs + images
  • Yacht Club / premium travel affiliates — rich luxury tier pricing
  • Cruise analysts — compare MSC's aggressive EU pricing vs. Royal Caribbean / Costa

Supported Markets

RegionDomainCurrency
en_USmsccruisesusa.comUSD
en_GBmsccruises.co.ukGBP
it_ITmsccrociere.itEUR
de_DEmsccruises.deEUR
de_ATmsccruises.atEUR
fr_FRmsccroisieres.frEUR
es_ESmsccruceros.esEUR

Input

ParameterTypeDescriptionDefault
region*stringMarket to scrapeen_US
maxRowsnumberMaximum unique cruise results (1-10000)500
destinationsstring[]Filter by destination codeAll
enrichCabinPricesbooleanCollect prices for every cabin type (EU/UK markets)false
tailRotationNearWeeksnumberRefresh the whole catalogue over several capped runs (EU/UK markets)off
tailCursorNamespacestringName of the saved rotation position—
maxRequestRetriesnumberRetries for failed requests5
requestHandlerTimeoutSecsnumberRequest timeout (seconds)30
useApifyProxybooleanUse Apify Residential proxytrue
apifyProxyCountryCodestringOverride proxy countryAuto
apifyProxyGroupsstringProxy tierRESIDENTIAL
proxyUrlstringCustom proxy URL—

Cabin prices (EU/UK markets)

By default the EU and UK markets return a single "from" price per sailing — the cheapest cabin available, whichever type that happens to be.

Turn on enrichCabinPrices to collect a price for every cabin type instead (Interior, Oceanview, Balcony, Suite, Yacht Club). Coverage typically rises from about one cabin type per sailing to around six.

  • Requires a residential proxy (leave useApifyProxy on, or supply a residential proxyUrl). It will be skipped with a warning otherwise.
  • Adds roughly 37 requests per run.
  • Prices already collected are never replaced — only missing cabin types are filled in. Cabin prices added this way come from MSC's promotional fares, so they can sit below the headline price for the same sailing.
  • Not available for the Germany and Spain markets; those are unaffected by the setting.
  • The US market always returns all cabin types and ignores this setting.

Refreshing the full catalogue on a row budget (EU/UK markets)

A run collects departures in date order and stops at maxRows. If maxRows is smaller than the market's catalogue (about 7,500 sailings), every run refreshes the same nearest sailings and later departures never update.

Set tailRotationNearWeeks to fix that without raising maxRows:

  • Each run collects the next N weeks of departures in full, every time.
  • The rest of maxRows goes to later departures, starting where the previous run stopped, and wraps around at the end of the catalogue. With maxRows: 3000 and 13 near weeks, every sailing is refreshed about every 4 runs.
  • The saved position lives in a key-value store named msc-sweep-cursor in your account. Give one-off or test runs their own tailCursorNamespace so they don't move the position your scheduled runs use.
  • maxRows has to leave at least 250 sailings after the near weeks (a week has about 70). Otherwise the later departures are skipped and the log says so.
  • Ignored when destinations is set, and for the US market.

Proxy: a country-matched RESIDENTIAL proxy is required for every market. Enable useApifyProxy with the RESIDENTIAL group, or supply a residential proxyUrl.

Destination Codes

CodeDestinationCodeDestination
MEDMediterraneanCARCaribbean
WEEWestern MediterraneanSOCSouthern Caribbean
EMEEastern MediterraneanNCANorthern Caribbean
MEWMediterranean WestBHMBahamas
FIONorthern Europe & FjordsALAAlaska
NORNorthern EuropeEMWDubai & Middle East (US)
CUKCruises from UKDUBMiddle East & Dubai (EU)
BACBritish Isles & Atlantic CoastSOASouth America
TRATransatlanticASIAsia
WORWorld CruiseFAEFar East Asia
PANPanama CanalAFRAfrica
POSGrand VoyagesINWIndian Ocean
NOANorth America

Cabin Codes

CodeCabin Type
INTERIORInterior / Inside
OCEANVIEWOcean View
BALCONYBalcony
SUITESuite
YACHT_CLUBMSC Yacht Club (premium, ship-within-a-ship)

Output

Each record is a single unique cruise (deduped by cruise_id) with:

  • Cruise and itinerary identifiers (cruise_id, itinerary_id)
  • Ship name, departure/arrival ports, sailing dates, duration (nights)
  • Ports visited between embarkation and disembarkation in sailing order, each with its itinerary day (portsList[].dayIndicator; day 1 is embarkation, so the first port is usually day 2 or later). Days follow MSC's own day-by-day schedule, sea days included in the count; portsList[].daySource is line. When two calls share a day in a way the schedule can't place, the ports are listed in order with an empty dayIndicator and daySource unknown
  • Lowest available price with currency
  • Ports of call
  • pricing_tiers object with per-cabin breakdown (EU/UK/IT markets)
  • itineraryImage — sailing thumbnail URL
  • Service charges and port charges (where applicable)
  • source_url — direct booking link
  • platform, company, locale, destinationIds

Sample Output

{
"cruise_id": "MSC_SEASCAPE_2026-08-15",
"itinerary_id": "MSC_7N_MEDITERRANEAN",
"company": "msc",
"locale": "it_IT",
"platform": "msc-it_IT",
"title": "7 Nights Western Mediterranean",
"ship_name": "MSC Seascape",
"departure_date": "2026-08-15",
"duration": 7,
"price": 849,
"currency": "EUR",
"pricing_tiers": {
"INTERIOR": { "amount": 849, "currency": "EUR" },
"OCEANVIEW": { "amount": 999, "currency": "EUR" },
"BALCONY": { "amount": 1299, "currency": "EUR" },
"SUITE": { "amount": 2199, "currency": "EUR" },
"YACHT_CLUB": { "amount": 3499, "currency": "EUR" }
},
"destinations": ["MED", "WEE"],
"ports_list": ["Genoa", "Civitavecchia", "Palermo", "Valletta", "Barcelona", "Marseille", "Genoa"],
"itineraryImage": "https://www.msccrociere.it/...",
"source_url": "https://www.msccrociere.it/..."
}

Every record carries the full per-cabin pricing_tiers breakdown where MSC publishes it.

Runtime & Cost

  • Typical run: ~2-4 minutes for 500 rows
  • Full EU/UK/IT market sweep: ~1 minute for 1,500+ cruises
  • Full US market sweep: ~10-15 minutes for 4,000 cruises
  • Memory: 1 GB default (2 GB recommended for the full US sweep)
  • Proxy: a residential proxy is required for every market (Apify RESIDENTIAL or a custom residential proxyUrl)

Usage

{
"region": "it_IT",
"maxRows": 500,
"destinations": ["MED", "WEE"],
"useApifyProxy": true,
"apifyProxyGroups": "RESIDENTIAL"
}

Notes

  • Prices in pricing_tiers follow a consistent {amount, currency} shape
  • maxRows counts unique cruises (deduped by cruise_id)
  • Results stream to the dataset as they are collected, so partial results remain available if a run is stopped early

Looking to build a full cruise pricing dataset? Pair this with:

  • Costa Cruises Scraper — MSC's closest EU competitor
  • Royal Caribbean Scraper — premium tier comparison
  • Celebrity Cruises Scraper — 6 markets
  • NCL / Princess / Disney / Holland America / Carnival Scrapers — full coverage

Support

Issues or custom requests? Email support@track.cruises.