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 --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'Endpoint
https://trackingpackage.p.rapidapi.com/TrackingPackageThe 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.
| Header | Required | Description |
|---|---|---|
| X-RapidAPI-Key | Yes | Your private RapidAPI application key. |
| X-RapidAPI-Host | Yes | Must be trackingpackage.p.rapidapi.com. |
| Authorization | Integration-dependent | Authorization value supplied for the API integration. Do not include the word Bearer unless your issued credential specifically requires it. |
Request
Query parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| trackingNumber | string | Yes | The 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)
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.
| Field | Type | Description |
|---|---|---|
| TrackingNumber | string | The requested tracking identifier. |
| Delivered | boolean | Whether the shipment is marked delivered. |
| Carrier | string | Detected carrier, for example USPS. |
| ServiceType | string | Carrier and mail or shipping service. |
| PickupDate | string | Pickup date when supplied; otherwise an empty string. |
| ScheduledDeliveryDate | string | Scheduled delivery value when supplied. |
| ScheduledDeliveryDateInDateTimeFromat | string | null | Scheduled delivery in an ISO-like date-time representation. The property name is returned with Fromat spelling. |
| StatusCode | string | Normalized shipment status code. |
| Status | string | Human-readable overall status. |
| StatusSummary | string | Most recent or summary event description. |
| Message | string | Additional response message when present. |
| DeliveredDateTime | string | Delivery time formatted as YYYY-MM-DD HH:mm:ss when available. |
| DeliveredDateTimeInDateTimeFormat | string | Delivery time formatted as YYYY-MM-DDTHH:mm:ss when available. |
| SignatureName | string | Delivery signature name when provided. |
| DestinationCity | string | Destination city when available. |
| DestinationState | string | Destination state or region when available. |
| DestinationZip | string | Destination postal code when available. |
| DestinationCountry | string | Destination country when available. |
| EventDate | string | null | Summary event date when available. |
| ShipDate | string | null | Shipment date when available. |
| OriginCity | string | Origin city when available. |
| OriginState | string | Origin state or region when available. |
| OriginZip | string | Origin postal code when available. |
| OriginCountry | string | Origin country when available. |
| AccessControl | string | Carrier access-control information when provided. |
| StandardTransit | string | Standard transit estimate when provided. |
| TrackingDetails | array | Shipment-event objects, typically ordered newest first. |
Example response
{
"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
| Field | Type | Description |
|---|---|---|
| EventDateTime | string | Event time as YYYY-MM-DD HH:mm:ss. |
| Event | string | Carrier event description. |
| EventAddress | string | Carrier-provided event location; may be blank or contain trailing whitespace. |
| State | string | null | State or region when parsed from the location. |
| City | string | null | City or carrier facility name when available. |
| Zip | string | Postal code when available. |
| EventDateTimeInDateTimeFormat | string | Event 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.
| Status | Meaning | Recommended action |
|---|---|---|
| 400 | Invalid or missing request data. | Verify that trackingNumber is present and correctly encoded. |
| 401 / 403 | Authentication or subscription failure. | Verify credentials, authorization, and the active RapidAPI subscription. |
| 404 | Route or tracking resource not found. | Verify the endpoint and tracking number. |
| 429 | Rate or quota limit reached. | Respect Retry-After when present and retry with backoff. |
| 5xx | Temporary service failure. | Retry idempotent GET requests with exponential backoff and jitter. |
Integration notes
- Store tracking numbers as strings, not numeric types.
- Treat empty strings and
nullas 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
StatusCodeor event values from one carrier response. - Cache or poll according to your RapidAPI plan limits; avoid tight polling loops.