MyShipTracking Port Calls and Vessel Traffic Scraper avatar

MyShipTracking Port Calls and Vessel Traffic Scraper

Pricing

from $0.80 / 1,000 record scrapeds

Go to Apify Store
MyShipTracking Port Calls and Vessel Traffic Scraper

MyShipTracking Port Calls and Vessel Traffic Scraper

Port by port vessel traffic from MyShipTracking. Vessels currently in port, expected arrivals with ETA and MMSI, and the recent arrival and departure log, for about 7,000 ports worldwide.

Pricing

from $0.80 / 1,000 record scrapeds

Rating

0.0

(0)

Developer

BowTiedRaccoon

BowTiedRaccoon

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

13 hours ago

Last modified

Categories

Share

Port-by-port vessel traffic from MyShipTracking for about 7,000 ports worldwide. For each port you get three views of the same harbour as flat, ready-to-load rows: the vessels currently in port, the queue of expected arrivals, and the recent arrival and departure log. It is the data behind port congestion, berth turnaround and ETA monitoring.

What you get

Every row is one vessel at one port, tagged with record_type:

record_typeWhat it isFields filled
in_portA vessel currently in portarrival time (UTC and port local), DWT, GRT, year built, length
expected_arrivalA vessel on its way to the portMMSI, estimated arrival (UTC)
port_call_eventAn entry in the port's recent arrival and departure logevent_type (ARRIVAL or DEPARTURE), event_time_utc

Every row also carries the port itself (name, id, UN/LOCODE, country, latitude, longitude, area size class, timezone, page URL) and the vessel (name, flag, MMSI, IMO when known, vessel page URL).

Sparse by design: tonnage, year built and length are published only for some vessels, and small craft often have none. Missing values are null, never zero. Timestamps are ISO 8601 in UTC (2026-10-23T16:16:00Z); arrived_at_local is the port's own clock without a zone suffix.

Example row

{
"port_name": "AALBORG",
"port_id": 80,
"port_unlocode": "DKAAL",
"port_country": "Denmark",
"port_country_code": "DK",
"port_latitude": 57.0599,
"port_longitude": 9.96008,
"port_timezone": "Europe/Copenhagen",
"record_type": "port_call_event",
"vessel_name": "MERIT",
"vessel_flag": "GI",
"mmsi": 236108000,
"imo": 9197789,
"event_type": "DEPARTURE",
"event_time_utc": "2026-10-23T15:48:00Z"
}

Input

FieldWhat it does
maxItemsStop after this many rows. Required.
countryCodesOnly ports in these countries (pick one or several). Leave empty for every port worldwide.
recordTypesChoose any of the three tables. Leave empty for all three.

Ports are visited in a fixed order, about 700 ports an hour. A single port page usually yields dozens of rows, so a small maxItems finishes within a minute. For a complete worldwide pass, raise maxItems and the run timeout, or split the job by country.

Resuming a large crawl

Every run reports a resumeCursor in its Output. To continue a long run where it stopped, without paying again for rows you already have, paste that value into the resumeCursor input of a new run. Resume promptly: a previous run's data expires with your account's retention window.

Use cases

  • Port congestion and berth-turnaround tracking for freight forwarders and commodity desks
  • ETA queues for bunkering, agency and stevedoring planning
  • Building a vessel call history by sampling a port's arrival and departure log on a schedule
  • Joining MMSI and IMO to your fleet or sanctions lists

Notes

  • Data reflects what MyShipTracking publishes at the moment of the run. The in-port, expected and event tables are live and change continuously.
  • The arrival and departure log is a rolling window, so schedule recurring runs and de-duplicate on port_id + mmsi + event_type + event_time_utc if you keep history.
  • Respect the source's terms of use for your own downstream use of the data.