MyShipTracking Port Calls and Vessel Traffic Scraper
Pricing
from $0.80 / 1,000 record scrapeds
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
Maintained by CommunityActor 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_type | What it is | Fields filled |
|---|---|---|
in_port | A vessel currently in port | arrival time (UTC and port local), DWT, GRT, year built, length |
expected_arrival | A vessel on its way to the port | MMSI, estimated arrival (UTC) |
port_call_event | An entry in the port's recent arrival and departure log | event_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
| Field | What it does |
|---|---|
maxItems | Stop after this many rows. Required. |
countryCodes | Only ports in these countries (pick one or several). Leave empty for every port worldwide. |
recordTypes | Choose 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_utcif you keep history. - Respect the source's terms of use for your own downstream use of the data.