# Get freight tracking by number

Products
            Plans
          
        
        
          
            
              
              Formerly ShipEngine
            
            
              Free
              Advanced
              Enterprise
            
          
          
            
              
            
            
              Free
              Starter
              Standard
              Premium
            
          
        
      
      
        
          Learn about products and plans
          
        
      
    

Retrieve tracking for a freight shipment by its PRO or BOL number, whether or not the shipment was booked through ShipStation. Use this when you have the carrier's reference number but no freight_shipment_id — for example, for a shipment booked outside the API.

carrier_scac is required as well as the number itself, because the freight provider needs the SCAC to resolve a tracking number.

Endpoint: GET /v2/freight/tracking
Version: 2.0.0
Security: api_keys

## Query parameters:

  - `freight_provider_account_id` (string, required)
    The freight provider account to track through. Retrieve it with List freight provider accounts.
    Example: "se-28529731"

  - `tracking_number` (string, required)
    The PRO or BOL number to track.
    Example: "072-51293847"

  - `tracking_type` (string, required)
    Which kind of number tracking_number is.
    Enum: "pro_number", "bol_number"

  - `carrier_scac` (string, required)
    The Standard Carrier Alpha Code (SCAC) of the LTL carrier. Required: the freight provider needs the SCAC to resolve a tracking number.
    Example: "FXFE"

## Response 200 fields (application/json):

  - `freight_provider_account_id` (string)
    The freight provider account used to retrieve the tracking.
    Example: "se-28529731"

  - `freight_provider_name` (string)
    The code of the freight provider used to retrieve the tracking.
    Example: "UNISHIPPERS"

  - `carrier_scac` (string,null)
    The SCAC of the LTL carrier moving the freight, as reported by the carrier. This echoes the provider's response, not the carrier_scac you supplied in the request, so it can be null.
    Example: "FXFE"

  - `bol_number` (string,null)
    The Bill of Lading number reported by the carrier.
    Example: "BOL-20260417-4821"

  - `pro_number` (string,null)
    The PRO number reported by the carrier.
    Example: "072-51293847"

  - `tracking_status` (string,null)
    The detailed tracking status reported by the carrier.
    Enum: "unknown", "created", "pending_pickup", "dispatched", "in_route_to_pickup", "at_pickup", "in_transit", "out_for_delivery", "at_delivery", "delivered", "exception", "voided", null

  - `tracking_url` (string,null)
    A carrier page where the shipment can be tracked, when the carrier provides one.
    Example: "https://www.fedex.com/fedextrack/?trknbr=07251293847"

  - `last_event_at` (string,null)
    When the most recent tracking event occurred.
    Example: "2026-04-22T09:41:00Z"

  - `events` (array)
    The tracking events reported by the carrier.

  - `events.occurred_at` (string,null)
    When the event occurred, in YYYY-MM-DDTHH:mm:ssZ format. Carriers that report only a date return midnight as the time.
    Example: "2026-04-20T14:05:00Z"

  - `events.status` (string,null)
    The tracking status the event corresponds to.
    Example: "in_transit"

  - `events.carrier_code` (string,null)
    The carrier's own status or event code.
    Example: "AF"

  - `events.description` (string,null)
    The carrier's description of the event.
    Example: "Departed terminal in Grand Rapids, MI"

  - `events.documents` (array)
    Any documents the carrier attached to the event, such as a proof of delivery. Always present; an empty array when the carrier attached none.

  - `events.documents.type` (string,null)
    The type of document, as reported by the carrier.
    Example: "PROOF_OF_DELIVERY"

  - `events.documents.filename` (string,null)
    The name of the document file.
    Example: "pod_072-51293847.pdf"

  - `events.documents.format` (string,null)
    The file format of the document.
    Example: "PDF"

## Response 400 fields (application/json):

  - `request_id` (string, required)
    A UUID that uniquely identifies the request id.
This can be given to the support team to help debug non-trivial issues that may occur
    Example: "aa3d8e8e-462b-4476-9618-72db7f7b7009"

  - `errors` (array, required)
    The errors associated with the failed API call

  - `errors.error_source` (string, required)
    The source of the error, as indicated by the name this informs us if the API call failed because of the
carrier, the order source, the ShipStation API itself, or the underlying ShipEngine platform.
    Enum: "carrier", "order_source", "ShipStation", "shipengine"

  - `errors.error_type` (string, required)
    The type of error
    Enum: "account_status", "business_rules", "validation", "security", "system", "integrations"

  - `errors.error_code` (string, required)
    The error code specified for the failed API Call
    Enum: "auto_fund_not_supported", "batch_cannot_be_modified", "carrier_conflict", "carrier_disconnected", "carrier_not_connected", "carrier_not_supported", "confirmation_not_supported", "default_warehouse_cannot_be_deleted", "field_conflict", "field_value_required", "forbidden", "identifier_conflict", "identifiers_must_match", "insufficient_funds", "invalid_address", "invalid_billing_plan", "invalid_field_value", "invalid_identifier", "invalid_status", "invalid_string_length", "label_images_not_supported", "meter_failure", "order_source_not_active", "rate_limit_exceeded", "refresh_not_supported", "request_body_required", "return_label_not_supported", "settings_not_supported", "subscription_inactive", "terms_not_accepted", "tracking_not_supported", "trial_expired", "unauthorized", "unknown", "unspecified", "verification_failure", "warehouse_conflict", "webhook_event_type_conflict", "customs_items_required", "incompatible_paired_labels", "invalid_charge_event", "invalid_object", "no_rates_returned", "freight_connection_inactive", "freight_provider_id_required", "freight_shipment_not_found", "freight_tracking_not_available", "freight_tracking_not_found", "freight_shipment_not_batchable"

  - `errors.message` (string, required)
    An error message associated with the failed API call
    Example: "Body of request cannot be null."

  - `errors.field_name` (string)
    The name of the field that caused the error (only present for validation errors)
    Example: "inventory_warehouse_id"

  - `errors.field_value` (string)
    The invalid value that was provided for the field (only present for validation errors)
    Example: "invalid-id"


