ONE Container Tracking API & MCP
Query live ONE (Ocean Network Express) (one) shipping container moves in a single synchronous GET request or MCP tool call. Pass the container number; no booking, bill of lading or ONE account is needed.
Overview & Quick Facts
| Property | Value |
|---|---|
Carrier slug (?carrier=) | one |
| Brand aliases | ONE, Ocean Network Express, ONE Line, one-line.com |
| Category | Ocean container shipping line |
| Single-container REST endpoint | GET https://api.lastscanned.com/v1/track/{containerNumber} |
| Batch REST endpoint | GET https://api.lastscanned.com/v1/track?numbers=ONEU1234566,ONEU0123450 |
MCP server (https://mcp.lastscanned.com/mcp) | track_package, track_packages, list_carriers |
| Authentication & pricing | Authorization: Bearer lsk_live_... · 1 free keyless lookup/day per IP |
Container Number Format & Auto-Detection
| Pass | Rule / Regex | Check Digit | Examples |
|---|---|---|---|
Pass 1 (matches) | /^(ONEU|KKFU)\d{7}$/ | ISO 6346 | ONEU1234566 · ONEU0123450 · KKFU8123458 |
Pass 2 (mayMatch) | none | none | none |
A container number is the owner's 4-letter code, 6 digits and an ISO 6346 check digit. ONE's own owner codes detect to one automatically. A leased container (Textainer TGHU, Triton TCNU, CAI CAIU, SeaCo SEGU and others) can sail with any line, so pass ?carrier=one for one booked with ONE.
Synchronous GET Request & Normalized JSON Response
curl -s "https://api.lastscanned.com/v1/track/ONEU1234566" \
-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 13.
{
"carrier": "one",
"trackingNumber": "ONEU1234566",
"status": "in_transit",
"statusDescription": "Departure from Transshipment Port",
"service": "40'DRY HC.",
"deliveredAt": null,
"deliveredAtLocal": null,
"signedBy": null,
"destination": {
"city": "Guayaquil",
"state": null,
"country": "EC"
},
"estimatedDelivery": "2026-11-12T01:00:00",
"estimatedDeliveryAt": "2026-11-12T06:00:00Z",
"message": "Booking ASUG00526300",
"events": [
{
"timestamp": "2026-10-25T09:20:00Z",
"localTime": "2026-10-25T04:20:00",
"status": "in_transit",
"description": "Departure from Transshipment Port",
"location": "Cartagena, CO",
"code": "E073-01"
},
{
"timestamp": "2026-10-25T04:27:00Z",
"localTime": "2026-10-24T23:27:00",
"status": "in_transit",
"description": "Loaded on Vessel at Transshipment Port, Magellan Star 2643N",
"location": "Cartagena, CO",
"code": "E070-01"
},
{
"timestamp": "2026-10-06T16:26:00Z",
"localTime": "2026-10-06T11:26:00",
"status": "in_transit",
"description": "Vessel Arrival at T/S Port",
"location": "Cartagena, CO",
"code": "E066"
},
{
"timestamp": "2026-10-06T02:48:00Z",
"localTime": "2026-10-05T21:48:00",
"status": "in_transit",
"description": "Departure from Transshipment Port",
"location": "Cartagena, CO",
"code": "E073-02"
}
]
}Notes
- Source: ONE's public cargo tracking API. The container search finds the booking, then the booking's events give every move. Two plain requests, no browser.
- Times: ONE gives each move in UTC and in the port's local time, so both
timestampandlocalTimeare exact. It is the only line here that does. - ETA: the planned vessel arrival at the port of discharge is
estimatedDelivery(local) andestimatedDeliveryAt(UTC). Planned moves are never mixed intoevents. - Booking:
messagenames the booking the container travels under. - Status:
Empty Container Release to Shipperislabel_created,Gate Out from Inbound Terminal for Delivery to Consigneeisout_for_delivery, andEmpty Container Returned from Customerisdelivered.
Related Resources
- All container lines: Ocean container tracking
- Regex & check digits: Tracking number formats & auto-detection