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

Quickstart

From key to your first answer in about two minutes.

Get a keyRequest a free key. It starts with gw_live_ and goes in one header.
Make a requestSend it as Authorization: Bearer <key>. Try the waiting times at Rotterdam on the right.
Go furtherFollow a vessel's port calls, export a port's arrivals as CSV or pull port events into your systems.

Three questions to try

  • How long are tankers waiting off Rotterdam this week? Waiting times
  • Which vessels are arriving at Singapore and when? Port activity
  • Where has this vessel called in the last week? Port calls

For a client generator or an API tool: the OpenAPI file, without the live stream.

# 1. your key
export GANGWAY_KEY=gw_live_…

# 2. your first request
curl https://gangwayais.com/v1/ports/NLRTM/waiting \
  -H "Authorization: Bearer $GANGWAY_KEY"
{
  "port": {
    "code": "NLRTM",
    "name": "Rotterdam",
    "country": "NL"
  },
  "computed_at": "2026-11-01T12:00:00Z",
  "min_ships": 5,
  "reach_km": 40,
  "week": {
    "n": 24,
    "ships": 24,
    "enough": true,
    "median_h": 17.2,
    "p90_h": 41.5,
    "from": "2026-10-25T12:00:00Z",
    "to": "2026-11-01T12:00:00Z",
    "days": 7,
    "groups": {
      "tanker": {
        "n": 9,
        "ships": 9,
        "enough": true,
        "median_h": 17.2,
        "p90_h": 41.5
      },
      "cargo": {
        "n": 13,
        "ships": 13,
        "enough": true,
        "median_h": 17.2,
        "p90_h": 41.5
      },
      "other": {
        "n": 2,
        "ships": 2,
        "enough": false,
        "median_h": null,
        "p90_h": null
      }
    },
    "sailed_without_berthing": 1,
    "berthing_not_seen": 2
  },
  "before": {
    "n": 61,
    "ships": 61,
    "enough": true,
    "median_h": 17.2,
    "p90_h": 41.5,
    "from": "2026-10-04T12:00:00Z",
    "to": "2026-10-25T12:00:00Z",
    "days": 21,
    "groups": {
      "tanker": {
        "n": 22,
        "ships": 22,
        "enough": true,
        "median_h": 17.2,
        "p90_h": 41.5
      },
      "cargo": {
        "n": 33,
        "ships": 33,
        "enough": true,
        "median_h": 17.2,
        "p90_h": 41.5
      },
      "other": {
        "n": 6,
        "ships": 6,
        "enough": true,
        "median_h": 17.2,
        "p90_h": 41.5
      }
    },
    "sailed_without_berthing": 3,
    "berthing_not_seen": 5
  },
  "still_at_anchor": {
    "n": 6,
    "longest_h": 31.5
  },
  "attribution": {
    "barentswatch": "Gangway AIS (https://gangway.app). Data delivered by BarentsWatch. Contains data under the Norwegian licence for Open Government data (NLOD) distributed by the Norwegian Coastal Administration."
  },
  "notice": "Not for navigation. AIS data can be missing, delayed or wrong. Never use it for navigation, collision avoidance, search and rescue or any safety-of-life decision."
}