Domestic Rail Visibility
Get OpenTrack's industry-leading rail visibility on shipments moving on domestic rail waybills.
Domestic Rail Visibility is an add-on to OpenTrack. If you do not already have it enabled, please contact [email protected] to modify your subscription.
How It Works
Domestic Rail Visibility has simplified tracking requirements:
- You provide the equipment number only (container or railcar)
- OpenTrack automatically discovers the waybill number and railroad
- We fetch data directly from the relevant Class 1 railroad, or from traditional rail data aggregators for Class 2 and 3 carriers
No waybill or additional identifiers are required, just the equipment number.
Tracking via API
To track domestic rail equipment via API, use the /containers endpoint with only the equipment number.
POST https://api.opentrack.co/v1/containers/{containerId}Replace {containerId} with your equipment number, for example EMHU1234567.
Here's an example request in cURL (replace EMHU1234567 in the url with your equipment number):
curl --request POST \
--url https://api.opentrack.co/v1/containers/EMHU1234567 \
--header 'accept: application/json' \
--header 'content-type: application/json'The request body is optional, but you can add one if you want to include custom fields to be stored on the equipment level in OpenTrack for later use.
Here's an example request that includes custom fields (replace EMHU1234567 in the url with your equipment number):
curl --request POST \
--url https://api.opentrack.co/v1/containers/EMHU1234567 \
--header 'accept: application/json' \
--header 'content-type: application/json' \
--data '
{
"customFields": {
"customer": "Your Value"
}
}
'The equipment number in the path accepts both intermodal containers and non-containerized railcar equipment numbers. OpenTrack will automatically identify the equipment type and discover the active waybill, then automatically retrieve its data from the rail line.
Unlike international intermodal tracking, you do not need to provide a waybill number, carrier SCAC, or booking reference. Equipment number is all that's required.
Data Included
| Field | Description |
|---|---|
railCarrier | Railroad transporting the equipment to final rail facility |
finalRailStation | Rail station at final destination (includes name, fsac, unlocode, firmsCode) |
lastFreeDayAtRailStation | Date by which equipment should be picked up to avoid demurrage fees |
detentionLastFreeDay | Date by which equipment should be returned to avoid detention per diem fees |
etaAtDestination | ETA to final rail facility |
demurrageOwedAtRailStation | Amount of demurrage currently owed at the final rail station |
demurrageIncurredAtRailStation | Total amount of demurrage incurred at the final rail station |
chassisNumber | Identifier of the chassis used to pull the container from the rail facility |
containerSize | Size of the equipment (TWENTY_FT, FORTY_FT, FORTY_FT_HC, FORTY_FIVE_FT_HC) |
containerType | Type of the equipment (DRY, FLAT_RACK, OPEN, REEFER, TANK, VENTILATED) |
loadStatus | EMPTY or LADEN. Tells an empty domestic rail voyage from a laden one. Omitted when unknown. |
grossWeight | Gross weight of the container in kilograms |
Milestones Included
| Status Value | Description |
|---|---|
FULL_INGATED_TO_RAIL_FACILITY | Container ingated to departure ramp facility. Also maps Release From Industry for non-containerized railcars. |
LOADED_ON_RAIL | Equipment placed on rail car to destination |
DEPARTED_ON_RAIL | Equipment departed on rail to final destination |
ARRIVED_AT_RAIL_FACILITY | Equipment arrival at final rail facility |
UNLOADED_FROM_RAIL | Equipment deramped from rail |
AVAILABLE_AT_RAIL_FACILITY | Equipment was placed for release Also maps Constructive Placement. |
ACTUAL_PLACEMENT | Equipment is placed and ready for pickup. Container and railcar voyages both report this milestone, and a domestic rail voyage often ends here. |
FULL_OUTGATED_FROM_RAIL_FACILITY | Equipment outgated from the final rail facility |
Full and empty voyages
Empty and laden domestic rail voyages use the same milestone names. Do not use EMPTY_OUTGATED_FROM_RAIL_FACILITY or EMPTY_RETURNED to decide that a voyage is empty. Those milestones are not how an empty voyage is identified.
Read loadStatus on the container payload and on webhook data:
| Value | Meaning |
|---|---|
EMPTY | Empty voyage |
LADEN | Laden voyage |
loadStatus is omitted when it is not yet known.
A voyage often ends at ACTUAL_PLACEMENT. With continuous tracking, that voyage then closes because a new waybill started, and the next voyage is tracked on its own. The next voyage has its own loadStatus.
Contact support to enable empty voyage tracking in your account.
Continuous tracking for long-term leased or owned equipment
Continuous, long-term equipment tracking is available for owned or leased equipment. OpenTrack automatically detects the end of each voyage and restarts tracking on the new waybill.
How to start continuous tracking
First things first: Make sure you've contacted support to enable continuous tracking in your account.
To enable continuous tracking on a container, set the "leased" custom field to "true".
You can tag containers via API, bulk upload, or manually.
To stop continuous tracking on a container, you can also pass "leased": "false" in a similar way.
Via bulk upload or manually
Here's the guide to updating custom fields on containers via bulk upload and manually in-app.
Via API
Here's a sample POST container tracking request that shows how to set the "leased" flag on a container:
curl --location 'https://api.opentrack.co/v1/containers/NAHX123456' \
--header 'Content-Type: application/json' \
--header 'Opentrack-API-Key: ***' \
--data '
{
"customFields": {
"leased": "true"
}
}
'
Updated 12 days ago
