CruiseMapper Scraper - Cruises, Itineraries & Ship Tracker avatar

CruiseMapper Scraper - Cruises, Itineraries & Ship Tracker

Pricing

from $1.14 / 1,000 result delivereds

Go to Apify Store
CruiseMapper Scraper - Cruises, Itineraries & Ship Tracker

CruiseMapper Scraper - Cruises, Itineraries & Ship Tracker

Scrape CruiseMapper cruises by date, region, ship, line or port: full itinerary with port times, nights, lowest price. Plus ship specs (IMO, MMSI, tonnage, capacity), live positions of 1,100+ cruise ships and port schedules. Accepts the input of the old CruiseMapper actor.

Pricing

from $1.14 / 1,000 result delivereds

Rating

0.0

(0)

Developer

Scrapewise Data

Scrapewise Data

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

CruiseMapper Scraper: cruises, itineraries, ship tracker and port schedules

Scrape CruiseMapper into clean rows: every cruise that matches your dates, destination, ship, cruise line or port, with its full itinerary (each port with arrival and departure time, country and link), nights, departure and arrival port and the lowest advertised price. Switch the mode to get ship data (IMO, MMSI, tonnage, passengers, crew, current position, upcoming cruises), the live position of every cruise ship on the map in one request, or the port schedule of any cruise port, month by month.

No account, no cookies, no API key. Already using another CruiseMapper actor? Paste your input as it is: the classic start_date, end_date, ship_name, cruise_line, destination and stop_N_date columns all work.

At a glance

  • Price: US$ 1.50 per 1,000 results, same price with or without the full itinerary
  • Fee per run: US$ 0.0005
  • Four modes: cruises, ships, live fleet positions, port schedule
  • Cruise filters: departure date window, destination region, ship, cruise line, departure port, port of call, length in nights, ocean or river ship, themed and repositioning cruises, max price per person
  • Speed (tested 2026-10-20): 1,000 cruises with full itineraries in about 40 seconds; 1,128 ship positions in under 2 seconds; a month of Miami port calls in 2 seconds
  • Monitoring: only new cruises since the last run, and price change tracking
  • Safe on long runs: if the platform moves the run to another server, it continues where it stopped and never charges a result twice
  • Error rows (unknown ship or port, bad date): free, with an errorCode

One real row

From a test on 2026-10-20 with {"shipName": "Allure Of The Seas", "startDate": "2026-12-01", "maxItems": 1} (stops cut to two here; the real row has all five):

{
"type": "cruise",
"id": "5281301",
"ship_name": "Allure Of The Seas",
"cruise_date": "2026 Dec 06",
"cruise_title": "7 nights, round-trip from Miami, USA",
"cruise_price": "$805",
"cruise_line": "Royal Caribbean Cruises cruise line",
"stop_1_date": "06 Dec 16:00",
"stop_1_text": "Departing from Miami, Florida",
"stop_2_date": "09 Dec 08:00 - 17:00",
"stop_2_text": "Philipsburg St Maarten, Netherlands Antilles",
"cruise_url": "https://www.cruisemapper.com/ships/Allure-Of-The-Seas-662#ship-itinerary-5281301-2026",
"line_name": "Royal Caribbean",
"ship_id": "662",
"departure_date": "2026-12-06",
"return_date": "2026-12-13",
"duration_nights": 7,
"trip_type": "round-trip",
"departure_port": "Miami, Florida",
"arrival_port": "Miami, Florida",
"departure_time": "2026-12-06T16:00",
"arrival_time": "2026-12-13T06:00",
"price_usd": 805,
"ports_of_call": ["Philipsburg St Maarten", "St Thomas Island USVI", "Puerto Plata-Amber Cove"],
"countries": ["Dominican Rep", "Netherlands", "US Virgin Islands", "USA"],
"stop_count": 5,
"stops": [
{"stop": 1, "type": "departure", "date": "2026-12-06", "departure": "2026-12-06T16:00", "port": "Miami",
"country": "USA", "country_code": "US", "port_id": "40", "port_url": "https://www.cruisemapper.com/ports/miami-port-40"},
{"stop": 2, "type": "port_of_call", "date": "2026-12-09", "arrival": "2026-12-09T08:00",
"departure": "2026-12-09T17:00", "port": "Philipsburg St Maarten", "country": "Netherlands", "country_code": "NL"}
],
"scraped_at": "2026-10-20T15:46:16Z"
}

Times are local port times, as CruiseMapper shows them. cruise_price is the site's text; price_usd is the number.

How to use this CruiseMapper scraper

Cruises in the Caribbean leaving in the next 60 days (the prefill):

{ "mode": "cruises", "region": "8", "daysAhead": 60, "maxItems": 50 }

Seven to ten night Royal Caribbean cruises from Miami in December, up to US$ 1,000 per person:

{
"startDate": "2026-12-01",
"endDate": "2026-12-31",
"cruiseLine": "Royal Caribbean",
"departurePort": "Miami",
"cruiseLength": "6-10",
"maxPricePerPerson": 1000,
"maxItems": 200
}

Ship data for a whole fleet, or for single ships by name or IMO:

{ "mode": "ships", "cruiseLine": "Celebrity Cruises" }
{ "mode": "ships", "shipNames": ["Allure Of The Seas", "9812705"] }

Live positions of every cruise ship (about 1,100 rows, one request), or of one line:

{ "mode": "fleetPositions", "cruiseLine": "MSC Cruises" }

Which ships call at Miami and Nassau in December, and in January:

{ "mode": "portSchedule", "ports": ["Miami", "Nassau"], "month": "2026-12", "numberOfMonths": 2, "maxItems": 1000 }
FieldWhat it does
modecruises (default), ships, fleetPositions, portSchedule
startUrlsCruise finder, ship, cruise line or port links from cruisemapper.com
regionDestination region (Caribbean, Mediterranean, Alaska, Europe rivers and 20 more)
startDate, endDate, daysAheadDeparture date window
shipName, cruiseLine, departurePort, portOfCallNames as on CruiseMapper, any capitalization
cruiseLengthany, 1-2, 3-5, 6-10, 11-14, 15+ nights
shipTypeany, ocean, river
cruiseTypetransatlantic, world, christmas, repositioning seasons and more
maxPricePerPersonLowest advertised price per person, US dollars
includeItineraryFull itinerary per cruise (default on)
shipNames, includeShipDetails, includeUpcomingCruisesShips mode
ports, month, numberOfMonthsPort schedule mode
maxItemsResults per search, ship list or port (50 when empty)
onlyNew, compareWithPreviousRunMonitoring for scheduled runs

A name CruiseMapper does not know (a typo in a ship or port) returns a free error row with suggestions. The site itself would silently ignore it and return every cruise; this cruise scraper checks every name first.

Switching from another CruiseMapper actor? Your existing input works

Paste the input you already use. These names and values are read as they are:

You may already sendRead as
start_date, end_date (2026-06-01 or 01-Jun-2026)startDate, endDate
destination ("8", "0", or a name like "Caribbean")region
cruise_length ("0" to "5")cruiseLength
ship_name, cruise_line, departure_port, port_of_callshipName, cruiseLine, departurePort, portOfCall
ship_type ("0", "1", "2")shipType (any, ocean, river)
max_number_of_pages (-1 = all, 15 cruises per page)page limit, as before
cruise_line + get_ship_detailsships mode for that line
searchType (cruises, ports), startDate, endDate, shipName, departurePort, maxResults, startUrlssame meaning

The output keeps the classic columns, with the same names and formats: id, ship_name, cruise_date (2026 Dec 06), cruise_title, cruise_price ($805), cruise_line and one stop_N_date / stop_N_text pair per stop, so spreadsheets and scripts built on them keep working. The new fields are added after them. The legacy dataset view shows only the classic columns.

{ "start_date": "2026-12-01", "end_date": "2026-12-20", "cruise_length": "3", "cruise_line": "Royal Caribbean",
"departure_port": "Miami", "destination": "8", "ship_type": "0", "max_number_of_pages": -1 }

Output fields

FieldMeaning
id, cruise_url, ship_name, ship_id, ship_url, line_nameCruise and ship identity
departure_date, return_date, duration_nights, trip_typeDates and length (round-trip or one-way)
departure_port, arrival_port, departure_time, arrival_timeWhere and when it leaves and ends
price_usd, cruise_priceLowest advertised price per person ("from"), number and text
stopsEvery stop: type, date, arrival, departure, port, country, country code, port id and link
ports_of_call, countries, stop_countItinerary summary
ship_typeocean or river, when the ship type filter is used

Ships: imo, mmsi, flag, year_built, builder, ship_class, gross_tonnage, length_m, beam_m, speed_knots, passengers, passengers_max, crew, decks, cabins, last_refurbishment, owner, operator, homeports, latitude, longitude, position_text, destination, ais_speed_knots, ais_course, position_time, current_cruise, upcoming_cruises, rating_stars, rating_votes, image_url.

Live positions: ship_name, imo, mmsi, line_name, flag, ship_category (ocean, river, ferry, small_ship, icebreaker_research), latitude, longitude, speed_knots, course, heading, destination, position_time.

Port calls: port_name, port_country, port_locode, port_region, port_latitude, port_longitude, date, weekday, ship_name, ship_url, line_name, arrival, departure.

Error codes (never charged)

CodeWhen
INVALID_INPUTUnknown ship, line, port or region; a date that is not a date; a link from another site
NOT_FOUNDA ship, line or port page that does not exist
NO_RESULTSNothing matches your filters in your dates
BLOCKEDCruiseMapper did not answer after retries; run again
NOT_REACHEDThe run timeout or the cost guard came before this input

Pricing

Pay per event, no monthly fee:

EventPrice
Result delivered (cruise, ship, ship position or port call)US$ 1.50 per 1,000
Run startUS$ 0.0005

A run of 50 cruises with full itineraries costs about US$ 0.08. Error rows, duplicates, filtered results and results already seen (onlyNew) are never charged. Set a maximum cost per run in Apify and the Actor stops cleanly at it.

Use it from code and AI agents

from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("scrapewise/cruisemapper-scraper").call(run_input={
"region": "8", "departurePort": "Miami", "daysAhead": 90, "maxItems": 200})
for c in client.dataset(run["defaultDatasetId"]).iterate_items():
print(c["departure_date"], c["ship_name"], c["duration_nights"], c["price_usd"], c["ports_of_call"])

The same works from the HTTP API (run-sync-get-dataset-items), n8n, Make, Zapier and Google Sheets. For AI agents (Claude, ChatGPT, Cursor and any MCP client): https://mcp.apify.com/?actors=scrapewise/cruisemapper-scraper.

Requests an agent can pass straight through:

  • "Find Caribbean cruises from Miami in March under $800" -> {"region": "8", "departurePort": "Miami", "startDate": "2027-03-01", "endDate": "2027-03-31", "maxPricePerPerson": 800, "maxItems": 100}
  • "Where is Allure of the Seas right now and what are its next cruises?" -> {"mode": "ships", "shipNames": ["Allure Of The Seas"]}
  • "Which cruise ships are in Nassau next week?" -> {"mode": "portSchedule", "ports": ["Nassau"], "maxItems": 200}

FAQ

Is there an official CruiseMapper API? No public one. CruiseMapper offers no developer API or data feed for cruise itineraries, ship positions or port schedules. This Actor reads the same public pages and map data the website shows, and returns them as JSON, CSV or Excel.

Is the price per cabin? No. CruiseMapper shows one "from" price per person (double occupancy) per cruise, and not for every cruise. price_usd is that number, or empty.

How far ahead and back does it go? As far as CruiseMapper lists sailings: usually two to three years ahead, and recent past cruises when you set a past start date.

Can I monitor new cruises or price drops? Yes. Save a Task with onlyNew: true and compareWithPreviousRun: true and schedule it daily. New cruises and price changes come with is_new, previous_price_usd and is_price_drop.

Does it collect passenger reviews? No. Only the ship's average star rating and number of votes. No reviews, no names, no personal data.

Is it legal? It reads public pages that anyone can open without logging in. How you use the data is your responsibility under CruiseMapper's terms and the laws that apply to you.

Changelog

  • 2026-10-20: first release. Cruise search with full itineraries, ships, live fleet positions and port schedules; input of older CruiseMapper actors accepted; new cruise and price monitoring; resume after migration.

This Actor collects only publicly visible data from CruiseMapper. Independent tool, not affiliated with CruiseMapper.