Maersk Track and Trace API

Retrieve neutralized container and shipment milestones via a RESTful API. Supports lookup by container number, bill-of-lading number, or booking reference. Returns transport, equipment, and shipment events with planned and actual timestamps.

Maersk Track and Trace API is one of 9 APIs that Maersk publishes on the APIs.io network, described by a machine-readable OpenAPI specification.

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

Tagged areas include Shipping, Tracking, Containers, and Ocean. The published artifact set on APIs.io includes API documentation, an OpenAPI specification, sample payloads, 1 Naftiko capability spec, and 1 JSON Schema.

OpenAPI Specification

maersk-track-and-trace-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Maersk Track and Trace API
  description: >
    Public ocean Track and Trace data via a RESTful API. Returns neutralized
    container and shipment milestones (not tied to bill-of-lading party
    affiliation). Supports lookup by container number, bill-of-lading number,
    or booking number.
  version: '2.0'
  contact:
    name: Maersk Developer Support
    url: https://developer.maersk.com/support
  license:
    name: Maersk Terms of Service
    url: https://www.maersk.com/terms

servers:
  - url: https://api.maersk.com
    description: Production Gateway

security:
  - ConsumerKey: []
  - OAuth2: [read]

tags:
  - name: Tracking
    description: Container and shipment tracking events.

paths:
  /track-and-trace-private/shipments:
    get:
      summary: List Shipment Tracking Events
      description: >
        Retrieve neutralized tracking events for a shipment referenced by
        container number, bill-of-lading number, or booking number. Returns
        location, vessel, voyage, planned and actual timestamps for each
        milestone.
      operationId: listShipmentEvents
      tags:
        - Tracking
      parameters:
        - name: equipmentReference
          in: query
          description: Container number (ISO 6346).
          schema:
            type: string
            example: MSKU1234567
        - name: transportDocumentReference
          in: query
          description: Bill of lading number.
          schema:
            type: string
            example: 909876543
        - name: carrierBookingReference
          in: query
          description: Booking reference number.
          schema:
            type: string
            example: 222334455
        - name: Consumer-Key
          in: header
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Tracking events returned successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShipmentTracking'
        '401':
          description: Unauthorized — invalid or missing API key.
        '404':
          description: Reference not found.
        '429':
          description: Rate limit exceeded.

  /track-and-trace-private/events:
    get:
      summary: List Container Events
      description: >
        Retrieve fine-grained event stream for a single container, including
        transport events, equipment events, and shipment events.
      operationId: listContainerEvents
      tags:
        - Tracking
      parameters:
        - name: equipmentReference
          in: query
          required: true
          schema:
            type: string
        - name: eventType
          in: query
          description: TRANSPORT, EQUIPMENT, or SHIPMENT.
          schema:
            type: string
            enum: [TRANSPORT, EQUIPMENT, SHIPMENT]
        - name: limit
          in: query
          schema:
            type: integer
            default: 100
        - name: Consumer-Key
          in: header
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Container events returned.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Event'
        '401':
          description: Unauthorized.
        '404':
          description: Container not found.

components:
  securitySchemes:
    ConsumerKey:
      type: apiKey
      in: header
      name: Consumer-Key
    OAuth2:
      type: oauth2
      flows:
        clientCredentials:
          tokenUrl: https://api.maersk.com/customer-identity/oauth/v2/access_token
          scopes:
            read: Read access to tracking data.
  schemas:
    ShipmentTracking:
      type: object
      properties:
        carrierBookingReference:
          type: string
        transportDocumentReference:
          type: string
        events:
          type: array
          items:
            $ref: '#/components/schemas/Event'
    Event:
      type: object
      properties:
        eventID:
          type: string
        eventType:
          type: string
          enum: [TRANSPORT, EQUIPMENT, SHIPMENT]
        eventClassifierCode:
          type: string
          enum: [PLN, ACT, EST]
          description: Planned, Actual, or Estimated.
        eventDateTime:
          type: string
          format: date-time
        location:
          $ref: '#/components/schemas/Location'
        transportCall:
          $ref: '#/components/schemas/TransportCall'
        equipmentReference:
          type: string
    Location:
      type: object
      properties:
        locationName:
          type: string
        UNLocationCode:
          type: string
          description: UN/LOCODE for the port or facility.
        countryCode:
          type: string
    TransportCall:
      type: object
      properties:
        carrierServiceCode:
          type: string
        vesselIMONumber:
          type: string
        carrierVoyageNumber:
          type: string
        modeOfTransport:
          type: string
          enum: [VESSEL, RAIL, TRUCK, BARGE, MULTIMODAL]