MarineTraffic Vessels Data API

Vessel master data (`/vesselmasterdata`), vessel photographs (`/exportvesselphoto`), and the ship-database search surface (`/shipsearch` by identifier or by name). Returns the full static AIS record plus MarineTraffic enrichments — owner, manager, builder, classification society, build year, dimensions, deadweight, gross tonnage, and current operational status.

MarineTraffic Vessels Data 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 Database, and Search. The published artifact set on APIs.io includes API documentation, an OpenAPI specification, 2 Naftiko capability specs, and 1 JSON Schema.

OpenAPI Specification

marine-traffic-vessels-data-openapi.yml Raw ↑
openapi: 3.0.2
info:
  title: MarineTraffic Vessels Data API
  version: 1.0.0
  description: Vessel master data, photographs, and ship search by identifier (IMO / MMSI / Call Sign) or by name.
  contact:
    name: MarineTraffic
    url: https://www.marinetraffic.com/
servers:
- url: https://services.marinetraffic.com/api
tags:
- name: Vessel Information
- name: Search Vessel
paths:
  /exportvesselphoto/{api_key}:
    get:
      tags:
      - Vessel Information
      summary: Vessel Photo
      description: "Retrieve the most popular photo of a vessel.</br></br> <b>Notes</b> <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: exportvesselphoto
      parameters:
      - $ref: '#/components/parameters/api_key'
      - $ref: '#/components/parameters/vessel_id_VD01'
      - $ref: '#/components/parameters/shipid_VD01'
      - $ref: '#/components/parameters/protocol'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/200_vd01_default'
            application/xml:
              schema:
                $ref: '#/components/schemas/200_vd01_default'
              examples:
                Default:
                  summary: Simple
                  value: "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<PHOTO>\n    <PHOTOURL URL=\"https://photos.marinetraffic.com/ais/showphoto.aspx?photoid=534918\"\
                    />\n</PHOTO>"
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/400_vd01_missing_or_invalid_ship_identifier'
            application/xml:
              schema:
                $ref: '#/components/schemas/400_vd01_missing_or_invalid_ship_identifier'
              examples:
                Missing or invalid ship identifier:
                  summary: Missing or invalid 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>"
  /vesselmasterdata/{api_key}:
    get:
      tags:
      - Vessel Information
      summary: Vessel Particulars (Legacy API)
      description: "⚠️This is a legacy endpoint.</br></br>\nA new and improved version is now available, offering enhanced\
        \ data quality, latest features and better performance. \nWe strongly recommend switching to the latest version, which\
        \ you can explore here: <a href=\"https://developers.kpler.com/spec/1240abb4-7ed9-42e2-ae5e-e13a047a16ec\">Vessel\
        \ Particulars & Ownership.</a></br></br>\nIf you would like to see the new endpoint in action, feel free to <a href=\"\
        https://www.kpler.com/demos/request-maritime-api-data-services\"> request a demo </a> - our team would be happy to\
        \ walk you through it.</br></br>\nRetrieve particulars for one or more vessels. </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>If page parameter is missing, then default page:1 will be used instead</li>\n\
        \    <li>The results returned from the API call are split into pages of 100 rows</li>\n    <li>In order to get each\
        \ page generated by the call, add the /page:#value/ parameter to the URL. The default value is /page:1/</li>\n   \
        \ <li>The API does not return results for vessels that are not IMO-registered</li>\n    <li>The API does not return\
        \ results for dead vessels</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: vesselmasterdata
      parameters:
      - $ref: '#/components/parameters/api_key'
      - $ref: '#/components/parameters/v_VD02'
      - $ref: '#/components/parameters/mmsi_VD02'
      - $ref: '#/components/parameters/imo_VD02'
      - $ref: '#/components/parameters/shipid_VD02'
      - $ref: '#/components/parameters/timespan_VD02'
      - $ref: '#/components/parameters/interval_VD02'
      - $ref: '#/components/parameters/protocol'
      - $ref: '#/components/parameters/page_VD02'
      - $ref: '#/components/parameters/msgtype_VD02'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/200_vd02_default'
                - $ref: '#/components/schemas/200_vd02_extended'
            application/xml:
              schema:
                oneOf:
                - $ref: '#/components/schemas/200_vd02_default'
                - $ref: '#/components/schemas/200_vd02_extended'
              examples:
                Default:
                  summary: Simple
                  value: "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<MASTERDATA TOTAL_RESULTS=\"2\" TOTAL_PAGES=\"\
                    1\" CURRENT_PAGE=\"1\">\n    <vessel MMSI=\"440389000\" IMO=\"9360283\" ENI=\"\" NAME=\"DONGJIN AUBE\"\
                    \ BUILDER=\"HAKATA SHIPBUILDING\" PLACE_OF_BUILD=\"MATSUYAMA JAPAN\" BUILD=\"2005\" YARD_NUMBER=\"HN.\
                    \ 670\" BREADTH_EXTREME=\"25\" BREADTH_MOULDED=\"25\" DEPTH=\"13.7\" SUMMER_DWT=\"15220\" DISPLACEMENT_SUMMER=\"\
                    \" CALLSIGN=\"D7OT\" FLAG=\"KR\" DRAUGHT=\"8.97\" LENGTH_OVERALL=\"147\" LENGTH_B_W_PERPENDICULARS=\"\
                    135\" FUEL_CONSUMPTION=\"36 t/day at 17.50 kn\" SPEED_MAX=\"\" SPEED_SERVICE=\"18\" TEU=\"1060\" GROSS_TONNAGE=\"\
                    12679\" NET_TONNAGE=\"5614\" LIQUID_OIL=\"\" LIQUID_GAS=\"\" GRAIN=\"\" OWNER=\"DONG JIN SHIPPING CO LTD\"\
                    \ MANAGER=\"DONG JIN SHIPPING CO LTD\" FINANCIAL_OWNER=\"DONG JIN SHIPPING CO LTD\" TECHNICAL_MANAGER=\"\
                    \" INSURER=\"JAPAN SHIP OWNERS P & I ASSOCIATION\" VESSEL_TYPE=\"CONTAINER SHIP\"/>\n</MASTERDATA>"
                Extended:
                  summary: Extended
                  value: "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<MASTERDATA TOTAL_RESULTS=\"1\" TOTAL_PAGES=\"\
                    1\" CURRENT_PAGE=\"1\">\n    <vessel MMSI=\"352001323\" IMO=\"9360283\" ENI=\"\" NAME=\"MSC AUBE F\" BUILDER=\"\
                    HAKATA SHIPBUILDING CO LTD\" PLACE_OF_BUILD=\"MATSUYAMA JAPAN\" BUILD=\"2005\" YARD_NUMBER=\"HN. 670\"\
                    \ BREADTH_EXTREME=\"25\" BREADTH_MOULDED=\"25\" DEPTH=\"13.7\" SUMMER_DWT=\"15220\" DISPLACEMENT_SUMMER=\"\
                    \" CALLSIGN=\"3E4052\" FLAG=\"PA\" DRAUGHT=\"8.97\" LENGTH_OVERALL=\"147\" LENGTH_B_W_PERPENDICULARS=\"\
                    135\" FUEL_CONSUMPTION=\"36 t/day at 17.50 kn\" SPEED_MAX=\"\" SPEED_SERVICE=\"18\" TEU=\"1060\" GROSS_TONNAGE=\"\
                    12679\" NET_TONNAGE=\"5614\" LIQUID_OIL=\"\" LIQUID_GAS=\"\" GRAIN=\"\" OWNER=\"MEDITERRANEAN SHIPPING\
                    \ CO MSC\" MANAGER=\"MEDITERRANEAN SHIPPING CO MSC\" FINANCIAL_OWNER=\"\" TECHNICAL_MANAGER=\"MSC SHIPMANAGEMENT\
                    \ LTD\" INSURER=\"JAPAN SHIP OWNERS P & I ASSOCIATION\" VESSEL_TYPE=\"CONTAINER SHIP\" MANAGER_COUNTRY=\"\
                    SWITZERLAND\" MANAGER_TOWN=\"\" MANAGER_WEBSITE=\"http://www.mscgva.ch\" OWNER_COUNTRY=\"SWITZERLAND\"\
                    \ OWNER_TOWN=\"\" OWNER_WEBSITE=\"http://www.mscgva.ch\" ENGINE_BUILDER=\"MITSUI TAMANO ENGINEERING &\
                    \ SHIPBUILDING\" ENGINE_CYLINDERS=\"7\" ENGINE_POWER=\"9988\" ENGINE_STROKE=\"1910\" ENGINE_NUMBER=\"\
                    1\" ENGINE_TYPE=\"DIESEL\" ENGINE_RPM=\"127\" CLASS_SOCIETY=\"KOREAN REGISTER OF SHIPPING\" HULL_MATERIAL=\"\
                    STEEL\" HULL_TYPE=\"SINGLE HULL\" DECKS_NUMBER=\"616\" PROPELLER=\"1 FIXED PITCH\" L_FORE=\"132\" W_LEFT=\"\
                    25\" FINANCIAL_OWNER_COUNTRY=\"\" TECHNICAL_MANAGER_COUNTRY=\"CYPRUS\"/>\n</MASTERDATA>"
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/400_vd02_missing_or_invalid_ship_identifier'
            application/xml:
              schema:
                $ref: '#/components/schemas/400_vd02_missing_or_invalid_ship_identifier'
              examples:
                Missing or invalid ship identifier:
                  summary: Missing or invalid 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>"
  /shipsearch/{api_key}:
    get:
      tags:
      - Search Vessel
      summary: Search Vessel by Identifier
      description: "Search for a vessel by unique identifier.</br></br> <b>Notes</b> <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: shipsearch
      parameters:
      - $ref: '#/components/parameters/api_key'
      - $ref: '#/components/parameters/shipid_VD03'
      - $ref: '#/components/parameters/mmsi_VD03'
      - $ref: '#/components/parameters/imo_VD03'
      - $ref: '#/components/parameters/shiptype_VD03'
      - $ref: '#/components/parameters/type_name_id_VD03'
      - $ref: '#/components/parameters/protocol'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/200_vd03_default'
            application/xml:
              schema:
                $ref: '#/components/schemas/200_vd03_default'
              examples:
                Default:
                  summary: Simple
                  value: "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<VESSELS>\n    <vessel SHIPNAME=\"\
                    QUEEN MARY 2\" MMSI=\"310627000\" IMO=\"9241061\" SHIP_ID=\"371681\" CALLSIGN=\"ZCEF6\" TYPE_NAME=\"Passenger\
                    \ Ship\" DWT=\"19189\" FLAG=\"BM\" COUNTRY=\"Bermuda\" YEAR_BUILT=\"2003\" MT_URL=\"http://www.marinetraffic.com/en/ais/details/ships/shipid:371681/mmsi:310627000/vessel:371681\"\
                    />\n</VESSELS>"
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/400_vd03_missing_search_identifier'
            application/xml:
              schema:
                $ref: '#/components/schemas/400_vd03_missing_search_identifier'
              examples:
                Missing search identifier:
                  summary: Missing search identifier
                  value: "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<RESPONSE>\n    <STATUS>\n       \
                    \ <ERROR CODE=\"54\" DESCRIPTION=\"NO SEARCH TERM SUPPLIED\"/>\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>"
  '/shipsearch/{api_key} ':
    get:
      tags:
      - Search Vessel
      summary: Search Vessel by Name
      description: "Search for vessels by vessel name. </br></br> <b>Notes</b> </br> In case of multiple results:\n  <ul>\n\
        \    <li>the first 100 matches will be fetched</li>\n    <li>exact matches are always first on the returned list</li>\n\
        \  </ul>\n  </br>\n  <ul>\n    <li>Only active vessels are returned</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: shipsearch_
      parameters:
      - $ref: '#/components/parameters/api_key'
      - $ref: '#/components/parameters/shipname_VD03'
      - $ref: '#/components/parameters/shiptype_VD03'
      - $ref: '#/components/parameters/type_name_id_VD03'
      - $ref: '#/components/parameters/protocol'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/200_vd03_default'
            application/xml:
              schema:
                $ref: '#/components/schemas/200_vd03_default'
              examples:
                Default:
                  summary: Simple
                  value: "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n    <VESSELS>\n        <vessel SHIPNAME=\"\
                    THE QUEEN JACQUELINE\" MMSI=\"244740452\" IMO=\"0\" SHIP_ID=\"639\" CALLSIGN=\"PE6545\" TYPE_NAME=\"Inland,\
                    \ Ferry\" DWT=\"\" FLAG=\"NL\" COUNTRY=\"Netherlands\" YEAR_BUILT=\"\" MT_URL=\"http://www.marinetraffic.com/en/ais/details/ships/shipid:639/mmsi:244740452/vessel:639\"\
                    />\n        <vessel SHIPNAME=\"BACHATA QUEEN\" MMSI=\"229540000\" IMO=\"0\" SHIP_ID=\"2771\" CALLSIGN=\"\
                    9HB3419\" TYPE_NAME=\"Pleasure Craft\" DWT=\"\" FLAG=\"MT\" COUNTRY=\"Malta\" YEAR_BUILT=\"\" MT_URL=\"\
                    http://www.marinetraffic.com/en/ais/details/ships/shipid:2771/mmsi:229540000/vessel:2771\"/>\n       \
                    \ <vessel SHIPNAME=\"QUEEN R\" MMSI=\"230071310\" IMO=\"0\" SHIP_ID=\"6102\" CALLSIGN=\"OG9917\" TYPE_NAME=\"\
                    Passenger\" DWT=\"\" FLAG=\"FI\" COUNTRY=\"Finland\" YEAR_BUILT=\"\" MT_URL=\"http://www.marinetraffic.com/en/ais/details/ships/shipid:6102/mmsi:230071310/vessel:6102\"\
                    />\n        <vessel SHIPNAME=\"QUEEN OF HEARTS\" MMSI=\"366715730\" IMO=\"0\" SHIP_ID=\"39824\" CALLSIGN=\"\
                    WDJ7357\" TYPE_NAME=\"Other\" DWT=\"\" FLAG=\"US\" COUNTRY=\"USA\" YEAR_BUILT=\"\" MT_URL=\"http://www.marinetraffic.com/en/ais/details/ships/shipid:39824/mmsi:366715730/vessel:39824\"\
                    />\n        <vessel SHIPNAME=\"POLAR QUEEN\" MMSI=\"209070000\" IMO=\"9523378\" SHIP_ID=\"121444\" CALLSIGN=\"\
                    5BDG3\" TYPE_NAME=\"Offshore Supply Ship\" DWT=\"6300\" FLAG=\"CY\" COUNTRY=\"Cyprus\" YEAR_BUILT=\"2011\"\
                    \ MT_URL=\"http://www.marinetraffic.com/en/ais/details/ships/shipid:121444/mmsi:209070000/vessel:121444\"\
                    />\n        <vessel SHIPNAME=\"QUEEN OF THE NETHERLANDS\" MMSI=\"210138000\" IMO=\"9164031\" SHIP_ID=\"\
                    124049\" CALLSIGN=\"5BGT2\" TYPE_NAME=\"Suction Dredger\" DWT=\"24000\" FLAG=\"CY\" COUNTRY=\"Cyprus\"\
                    \ YEAR_BUILT=\"1998\" MT_URL=\"http://www.marinetraffic.com/en/ais/details/ships/shipid:124049/mmsi:210138000/vessel:124049\"\
                    />\n        <vessel SHIPNAME=\"QUEEN B II\" MMSI=\"210296000\" IMO=\"9430090\" SHIP_ID=\"124385\" CALLSIGN=\"\
                    5BWD2\" TYPE_NAME=\"Container Ship\" DWT=\"8512\" FLAG=\"CY\" COUNTRY=\"Cyprus\" YEAR_BUILT=\"2009\" MT_URL=\"\
                    http://www.marinetraffic.com/en/ais/details/ships/shipid:124385/mmsi:210296000/vessel:124385\"/>\n   \
                    \ </VESSELS>"
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/400_vd03_invalid_search_string_length'
                - $ref: '#/components/schemas/400_vd03_missing_search_term'
            application/xml:
              schema:
                oneOf:
                - $ref: '#/components/schemas/400_vd03_invalid_search_string_length'
                - $ref: '#/components/schemas/400_vd03_missing_search_term'
              examples:
                Invalid search string length:
                  summary: Invalid search string length
                  value: "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<RESPONSE>\n    <STATUS>\n       \
                    \ <ERROR CODE=\"11\" DESCRIPTION=\"KEYWORD SHOULD BE AT LEAST 3 CHARACTERS\"/>\n    </STATUS>\n</RESPONSE>"
                Missing search term:
                  summary: Missing search term
                  value: "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<RESPONSE>\n    <STATUS>\n       \
                    \ <ERROR CODE=\"54\" DESCRIPTION=\"NO SEARCH TERM SUPPLIED\"/>\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:
    api_key:
      name: api_key
      in: path
      description: 'API key: 40-character hexadecimal number'
      required: true
      schema:
        type: string
    cursor:
      name: cursor
      in: query
      description: The pagination cursor provided in the metadata section of the previous response
      required: false
      schema:
        type: string
    limit:
      name: limit
      in: query
      description: The limit of vessels per page (min=1000, max=5000)
      required: false
      schema:
        type: integer
        default: 2000
    protocol_mandatory:
      name: protocol
      in: query
      description: "Response type. Use one of the following: <ul>\n  <li>jsono</li>\n  <li>csv</li>"
      required: false
      schema:
        type: string
        default: jsono
    protocol_new:
      name: protocol
      in: query
      description: "Response type. Use one of the following: <ul>\n  <li>xml</li>\n  <li>csv</li>\n  <li>jsono</li>"
      required: false
      schema:
        type: string
        default: xml
    v_PS01:
      name: v
      in: query
      description: Version of the service to be executed. Use version 3 to get the latest
      schema:
        type: integer
        default: 1
    shipid_PS01:
      name: shipid
      in: query
      description: A uniquely assigned ID by MarineTraffic for the subject vessel </br></br> You can <b>instead</b> use imo
        or mmsi
      required: true
      schema:
        type: integer
    mmsi_PS01:
      name: mmsi
      in: query
      description: The Maritime Mobile Service Identity (MMSI) of the vessel you wish to track
      required: false
      schema:
        type: integer
    imo_PS01:
      name: imo
      in: query
      description: The International Maritime Organization (IMO) number of the vessel you wish to track
      required: false
      schema:
        type: integer
    days_PS01:
      name: days
      in: query
      description: The number of days, starting from the time of request and going backwards, for which the response should
        look for position data </br></br> Maximum value is 190 (days)
      required: true
      schema:
        type: integer
    fromdate_PS01:
      name: fromdate
      in: query
      description: Use with todate <b>instead</b> of days to get data for a date period
      required: false
      schema:
        type: string
        format: date-time
    todate_PS01:
      name: todate
      in: query
      description: Use with fromdate <b>instead</b> of days to get data for a date period
      required: false
      schema:
        type: string
        format: date-time
    period_PS01:
      name: period
      in: query
      description: "Limit position per vessel. Omit to get all the available positions </br></br> Values are: <ul>\n  <li>hourly:\
        \ get one position per hour</li>\n  <li>daily: get one position per day</li>\n</ul>"
      required: false
      schema:
        type: string
    msgtype_PS01:
      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>, the response includes also weather data"
      required: false
      schema:
        type: string
        default: simple
    protocol:
      name: protocol
      in: query
      description: "Response type. Use one of the following: <ul>\n  <li>xml</li>\n  <li>csv</li>\n  <li>json</li>\n  <li>jsono</li>"
      required: false
      schema:
        type: string
        default: xml
    MINLAT_PS01:
      name: MINLAT
      in: query
      description: Use with MAXLAT, MINLON, MAXLON to define an area for which you wish to either get all the historical vessels'
        positions or historical positions for a specific vessel </br></br> The absolute value of MAXLAT - MINLAT + MAXLON
        - MINLON has to be equal to or less than <b>2</b> </br></br> If you do not define a vessel, the maximum period for
        which you can look back has a maximum period of one day
      required: true
      schema:
        type: number
    MAXLAT_PS01:
      name: MAXLAT
      in: query
      description: Use with MINLAT, MINLON, MAXLON to define an area for which you wish to either get all the historical vessels'
        positions or historical positions for a specific vessel </br></br> The absolute value of MAXLAT - MINLAT + MAXLON
        - MINLON has to be equal to or less than <b>2</b> </br></br> If you do not define a vessel, the maximum period for
        which you can look back has a maximum period of one day
      required: true
      schema:
        type: number
    MINLON_PS01:
      name: MINLON
      in: query
      description: Use with MINLAT, MAXLAT, MAXLON to define an area for which you wish to either get all the historical vessels'
        positions or historical positions for a specific vessel </br></br> The absolute value of MAXLAT - MINLAT + MAXLON
        - MINLON has to be equal to or less than <b>2</b> </br></br> If you do not define a vessel, the maximum period for
        which you can look back has a maximum period of one day
      required: true
      schema:
        type: number
    MAXLON_PS01:
      name: MAXLON
      in: query
      description: Use with MINLAT, MAXLAT, MINLON to define an area for which you wish to either get all the historical vessels'
        positions or historical positions for a specific vessel </br></br> The absolute value of MAXLAT - MINLAT + MAXLON
        - MINLON has to be equal to or less than <b>2</b> </br></br> If you do not define a vessel, the maximum period for
        which you can look back has a maximum period of one day
      required: true
      schema:
        type: number
    shipid_PS01_2:
      name: shipid
      in: query
      description: A uniquely assigned ID by MarineTraffic for the subject vessel </br></br> You can <b>instead</b> use imo
        or mmsi
      required: false
      schema:
        type: integer
    v_PS02:
      name: v
      in: query
      description: Version of the service to be executed. Use version 8 to get the latest
      required: true
      schema:
        type: integer
        default: 1
    timespan_PS02:
      name: timespan
      in: query
      description: The maximum age, in minutes, of the returned positions.  </br></br> Maximum value for terrestrial coverage
        is 60. Maximum value for satellite coverage is 180
      required: false
      schema:
        type: integer
        default: 5
    shiptype_PS02:
      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_PS02:
      name: msgtype
      in: query
      description: "Resolution of the response. Available values: <ul>\n  <li>simple</li>\n  <li>extended</li>\n  <li>full</li>\n\
        </ul> If used with the value <b>extended</b> or <b>full</b>, the response includes scheduled static and voyage related\
        \ vessel data report (AIS Message 5). In this case your request frequency might be limited (depending on your service\
        \ terms) </br></br> If omitted, the returned records include only position reports (AIS Messages 1, 2, 3/ 18, 19)"
      required: false
      schema:
        type: string
        default: simple
    v_PS03:
      name: v
      in: query
      description: Version of the service to be executed. Use version 8 to get the latest
      required: true
      schema:
        type: integer
        default: 1
    vessel_type:
      name: vesseltypeid
      in: query
      description: Filter vessels based on vessel types, comma separated ids supported </br></br><a href="https://support.marinetraffic.com/en/articles/9552888-what-is-the-significance-of-the-marinetraffic-ship-types"
        target='_blank'>more</a>
      required: false
      schema:
        type: integer
    timespan_PS03:
      name: timespan
      in: query
      description: The maximum age, in minutes, of the returned positions </br></br> Maximum value for terrestrial coverage
        is 60. Maximum value for satellite coverage is 180
      required: false
      schema:
        type: integer
        default: 5
    shiptype_PS03:
      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_PS03:
      name: msgtype
      in: query
      description: "Resolution of the response. Available values: <ul>\n  <li>simple</li>\n  <li>extended</li>\n  <li>full</li>\n\
        </ul> If used with the value <b>extended</b> or <b>full</b>, the response includes scheduled static and voyage related\
        \ vessel data report (AIS Message 5). In this case your request frequency might be limited (depending on your service\
        \ terms) </br></br> If omitted, the returned records include only position reports (AIS Messages 1, 2, 3/ 18, 19)"
      required: false
      schema:
        type: string
        default: simple
    v_PS04:
      name: v
      in: query
      description: Version of the service to be executed. Use version 8 to get the latest
      required: true
      schema:
        type: integer
        default: 1
    timespan_PS04:
      name: timespan
      in: query
      description: The maximum age, in minutes, of the returned positions </br></br> Maximum value for terrestrial coverage
        is 60. Maximum value for satellite coverage is 180
      required: false
      schema:
        type: integer
        default: 5
    shiptype_PS04:
      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_PS04:
      name: msgtype
      in: query
      description: "Resolution of the response. Available values: <ul>\n  <li>simple</li>\n  <li>extended</li>\n  <li>full</li>\n\
        </ul> If used with the value <b>extended</b> or <b>full</b>, the response includes scheduled static and voyage related\
        \ vessel data report (AIS Message 5). In this case your request frequency might be limited (depending on your service\
        \ terms) </br></br> If omitted, the returned records include only position reports (AIS Messages 1, 2, 3/ 18, 19)"
      required: false
      schema:
        type: string
        default: simple
    v_PS05:
      name: v
      in: query
      description: Version of the service to be executed. Use version 8 to get the latest
      required: true
      schema:
        type: integer
        default: 1
    timespan_PS05:
      name: timespan
      in: query
      description: The maximum age, in minutes, of the returned positions </br></br> Maximum value for terrestrial coverage
        is 60. Maximum value for satellite coverage is 180
      required: false
      schema:
        type: integer
        default: 5
    shiptype_PS05:
      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_PS05:
      name: msgtype
      in: query
      description: "Resolution of the response. Available values: <ul>\n  <li>simple</li>\n  <li>extended</li>\n  <li> full</li>\n\
        </ul> If used with the value <b>extended</b> or <b>full</b>, the response includes scheduled static and voyage related\
        \ vessel data report (AIS Message 5). In this case your request frequency might be limited (depending on your service\
        \ terms) </br></br> If omitted, the returned records include only position reports (AIS Messages 1, 2, 3/ 18, 19)"
      required: false
      schema:
        type: string
        default: simple
    v_PS06:
      name: v
      in: query
      description: Version of t

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