MarineTraffic Ports Information API

The Ports Information API from MarineTraffic — 4 operation(s) for ports information.

Operations 4

GET /expectedarrivals/{api_key} Expected Port Arrivals #
GET /expectedarrivals/{api_key} Expected Country Arrivals #
GET /predictive-arrivals/{api_key} Predictive Port Arrivals #
GET /port-congestion/{api_key} Port Congestion #

Documentation

Specifications

Schemas & Data

Other Resources

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/marine-traffic-ports-information-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

marine-traffic-ports-information-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: MarineTraffic Events AIS Ports Information API
  version: 1.0.0
  description: Port calls, berth calls, and event timelines for single vessels and entire ports — surfacing every arrival, departure, and berth touch detected by the global AIS network.
  contact:
    name: MarineTraffic
    url: https://www.marinetraffic.com/
servers:
- url: https://services.marinetraffic.com/api
tags:
- name: Ports Information
paths:
  /expectedarrivals/{api_key}:
    get:
      tags:
      - Ports Information
      summary: Expected Port Arrivals
      description: "Get expected arrivals to a specific port. </br></br> <b>Notes</b> <ul>\n    <li>**SPEED** returned in (knots x10) and **TIMESTAMP** in UTC</li>\n    <li>Use either **TIMESPAN** or **FROMDATE/TODATE** in order to look for expected arrivals in a specific date range</li>\n    <li>Information about <a href=\"https://support.marinetraffic.com/en/articles/9552860-what-kind-of-information-is-ais-transmitted\">AIS-transmitted data</a></li>\n    <li>The <b>frequency of allowed API calls</b> is specific to your API key and is detailed in your contract as a number of successful calls per time period. For example “2 calls per minute”. </br>Regardless of this agreed limit, each API key is technically restricted to a maximum of 100 total (including successful and unsuccessful) requests per minute to ensure system stability.</li>\n</ul>"
      operationId: expectedarrivals
      parameters:
      - $ref: '#/components/parameters/api_key'
      - $ref: '#/components/parameters/v_VI02'
      - $ref: '#/components/parameters/portid_VI02'
      - $ref: '#/components/parameters/timespan_VI02'
      - $ref: '#/components/parameters/days_last_signal_VI02'
      - $ref: '#/components/parameters/fromdate_VI02'
      - $ref: '#/components/parameters/todate_VI02'
      - $ref: '#/components/parameters/fromportid_VI02'
      - $ref: '#/components/parameters/shiptype_VI02'
      - $ref: '#/components/parameters/dwt_min_VI02'
      - $ref: '#/components/parameters/dwt_max_VI02'
      - $ref: '#/components/parameters/gt_min_VI02'
      - $ref: '#/components/parameters/gt_max_VI02'
      - $ref: '#/components/parameters/msgtype_VI02'
      - $ref: '#/components/parameters/protocol_new'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/200_vi02_default'
                - $ref: '#/components/schemas/200_vi02_extended'
            application/xml:
              schema:
                oneOf:
                - $ref: '#/components/schemas/200_vi02_default'
                - $ref: '#/components/schemas/200_vi02_extended'
              examples:
                Default:
                  summary: Simple
                  value: "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<ETA>\n    <VESSEL_ETA MMSI=\"229001000\" IMO=\"7827213\" SHIP_ID=\"\" SHIPNAME=\"\" LAT=\"37.938690\" LON=\"23.634480\" SPEED=\"0\" COURSE=\"129\" STATUS=\"5\" PORT_ID=\"1\" PORT_UNLOCODE=\"GRPIR\" CURRENT_PORT=\"PIRAEUS\" CURRENT_PORT_COUNTRY=\"GR\" NEXT_PORT_ID=\"1\" NEXT_PORT_UNLOCODE=\"GRPIR\" NEXT_PORT_NAME=\"PIRAEUS\" NEXT_PORT_COUNTRY=\"GR\" ETA=\"2021-03-14T05:40:00\" ETA_CALC=\"\" ETA_UPDATED=\"\" TIMESTAMP=\"2020-10-30T08:58:08\"/>\n    <VESSEL_ETA MMSI=\"201100129\" IMO=\"\" SHIP_ID=\"\" SHIPNAME=\"\" LAT=\"37.943630\" LON=\"23.631900\" SPEED=\"0\" COURSE=\"0\" STATUS=\"5\" PORT_ID=\"1\" PORT_UNLOCODE=\"GRPIR\" CURRENT_PORT=\"PIRAEUS\" CURRENT_PORT_COUNTRY=\"GR\" NEXT_PORT_ID=\"\" NEXT_PORT_UNLOCODE=\"\" NEXT_PORT_NAME=\"\" NEXT_PORT_COUNTRY=\"\" ETA=\"2020-10-26T08:00:00\" ETA_CALC=\"\" ETA_UPDATED=\"\" TIMESTAMP=\"2020-10-30T08:57:24\"/>\n    <VESSEL_ETA MMSI=\"636092659\" IMO=\"\" SHIP_ID=\"\" SHIPNAME=\"\" LAT=\"37.949450\" LON=\"23.601120\" SPEED=\"0\" COURSE=\"0\" STATUS=\"5\" PORT_ID=\"1\" PORT_UNLOCODE=\"GRPIR\" CURRENT_PORT=\"PIRAEUS\" CURRENT_PORT_COUNTRY=\"GR\" NEXT_PORT_ID=\"1\" NEXT_PORT_UNLOCODE=\"GRPIR\" NEXT_PORT_NAME=\"PIRAEUS\" NEXT_PORT_COUNTRY=\"GR\" ETA=\"2020-10-18T10:00:00\" ETA_CALC=\"\" ETA_UPDATED=\"\" TIMESTAMP=\"2020-10-30T08:55:08\"/>\n    <VESSEL_ETA MMSI=\"241683000\" IMO=\"\" SHIP_ID=\"\" SHIPNAME=\"\" LAT=\"37.949330\" LON=\"23.599670\" SPEED=\"0\" COURSE=\"333\" STATUS=\"5\" PORT_ID=\"1\" PORT_UNLOCODE=\"GRPIR\" CURRENT_PORT=\"PIRAEUS\" CURRENT_PORT_COUNTRY=\"GR\" NEXT_PORT_ID=\"1\" NEXT_PORT_UNLOCODE=\"GRPIR\" NEXT_PORT_NAME=\"PIRAEUS\" NEXT_PORT_COUNTRY=\"GR\" ETA=\"2020-09-08T12:00:00\" ETA_CALC=\"\" ETA_UPDATED=\"\" TIMESTAMP=\"2020-10-30T09:00:03\"/>\n    <VESSEL_ETA MMSI=\"241654000\" IMO=\"\" SHIP_ID=\"\" SHIPNAME=\"\" LAT=\"37.952920\" LON=\"23.581480\" SPEED=\"0\" COURSE=\"106\" STATUS=\"5\" PORT_ID=\"1\" PORT_UNLOCODE=\"GRPIR\" CURRENT_PORT=\"PIRAEUS\" CURRENT_PORT_COUNTRY=\"GR\" NEXT_PORT_ID=\"1\" NEXT_PORT_UNLOCODE=\"GRPIR\" NEXT_PORT_NAME=\"PIRAEUS\" NEXT_PORT_COUNTRY=\"GR\" ETA=\"2020-05-07T11:00:00\" ETA_CALC=\"\" ETA_UPDATED=\"\" TIMESTAMP=\"2020-10-30T08:57:57\"/>\n</ETA>"
                Extended:
                  summary: Extended
                  value: "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<ETA>\n    <VESSEL_ETA IMO=\"7827213\" MMSI=\"229001000\" SHIPNAME=\"CELESTYAL CRYSTAL\" SHIP_ID=\"\" TYPE_NAME=\"Passenger Ship\" SHIPTYPE=\"36\" CALLSIGN=\"9HA2978\" FLAG=\"MT\" LENGTH=\"162\" WIDTH=\"24\" DRAUGHT=\"61\" GRT=\"25611\" DWT=\"1703\" YEAR_BUILT=\"1980\" LAT=\"37.938690\" LON=\"23.634480\" SPEED=\"0\" COURSE=\"129\" STATUS=\"5\" ETA=\"2021-03-14T05:40:00\" ETA_CALC=\"\" ETA_UPDATED=\"\" LAST_PORT_ID=\"17208\" LAST_PORT=\"KUSADASI\" LAST_PORT_UNLOCODE=\"TRKUS\" LAST_PORT_COUNTRY=\"TR\" LAST_PORT_TIME=\"2020-03-13T17:38:00\" PORT_ID=\"1\" PORT_UNLOCODE=\"GRPIR\" CURRENT_PORT=\"PIRAEUS\" CURRENT_PORT_COUNTRY=\"GR\" NEXT_PORT_ID=\"1\" NEXT_PORT_UNLOCODE=\"GRPIR\" NEXT_PORT_NAME=\"PIRAEUS\" NEXT_PORT_COUNTRY=\"GR\" TIMESTAMP=\"2020-10-30T08:58:08\"/>\n    <VESSEL_ETA IMO=\"8843886\" MMSI=\"201100129\" SHIPNAME=\"EDRO IV\" SHIP_ID=\"\" TYPE_NAME=\"General Cargo\" SHIPTYPE=\"0\" CALLSIGN=\"ZADL2\" FLAG=\"AL\" LENGTH=\"89.97\" WIDTH=\"12.37\" DRAUGHT=\"34\" GRT=\"2138\" DWT=\"2850\" YEAR_BUILT=\"1983\" LAT=\"37.943630\" LON=\"23.631900\" SPEED=\"0\" COURSE=\"0\" STATUS=\"5\" ETA=\"2020-10-26T08:00:00\" ETA_CALC=\"\" ETA_UPDATED=\"\" LAST_PORT_ID=\"118\" LAST_PORT=\"VALLETTA\" LAST_PORT_UNLOCODE=\"MTMLA\" LAST_PORT_COUNTRY=\"MT\" LAST_PORT_TIME=\"2020-10-21T16:41:00\" PORT_ID=\"1\" PORT_UNLOCODE=\"GRPIR\" CURRENT_PORT=\"PIRAEUS\" CURRENT_PORT_COUNTRY=\"GR\" NEXT_PORT_ID=\"\" NEXT_PORT_UNLOCODE=\"\" NEXT_PORT_NAME=\"\" NEXT_PORT_COUNTRY=\"\" TIMESTAMP=\"2020-10-30T08:57:24\"/>\n    <VESSEL_ETA IMO=\"9394040\" MMSI=\"636092659\" SHIPNAME=\"NORIENT SATURN\" SHIP_ID=\"\" TYPE_NAME=\"Oil/Chemical Tanker\" SHIPTYPE=\"80\" CALLSIGN=\"D5JP2\" FLAG=\"LR\" LENGTH=\"180\" WIDTH=\"32.24\" DRAUGHT=\"68\" GRT=\"25864\" DWT=\"40435\" YEAR_BUILT=\"2007\" LAT=\"37.949450\" LON=\"23.601120\" SPEED=\"0\" COURSE=\"0\" STATUS=\"5\" ETA=\"2020-10-18T10:00:00\" ETA_CALC=\"\" ETA_UPDATED=\"\" LAST_PORT_ID=\"1351\" LAST_PORT=\"ALGER\" LAST_PORT_UNLOCODE=\"DZALG\" LAST_PORT_COUNTRY=\"DZ\" LAST_PORT_TIME=\"2020-10-14T11:28:00\" PORT_ID=\"1\" PORT_UNLOCODE=\"GRPIR\" CURRENT_PORT=\"PIRAEUS\" CURRENT_PORT_COUNTRY=\"GR\" NEXT_PORT_ID=\"1\" NEXT_PORT_UNLOCODE=\"GRPIR\" NEXT_PORT_NAME=\"PIRAEUS\" NEXT_PORT_COUNTRY=\"GR\" TIMESTAMP=\"2020-10-30T08:55:08\"/>\n    <VESSEL_ETA IMO=\"9087867\" MMSI=\"241683000\" SHIPNAME=\"AITENS\" SHIP_ID=\"\" TYPE_NAME=\"Oil Products Tanker\" SHIPTYPE=\"80\" CALLSIGN=\"SVCU7\" FLAG=\"GR\" LENGTH=\"104.7\" WIDTH=\"15.4\" DRAUGHT=\"50\" GRT=\"3586\" DWT=\"5196\" YEAR_BUILT=\"1993\" LAT=\"37.949330\" LON=\"23.599670\" SPEED=\"0\" COURSE=\"333\" STATUS=\"5\" ETA=\"2020-09-08T12:00:00\" ETA_CALC=\"\" ETA_UPDATED=\"\" LAST_PORT_ID=\"23935\" LAST_PORT=\"KALI LIMENES ANCH\" LAST_PORT_UNLOCODE=\"\" LAST_PORT_COUNTRY=\"GR\" LAST_PORT_TIME=\"2020-09-07T15:11:00\" PORT_ID=\"1\" PORT_UNLOCODE=\"GRPIR\" CURRENT_PORT=\"PIRAEUS\" CURRENT_PORT_COUNTRY=\"GR\" NEXT_PORT_ID=\"1\" NEXT_PORT_UNLOCODE=\"GRPIR\" NEXT_PORT_NAME=\"PIRAEUS\" NEXT_PORT_COUNTRY=\"GR\" TIMESTAMP=\"2020-10-30T09:00:03\"/>\n    <VESSEL_ETA IMO=\"9036868\" MMSI=\"241654000\" SHIPNAME=\"APTERA\" SHIP_ID=\"\" TYPE_NAME=\"Oil Products Tanker\" SHIPTYPE=\"80\" CALLSIGN=\"SVDE7\" FLAG=\"GR\" LENGTH=\"105.02\" WIDTH=\"15.5\" DRAUGHT=\"58\" GRT=\"2975\" DWT=\"5260\" YEAR_BUILT=\"1991\" LAT=\"37.952920\" LON=\"23.581480\" SPEED=\"0\" COURSE=\"106\" STATUS=\"5\" ETA=\"2020-05-07T11:00:00\" ETA_CALC=\"\" ETA_UPDATED=\"\" LAST_PORT_ID=\"1\" LAST_PORT=\"PIRAEUS\" LAST_PORT_UNLOCODE=\"GRPIR\" LAST_PORT_COUNTRY=\"GR\" LAST_PORT_TIME=\"2020-10-27T18:36:00\" PORT_ID=\"1\" PORT_UNLOCODE=\"GRPIR\" CURRENT_PORT=\"PIRAEUS\" CURRENT_PORT_COUNTRY=\"GR\" NEXT_PORT_ID=\"1\" NEXT_PORT_UNLOCODE=\"GRPIR\" NEXT_PORT_NAME=\"PIRAEUS\" NEXT_PORT_COUNTRY=\"GR\" TIMESTAMP=\"2020-10-30T08:57:57\"/>\n</ETA>"
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/400_vi02_missing_or_invalid_port_identifier'
            application/xml:
              schema:
                $ref: '#/components/schemas/400_vi02_missing_or_invalid_port_identifier'
              examples:
                Missing or invalid port identifier:
                  summary: Missing or invalid port identifier
                  value: "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<RESPONSE>\n    <STATUS>\n        <ERROR CODE=\"2a5\" DESCRIPTION=\"PORT OR COUNTRY MISSING\"/>\n    </STATUS>\n</RESPONSE>"
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/429_too_many_requests'
            application/xml:
              schema:
                $ref: '#/components/schemas/429_too_many_requests'
              examples:
                Area out of bound:
                  summary: Too Many Requests
                  value: "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<RESPONSE>\n    <STATUS>\n        <ERROR CODE=\"1r\" DESCRIPTION=\"TOO MANY REQUESTS\"/>\n    </STATUS>\n</RESPONSE>"
  '/expectedarrivals/{api_key} ':
    get:
      tags:
      - Ports Information
      summary: Expected Country Arrivals
      description: "Get expected arrivals to a specific country. </br></br> <b>Notes</b> <ul>\n    <li>**SPEED** returned in (knots x10) and **TIMESTAMP** in UTC</li>\n    <li>Use either **TIMESPAN** or **FROMDATE/TODATE** in order to look for expected arrivals in a specific date range</li>\n    <li>Information about <a href=\"https://support.marinetraffic.com/en/articles/9552860-what-kind-of-information-is-ais-transmitted\">AIS-transmitted data</a></li>\n    <li>The <b>frequency of allowed API calls</b> is specific to your API key and is detailed in your contract as a number of successful calls per time period. For example “2 calls per minute”. </br>Regardless of this agreed limit, each API key is technically restricted to a maximum of 100 total (including successful and unsuccessful) requests per minute to ensure system stability.</li>\n</ul>"
      operationId: expectedarrivals_
      parameters:
      - $ref: '#/components/parameters/api_key'
      - $ref: '#/components/parameters/v_VI02'
      - $ref: '#/components/parameters/country_VI02'
      - $ref: '#/components/parameters/timespan_VI02'
      - $ref: '#/components/parameters/days_last_signal_VI02'
      - $ref: '#/components/parameters/fromdate_VI02'
      - $ref: '#/components/parameters/todate_VI02'
      - $ref: '#/components/parameters/fromportid_VI02'
      - $ref: '#/components/parameters/shiptype_VI02'
      - $ref: '#/components/parameters/dwt_min_VI02'
      - $ref: '#/components/parameters/dwt_max_VI02'
      - $ref: '#/components/parameters/gt_min_VI02'
      - $ref: '#/components/parameters/gt_max_VI02'
      - $ref: '#/components/parameters/msgtype_VI02'
      - $ref: '#/components/parameters/protocol_new'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/200_vi02_default'
                - $ref: '#/components/schemas/200_vi02_extended'
            application/xml:
              schema:
                oneOf:
                - $ref: '#/components/schemas/200_vi02_default'
                - $ref: '#/components/schemas/200_vi02_extended'
              examples:
                Default:
                  summary: Simple
                  value: "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<ETA>\n    <VESSEL_ETA MMSI=\"229001000\" IMO=\"\" SHIP_ID=\"\" SHIPNAME=\"\" LAT=\"37.938690\" LON=\"23.634480\" SPEED=\"0\" COURSE=\"129\" STATUS=\"5\" PORT_ID=\"1\" PORT_UNLOCODE=\"GRPIR\" CURRENT_PORT=\"PIRAEUS\" CURRENT_PORT_COUNTRY=\"GR\" NEXT_PORT_ID=\"1\" NEXT_PORT_UNLOCODE=\"GRPIR\" NEXT_PORT_NAME=\"PIRAEUS\" NEXT_PORT_COUNTRY=\"GR\" ETA=\"2021-03-14T05:40:00\" ETA_CALC=\"\" ETA_UPDATED=\"\" TIMESTAMP=\"2020-10-30T08:58:08\"/>\n    <VESSEL_ETA MMSI=\"201100129\" IMO=\"\" SHIP_ID=\"\" SHIPNAME=\"\" LAT=\"37.943630\" LON=\"23.631900\" SPEED=\"0\" COURSE=\"0\" STATUS=\"5\" PORT_ID=\"1\" PORT_UNLOCODE=\"GRPIR\" CURRENT_PORT=\"PIRAEUS\" CURRENT_PORT_COUNTRY=\"GR\" NEXT_PORT_ID=\"\" NEXT_PORT_UNLOCODE=\"\" NEXT_PORT_NAME=\"\" NEXT_PORT_COUNTRY=\"\" ETA=\"2020-10-26T08:00:00\" ETA_CALC=\"\" ETA_UPDATED=\"\" TIMESTAMP=\"2020-10-30T08:57:24\"/>\n    <VESSEL_ETA MMSI=\"636092659\" IMO=\"\" SHIP_ID=\"\" SHIPNAME=\"\" LAT=\"37.949450\" LON=\"23.601120\" SPEED=\"0\" COURSE=\"0\" STATUS=\"5\" PORT_ID=\"1\" PORT_UNLOCODE=\"GRPIR\" CURRENT_PORT=\"PIRAEUS\" CURRENT_PORT_COUNTRY=\"GR\" NEXT_PORT_ID=\"1\" NEXT_PORT_UNLOCODE=\"GRPIR\" NEXT_PORT_NAME=\"PIRAEUS\" NEXT_PORT_COUNTRY=\"GR\" ETA=\"2020-10-18T10:00:00\" ETA_CALC=\"\" ETA_UPDATED=\"\" TIMESTAMP=\"2020-10-30T08:55:08\"/>\n    <VESSEL_ETA MMSI=\"241683000\" IMO=\"\" SHIP_ID=\"\" SHIPNAME=\"\" =\"37.949330\" LON=\"23.599670\" SPEED=\"0\" COURSE=\"333\" STATUS=\"5\" PORT_ID=\"1\" PORT_UNLOCODE=\"GRPIR\" CURRENT_PORT=\"PIRAEUS\" CURRENT_PORT_COUNTRY=\"GR\" NEXT_PORT_ID=\"1\" NEXT_PORT_UNLOCODE=\"GRPIR\" NEXT_PORT_NAME=\"PIRAEUS\" NEXT_PORT_COUNTRY=\"GR\" ETA=\"2020-09-08T12:00:00\" ETA_CALC=\"\" ETA_UPDATED=\"\" TIMESTAMP=\"2020-10-30T09:00:03\"/>\n    <VESSEL_ETA MMSI=\"241654000\" IMO=\"\" SHIP_ID=\"\" SHIPNAME=\"\" LAT=\"37.952920\" LON=\"23.581480\" SPEED=\"0\" COURSE=\"106\" STATUS=\"5\" PORT_ID=\"1\" PORT_UNLOCODE=\"GRPIR\" CURRENT_PORT=\"PIRAEUS\" CURRENT_PORT_COUNTRY=\"GR\" NEXT_PORT_ID=\"1\" NEXT_PORT_UNLOCODE=\"GRPIR\" NEXT_PORT_NAME=\"PIRAEUS\" NEXT_PORT_COUNTRY=\"GR\" ETA=\"2020-05-07T11:00:00\" ETA_CALC=\"\" ETA_UPDATED=\"\" TIMESTAMP=\"2020-10-30T08:57:57\"/>\n</ETA>"
                Extended:
                  summary: Extended
                  value: "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<ETA>\n    <VESSEL_ETA IMO=\"7827213\" MMSI=\"229001000\" SHIPNAME=\"CELESTYAL CRYSTAL\" SHIP_ID=\"\" TYPE_NAME=\"Passenger Ship\" SHIPTYPE=\"36\" CALLSIGN=\"9HA2978\" FLAG=\"MT\" LENGTH=\"162\" WIDTH=\"24\" DRAUGHT=\"61\" GRT=\"25611\" DWT=\"1703\" YEAR_BUILT=\"1980\" LAT=\"37.938690\" LON=\"23.634480\" SPEED=\"0\" COURSE=\"129\" STATUS=\"5\" ETA=\"2021-03-14T05:40:00\" ETA_CALC=\"\" ETA_UPDATED=\"\" LAST_PORT_ID=\"17208\" LAST_PORT=\"KUSADASI\" LAST_PORT_UNLOCODE=\"TRKUS\" LAST_PORT_COUNTRY=\"TR\" LAST_PORT_TIME=\"2020-03-13T17:38:00\" PORT_ID=\"1\" PORT_UNLOCODE=\"GRPIR\" CURRENT_PORT=\"PIRAEUS\" CURRENT_PORT_COUNTRY=\"GR\" NEXT_PORT_ID=\"1\" NEXT_PORT_UNLOCODE=\"GRPIR\" NEXT_PORT_NAME=\"PIRAEUS\" NEXT_PORT_COUNTRY=\"GR\" TIMESTAMP=\"2020-10-30T08:58:08\"/>\n    <VESSEL_ETA IMO=\"8843886\" MMSI=\"201100129\" SHIPNAME=\"EDRO IV\" SHIP_ID=\"\" TYPE_NAME=\"General Cargo\" SHIPTYPE=\"0\" CALLSIGN=\"ZADL2\" FLAG=\"AL\" LENGTH=\"89.97\" WIDTH=\"12.37\" DRAUGHT=\"34\" GRT=\"2138\" DWT=\"2850\" YEAR_BUILT=\"1983\" LAT=\"37.943630\" LON=\"23.631900\" SPEED=\"0\" COURSE=\"0\" STATUS=\"5\" ETA=\"2020-10-26T08:00:00\" ETA_CALC=\"\" ETA_UPDATED=\"\" LAST_PORT_ID=\"118\" LAST_PORT=\"VALLETTA\" LAST_PORT_UNLOCODE=\"MTMLA\" LAST_PORT_COUNTRY=\"MT\" LAST_PORT_TIME=\"2020-10-21T16:41:00\" PORT_ID=\"1\" PORT_UNLOCODE=\"GRPIR\" CURRENT_PORT=\"PIRAEUS\" CURRENT_PORT_COUNTRY=\"GR\" NEXT_PORT_ID=\"\" NEXT_PORT_UNLOCODE=\"\" NEXT_PORT_NAME=\"\" NEXT_PORT_COUNTRY=\"\" TIMESTAMP=\"2020-10-30T08:57:24\"/>\n    <VESSEL_ETA IMO=\"9394040\" MMSI=\"636092659\" SHIPNAME=\"NORIENT SATURN\" SHIP_ID=\"\" TYPE_NAME=\"Oil/Chemical Tanker\" SHIPTYPE=\"80\" CALLSIGN=\"D5JP2\" FLAG=\"LR\" LENGTH=\"180\" WIDTH=\"32.24\" DRAUGHT=\"68\" GRT=\"25864\" DWT=\"40435\" YEAR_BUILT=\"2007\" LAT=\"37.949450\" LON=\"23.601120\" SPEED=\"0\" COURSE=\"0\" STATUS=\"5\" ETA=\"2020-10-18T10:00:00\" ETA_CALC=\"\" ETA_UPDATED=\"\" LAST_PORT_ID=\"1351\" LAST_PORT=\"ALGER\" LAST_PORT_UNLOCODE=\"DZALG\" LAST_PORT_COUNTRY=\"DZ\" LAST_PORT_TIME=\"2020-10-14T11:28:00\" PORT_ID=\"1\" PORT_UNLOCODE=\"GRPIR\" CURRENT_PORT=\"PIRAEUS\" CURRENT_PORT_COUNTRY=\"GR\" NEXT_PORT_ID=\"1\" NEXT_PORT_UNLOCODE=\"GRPIR\" NEXT_PORT_NAME=\"PIRAEUS\" NEXT_PORT_COUNTRY=\"GR\" TIMESTAMP=\"2020-10-30T08:55:08\"/>\n    <VESSEL_ETA IMO=\"9087867\" MMSI=\"241683000\" SHIPNAME=\"AITENS\" SHIP_ID=\"\" =\"Oil Products Tanker\" SHIPTYPE=\"80\" CALLSIGN=\"SVCU7\" FLAG=\"GR\" LENGTH=\"104.7\" WIDTH=\"15.4\" DRAUGHT=\"50\" GRT=\"3586\" DWT=\"5196\" YEAR_BUILT=\"1993\" LAT=\"37.949330\" LON=\"23.599670\" SPEED=\"0\" COURSE=\"333\" STATUS=\"5\" ETA=\"2020-09-08T12:00:00\" ETA_CALC=\"\" ETA_UPDATED=\"\" LAST_PORT_ID=\"23935\" LAST_PORT=\"KALI LIMENES ANCH\" LAST_PORT_UNLOCODE=\"\" LAST_PORT_COUNTRY=\"GR\" LAST_PORT_TIME=\"2020-09-07T15:11:00\" PORT_ID=\"1\" PORT_UNLOCODE=\"GRPIR\" CURRENT_PORT=\"PIRAEUS\" CURRENT_PORT_COUNTRY=\"GR\" NEXT_PORT_ID=\"1\" NEXT_PORT_UNLOCODE=\"GRPIR\" NEXT_PORT_NAME=\"PIRAEUS\" NEXT_PORT_COUNTRY=\"GR\" TIMESTAMP=\"2020-10-30T09:00:03\"/>\n    <VESSEL_ETA IMO=\"9036868\" MMSI=\"241654000\" SHIPNAME=\"APTERA\" SHIP_ID=\"\" TYPE_NAME=\"Oil Products Tanker\" SHIPTYPE=\"80\" CALLSIGN=\"SVDE7\" FLAG=\"GR\" LENGTH=\"105.02\" WIDTH=\"15.5\" DRAUGHT=\"58\" GRT=\"2975\" DWT=\"5260\" YEAR_BUILT=\"1991\" LAT=\"37.952920\" LON=\"23.581480\" SPEED=\"0\" COURSE=\"106\" STATUS=\"5\" ETA=\"2020-05-07T11:00:00\" ETA_CALC=\"\" ETA_UPDATED=\"\" LAST_PORT_ID=\"1\" LAST_PORT=\"PIRAEUS\" LAST_PORT_UNLOCODE=\"GRPIR\" LAST_PORT_COUNTRY=\"GR\" LAST_PORT_TIME=\"2020-10-27T18:36:00\" PORT_ID=\"1\" PORT_UNLOCODE=\"GRPIR\" CURRENT_PORT=\"PIRAEUS\" CURRENT_PORT_COUNTRY=\"GR\" NEXT_PORT_ID=\"1\" NEXT_PORT_UNLOCODE=\"GRPIR\" NEXT_PORT_NAME=\"PIRAEUS\" NEXT_PORT_COUNTRY=\"GR\" TIMESTAMP=\"2020-10-30T08:57:57\"/>\n</ETA>"
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/400_vi02_missing_or_invalid_port_identifier'
            application/xml:
              schema:
                $ref: '#/components/schemas/400_vi02_missing_or_invalid_port_identifier'
              examples:
                Missing or invalid port identifier:
                  summary: Missing or invalid port identifier
                  value: "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<RESPONSE>\n    <STATUS>\n        <ERROR CODE=\"2a5\" DESCRIPTION=\"PORT OR COUNTRY MISSING\"/>\n    </STATUS>\n</RESPONSE>"
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/429_too_many_requests'
            application/xml:
              schema:
                $ref: '#/components/schemas/429_too_many_requests'
              examples:
                Area out of bound:
                  summary: Too Many Requests
                  value: "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<RESPONSE>\n    <STATUS>\n        <ERROR CODE=\"1r\" DESCRIPTION=\"TOO MANY REQUESTS\"/>\n    </STATUS>\n</RESPONSE>"
  /predictive-arrivals/{api_key}:
    get:
      tags:
      - Ports Information
      summary: Predictive Port Arrivals
      description: "Receive a prediction of the vessels likely to arrive to a specific port. </br></br> <b>Notes</b> <ul>\n    <li>More information about input parameters: <a href=\"https://support.marinetraffic.com/en/articles/9552918-how-does-marinetraffic-categorise-commercial-market-and-commercial-size-class\">MARKET</a>, <a href=\"https://support.marinetraffic.com/en/articles/9552918-how-does-marinetraffic-categorise-commercial-market-and-commercial-size-class\">SHIPCLASS</a></li>\n    <li>The <b>frequency of allowed API calls</b> is specific to your API key and is detailed in your contract as a number of successful calls per time period. For example “2 calls per minute”. </br>Regardless of this agreed limit, each API key is technically restricted to a maximum of 100 total (including successful and unsuccessful) requests per minute to ensure system stability.</li>\n</ul>"
      operationId: predictive-arrivals
      parameters:
      - $ref: '#/components/parameters/api_key'
      - $ref: '#/components/parameters/portid_VI05'
      - $ref: '#/components/parameters/market_VI05'
      - $ref: '#/components/parameters/shipclass_VI05'
      - $ref: '#/components/parameters/probability_VI05'
      - $ref: '#/components/parameters/protocol'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/200_vi05_default'
            application/xml:
              schema:
                $ref: '#/components/schemas/200_vi05_default'
              examples:
                Default:
                  summary: Simple
                  value: "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<PredictiveArrivals>\n    <PredictiveArrival IMO=\"9020340\" SHIP_ID=\"337987\" MMSI=\"271041000\" SHIPNAME=\"MARTINE A\" MARKET=\"CONTAINER SHIPS\" SHIPCLASS=\"FEEDER\" FROM_PORT_ID=\"1379\" FROM_PORT=\"BIZERTE\" NEXT_PORT_ID=\"1\" NEXT_PORT=\"PIRAEUS\" NEXT_AREA=\"EMED\" NEXT_PORT_PROB=\"1.000\" NEXT_AREA_PROB=\"1.000\"/>\n    <PredictiveArrival IMO=\"9357810\" SHIP_ID=\"712465\" MMSI=\"538003142\" SHIPNAME=\"EF EMIRA\" MARKET=\"CONTAINER SHIPS\" SHIPCLASS=\"FEEDER\" FROM_PORT_ID=\"528\" FROM_PORT=\"ANCONA\" NEXT_PORT_ID=\"1\" NEXT_PORT=\"PIRAEUS\" NEXT_AREA=\"EMED\" NEXT_PORT_PROB=\"1.000\" NEXT_AREA_PROB=\"1.000\"/>\n    <PredictiveArrival IMO=\"9213595\" SHIP_ID=\"362664\" MMSI=\"304927000\" SHIPNAME=\"LUHNAU\" MARKET=\"DRY BREAKBULK\" SHIPCLASS=\"HANDYSIZE\" FROM_PORT_ID=\"34\" FROM_PORT=\"CORINTH\" NEXT_PORT_ID=\"1\" NEXT_PORT=\"PIRAEUS\" NEXT_AREA=\"EMED\" NEXT_PORT_PROB=\"1.000\" NEXT_AREA_PROB=\"1.000\"/>\n    <PredictiveArrival IMO=\"9321902\" SHIP_ID=\"124854\" MMSI=\"255806318\" SHIPNAME=\"NORDSUMMER\" MARKET=\"CONTAINER SHIPS\" SHIPCLASS=\"PANAMAX\" FROM_PORT_ID=\"119\" FROM_PORT=\"MARSAXLOKK\" NEXT_PORT_ID=\"1\" NEXT_PORT=\"PIRAEUS\" NEXT_AREA=\"EMED\" NEXT_PORT_PROB=\"1.000\" NEXT_AREA_PROB=\"1.000\"/>\n    <PredictiveArrival IMO=\"9004487\" SHIP_ID=\"348156\" MMSI=\"374732000\" SHIPNAME=\"STARRY M\" MARKET=\"DRY BREAKBULK\" SHIPCLASS=\"HANDYSIZE\" FROM_PORT_ID=\"3321\" FROM_PORT=\"ANTALYA\" NEXT_PORT_ID=\"1\" NEXT_PORT=\"PIRAEUS\" NEXT_AREA=\"EMED\" NEXT_PORT_PROB=\"1.000\" NEXT_AREA_PROB=\"1.000\"/>\n</PredictiveArrivals>"
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/400_vi05_missing_or_invalid_port_identifier'
            application/xml:
              schema:
                $ref: '#/components/schemas/400_vi05_missing_or_invalid_port_identifier'
              examples:
                Missing or invalid port identifier:
                  summary: Missing or invalid port identifier
                  value: "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<RESPONSE>\n    <STATUS>\n        <ERROR CODE=\"1\" DESCRIPTION=\"INCORRECT CALL-CHECK PARAMETERS\"/>\n    </STATUS>\n</RESPONSE>"
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/429_too_many_requests'
            application/xml:
              schema:
                $ref: '#/components/schemas/429_too_many_requests'
              examples:
                Area out of bound:
                  summary: Too Many Requests
                  value: "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<RESPONSE>\n    <STATUS>\n        <ERROR CODE=\"1r\" DESCRIPTION=\"TOO MANY REQUESTS\"/>\n    </STATUS>\n</RESPONSE>"
  /port-congestion/{api_key}:
    get:
      tags:
      - Ports Information
      summary: Port Congestion
      description: "Receive the Port Congestion for a specific period of time. </br></br> <b>Notes</b> <ul>\n    <li>More information about input parameters: <a href=\"https://support.marinetraffic.com/en/articles/9552918-how-does-marinetraffic-categorise-commercial-market-and-commercial-size-class\">MARKET</a>, <a href=\"https://support.marinetraffic.com/en/articles/9552918-how-does-marinetraffic-categorise-commercial-market-and-commercial-size-class\">SHIPCLASS</a></li>\n    <li>**NOT ALLOWED** combinations in request</li>\n      <ul>\n        <li>agg_market:1 **and** agg_shipclass:0</li>\n        <li>agg_market:1 **and** agg_port:1</li>\n        <li>agg_shipclass:1 **and** agg_port:1</li>\n        <li>agg_market:1 **and** shipclass (specific value in shipclass e.g. POST PANAMAX)</li>\n      </ul>\n    <li>The <b>frequency of allowed API calls</b> is specific to your API key and is detailed in your contract as a number of successful calls per time period. For example “2 calls per minute”. </br>Regardless of this agreed limit, each API key is technically restricted to a maximum of 100 total (including successful and unsuccessful) requests per minute to ensure system stability.</li>\n</ul>"
      operationId: port-congestion
      parameters:
      - $ref: '#/components/parameters/api_key'
      - $ref: '#/components/parameters/portid_VI06'
      - $ref: '#/components/parameters/year_VI06'
      - $ref: '#/components/parameters/week_VI06'
      - $ref: '#/components/parameters/market_VI06'
      - $ref: '#/components/parameters/shipclass_VI06'
      - $ref: '#/components/parameters/agg_port_VI06'
      - $ref: '#/components/parameters/agg_market_VI06'
      - $ref: '#/components/parameters/agg_shipclass_VI06'
      - $ref: '#/components/parameters/time_anch_VI06'
      - $ref: '#/components/parameters/time_port_VI06'
      - $ref: '#/components/parameters/vessels_VI06'
      - $ref: '#/components/parameters/calls_VI06'
      - $ref: '#/components/parameters/time_anch_stdev_VI06'
      - $ref: '#/components/parameters/time_anch_diff_VI06'
      - $ref: '#/components/parameters/time_anch_diff_perc_VI06'
      - $ref: '#/components/parameters/time_port_stdev_VI06'
      - $ref: '#/components/parameters/time_port_diff_VI06'
      - $ref: '#/components/parameters/time_port_diff_perc_VI06'
      - $ref: '#/components/parameters/protocol'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/200_vi06_default'
            application/xml:
              schema:
                $ref: '#/components/schemas/200_vi06_default'
              examples:
                Default:
                  summary: Simple
                  value: "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<PORTCONGESTION>\n    <PORT PORT_ID=\"1766\" YEAR=\"2020\" WEEK=\"8\" MARKET=\"DRY BULK\" SHIPCLASS=\"HANDYSIZE\" TIME_ANCH=\"\" TIME_PORT=\"3.4\" VESSELS=\"2\" CALLS=\"2\" TIME_ANCH_STDEV=\"\" TIME_ANCH_DIFF=\"\" TIME_ANCH_DIFF_PERC=\"\" TIME_PORT_STDEV=\"3.5\" TIME_PORT_DIFF=\"-9.9\" TIME_PORT_DIFF_PERC=\"-74.4\"/>\n</PORTCONGESTION>"
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/400_vi06_mandatory_field_missing'
            application/xml:
              schema:
                $ref: '#/components/schemas/400_vi06_mandatory_field_missing'
              examples:
                Mandatory field missing:
                  summary: Mandatory field missing
                  value: "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<RESPONSE>\n    <STATUS>\n        <ERROR CODE=\"2a9\" DESCRIPTION=\"MANDATORY FIELD MISSING portid\"/>\n    </STATUS>\n</RESPONSE>"
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/429_too_many_requests'
            application/xml:
              schema:
                $ref: '#/components/schemas/429_too_many_requests'
              examples:
                Area out of bound:
                  summary: Too Many Requests
                  value: "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<RESPONSE>\n    <STATUS>\n        <ERROR CODE=\"1r\" DESCRIPTION=\"TOO MANY REQUESTS\"/>\n    </STATUS>\n</RESPONSE>"
components:
  schemas:
    200_vi02_extended:
      title: Extended
      type: array
      items:
        type: object
        properties:
          MMSI:
            type: string
            description: Maritime Mobile Service Identity - a nine-digit number sent in digital form over a radio frequency that identifies the vessel's transmitter station
          IMO:
            type: string
            description: International Maritime Organisation number - a seven-digit number that uniquely identifies vessels
          SHIP_ID:
            type: string
            description: A uniquely assigned ID by MarineTraffic for the subject vessel
          SHIPNAME:
            type: string
            description: The Shipname of the subject vessel
          TYPE_NAME:
            type: string
            description: The Type of the subject vessel
          SHIPTYPE:
            type: string
            description: The Shiptype of the subject vessel according to AIS transmissions
          CALLSIGN:
            type: string
            description: A uniquely designated identifier for the vessel's transmitter station
          FLAG:
            type: string
            description: The flag of the subject vessel according to AIS transmissions
          LENGTH:
            type: string
            description: The overall Length (in metres) of the subject vessel
          WIDTH:
            type: string
            description: The Breadth (in metres) of the subject vessel
          DRAUGHT:
            type: string
            description: The Draught (in metres x10) of the subject vessel according to the AIS transmissions
          GRT:
            type: string
            description: Gross Tonnage - unitless measure that calculates the moulded volume of all enclosed spaces of a ship
          DWT:
            type: string
            description: Deadweight - a measure (in metric tons) of how much weight a vessel can safely carry (excluding the vessel's own weight)
          YEAR_BUILT:
            type: string
            description: The year that the subject vessel was built
          LAT:
            type: string
            description: Latitude - a geographic coordinate that specifies the north-south position of the vessel on the Earth's surface
          LON:
            type: string
            description: Longitude - a geographic coordinate that specifies the east-west position of the vessel on the Earth's surface
          SPEED:
            type: string
            description: The speed (in knots x10) that the subject vessel is reporting according to AIS transmissions
          COURSE:
            type: string
            description: The course (in degrees) that the subject vessel is reporting according to AIS transmissions
          STATUS:
            type: string
            description: The AIS Navigational Status of the subject vessel as input by the vessel's crew. There might be discrepancies with the vessel's detail page when vessel speed is near zero (0) knots
          ETA:
            ty

# --- truncated at 32 KB (61 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/marine-traffic/refs/heads/main/openapi/marine-traffic-ports-information-api-openapi.yml