Developer reference

Package Tracking API documentation

Retrieve a normalized shipment status and available tracking-event history from a single REST endpoint distributed through RapidAPI.

RESTJSONHTTPSRapidAPI

Implementation resources

Use the server-side integration guide for downloadable JavaScript and Python examples, timeouts, and failure handling. Review carrier notes, request budgets, and the documentation changelog.

Documentation updated September 11, 2026. Code examples illustrate the documented interface; carrier coverage and live error behavior should be tested with your subscription.

Supported carrier scope

C2W supports UPS, USPS, FedEx, DHL Express, DHL eCommerce, OnTrac, UniUni and GOFO. Use the carrier guides for examples and evaluation notes. Service coverage and field availability vary; examples are illustrative, not live carrier results. Webhooks are not supported.

Quick start

Subscribe to the TrackingPackage API on RapidAPI, copy your application key, and send a request with the parcel’s tracking number.

cURL
curl --request GET \
  --url 'https://trackingpackage.p.rapidapi.com/TrackingPackage?trackingNumber=9200190312809701574398' \
  --header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY' \
  --header 'X-RapidAPI-Host: trackingpackage.p.rapidapi.com'
Keep credentials private. Never embed API keys in browser-side JavaScript, public repositories, logs, or screenshots. Send requests from your server and load secrets from environment variables or a secrets manager.

Endpoint

GEThttps://trackingpackage.p.rapidapi.com/TrackingPackage

The endpoint returns the current shipment state and an array of carrier tracking events. Requests and responses use HTTPS; successful responses are JSON. Webhooks are not supported. This reference covers one tracking number per request; contact C2W for batch requirements.

Authentication

Send credentials as request headers. The RapidAPI key and host identify your RapidAPI application and route the call to this API. If an additional Authorization value was issued for your integration, send it exactly as provided. Omit that header otherwise.

HeaderRequiredDescription
X-RapidAPI-KeyYesYour private RapidAPI application key.
X-RapidAPI-HostYesMust be trackingpackage.p.rapidapi.com.
AuthorizationIntegration-dependentAuthorization value supplied for the API integration. Do not include the word Bearer unless your issued credential specifically requires it.

Request

Query parameters

ParameterTypeRequiredDescription
trackingNumberstringYesThe carrier-issued tracking number. Treat it as a string so leading zeroes and long identifiers are preserved.

This is a GET request and does not require a request body. URL-encode the tracking number when building the query string.

JavaScript (Node.js)

Node.js 18+
const trackingNumber = '9200190312809701574398';
const url = new URL('https://trackingpackage.p.rapidapi.com/TrackingPackage');
url.searchParams.set('trackingNumber', trackingNumber);

const response = await fetch(url, {
  headers: {
    'X-RapidAPI-Key': process.env.RAPIDAPI_KEY,
    'X-RapidAPI-Host': 'trackingpackage.p.rapidapi.com',
    ...(process.env.TRACKING_API_AUTHORIZATION ? { Authorization: process.env.TRACKING_API_AUTHORIZATION } : {})
  }
});

if (!response.ok) {
  throw new Error(`Tracking request failed: ${response.status}`);
}

const tracking = await response.json();
console.log(tracking.Status, tracking.TrackingDetails);

Response object

Field names and capitalization are case-sensitive. Empty or unavailable carrier data may be returned as an empty string or null, so consumers should support both.

FieldTypeDescription
TrackingNumberstringThe requested tracking identifier.
DeliveredbooleanWhether the shipment is marked delivered.
CarrierstringDetected carrier, for example USPS.
ServiceTypestringCarrier and mail or shipping service.
PickupDatestringPickup date when supplied; otherwise an empty string.
ScheduledDeliveryDatestringScheduled delivery value when supplied.
ScheduledDeliveryDateInDateTimeFromatstring | nullScheduled delivery in an ISO-like date-time representation. The property name is returned with Fromat spelling.
StatusCodestringNormalized shipment status code.
StatusstringHuman-readable overall status.
StatusSummarystringMost recent or summary event description.
MessagestringAdditional response message when present.
DeliveredDateTimestringDelivery time formatted as YYYY-MM-DD HH:mm:ss when available.
DeliveredDateTimeInDateTimeFormatstringDelivery time formatted as YYYY-MM-DDTHH:mm:ss when available.
SignatureNamestringDelivery signature name when provided.
DestinationCitystringDestination city when available.
DestinationStatestringDestination state or region when available.
DestinationZipstringDestination postal code when available.
DestinationCountrystringDestination country when available.
EventDatestring | nullSummary event date when available.
ShipDatestring | nullShipment date when available.
OriginCitystringOrigin city when available.
OriginStatestringOrigin state or region when available.
OriginZipstringOrigin postal code when available.
OriginCountrystringOrigin country when available.
AccessControlstringCarrier access-control information when provided.
StandardTransitstringStandard transit estimate when provided.
TrackingDetailsarrayShipment-event objects, typically ordered newest first.

Example response

200 OK · application/json
{
  "TrackingNumber": "9200190312809701574398",
  "Delivered": true,
  "Carrier": "USPS",
  "ServiceType": "USPS - USPS Ground Advantage",
  "StatusCode": "Delivered",
  "Status": "Delivered",
  "StatusSummary": "Delivered, In/At Mailbox",
  "DeliveredDateTime": "2026-07-07 15:10:00",
  "DeliveredDateTimeInDateTimeFormat": "2026-07-07T15:10:00",
  "TrackingDetails": [
    {
      "EventDateTime": "2026-07-07 15:10:00",
      "Event": "Delivered, In/At Mailbox",
      "EventAddress": "EUGENE OR",
      "State": "OR",
      "City": "EUGENE",
      "Zip": "",
      "EventDateTimeInDateTimeFormat": "2026-07-07T15:10:00"
    }
  ]
}

Tracking event object

FieldTypeDescription
EventDateTimestringEvent time as YYYY-MM-DD HH:mm:ss.
EventstringCarrier event description.
EventAddressstringCarrier-provided event location; may be blank or contain trailing whitespace.
Statestring | nullState or region when parsed from the location.
Citystring | nullCity or carrier facility name when available.
ZipstringPostal code when available.
EventDateTimeInDateTimeFormatstringEvent time as YYYY-MM-DDTHH:mm:ss.

Error handling

Check the HTTP status before parsing a successful tracking response. RapidAPI may return its own error payload for authentication, quota, or routing failures; application-level errors may use a different JSON shape from the success object.

StatusMeaningRecommended action
400Invalid or missing request data.Verify that trackingNumber is present and correctly encoded.
401 / 403Authentication or subscription failure.Verify credentials, authorization, and the active RapidAPI subscription.
404Route or tracking resource not found.Verify the endpoint and tracking number.
429Rate or quota limit reached.Respect Retry-After when present and retry with backoff.
5xxTemporary service failure.Retry idempotent GET requests with exponential backoff and jitter.
This table describes general HTTP handling, not an exhaustive C2W error contract. Gateway and carrier failures can return different payloads. Check status and content type before using fields, and validate actual failure responses in your integration.

Integration notes

  • Store tracking numbers as strings, not numeric types.
  • Treat empty strings and null as unavailable values.
  • Times in the sample response include no UTC offset or timezone. Avoid converting them as UTC unless your integration contract confirms that behavior.
  • Trim location strings before display or comparison.
  • Do not infer a complete list of possible StatusCode or event values from one carrier response.
  • Cache or poll according to your RapidAPI plan limits; avoid tight polling loops.