Port congestionGANGWAY ONLY
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
| Name | Description |
|---|---|
locoderequiredstring | UN/LOCODE, in the path. |
daysinteger | 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
}
]
}
