Integrate Rail Container Tracking Data
This guide provides a comprehensive, step-by-step approach for integrating North American Class-1 rail container tracking data into your systems. Whether you are a shipper or a logistics service provider, this guide will help you track all your rail containers via a single API.
This is a technical article about rail data within Terminal49’s API and DataSync.
For a broader overview, including the reasons why you’d want rail visibility and how to use it in the Terminal49 dashboard, read our announcement post.
Table of Contents
Supported Rail Carriers
Terminal49 container tracking platform integrates with all North American Class-1 railroads that handle container shipping, providing comprehensive visibility into your rail container movements.
- BNSF Railway
- Canadian National Railway (CN)
- Canadian Pacific Railway (CP)
- CSX Transportation
- Norfolk Southern Railway (NS)
- Union Pacific Railroad (UP)
By integrating with these carriers, Terminal49 ensures that you have direct access to critical tracking data, enabling better decision-making and operational efficiency.
Supported Rail Events and Data Attributes
Terminal49 seamlessly tracks your containers as they go from container ship, to ocean terminal, to rail carrier.
We provide a set of Transport Events that let you track the status of your containers as they move through the rail system. You can be notified by webhook whenever these events occur.
We also provide a set of attributes on the container model that let you know the current status of your container at any given time, as well as useful information such as ETA, pickup facility, and availability information.
Rail-Specific Transport Events
There are several core Transport Events that occur on most rail journeys. Some rail carriers do not share all events, but in general these are the key events for a container.
Available for Pickup
, Full Out
and Empty Return
are not specific to rail, but are included here since they are a key part of the rail journey.
Webhook Notifications
Terminal49 provides webhook notifications to keep you updated on key Transport Events in a container’s rail journey. These notifications allow you to integrate near real-time tracking data directly into your applications.
Here’s a list of the rail-specific events which support webhook notifications:
Transport Event | Webhook Notification | Description | Example |
---|---|---|---|
Rail Loaded | container.transport.rail_loaded | The container is loaded onto a railcar. | Example |
Rail Departed | container.transport.rail_departed | The container departs on the railcar (not always from port of discharge). | Example |
Rail Arrived | container.transport.rail_arrived | The container arrives at a rail terminal (not always at the destination terminal). | Example |
Arrived At Inland Destination | container.transport.arrived_at_inland_destination | The container arrives at the destination terminal. | Example |
Rail Unloaded | container.transport.rail_unloaded | The container is unloaded from a railcar. | Example |
There’s also a set of events that are triggered when the status of the container at the destination rail terminal changes. For containers without rail, they would have been triggered at the ocean terminal.
Transport Event | Webhook Notification | Description | Example |
---|---|---|---|
Full Out | container.transport.full_out | The full container leaves the rail terminal. | Example |
Empty In | container.transport.empty_in | The empty container is returned to the terminal. | Example |
Finally, we have a webhook notifications for when the destination ETA changes.
Transport Event | Webhook Notification | Description | Example |
---|---|---|---|
Estimated Destination Arrival | container.transport.estimated.arrived_at_inland_destination | Estimated time of arrival for the container at the destination rail terminal. | Example |
Integrate these notifications by subscribing to the webhooks and handling the incoming data to update your systems.
Rail Container Attributes
The following are new attributes that are specific to rail container tracking.
- pod_rail_loaded_at: Time when the container is loaded onto a railcar at the POD.
- pod_rail_departed_at: Time when the container departs from the POD.
- ind_eta_at: Estimated Time of Arrival at the inland destination.
- ind_ata_at: Actual Time of Arrival at the inland destination.
- ind_rail_unloaded_at: Time when the container is unloaded from rail at the inland destination.
- ind_facility_lfd_on: Last Free Day for demurrage charges at the inland destination terminal.
- pod_rail_carrier_scac: SCAC code of the rail carrier that picks up the container from the POD (this could be different than the rail carrier that delivers to the inland destination).
- ind_rail_carrier_scac: SCAC code of the rail carrier that delivers the container to the inland destination.
These attributes can be found on container objects.
Integration Methods
There are two methods to integrate Terminal49’s rail tracking data programmatically: via API and DataSync.
A. Integration via API
Terminal49 provides a robust API that allows you to programmatically access rail container tracking data and receive updates via webhooks. You will receive rail events and attributes alongside events and attributes from the ocean terminal and carrier.
Here’s a step-by-step guide to get started
B. Integration via DataSync
Terminal49’s DataSync service automatically syncs up-to-date tracking data with your system. The rail data will be in the same tables alongside the ocean terminal and carrier data.
Was this page helpful?