MSC Container Tracking API & MCP

Query live MSC (msc) shipping container moves in a single synchronous GET request or MCP tool call. Pass the container number; no booking, bill of lading or MSC account is needed.

Overview & Quick Facts

PropertyValue
Carrier slug (?carrier=)msc
Brand aliasesMSC, Mediterranean Shipping Company, MSC Cargo, msc.com/track-a-shipment
CategoryOcean container shipping line
Single-container REST endpointGET https://api.lastscanned.com/v1/track/{containerNumber}
Batch REST endpointGET https://api.lastscanned.com/v1/track?numbers=MEDU1234562,MSCU6789016
MCP server (https://mcp.lastscanned.com/mcp)track_package, track_packages, list_carriers
Authentication & pricingAuthorization: Bearer lsk_live_... · 1 free keyless lookup/day per IP

Container Number Format & Auto-Detection

PassRule / RegexCheck DigitExamples
Pass 1 (matches)/^(MSCU|MEDU|MSDU|MSMU|MSNU|MSBU)\d{7}$/ISO 6346MEDU1234562 · MSCU6789016 · MSNU1234560
Pass 2 (mayMatch)nonenonenone

A container number is the owner's 4-letter code, 6 digits and an ISO 6346 check digit. MSC's own owner codes detect to msc automatically. A leased container (Textainer TGHU, Triton TCNU, CAI CAIU, SeaCo SEGU and others) can sail with any line, so pass ?carrier=msc for one booked with MSC.

Synchronous GET Request & Normalized JSON Response

curl -s "https://api.lastscanned.com/v1/track/MEDU1234562" \
  -H "Authorization: Bearer $LASTSCANNED_API_KEY"

The response below is a real lookup from November 2026, with its events cut to the newest four of 11.

{
  "carrier": "msc",
  "trackingNumber": "MEDU1234562",
  "status": "in_transit",
  "statusDescription": "Full Transshipment Loaded, Msc Desiree UK642A",
  "service": "20' DRY VAN",
  "deliveredAt": null,
  "deliveredAtLocal": null,
  "signedBy": null,
  "destination": {
    "city": "Montreal",
    "state": null,
    "country": "CA"
  },
  "estimatedDelivery": "2026-11-21",
  "message": "Bill of lading MEDUKU746112",
  "events": [
    {
      "timestamp": null,
      "localTime": "2026-11-06",
      "status": "in_transit",
      "description": "Full Transshipment Loaded, Msc Desiree UK642A",
      "location": "Busan, KR",
      "code": "Full Transshipment Loaded"
    },
    {
      "timestamp": null,
      "localTime": "2026-11-05",
      "status": "in_transit",
      "description": "Full Transshipment Positioned In",
      "location": "Busan, KR",
      "code": "Full Transshipment Positioned In"
    },
    {
      "timestamp": null,
      "localTime": "2026-11-05",
      "status": "in_transit",
      "description": "Full Transshipment Positioned Out",
      "location": "Busan, KR",
      "code": "Full Transshipment Positioned Out"
    },
    {
      "timestamp": null,
      "localTime": "2026-11-04",
      "status": "in_transit",
      "description": "Full Transshipment Discharged, Msc Lorena HI639R",
      "location": "Busan, KR",
      "code": "Full Transshipment Discharged"
    }
  ]
}

Notes

  • Source: the tracking JSON msc.com's own page requests. Akamai refuses it from servers, so it is fetched from inside a browser session on msc.com; one session serves a whole batch.
  • Events: every move on the container's bill of lading, transshipments included, with the vessel and voyage. MSC's estimated arrival is left out of the events and returned as estimatedDelivery.
  • Times: MSC gives dates without a time of day, so localTime is a date (2026-11-06) and timestamp is null.
  • Bill of lading: message names the bill the container sails under.
  • Status: Empty to Shipper is label_created, Import to consignee is out_for_delivery, and Empty received at CY is delivered. A container MSC lists as Off Service is not_found.

On this page