Gangway AISGangway AISby Motto Marine International
DOCS · API v1
CoverageHomeSign inGet API key
Ports

Port congestionGANGWAY ONLY

GET/v1/ports/{locode}/congestion5 credits

A 0 to 100 congestion index that compares the port with its own normal: 50 is normal for this port, higher is busier, lower is quieter and 0 means none waiting. It weighs the vessels waiting at the port's anchorages now and the recent waits from anchoring to berthing, each against the port's own normal (waiting_now, normal_waiting, median_wait_h_7d and median_wait_h_30d in the answer). It is given once our sources have heard the port long enough to know its normal; until then index is null. Levels: under 35 low, 35 to 64 normal, 65 to 84 busy, 85 and over congested. With a day-by-day series: vessels at anchor, arrivals and departures (port calls, not berth shifts) and the median wait. Days our sources did not hear the port are left out, never counted as empty. The figures in the example are illustrative.

Parameters

NameDescription
locoderequired
string
UN/LOCODE, in the path.
days
integer
Days of series, 1 to 90. Default 30 (7 on the free API allowance).
curl "https://gangwayais.com/v1/ports/NLRTM/congestion?days=7" \
  -H "Authorization: Bearer $GANGWAY_KEY"
{
  "port": {
    "code": "NLRTM",
    "name": "Rotterdam",
    "country": "NL"
  },
  "index": 62,
  "level": "normal",
  "waiting_now": 41,
  "normal_waiting": 35.5,
  "median_wait_h_7d": 17.2,
  "median_wait_h_30d": 15.8,
  "arrivals_7d": 512,
  "departures_7d": 508,
  "heard_days_30": 30,
  "days": [
    {
      "date": "2026-11-01",
      "heard": true,
      "vessels_waiting_avg": 39.4,
      "vessels_at_anchor": 58,
      "arrivals": 71,
      "departures": 69,
      "median_wait_h": 16.5,
      "normal_waiting": 35.5,
      "index": 60
    }
  ]
}