MSC Cruises scraper - Complete Cruise Data Extractor
Pricing
from $2.00 / 1,000 results
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
Maintained by CommunityActor stats
1
Bookmarked
58
Total users
6
Monthly active users
11 days ago
Last modified
Categories
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
| Region | Domain | Currency |
|---|---|---|
en_US | msccruisesusa.com | USD |
en_GB | msccruises.co.uk | GBP |
it_IT | msccrociere.it | EUR |
de_DE | msccruises.de | EUR |
de_AT | msccruises.at | EUR |
fr_FR | msccroisieres.fr | EUR |
es_ES | msccruceros.es | EUR |
Input
| Parameter | Type | Description | Default |
|---|---|---|---|
region* | string | Market to scrape | en_US |
maxRows | number | Maximum unique cruise results (1-10000) | 500 |
destinations | string[] | Filter by destination code | All |
enrichCabinPrices | boolean | Collect prices for every cabin type (EU/UK markets) | false |
tailRotationNearWeeks | number | Refresh the whole catalogue over several capped runs (EU/UK markets) | off |
tailCursorNamespace | string | Name of the saved rotation position | — |
maxRequestRetries | number | Retries for failed requests | 5 |
requestHandlerTimeoutSecs | number | Request timeout (seconds) | 30 |
useApifyProxy | boolean | Use Apify Residential proxy | true |
apifyProxyCountryCode | string | Override proxy country | Auto |
apifyProxyGroups | string | Proxy tier | RESIDENTIAL |
proxyUrl | string | Custom 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
useApifyProxyon, or supply a residentialproxyUrl). 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
maxRowsgoes to later departures, starting where the previous run stopped, and wraps around at the end of the catalogue. WithmaxRows: 3000and 13 near weeks, every sailing is refreshed about every 4 runs. - The saved position lives in a key-value store named
msc-sweep-cursorin your account. Give one-off or test runs their owntailCursorNamespaceso they don't move the position your scheduled runs use. maxRowshas 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
destinationsis 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
| Code | Destination | Code | Destination |
|---|---|---|---|
MED | Mediterranean | CAR | Caribbean |
WEE | Western Mediterranean | SOC | Southern Caribbean |
EME | Eastern Mediterranean | NCA | Northern Caribbean |
MEW | Mediterranean West | BHM | Bahamas |
FIO | Northern Europe & Fjords | ALA | Alaska |
NOR | Northern Europe | EMW | Dubai & Middle East (US) |
CUK | Cruises from UK | DUB | Middle East & Dubai (EU) |
BAC | British Isles & Atlantic Coast | SOA | South America |
TRA | Transatlantic | ASI | Asia |
WOR | World Cruise | FAE | Far East Asia |
PAN | Panama Canal | AFR | Africa |
POS | Grand Voyages | INW | Indian Ocean |
NOA | North America |
Cabin Codes
| Code | Cabin Type |
|---|---|
INTERIOR | Interior / Inside |
OCEANVIEW | Ocean View |
BALCONY | Balcony |
SUITE | Suite |
YACHT_CLUB | MSC 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[].daySourceisline. When two calls share a day in a way the schedule can't place, the ports are listed in order with an emptydayIndicatoranddaySourceunknown - Lowest available price with currency
- Ports of call
pricing_tiersobject with per-cabin breakdown (EU/UK/IT markets)itineraryImage— sailing thumbnail URL- Service charges and port charges (where applicable)
source_url— direct booking linkplatform,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_tiersfollow a consistent{amount, currency}shape maxRowscounts unique cruises (deduped bycruise_id)- Results stream to the dataset as they are collected, so partial results remain available if a run is stopped early
Related Actors
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.