Data Methodology
A plain-language explanation of how CruiseShipTracking ingests live AIS data, how we calculate port-visit statistics, what the numbers mean — and what they don't mean.
Last reviewed: — CruiseShipTracking data team
Sample data — not total port traffic
All port-visit statistics on this site — including our Busiest Ports ranking and any “ships in port today” counts — are based on the vessels we actively track via AIS feeds, which is a subset of total maritime traffic. Our data is accurate for the ships we cover, but it is not a complete record of all cruise-ship calls at any port. Official port authority figures will differ. We frame all statistics as “in our live AIS tracking sample” accordingly.
The Automatic Identification System (AIS) is a radio-based tracking standard mandated by the International Maritime Organization (IMO) under SOLAS regulation V/19.2.4. Every passenger vessel and every commercial ship over 300 gross tonnes must carry an active Class A AIS transponder.
A transponder broadcasts a short VHF radio packet every 2–10 seconds (faster when underway, slower at anchor). The packet contains the ship's MMSI identifier, its GPS-derived position, speed over ground, heading, destination, and ETA — all in a standardised NMEA sentence format. These are not encrypted or access-controlled; any receiver within range can decode them.
Cruise ships are high-priority AIS emitters. They broadcast at the maximum 2-second interval while underway and switch to a slower ~3-minute interval when moored. This means cruise ship positions are among the most reliably updated on any AIS network.
We receive position data from the Marinesia AIS aggregation network, which combines feeds from a global network of terrestrial receivers and satellite-AIS constellations. Terrestrial receivers cover ports and coastal waters out to roughly 40–50 nautical miles. Satellite AIS provides coverage for vessels in open ocean beyond terrestrial range.
Our pipeline filters the raw feed for vessels matching our cruise-ship registry — a manually curated list of 390+ ships keyed by MMSI and IMO number. Non-cruise vessels are discarded. Positions that fail basic sanity checks (implausible speed, duplicate timestamps, coordinates outside ocean bounding boxes) are dropped before storage.
Validated positions land in our ship_positions table. Each row carries the ship identifier, timestamp, latitude, longitude, speed, heading, and destination as broadcast. We store the full time-series, not just the latest position, which enables historical analysis and port-visit inference.
Typical latency: Live ship positions on our map reflect data that is 1–5 minutes old under normal conditions. Satellite-relayed positions (open ocean) may be 5–15 minutes old. We display a “last updated” timestamp on each ship page so users can assess freshness.
A “port visit” in our database is inferred algorithmically from position history, not from a manifest or booking system. The logic:
This heuristic is reliable for major ports with clear geofences. It may under-count visits at ports with unusual layouts, or where a ship anchors offshore rather than berthing at a terminal.
We pre-compute aggregate statistics for each port across three windows: 30 days, 90 days, and 365 days. Each rollup stores total tracked visits, unique ships, unique cruise lines, day-of-week distribution, and a month-by-month breakdown. These are the numbers that power our Busiest Ports ranking and individual port seasonality pages.
Rollups are recomputed nightly. Each row carries an updated_at timestamp; our pages surface this so you can see exactly how fresh the numbers are. The 90-day window is our default for rankings because it smooths seasonal spikes while remaining responsive to recent schedule changes.
What “visits” means: One visit = one ship docking at a port on one day. A ship that calls at Cozumel 10 times in 90 days contributes 10 visits to Cozumel's total. Our unique-ships count removes duplicates.
AIS receiver density varies significantly by region. Here is an honest assessment of where our data is strong and where it has gaps.
Dense receiver coverage and high cruise-ship concentration. Port-visit data is most complete here.
Major ports (Barcelona, Civitavecchia, Piraeus, Marseille) have reliable coverage. Smaller ports may have gaps.
Southampton, Rotterdam, Hamburg covered well. Norwegian fjords may have brief blackout periods.
Limited terrestrial receiver density in southeast Alaska. We track ship positions but port-visit rollup data is sparse or unavailable for most Alaskan ports.
Growing coverage. Singapore, Sydney, Hong Kong are tracked. Smaller regional ports may be missing.
Position updates rely on satellite AIS when ships are outside terrestrial receiver range. Updates may arrive every 5–15 minutes rather than every 2–10 seconds.
When our ship pages say “in our tracking data”, that phrase has a precise meaning: the position, port-visit count, or route statistic comes from our first-party AIS database — records we collect, store, and derive ourselves from the raw transponder feed. It is not sourced from a third-party maritime directory, a cruise-line press release, or a scraped timetable.
This matters because it is data Bing, Google, and competing trackers do not have in the same form. Our ship_positions table stores every validated AIS fix we receive for the 390+ ships we track — a time-series of real coordinates, timestamps, speeds, and destinations. When a ship's page says “last seen near Cozumel on June 12, 2026 at 17:42 UTC,” that statement is backed by a row in our database, not an estimate.
Stale-but-real data: When a live fix is not available (for example, a ship that has been out of satellite and terrestrial receiver range for several days), our ship pages surface the most recent position fix we do hold — clearly labeled as “last seen [date]” rather than “live now.” A dated real coordinate from our records is more useful than a generic “tracking unavailable” message, and it is honest about its freshness. We never display estimated or interpolated positions as if they were live AIS data.
Marinesia AIS Network
Primary live position feed. Aggregates terrestrial + satellite AIS globally.
Internal ship registry
390+ cruise ships, manually curated and keyed by IMO number and MMSI. Updated when ships are built, retired, or renamed. Cross-referenced against official cruise-line fleet lists.
Port database
190+ cruise ports with manually drawn geofences, official UN/LOCODE identifiers, and terminal metadata.
Port visit inference engine
In-house algorithm (described above) that converts raw position time-series into discrete visit records stored in our port_visits table.
Port visit rollup job
Nightly batch job that aggregates visit records into the port_visit_rollups table (30d / 90d / 365d windows).
Explore the Data
The methodology above powers every number on this site. Explore our data-driven pages: