Track a Package

With ShipEngine, you can subscribe to real-time tracking events for any package – regardless of whether you created the label via ShipEngine.

For labels that were created via ShipEngine, we recommend that you track by Label ID. For other packages, follow the instructions below to track via the tracking number instead.

Supported Carriers

Carrier Carrier Code
U.S. Postal Service usps
Stamps.com stamps_com
FedEx fedex
UPS ups
DHL Express dhl_express
Canada Post canada_post
Australia Post australia_post
First Mile firstmile
Asendia asendia
OnTrac ontrac
APC apc
Newgistics newgistics
Globegistics globegistics
RR Donnelley rr_donnelley
IMEX imex
Access Worldwide access_worldwide
Purolator Canada purolator_ca
Sendle sendle

Info

Event Timestamps

carrier_occurred_at is the timestamp of the event received from the carrier, it is assumed to be the local time of where the event occurred.

occurred_at is the UTC based time of the event's occurrence.

Warning The carried_occurred_at event property is not yet fully supported across all carriers.

Example

The following example demonstrates how to get tracking information. You need to specify the carrier_code (see the table above) and the tracking_number of the package.

Example Request

curl -iX GET https://api.shipengine.com/v1/tracking?carrier_code=stamps_com&tracking_number=9405511899223197428490 \
-H 'API-Key: __YOUR_API_KEY_HERE__'
GET /v1/tracking?carrier_code=stamps_com&tracking_number=9405511899223197428490 HTTP/1.1
Host: api.shipengine.com
API-Key: __YOUR_API_KEY_HERE__
Cache-Control: no-cache
  • curl
  • http

Example Response

{
  "tracking_number": "9405511899223197428490",
  "status_code": "DE",
  "status_description": "Delivered",
  "carrier_status_code": "01",
  "carrier_status_description": "Your item was delivered in or at the mailbox at 9:10 am on March 2, 2017 in AUSTIN, TX 78756.",
  "ship_date": "2019-07-26T22:10:50.286Z",
  "estimated_delivery_date": null,
  "actual_delivery_date": "2019-07-26T22:10:50.286Z",
  "exception_description": null,
  "events": [
    {
      "occurred_at": "2019-09-13T12:32:00Z",
      "carrier_occurred_at": "2019-09-13T05:32:00",
      "description": "Arrived at USPS Facility",
      "city_locality": "OCEANSIDE",
      "state_province": "CA",
      "postal_code": "92056",
      "country_code": "",
      "company_name": "",
      "signer": "",
      "event_code": "U1"
    }
  ]
}

Tracking Status Codes

Here's how the status_code and status_description fields correspond to each other, and how they correspond to the tracking_status field of a label:

status_code status_description tracking_status
AC Accepted N/A
IT In Transit in_transit
DE Delivered delivered
EX Exception error
UN Unknown unknown
AT Delivery Attempt N/A
NY Not Yet In System in_transit