CruiseMapper Scraper - Cruises, Itineraries & Ship Tracker
Pricing
from $1.14 / 1,000 result delivereds
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
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 }
| Field | What it does |
|---|---|
mode | cruises (default), ships, fleetPositions, portSchedule |
startUrls | Cruise finder, ship, cruise line or port links from cruisemapper.com |
region | Destination region (Caribbean, Mediterranean, Alaska, Europe rivers and 20 more) |
startDate, endDate, daysAhead | Departure date window |
shipName, cruiseLine, departurePort, portOfCall | Names as on CruiseMapper, any capitalization |
cruiseLength | any, 1-2, 3-5, 6-10, 11-14, 15+ nights |
shipType | any, ocean, river |
cruiseType | transatlantic, world, christmas, repositioning seasons and more |
maxPricePerPerson | Lowest advertised price per person, US dollars |
includeItinerary | Full itinerary per cruise (default on) |
shipNames, includeShipDetails, includeUpcomingCruises | Ships mode |
ports, month, numberOfMonths | Port schedule mode |
maxItems | Results per search, ship list or port (50 when empty) |
onlyNew, compareWithPreviousRun | Monitoring 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 send | Read 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_call | shipName, 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_details | ships mode for that line |
searchType (cruises, ports), startDate, endDate, shipName, departurePort, maxResults, startUrls | same 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
| Field | Meaning |
|---|---|
id, cruise_url, ship_name, ship_id, ship_url, line_name | Cruise and ship identity |
departure_date, return_date, duration_nights, trip_type | Dates and length (round-trip or one-way) |
departure_port, arrival_port, departure_time, arrival_time | Where and when it leaves and ends |
price_usd, cruise_price | Lowest advertised price per person ("from"), number and text |
stops | Every stop: type, date, arrival, departure, port, country, country code, port id and link |
ports_of_call, countries, stop_count | Itinerary summary |
ship_type | ocean 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)
| Code | When |
|---|---|
INVALID_INPUT | Unknown ship, line, port or region; a date that is not a date; a link from another site |
NOT_FOUND | A ship, line or port page that does not exist |
NO_RESULTS | Nothing matches your filters in your dates |
BLOCKED | CruiseMapper did not answer after retries; run again |
NOT_REACHED | The run timeout or the cost guard came before this input |
Pricing
Pay per event, no monthly fee:
| Event | Price |
|---|---|
| Result delivered (cruise, ship, ship position or port call) | US$ 1.50 per 1,000 |
| Run start | US$ 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 ApifyClientclient = 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.