MarineTraffic · Schema

MarineTraffic Vessel

AIS vessel position and static data record from MarineTraffic

AISMaritimeShippingVessel Tracking

Properties

Name Type Description
MMSI string Maritime Mobile Service Identity (9 digits)
IMO integernull IMO number (7 digits)
SHIP_ID integer MarineTraffic internal vessel identifier
LAT number Latitude in decimal degrees (WGS84)
LON number Longitude in decimal degrees (WGS84)
SPEED number Speed over ground in tenths of knots
HEADING integer True heading 0-359; 511 = not available
COURSE number Course over ground in tenths of degrees
STATUS integer AIS navigational status (0=Under way using engine, 1=At anchor, etc.)
TIMESTAMP string UTC timestamp of the AIS position report
DSRC string Data source: TER = terrestrial AIS, SAT = satellite AIS
VESSEL_NAME string
CALLSIGN string
FLAG string Flag state country code (ISO 3166-1 alpha-2)
SHIPTYPE integer AIS vessel type code per ITU-R M.1371
CARGO integer Cargo type code from AIS message type 5
CURRENT_PORT string
LAST_PORT string
NEXT_PORT_NAME string
NEXT_PORT_UNLOCODE string UN/LOCODE of the destination port
ETA stringnull Estimated time of arrival at destination
DESTINATION string Voyage destination as broadcast in AIS
LENGTH integer Length overall in meters
WIDTH integer Beam/width in meters
DRAUGHT number Current static draught in tenths of meters
GT integer Gross tonnage
DWT integer Deadweight tonnage
YEAR_BUILT integernull
View JSON Schema on GitHub

JSON Schema

marinetraffic-vessel-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/marinetraffic/refs/heads/main/json-schema/marinetraffic-vessel-schema.json",
  "title": "MarineTraffic Vessel",
  "description": "AIS vessel position and static data record from MarineTraffic",
  "type": "object",
  "properties": {
    "MMSI": {
      "type": "string",
      "description": "Maritime Mobile Service Identity (9 digits)",
      "pattern": "^[0-9]{9}$"
    },
    "IMO": {
      "type": ["integer", "null"],
      "description": "IMO number (7 digits)"
    },
    "SHIP_ID": {
      "type": "integer",
      "description": "MarineTraffic internal vessel identifier"
    },
    "LAT": {
      "type": "number",
      "format": "double",
      "minimum": -90,
      "maximum": 90,
      "description": "Latitude in decimal degrees (WGS84)"
    },
    "LON": {
      "type": "number",
      "format": "double",
      "minimum": -180,
      "maximum": 180,
      "description": "Longitude in decimal degrees (WGS84)"
    },
    "SPEED": {
      "type": "number",
      "minimum": 0,
      "description": "Speed over ground in tenths of knots"
    },
    "HEADING": {
      "type": "integer",
      "minimum": 0,
      "maximum": 511,
      "description": "True heading 0-359; 511 = not available"
    },
    "COURSE": {
      "type": "number",
      "minimum": 0,
      "maximum": 360,
      "description": "Course over ground in tenths of degrees"
    },
    "STATUS": {
      "type": "integer",
      "minimum": 0,
      "maximum": 15,
      "description": "AIS navigational status (0=Under way using engine, 1=At anchor, etc.)"
    },
    "TIMESTAMP": {
      "type": "string",
      "format": "date-time",
      "description": "UTC timestamp of the AIS position report"
    },
    "DSRC": {
      "type": "string",
      "enum": ["TER", "SAT"],
      "description": "Data source: TER = terrestrial AIS, SAT = satellite AIS"
    },
    "VESSEL_NAME": {
      "type": "string",
      "maxLength": 20
    },
    "CALLSIGN": {
      "type": "string",
      "maxLength": 7
    },
    "FLAG": {
      "type": "string",
      "description": "Flag state country code (ISO 3166-1 alpha-2)"
    },
    "SHIPTYPE": {
      "type": "integer",
      "minimum": 0,
      "maximum": 99,
      "description": "AIS vessel type code per ITU-R M.1371"
    },
    "CARGO": {
      "type": "integer",
      "description": "Cargo type code from AIS message type 5"
    },
    "CURRENT_PORT": {
      "type": "string"
    },
    "LAST_PORT": {
      "type": "string"
    },
    "NEXT_PORT_NAME": {
      "type": "string"
    },
    "NEXT_PORT_UNLOCODE": {
      "type": "string",
      "description": "UN/LOCODE of the destination port"
    },
    "ETA": {
      "type": ["string", "null"],
      "format": "date-time",
      "description": "Estimated time of arrival at destination"
    },
    "DESTINATION": {
      "type": "string",
      "maxLength": 20,
      "description": "Voyage destination as broadcast in AIS"
    },
    "LENGTH": {
      "type": "integer",
      "minimum": 0,
      "description": "Length overall in meters"
    },
    "WIDTH": {
      "type": "integer",
      "minimum": 0,
      "description": "Beam/width in meters"
    },
    "DRAUGHT": {
      "type": "number",
      "minimum": 0,
      "description": "Current static draught in tenths of meters"
    },
    "GT": {
      "type": "integer",
      "minimum": 0,
      "description": "Gross tonnage"
    },
    "DWT": {
      "type": "integer",
      "minimum": 0,
      "description": "Deadweight tonnage"
    },
    "YEAR_BUILT": {
      "type": ["integer", "null"],
      "minimum": 1800,
      "maximum": 2100
    }
  },
  "required": ["MMSI", "LAT", "LON", "TIMESTAMP"]
}

Work with this as data

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

MCP server

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

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/marinetraffic-vessel"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

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

Get an API key

Free tier, no email required.

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