MarineTraffic Ports Information API

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

Documentation

Specifications

Schemas & Data

Other Resources

OpenAPI Specification

marine-traffic-ports-information-api-openapi.yml Raw ↑
openapi: 3.0.2
info:
  title: MarineTraffic Events AIS API 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:
  parameters:
    gt_min_VI02:
      name: gt_min
      in: query
      description: 'Data filter: minimum GT </br></br> Applicable to IMO-having vessels. If used, then you should also define the gt_max parameter'
      required: false
      schema:
        type: integer
    market_VI05:
      name: market
      in: query
      description: "Define market for which you would like to receive probable visits - <a href=\"https://support.marinetraffic.com/en/articles/9552918-how-does-marinetraffic-categorise-commercial-market-and-commercial-size-class\">more</a> <ul>\n  <li>if undefined and ship-class is also undefined, then return all </li>\n  <li>if undefined and ship-class is defined, return based on ship-class</li>\n  <li>If defined and ship-class is undefined, return all ship-classes of the specific market</li>\n</ul>"
      required: false
      schema:
        type: integer
    shipclass_VI05:
      name: shipclass
      in: query
      description: Define ship class of interest - <a href="https://support.marinetraffic.com/en/articles/9552918-how-does-marinetraffic-categorise-commercial-market-and-commercial-size-class">more</a>
      required: false
      schema:
        type: integer
    week_VI06:
      name: week
      in: query
      description: Week of Year that is of interest (e.g. for week 18/2018 input 18). For range of weeks use comma e.g. for weeks 30 to 35 (30,35)
      required: true
      schema:
        type: integer
    time_anch_VI06:
      name: time_anch
      in: query
      description: 'The median number of days spent at anchorage by the selected market/shipclass.

        Values indicate in between set to be returned </br></br> Comma separated float

        numbers (one decimal)

        </br></br><b>Available only if extended version of the API is used</b>'
      required: false
      schema:
        type: string
    shiptype_VI02:
      name: shiptype
      in: query
      description: "Filter data by vessel type: <ul>\n  <li>2: Fishing</li>\n  <li>4: High Speed Craf</li>\n  <li>6: Passenger</li>\n  <li>7: Cargo</li>\n  <li>8: Tanker</li>"
      required: false
      schema:
        type: integer
    msgtype_VI02:
      name: msgtype
      in: query
      description: "Resolution of the response. Available values: <ul>\n  <li>simple</li>\n  <li>extended</li>\n</ul> If used with the value <b>extended</b>, apart from the ETA information, the response includes main vessel particulars. If omitted, the returned records include only position and ETA reports"
      required: false
      schema:
        type: string
        default: simple
    gt_max_VI02:
      name: gt_max
      in: query
      description: 'Data filter: maximum GT </br></br> Applicable to IMO-having vessels. If used, then you should also define the gt_min parameter'
      required: false
      schema:
        type: integer
    market_VI06:
      name: market
      in: query
      description: "Define market for which you would like to receive port congestion - <a href=\"https://support.marinetraffic.com/e

# --- 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