Data sources

  • Ocean carriers (aka steamship lines): bill of lading/booking details, vessel eta, containers and milestones
  • Container terminal operators: container availability, last free day, holds, fees etc
  • Container rail carriers: container milestones via rail
  • AIS data: vessel details and real-time location tracking (coming soon!)

Supported ocean carriers

View a complete list of supported carriers and attributes on Google Sheets

You can also use the Auto-Detect Carrier API to automatically identify the SCAC from a tracking number.

Ports and terminals

Presently, the Terminal49 API integrates with terminals at the following ports:

  • Baltimore
  • Boston
  • Charleston
  • Fraser Surrey (CA)
  • Halifax (CA)
  • Houston
  • Jacksonville
  • London Gateway (UK)
  • Long Beach
  • Los Angeles
  • Miami
  • Mobile
  • New Orleans
  • New York / New Jersey
  • Oakland
  • Philadelphia
  • Port Everglades
  • Portland
  • Prince Rupert (CA)
  • Savannah
  • Seattle
  • Southampton (UK)
  • Tacoma
  • Tampa
  • Vancouver (CA)
  • Virginia

You can view a complete list of supported terminals and attributes on Google Sheets

Rail carriers

  • BNSF Railway
  • Canadian National Railway (CN)
  • Canadian Pacific Railway (CP)
  • CSX Transportation
  • Norfolk Southern Railway (NS)
  • Union Pacific Railroad (UP)

Known issues (ocean)

Shipment data is populated from requests to the shipping lines. Below is a list of known issues with the Terminal49 data sources:

CMA-CGM, APL, ANL

  • No container weight
  • No container seal number

Maersk, Sealand, Safmarine

  • Shipment departure/arrival events are not always available depending on when BL is entered into system.
  • No container seal number

Hamburg Süd

  • No estimated departure time
  • No container weight
  • No container seal number

MSC

  • No container seal number

Hapag Lloyd

  • No container weight
  • No container seal number

Evergreen

  • All dates are provided as dates, not datetimes. Terminal49 records and returns them all as midnight at the location the event happened (when location is available) or midnight UTC.
  • Only Dry, Reefer, and Flatpack container types are mapped to the Terminal49 system

COSCO

  • No departure or arrival events. Does not affect departure/arrival times.

OOCL

  • No container seal number

ONE

  • Only Dry and Reefer container types are mapped to the Terminal49 system

Yang-Ming

  • When BL has multiple containers, the container weight returned is the average of the shipment. (i.e. the BL gross weight / number of containers)

Hyundai Merchant Marine

  • No container type

ZIM

  • No container weight
  • No container seal number

Westwood Shipping

  • No container weight
  • Only Dry container types are mapped to the Terminal49 system

Data fields and availability

Below is a list of data that can be retrieved via the API, including whether it is always available, or whether it is only supported by certain carriers (Carrier Dependent), certain Terminals (Terminal Dependent) or on certain types of journeys (Journey dependent).

Shipment data

Shipment data is the primary data that comes from the carrier. It contains the details of the shipment retrieved from the Bill of Lading, and references multiple container objects.

Data Availability More details Notes
Port of Lading Always Port of Lading name, Port of Lading UN/LOCODE, Port of Lading Timezone
Port of Discharge Always Port of Discharge name, Port of discharge UN/LOCODE, Port of Discharge Timezone
Final Destination beyond Port of Discharge Carrier dependent, Journey Dependent Destination name, Destination UN/LOCODE, Destination UN/LOCODE, Destination Timezone Only for shipments with inland moves provided by or booked by the carrier.
Listing of Container Numbers Always A list of container numbers with data attributes listed below
Bill of Lading Number Always (inputted by user) BOL
Shipping Line Details Always SCAC, SSL Name
Voyage Details Milestone-based Vessel Name, Vessel IMO, Voyage Number
Estimated Time of Departure Carrier dependent Timestamp
Actual Time of Departure Always Timestamp After departure
Estimated Time of Arrival at Port of Discharge Carrier dependent Timestamp
Actual Time of Arrival at Port of Discharge Always Timestamp Available after arrival
Estimated Time of Arrival at Final Destination Carrier dependent, Journey dependent Timestamp Only for vessels with inland moves.

Container data

At the container level, the following data is available. Container data is combined from all sources to create a single data view of the container. As such some of this data will only be available when certain milestones have passed.

Data Availability More Details Notes
Container Number Always number
Seal Number Carrier dependent number
Equipment Type Always Dry, reefer, open top, flat rack, tank, hard top Enumerated data type
Equipment length Always 20, 40, 45, 50 Enumerated Data Type
Equipment height Always Standard, high cube Enumerated Data Type
Weight Carrier Dependent Number
Terminal Availability Always Availability Known, Availability for Pickup
Holds Terminal Dependent Array of statuses Each status includes the hold name (one of: customs, freight, TMF, other, USDA) and the status (pending, hold) as well as any extra description
Fees Terminal Dependent Array of statuses Each status includes the fee type (one of: Demurrage, Exam, Other) and the amount the hold is for (a float)
Last Free Day Terminal Dependent Date of last free day
Arrived at Port of Discharge Always Once Arrived
Discharged at Port of Discharge Always Once discharged
Full Out at Port of Discharge Always
Full out at final destination Journey Dependent Only if non-port final destination
Rail Loaded At Port of Discharge Journey Dependent Only if non-port final destination
Rail Departed At Port of Discharge Journey Dependent Only if non-port final destination
Rail Carrier Scac at Port of Discharge Journey Dependent Only if non-port final destination
ETA for final destination Carrier Dependent, Journey Dependent Only if non-port final destination
ATA for final destination Journey Dependent Only if non-port final destination
LFD at final destination Carrier Dependent, Journey Dependent Only if non-port final destination

Milestone event data

When a milestone passes, the Terminal49 API will ping one of your webhooks with a Milestone event. For each milestone, the following data is always provided. Container, Shipment, Vessel, Location and Terminal data will be provided as objects that contain the information listed above.

Milestone Data Description
Event Name the name of the event. e.g. ‘container.transport.vessel_loaded’
Created At when the event was created in the Terminal49 system
Timestamp when the event occurred
Timezone Which timezone did the event occur in.
Voyage Number the voyage number of the vessel
Container A link to the Container Data
Shipment A link to the Shipment Data
Vessel Which vessel did the event occur on.
Location Where did the event occur.
Terminal Which terminal did this occur at.

Milestone events supported

A list of milestones that the API can track, as well as the event name used in the API.

Milestone Event Name Event Name
Vessel Loaded container.transport.vessel_loaded
Vessel Departed container.transport.vessel_departed
Vessel Arrived container.transport.vessel_arrived
Vessel Berthed container.transport.vessel_berthed
Vessel Discharged container.transport.vessel_discharged
Empty Out container.transport.empty_out
Full In container.transport.full_in
Full Out container.transport.full_out
Empty In container.transport.empty_in
Rail Departed container.transport.rail_departed
Rail Arrived container.transport.rail_arrived
Rail Loaded container.transport.rail_loaded
Rail Unloaded container.transport.rail_unloaded
Transshipment Arrived container.transport.transshipment_arrived
Transshipment Discharged container.transport.transshipment_discharged
Transshipment Loaded container.transport.transshipment_loaded
Transshipment Departed container.transport.transshipment_departed
Feeder Arrived container.transport.feeder_arrived
Feeder Discharged container.transport.feeder_discharged
Feeder Loaded container.transport.feeder_loaded
Feeder Departed container.transport.feeder_departed
Arrived at inland destination container.transport.arrived_at_inland_destination
Estimated Arrived at inland destination container.transport.estimated.arrived_at_inland_destination
Pickup LFD changed container.pickup_lfd.changed
Available at Destination container.transport.available