MarineTraffic Vessel Positions API

Real-time and historical AIS vessel positions sourced from 13,000+ terrestrial AIS receivers and satellite AIS feeds. Query by single vessel (MMSI / IMO / SHIP_ID), by fleet, by predefined area of interest, by port, or by a custom bounding box. Includes both the modern AIS API (`/exportvessels`, `/exportvessel`, `/exportvessels-custom-area` — MTA030AD-family with cursor pagination) and the legacy PS01–PS08 surface, plus the Vessel Historical Track endpoint (`/exportvesseltrack`) for replaying a vessel's track over a defined window.

MarineTraffic Vessel Positions API is one of 8 APIs that MarineTraffic publishes on the APIs.io network, described by a machine-readable OpenAPI specification.

This API exposes 2 machine-runnable capabilities that can be deployed as REST, MCP, or Agent Skill surfaces via Naftiko and 1 JSON Schema definition.

Tagged areas include AIS, Maritime, Vessel Tracking, and Vessel Positions. The published artifact set on APIs.io includes API documentation, an OpenAPI specification, a JSON-LD context, sample payloads, 2 Naftiko capability specs, and 1 JSON Schema.

OpenAPI Specification

marine-traffic-vessel-positions-openapi.yml Raw ↑
openapi: 3.0.2
info:
  title: MarineTraffic Vessel Positions API
  version: 1.0.0
  description: Retrieve current and historical AIS vessel positions for single vessels, fleets, areas of interest, ports,
    and bounding boxes. Includes the modern AIS API and the Legacy Vessel Positions API plus the Vessel Historical Track endpoints.
  contact:
    name: MarineTraffic
    url: https://www.marinetraffic.com/
servers:
- url: https://services.marinetraffic.com/api
tags:
- name: AIS API
- name: Vessel Positions (Legacy API)
- name: Vessel Historical Track
paths:
  /exportvesseltrack/{api_key}:
    get:
      tags:
      - Vessel Historical Track
      summary: Single Vessel Historical Positions
      description: "Get all historical positions of a single vessel for a specific period of time. </br></br> <b>Notes</b>\
        \ <ul>\n    <li>Default resolution for returned positions is up to 2 minutes. Use \"period\" parameter to limit the\
        \ frequency of positions</li>\n    <li>Weather data is returned once within each hour's results</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>**SPEED** speed over ground returned in (knots x10)</li>\n    <li>**TIMESTAMP**\
        \ UTC second when the report was generated (0-59)</li>\n    <li>Historical positions are available since January 2015</li>\n\
        \    <li>**Hourly** and **daily** records are the first records received during the hour or the day respectively</li>\n\
        \    <li>When the **period** is **hourly**, the data field **HEADING** is not available for positions older than 2017-11-17</li>\n\
        \    <li>**Hourly** records are available for dates after 2014-08-28</li>\n    <li>Weather data for **winds** are\
        \ available for dates after 2015-05-27</li>\n    <li>Weather data for **waves**, **swells** and **currents** are available\
        \ for dates after 2021-01-21</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: exportvesseltrack
      parameters:
      - $ref: '#/components/parameters/api_key'
      - $ref: '#/components/parameters/v_PS01'
      - $ref: '#/components/parameters/shipid_PS01'
      - $ref: '#/components/parameters/mmsi_PS01'
      - $ref: '#/components/parameters/imo_PS01'
      - $ref: '#/components/parameters/days_PS01'
      - $ref: '#/components/parameters/fromdate_PS01'
      - $ref: '#/components/parameters/todate_PS01'
      - $ref: '#/components/parameters/period_PS01'
      - $ref: '#/components/parameters/msgtype_PS01'
      - $ref: '#/components/parameters/protocol'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/200_ps01_default'
                - $ref: '#/components/schemas/200_ps01_extended'
            application/xml:
              schema:
                oneOf:
                - $ref: '#/components/schemas/200_ps01_default'
                - $ref: '#/components/schemas/200_ps01_extended'
              examples:
                Default:
                  summary: Simple
                  value: "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<VESSELTRACK>\n    <POSITION MMSI=\"\
                    311000092\" IMO=\"9515228\" STATUS=\"1\" SPEED=\"1\" LON=\"-71.702930\" LAT=\"-33.621820\" COURSE=\"16\"\
                    \ HEADING=\"217\" TIMESTAMP=\"2021-02-07T12:57:34\" SHIP_ID=\"372044\"/>\n    <POSITION MMSI=\"311000092\"\
                    \ IMO=\"9515228\" STATUS=\"1\" SPEED=\"3\" LON=\"-71.703470\" LAT=\"-33.621660\" COURSE=\"174\" HEADING=\"\
                    204\" TIMESTAMP=\"2021-02-07T13:39:31\" SHIP_ID=\"372044\"/>\n    <POSITION MMSI=\"311000092\" IMO=\"\
                    9515228\" STATUS=\"1\" SPEED=\"2\" LON=\"-71.703610\" LAT=\"-33.621490\" COURSE=\"243\" HEADING=\"199\"\
                    \ TIMESTAMP=\"2021-02-07T14:00:34\" SHIP_ID=\"372044\"/>\n    <POSITION MMSI=\"311000092\" IMO=\"9515228\"\
                    \ STATUS=\"1\" SPEED=\"6\" LON=\"-71.703650\" LAT=\"-33.621570\" COURSE=\"179\" HEADING=\"195\" TIMESTAMP=\"\
                    2021-02-07T14:06:36\" SHIP_ID=\"372044\"/>\n    <POSITION MMSI=\"311000092\" IMO=\"9515228\" STATUS=\"\
                    1\" SPEED=\"2\" LON=\"-71.703600\" LAT=\"-33.621640\" COURSE=\"73\" HEADING=\"199\" TIMESTAMP=\"2021-02-07T14:09:36\"\
                    \ SHIP_ID=\"372044\"/>\n</VESSELTRACK>"
                Extended:
                  summary: Extended
                  value: "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<VESSELTRACK>\n    <POSITION MMSI=\"\
                    311000092\" IMO=\"9515228\" STATUS=\"1\" SPEED=\"1\" LON=\"-71.702930\" LAT=\"-33.621820\" COURSE=\"16\"\
                    \ HEADING=\"217\" TIMESTAMP=\"2021-02-07T12:57:34\" SHIP_ID=\"372044\" WIND_ANGLE=\"\" WIND_SPEED=\"\"\
                    \ WIND_TEMP=\"\" SIGNIFICANT_WAVE_HEIGHT=\"\" WIND_WAVE_DIRECTION=\"\" WIND_WAVE_HEIGHT=\"\" WIND_WAVE_PERIOD=\"\
                    \" SWELL_HEIGHT=\"\" SWELL_PERIOD=\"\" CURRENTS_ANGLE=\"\" CURRENTS_SPEED=\"\" SWELL_DIRECTION=\"\"/>\n\
                    \    <POSITION MMSI=\"311000092\" IMO=\"9515228\" STATUS=\"1\" SPEED=\"2\" LON=\"-71.703370\" LAT=\"-33.621650\"\
                    \ COURSE=\"282\" HEADING=\"209\" TIMESTAMP=\"2021-02-07T13:34:00\" SHIP_ID=\"372044\" WIND_ANGLE=\"280\"\
                    \ WIND_SPEED=\"7\" WIND_TEMP=\"15\" SIGNIFICANT_WAVE_HEIGHT=\"13\" WIND_WAVE_DIRECTION=\"251\" WIND_WAVE_HEIGHT=\"\
                    0\" WIND_WAVE_PERIOD=\"10\" SWELL_HEIGHT=\"13\" SWELL_PERIOD=\"109\" CURRENTS_ANGLE=\"236\" CURRENTS_SPEED=\"\
                    31\" SWELL_DIRECTION=\"251\"/>\n    <POSITION MMSI=\"311000092\" IMO=\"9515228\" STATUS=\"1\" SPEED=\"\
                    3\" LON=\"-71.703470\" LAT=\"-33.621660\" COURSE=\"174\" HEADING=\"204\" TIMESTAMP=\"2021-02-07T13:39:31\"\
                    \ SHIP_ID=\"372044\" WIND_ANGLE=\"\" WIND_SPEED=\"\" WIND_TEMP=\"\" SIGNIFICANT_WAVE_HEIGHT=\"\" WIND_WAVE_DIRECTION=\"\
                    \" WIND_WAVE_HEIGHT=\"\" WIND_WAVE_PERIOD=\"\" SWELL_HEIGHT=\"\" SWELL_PERIOD=\"\" CURRENTS_ANGLE=\"\"\
                    \ CURRENTS_SPEED=\"\" SWELL_DIRECTION=\"\"/>\n    <POSITION MMSI=\"311000092\" IMO=\"9515228\" STATUS=\"\
                    1\" SPEED=\"2\" LON=\"-71.703610\" LAT=\"-33.621490\" COURSE=\"243\" HEADING=\"199\" TIMESTAMP=\"2021-02-07T14:00:34\"\
                    \ SHIP_ID=\"372044\" WIND_ANGLE=\"\" WIND_SPEED=\"\" WIND_TEMP=\"\" SIGNIFICANT_WAVE_HEIGHT=\"\" WIND_WAVE_DIRECTION=\"\
                    \" WIND_WAVE_HEIGHT=\"\" WIND_WAVE_PERIOD=\"\" SWELL_HEIGHT=\"\" SWELL_PERIOD=\"\" CURRENTS_ANGLE=\"\"\
                    \ CURRENTS_SPEED=\"\" SWELL_DIRECTION=\"\"/>\n    <POSITION MMSI=\"311000092\" IMO=\"9515228\" STATUS=\"\
                    1\" SPEED=\"6\" LON=\"-71.703650\" LAT=\"-33.621570\" COURSE=\"179\" HEADING=\"195\" TIMESTAMP=\"2021-02-07T14:06:36\"\
                    \ SHIP_ID=\"372044\" WIND_ANGLE=\"\" WIND_SPEED=\"\" WIND_TEMP=\"\" SIGNIFICANT_WAVE_HEIGHT=\"\" WIND_WAVE_DIRECTION=\"\
                    \" WIND_WAVE_HEIGHT=\"\" WIND_WAVE_PERIOD=\"\" SWELL_HEIGHT=\"\" SWELL_PERIOD=\"\" CURRENTS_ANGLE=\"\"\
                    \ CURRENTS_SPEED=\"\" SWELL_DIRECTION=\"\"/>\n    <POSITION MMSI=\"311000092\" IMO=\"9515228\" STATUS=\"\
                    1\" SPEED=\"2\" LON=\"-71.703600\" LAT=\"-33.621640\" COURSE=\"73\" HEADING=\"199\" TIMESTAMP=\"2021-02-07T14:09:36\"\
                    \ SHIP_ID=\"372044\" WIND_ANGLE=\"\" WIND_SPEED=\"\" WIND_TEMP=\"\" SIGNIFICANT_WAVE_HEIGHT=\"\" WIND_WAVE_DIRECTION=\"\
                    \" WIND_WAVE_HEIGHT=\"\" WIND_WAVE_PERIOD=\"\" SWELL_HEIGHT=\"\" SWELL_PERIOD=\"\" CURRENTS_ANGLE=\"\"\
                    \ CURRENTS_SPEED=\"\" SWELL_DIRECTION=\"\"/>\n    <POSITION MMSI=\"311000092\" IMO=\"9515228\" STATUS=\"\
                    1\" SPEED=\"1\" LON=\"-71.703830\" LAT=\"-33.621530\" COURSE=\"170\" HEADING=\"190\" TIMESTAMP=\"2021-02-07T14:34:00\"\
                    \ SHIP_ID=\"372044\" WIND_ANGLE=\"280\" WIND_SPEED=\"7\" WIND_TEMP=\"15\" SIGNIFICANT_WAVE_HEIGHT=\"13\"\
                    \ WIND_WAVE_DIRECTION=\"251\" WIND_WAVE_HEIGHT=\"0\" WIND_WAVE_PERIOD=\"10\" SWELL_HEIGHT=\"13\" SWELL_PERIOD=\"\
                    109\" CURRENTS_ANGLE=\"236\" CURRENTS_SPEED=\"31\" SWELL_DIRECTION=\"251\"/>\n    <POSITION MMSI=\"311000092\"\
                    \ IMO=\"9515228\" STATUS=\"1\" SPEED=\"4\" LON=\"-71.703360\" LAT=\"-33.621710\" COURSE=\"177\" HEADING=\"\
                    205\" TIMESTAMP=\"2021-02-07T15:34:00\" SHIP_ID=\"372044\" WIND_ANGLE=\"280\" WIND_SPEED=\"7\" WIND_TEMP=\"\
                    15\" SIGNIFICANT_WAVE_HEIGHT=\"13\" WIND_WAVE_DIRECTION=\"251\" WIND_WAVE_HEIGHT=\"0\" WIND_WAVE_PERIOD=\"\
                    10\" SWELL_HEIGHT=\"13\" SWELL_PERIOD=\"109\" CURRENTS_ANGLE=\"236\" CURRENTS_SPEED=\"31\" SWELL_DIRECTION=\"\
                    251\"/>\n    <POSITION MMSI=\"311000092\" IMO=\"9515228\" STATUS=\"1\" SPEED=\"1\" LON=\"-71.703290\"\
                    \ LAT=\"-33.621750\" COURSE=\"194\" HEADING=\"205\" TIMESTAMP=\"2021-02-07T16:34:00\" SHIP_ID=\"372044\"\
                    \ WIND_ANGLE=\"281\" WIND_SPEED=\"7\" WIND_TEMP=\"15\" SIGNIFICANT_WAVE_HEIGHT=\"12\" WIND_WAVE_DIRECTION=\"\
                    251\" WIND_WAVE_HEIGHT=\"0\" WIND_WAVE_PERIOD=\"10\" SWELL_HEIGHT=\"12\" SWELL_PERIOD=\"108\" CURRENTS_ANGLE=\"\
                    219\" CURRENTS_SPEED=\"40\" SWELL_DIRECTION=\"251\"/>\n    <POSITION MMSI=\"311000092\" IMO=\"9515228\"\
                    \ STATUS=\"1\" SPEED=\"3\" LON=\"-71.703300\" LAT=\"-33.621780\" COURSE=\"199\" HEADING=\"208\" TIMESTAMP=\"\
                    2021-02-07T17:34:00\" SHIP_ID=\"372044\" WIND_ANGLE=\"281\" WIND_SPEED=\"7\" WIND_TEMP=\"15\" SIGNIFICANT_WAVE_HEIGHT=\"\
                    12\" WIND_WAVE_DIRECTION=\"251\" WIND_WAVE_HEIGHT=\"0\" WIND_WAVE_PERIOD=\"10\" SWELL_HEIGHT=\"12\" SWELL_PERIOD=\"\
                    108\" CURRENTS_ANGLE=\"219\" CURRENTS_SPEED=\"40\" SWELL_DIRECTION=\"251\"/>\n</VESSELTRACK>"
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/400_ps01_days_out_of_limit'
                - $ref: '#/components/schemas/400_ps01_missing_ship_identifier'
            application/xml:
              schema:
                oneOf:
                - $ref: '#/components/schemas/400_ps01_days_out_of_limit'
                - $ref: '#/components/schemas/400_ps01_missing_ship_identifier'
              examples:
                Days out of limit:
                  summary: Days out of limit
                  value: "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<RESPONSE>\n    <STATUS>\n        <ERROR CODE=\"9c\"\
                    \ DESCRIPTION=\"DAYS ABOVE ALLOWED LIMIT\"/>\n    </STATUS>\n</RESPONSE>"
                Missing ship identifier:
                  summary: Missing ship identifier
                  value: "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<RESPONSE>\n    <STATUS>\n       \
                    \ <ERROR CODE=\"2\" DESCRIPTION=\"VESSEL MMSI OR IMO OR SHIPID 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>"
  '/exportvesseltrack/{api_key} ':
    get:
      tags:
      - Vessel Historical Track
      summary: Vessel Historical Positions in an Area
      description: "Get vessel historical positions for a single or for all vessels inside an area of your preference for\
        \ a specific period of time.\n    </br></br>\n<b>Notes</b> <ul>\n    <li>Default resolution for returned positions\
        \ is up to 2 minutes. Use \"period\" parameter to limit the frequency of positions</li>\n    <li>Weather data is returned\
        \ once within each hour's results</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>**SPEED** speed over ground returned in (knots x10)</li>\n    <li>**TIMESTAMP**\
        \ UTC second when the report was generated (0-59)</li>\n    <li>Historical positions are available since January 2015</li>\n\
        \    <li>**Hourly** and **daily** records are the first records received during the hour or the day respectively</li>\n\
        \    <li>When the **period** is **hourly**, the data field **HEADING** is not available for positions older than 2017-11-17</li>\n\
        \    <li>**Hourly** records are available for dates after 2014-08-28</li>\n    <li>Weather data for **winds** are\
        \ available for dates after 2015-05-27</li>\n    <li>Weather data for **waves**, **swells** and **currents** are available\
        \ for dates after 2021-01-21</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: exportvesseltrack_
      parameters:
      - $ref: '#/components/parameters/api_key'
      - $ref: '#/components/parameters/v_PS01'
      - $ref: '#/components/parameters/days_PS01'
      - $ref: '#/components/parameters/fromdate_PS01'
      - $ref: '#/components/parameters/todate_PS01'
      - $ref: '#/components/parameters/MINLAT_PS01'
      - $ref: '#/components/parameters/MAXLAT_PS01'
      - $ref: '#/components/parameters/MINLON_PS01'
      - $ref: '#/components/parameters/MAXLON_PS01'
      - $ref: '#/components/parameters/shipid_PS01_2'
      - $ref: '#/components/parameters/mmsi_PS01'
      - $ref: '#/components/parameters/imo_PS01'
      - $ref: '#/components/parameters/period_PS01'
      - $ref: '#/components/parameters/msgtype_PS01'
      - $ref: '#/components/parameters/protocol'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/200_ps01_default'
                - $ref: '#/components/schemas/200_ps01_extended'
            application/xml:
              schema:
                oneOf:
                - $ref: '#/components/schemas/200_ps01_default'
                - $ref: '#/components/schemas/200_ps01_extended'
              examples:
                Default:
                  summary: Simple
                  value: "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<VESSELTRACK>\n    <POSITION MMSI=\"\
                    239982500\" IMO=\"8348678\" STATUS=\"5\" SPEED=\"0\" LON=\"23.726880\" LAT=\"37.878850\" COURSE=\"0\"\
                    \ HEADING=\"320\" TIMESTAMP=\"2021-02-08T12:57:01\" SHIP_ID=\"4317723\"/>\n    <POSITION MMSI=\"249032000\"\
                    \ IMO=\"9351098\" STATUS=\"15\" SPEED=\"2\" LON=\"23.548990\" LAT=\"37.903030\" COURSE=\"160\" HEADING=\"\
                    160\" TIMESTAMP=\"2021-02-08T12:57:05\" SHIP_ID=\"362849\"/>\n    <POSITION MMSI=\"240000500\" IMO=\"\
                    9822839\" STATUS=\"0\" SPEED=\"0\" LON=\"23.530200\" LAT=\"37.965420\" COURSE=\"51\" HEADING=\"511\" TIMESTAMP=\"\
                    2021-02-08T12:57:11\" SHIP_ID=\"4858425\"/>\n    <POSITION MMSI=\"636011396\" IMO=\"9216901\" STATUS=\"\
                    1\" SPEED=\"3\" LON=\"23.505830\" LAT=\"37.850330\" COURSE=\"186\" HEADING=\"186\" TIMESTAMP=\"2021-02-08T12:57:12\"\
                    \ SHIP_ID=\"753064\"/>\n    <POSITION MMSI=\"240612000\" IMO=\"8008254\" STATUS=\"15\" SPEED=\"11\" LON=\"\
                    23.601030\" LAT=\"37.957200\" COURSE=\"136\" HEADING=\"511\" TIMESTAMP=\"2021-02-08T12:57:13\" SHIP_ID=\"\
                    213328\"/>\n</VESSELTRACK>"
                Extended:
                  summary: Extended
                  value: "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<VESSELTRACK>\n    <POSITION MMSI=\"239982500\" IMO=\"\
                    8348678\" STATUS=\"5\" SPEED=\"0\" LON=\"23.726880\" LAT=\"37.878850\" COURSE=\"0\" HEADING=\"320\" TIMESTAMP=\"\
                    2021-02-08T12:57:01\" SHIP_ID=\"4317723\" WIND_ANGLE=\"\" WIND_SPEED=\"\" WIND_TEMP=\"\" SIGNIFICANT_WAVE_HEIGHT=\"\
                    \" WIND_WAVE_DIRECTION=\"\" WIND_WAVE_HEIGHT=\"\" WIND_WAVE_PERIOD=\"\" SWELL_HEIGHT=\"\" SWELL_PERIOD=\"\
                    \" CURRENTS_ANGLE=\"\" CURRENTS_SPEED=\"\" SWELL_DIRECTION=\"\"/>\n    <POSITION MMSI=\"249032000\" IMO=\"\
                    9351098\" STATUS=\"15\" SPEED=\"2\" LON=\"23.548990\" LAT=\"37.903030\" COURSE=\"160\" HEADING=\"160\"\
                    \ TIMESTAMP=\"2021-02-08T12:57:05\" SHIP_ID=\"362849\" WIND_ANGLE=\"\" WIND_SPEED=\"\" WIND_TEMP=\"\"\
                    \ SIGNIFICANT_WAVE_HEIGHT=\"\" WIND_WAVE_DIRECTION=\"\" WIND_WAVE_HEIGHT=\"\" WIND_WAVE_PERIOD=\"\" SWELL_HEIGHT=\"\
                    \" SWELL_PERIOD=\"\" CURRENTS_ANGLE=\"\" CURRENTS_SPEED=\"\" SWELL_DIRECTION=\"\"/>\n    <POSITION MMSI=\"\
                    240000500\" IMO=\"9822839\" STATUS=\"0\" SPEED=\"0\" LON=\"23.530200\" LAT=\"37.965420\" COURSE=\"51\"\
                    \ HEADING=\"511\" TIMESTAMP=\"2021-02-08T12:57:11\" SHIP_ID=\"4858425\" WIND_ANGLE=\"\" WIND_SPEED=\"\"\
                    \ WIND_TEMP=\"\" SIGNIFICANT_WAVE_HEIGHT=\"\" WIND_WAVE_DIRECTION=\"\" WIND_WAVE_HEIGHT=\"\" WIND_WAVE_PERIOD=\"\
                    \" SWELL_HEIGHT=\"\" SWELL_PERIOD=\"\" CURRENTS_ANGLE=\"\" CURRENTS_SPEED=\"\" SWELL_DIRECTION=\"\"/>\n\
                    \    <POSITION MMSI=\"636011396\" IMO=\"9216901\" STATUS=\"1\" SPEED=\"3\" LON=\"23.505830\" LAT=\"37.850330\"\
                    \ COURSE=\"186\" HEADING=\"186\" TIMESTAMP=\"2021-02-08T12:57:12\" SHIP_ID=\"753064\" WIND_ANGLE=\"\"\
                    \ WIND_SPEED=\"\" WIND_TEMP=\"\" SIGNIFICANT_WAVE_HEIGHT=\"\" WIND_WAVE_DIRECTION=\"\" WIND_WAVE_HEIGHT=\"\
                    \" WIND_WAVE_PERIOD=\"\" SWELL_HEIGHT=\"\" SWELL_PERIOD=\"\" CURRENTS_ANGLE=\"\" CURRENTS_SPEED=\"\" SWELL_DIRECTION=\"\
                    \"/>\n    <POSITION MMSI=\"240612000\" IMO=\"8008254\" STATUS=\"15\" SPEED=\"11\" LON=\"23.601030\" LAT=\"\
                    37.957200\" COURSE=\"136\" HEADING=\"511\" TIMESTAMP=\"2021-02-08T12:57:13\" SHIP_ID=\"213328\" WIND_ANGLE=\"\
                    \" WIND_SPEED=\"\" WIND_TEMP=\"\" SIGNIFICANT_WAVE_HEIGHT=\"\" WIND_WAVE_DIRECTION=\"\" WIND_WAVE_HEIGHT=\"\
                    \" WIND_WAVE_PERIOD=\"\" SWELL_HEIGHT=\"\" SWELL_PERIOD=\"\" CURRENTS_ANGLE=\"\" CURRENTS_SPEED=\"\" SWELL_DIRECTION=\"\
                    \"/>\n    <POSITION MMSI=\"636009659\" IMO=\"1000588\" STATUS=\"0\" SPEED=\"0\" LON=\"23.680940\" LAT=\"\
                    37.930710\" COURSE=\"105\" HEADING=\"191\" TIMESTAMP=\"2021-02-08T12:58:00\" SHIP_ID=\"975029\" WIND_ANGLE=\"\
                    192\" WIND_SPEED=\"19\" WIND_TEMP=\"18\" SIGNIFICANT_WAVE_HEIGHT=\"11\" WIND_WAVE_DIRECTION=\"170\" WIND_WAVE_HEIGHT=\"\
                    4\" WIND_WAVE_PERIOD=\"29\" SWELL_HEIGHT=\"10\" SWELL_PERIOD=\"64\" CURRENTS_ANGLE=\"0\" CURRENTS_SPEED=\"\
                    0\" SWELL_DIRECTION=\"170\"/>\n    <POSITION MMSI=\"240605000\" IMO=\"1003059\" STATUS=\"5\" SPEED=\"\
                    0\" LON=\"23.683410\" LAT=\"37.930550\" COURSE=\"0\" HEADING=\"511\" TIMESTAMP=\"2021-02-08T12:58:00\"\
                    \ SHIP_ID=\"213300\" WIND_ANGLE=\"192\" WIND_SPEED=\"19\" WIND_TEMP=\"18\" SIGNIFICANT_WAVE_HEIGHT=\"\
                    11\" WIND_WAVE_DIRECTION=\"170\" WIND_WAVE_HEIGHT=\"4\" WIND_WAVE_PERIOD=\"29\" SWELL_HEIGHT=\"10\" SWELL_PERIOD=\"\
                    64\" CURRENTS_ANGLE=\"0\" CURRENTS_SPEED=\"0\" SWELL_DIRECTION=\"170\"/>\n    <POSITION MMSI=\"240247800\"\
                    \ IMO=\"0\" STATUS=\"99\" SPEED=\"0\" LON=\"23.728100\" LAT=\"37.878720\" COURSE=\"81\" HEADING=\"511\"\
                    \ TIMESTAMP=\"2021-02-08T12:58:00\" SHIP_ID=\"6280434\" WIND_ANGLE=\"196\" WIND_SPEED=\"21\" WIND_TEMP=\"\
                    19\" SIGNIFICANT_WAVE_HEIGHT=\"20\" WIND_WAVE_DIRECTION=\"172\" WIND_WAVE_HEIGHT=\"18\" WIND_WAVE_PERIOD=\"\
                    56\" SWELL_HEIGHT=\"8\" SWELL_PERIOD=\"72\" CURRENTS_ANGLE=\"0\" CURRENTS_SPEED=\"0\" SWELL_DIRECTION=\"\
                    115\"/>\n    <POSITION MMSI=\"240070200\" IMO=\"0\" STATUS=\"99\" SPEED=\"0\" LON=\"23.706390\" LAT=\"\
                    37.912190\" COURSE=\"47\" HEADING=\"511\" TIMESTAMP=\"2021-02-08T12:58:00\" SHIP_ID=\"5530757\" WIND_ANGLE=\"\
                    196\" WIND_SPEED=\"21\" WIND_TEMP=\"19\" SIGNIFICANT_WAVE_HEIGHT=\"16\" WIND_WAVE_DIRECTION=\"163\" WIND_WAVE_HEIGHT=\"\
                    8\" WIND_WAVE_PERIOD=\"41\" SWELL_HEIGHT=\"13\" SWELL_PERIOD=\"70\" CURRENTS_ANGLE=\"0\" CURRENTS_SPEED=\"\
                    0\" SWELL_DIRECTION=\"156\"/>\n    <POSITION MMSI=\"241113000\" IMO=\"9625499\" STATUS=\"5\" SPEED=\"\
                    0\" LON=\"23.649900\" LAT=\"37.931530\" COURSE=\"0\" HEADING=\"328\" TIMESTAMP=\"2021-02-08T12:58:00\"\
                    \ SHIP_ID=\"214507\" WIND_ANGLE=\"192\" WIND_SPEED=\"19\" WIND_TEMP=\"18\" SIGNIFICANT_WAVE_HEIGHT=\"\
                    11\" WIND_WAVE_DIRECTION=\"170\" WIND_WAVE_HEIGHT=\"4\" WIND_WAVE_PERIOD=\"29\" SWELL_HEIGHT=\"10\" SWELL_PERIOD=\"\
                    64\" CURRENTS_ANGLE=\"0\" CURRENTS_SPEED=\"0\" SWELL_DIRECTION=\"170\"/>\n</VESSELTRACK>"
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/400_ps01_area_out_of_bound'
            application/xml:
              schema:
                $ref: '#/components/schemas/400_ps01_area_out_of_bound'
              examples:
                Area out of bound:
                  summary: Area out of bound
                  value: "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<RESPONSE>\n    <STATUS>\n       \
                    \ <ERROR CODE=\"1k\" DESCRIPTION=\"BOX OUT OF BOUNDS\"/>\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>"
  /exportvessels/{api_key}:
    get:
      tags:
      - Vessel Positions (Legacy API)
      summary: Vessel Positions of a Static Fleet
      description: "Keep a close eye on the vessel or group of vessels of your interest. </br></br> <b>Notes</b> <ul>\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>**SPEED** returned in (knots x10) and **TIMESTAMP** in UTC</li>\n    <li>**HEADING**\
        \ for SAR Aircrafts contains the Altitude of the aircraft (“STATUS” = 97)</li>\n    <li>**HEADING** values -1 or 511\
        \ indicate lack of data</li>\n    <li>**SPEED** and **COURSE** values for base stations are represented by zero (0)</li>\n\
        \    <li>More information about response parameters: <a href=\"https://support.marinetraffic.com/en/articles/9552866-what-is-the-significance-of-the-ais-shiptype-number\"\
        >STATUS</a>, <a href=\"https://support.marinetraffic.com/en/articles/9552866-what-is-the-significance-of-the-ais-shiptype-number\"\
        >SHIPTYPE</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: exportvessels
      parameters:
      - $ref: '#/components/parameters/api_key'
      - $ref: '#/components/parameters/v_PS02'
      - $ref: '#/components/parameters/timespan_PS02'
      - $ref: '#/components/parameters/shiptype_PS02'
      - $ref: '#/components/parameters/msgtype_PS02'
      - $ref: '#/components/parameters/protocol'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/200_ps02_default'
                - $ref: '#/components/schemas/200_ps02_extended'
                - $ref: '#/components/schemas/200_ps02_full'
            application/xml:
              schema:
                oneOf:
                - $ref: '#/components/schemas/200_ps02_default'
                - $ref: '#/components/schemas/200_ps02_extended'
                - $ref: '#/components/schemas/200_ps02_full'
              examples:
                Default:
                  summary: Simple
                  value: "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<POS>\n    <row MMSI=\"240389000\"\
                    \ IMO=\"9208679\" SHIP_ID=\"212537\" LAT=\"37.512420\" LON=\"24.913050\" SPEED=\"229\" HEADING=\"294\"\
                    \ COURSE=\"295\" STATUS=\"0\" TIMESTAMP=\"2020-10-13T07:49:57\" DSRC=\"TER\" UTC_SECONDS=\"55\"/>\n  \
                    \  <row MMSI=\"310627000\" IMO=\"9241061\" SHIP_ID=\"371681\" LAT=\"50.510430\" LON=\"-3.453147\" SPEED=\"\
                    4\" HEADING=\"276\" COURSE=\"236\" STATUS=\"1\" TIMESTAMP=\"2020-10-13T07:48:16\" DSRC=\"TER\" UTC_SECONDS=\"\
                    16\"/>\n</POS>"
                Extended:
                  summary: Extended
                  value: "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<POS>\n    <row MMSI=\"240389000\"\
                    \ IMO=\"9208679\" SHIP_ID=\"212537\" LAT=\"37.659450\" LON=\"26.497440\" SPEED=\"222\" HEADING=\"205\"\
                    \ COURSE=\"208\" STATUS=\"0\" TIMESTAMP=\"2020-10-15T11:47:03\" DSRC=\"TER\" UTC_SECONDS=\"0\" SHIPNAME=\"\
                    BLUE STAR MYCONOS\" SHIPTYPE=\"60\" CALLSIGN=\"SYJZ\" FLAG=\"GR\" LENGTH=\"141\" WIDTH=\"21\" GRT=\"8129\"\
                    \ DWT=\"2651\" DRAUGHT=\"52\" YEAR_BUILT=\"2005\" ROT=\"0\" TYPE_NAME=\"Ro-Ro/Passenger Ship\" AIS_TYPE_SUMMARY=\"\
                    Passenger\" DESTINATION=\"S-T-M-E-K-V\" ETA=\"2020-10-15T11:35:00\"/>\n    <row MMSI=\"310627000\" IMO=\"\
                    9241061\" SHIP_ID=\"371681\" LAT=\"50.495310\" LON=\"-3.182992\" SPEED=\"111\" HEADING=\"280\" COURSE=\"\
                    274\" STATUS=\"0\" TIMESTAMP=\"2020-10-15T11:47:17\" DSRC=\"TER\" UTC_SECONDS=\"16\" SHIPNAME=\"QUEEN\
                    \ MARY 2\" SHIPTYPE=\"60\" CALLSIGN=\"ZCEF6\" FLAG=\"BM\" LENGTH=\"345.03\" WIDTH=\"48.7\" GRT=\"149215\"\
                    \ DWT=\"19189\" DRAUGHT=\"101\" YEAR_BUILT=\"2003\" ROT=\"0\" TYPE_NAME=\"Passenger Ship\" AIS_TYPE_SUMMARY=\"\
                    Passenger\" DESTINATION=\"TORQUAY\" ETA=\"2020-10-14T13:00:00\"/>\n</POS>"
                Full:
                  summary: Full
                  value: "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<POS>\n    <row MMSI=\"240389000\"\
                    \ IMO=\"9208679\" SHIP_ID=\"212537\" LAT=\"37.646880\" LON=\"26.488940\" SPEED=\"223\" HEADING=\"205\"\
                    \ COURSE=\"208\" STATUS=\"0\" TIMESTAMP=\"2020-10-15T11:49:22\" DSRC=\"TER\" UTC_SECONDS=\"18\" SHIPNAME=\"\
                    BLUE STAR MYCONOS\" SHIPTYPE=\"60\" CALLSIGN=\"SYJZ\" FLAG=\"GR\" LENGTH=\"141\" WIDTH=\"21\" GRT=\"8129\"\
                    \ DWT=\"2651\" DRAUGHT=\"52\" YEAR_BUILT=\"2005\" ROT=\"0\" TYPE_NAME=\"Ro-Ro/Passenger Ship\" AIS_TYPE_SUMMARY=\"\
                    Passenger\" DESTINATION=\"S-T-M-E-K-V\" ETA=\"2020-10-15T11:35:00\" CURRENT_PORT=\"\" LAST_PORT=\"KARLOVASI\"\
                    \ LAST_PORT_TIME=\"2020-10-15T11:14:00\" CURRENT_PORT_ID=\"\" CURRENT_PORT_UNLOCODE=\"\" CURRENT_PORT_COUNTRY=\"\
                    \" LAST_PORT_ID=\"44\" LAST_PORT_UNLOCODE=\"GRKAR\" LAST_PORT_COUNTRY=\"GR\" NEXT_PORT_ID=\"17305\" NEXT_PORT_UNLOCODE=\"\
                    \" NEXT_PORT_NAME=\"FOURNI\" NEXT_PORT_COUNTRY=\"GR\" ETA_CALC=\"2020-10-15T12:04:00\" ETA_UPDATED=\"\
                    2020-10-15T11:42:00\" DISTANCE_TO_GO=\"7\" DISTANCE_TRAVELLED=\"11\" AVG_SPEED=\"22.6\" MAX_SPEED=\"23.1\"\
                    />\n    <row MMSI=\"310627000\" IMO=\"9241061\" SHIP_ID=\"371681\" LAT=\"50.495970\" LON=\"-3.195012\"\
                    \ SPEED=\"110\" HEADING=\"280\" COURSE=\"275\" STATUS=\"0\" TIMESTAMP=\"2020-10-15T11:49:48\" DSRC=\"\
                    TER\" UTC_SECONDS=\"47\" SHIPNAME=\"QUEEN MARY 2\" SHIPTYPE=\"60\" CALLSIGN=\"ZCEF6\" FLAG=\"BM\" LENGTH=\"\
                    345.03\" WIDTH=\"48.7\" GRT=\"149215\" DWT=\"19189\" DRAUGHT=\"101\" YEAR_BUILT=\"2003\" ROT=\"0\" TYPE_NAME=\"\
                    Passenger Ship\" AIS_TYPE_SUMMARY=\"Passenger\" DESTINATION=\"TORQUAY\" ETA=\"2020-10-14T13:00:00\" CURRENT_PORT=\"\
                    \" LAST_PORT=\"SOUTHAMPTON\" LAST_PORT_TIME=\"2020-10-14T17:00:00\" CURRENT_PORT_ID=\"\" CURRENT_PORT_UNLOCODE=\"\
                    \" CURRENT_PORT_COUNTRY=\"\" LAST_PORT_ID=\"106\" LAST_PORT_UNLOCODE=\"GBSOU\" LAST_PORT_COUNTRY=\"GB\"\
                    \ NEXT_PORT_ID=\"10379\" NEXT_PORT_UNLOCODE=\"GBTOR\" NEXT_PORT_NAME=\"TORQUAY\" NEXT_PORT_COUNTRY=\"\
                    GB\" ETA_CALC=\"2020-10-15T13:10:00\" ETA_UPDATED=\"2020-10-15T10:48:00\" DISTANCE_TO_GO=\"17\" DISTANCE_TRAVELLED=\"\
                    190\" AVG_SPEED=\"10.6\" MAX_SPEED=\"15.4\"/>\n</POS>"
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/403_ps02_infinite_timespan'
            application/xml:
              schema:
                $ref: '#/components/schemas/403_ps02_infinite_timespan'
              examples:
                Infinite timespan:
                  summary: Infinite timespan
                  value: "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<RESPONSE>\n    <STATUS>\n       \
                    \ <ERROR CODE=\"1d\" DESCRIPTION=\"TIME-UNLIMITED POLLING NOT ALLOWED\"/>\n    </STATUS>\n</RESPONSE>"
  '/exportvessels/{api_key} ':
    get:
      tags:
      - Vessel Positions (Legacy API)
      summary: Vessel Positions of a Dynamic Fleet
      description: "Monitor vessel activity for your MarineTraffic fleet(s). </br></br> <b>Notes</b> <ul>\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>**SPEED** returned in (knots x10) and **TIMESTAMP** in UTC</li>\n    <li>**HEADING**\
        \ for SAR Aircrafts contains the Altitude of the aircraft (“STATUS” = 97)</li>\n    <li>**HEADING** values -1 or 511\
      

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