API docs Endpoints
Track a shipment
Track shipments that are booked through MyParcelParcel.
https://services.parcelparcel.com/partners-api/v1/track/{trackingNumber}Example request
Track a shipment with a dummy tracking number
curl --request GET 'https://services.parcelparcel.com/partners-api/v1/track/123456789' \
--header 'X-PP-API: {YourAPIKey}@{YourAPISecret}' \
--header 'Content-Type: application/json'const response = await fetch("https://services.parcelparcel.com/partners-api/v1/track/123456789", {
method: "GET",
headers: {
"X-PP-API": "{YourAPIKey}@{YourAPISecret}",
"Content-Type": "application/json",
},
});
const data = await response.json();
console.log(data);import requests
response = requests.get(
"https://services.parcelparcel.com/partners-api/v1/track/123456789",
headers={
"X-PP-API": "{YourAPIKey}@{YourAPISecret}",
"Content-Type": "application/json",
},
)
print(response.json())Tip: copy the cURL and paste it in Postman under Import, or straight into the URL bar of a new request. Postman fills in the method, headers and body for you. Replace {YourAPIKey}@{YourAPISecret} with your own API key and secret (use your sandbox key while testing), or import the whole Postman Collection.
This endpoint allows you to track your shipments. See the example response below.
Header
You need to add the following headers:
| Name | Value |
|---|---|
Content-Type | application/json |
X-PP-API | {YourAPIKey}@{YourAPISecret} |
Don't you have an API Key and API Secret yet? Check our Authentication page and how to get them in under a minute.
Body
There is no body needed; you just put the tracking number at the end, and you are all set.
For example:
You can use 123456789 as a dummy tracking number if you haven't created a shipment with us yet.
Response
The following response elements are returned:
| Name | Value | Comments |
|---|---|---|
status | string | The tracking status of the shipment could be: info\_received = Shipment created but not in transit yet in\_transit = After the shipment is collected exception = When there is a problem with a shipment delivered = When the shipment is delivered |
pod | boolean | If the proof of delivery (signed) is available or not |
checkpoints | array | A collection of all the tracking events that a shipment has gone through. |
checkpoints.time | string | The timestamp when the event occured |
checkpoints.code | string | A code that is returned from the carrier |
checkpoints.location | string | The location of the checkpoint |
checkpoints.signedBy | string | When available, the name of the person who signed for the delivery. |
Example Response
{
"status": "in_transit",
"pod": false,
"checkpoints": [
{
"time": "2025-06-12T01:15:30-05:00",
"code": "OC",
"message": "Label created",
"description": "Shipment information sent to FedEx",
"location": "",
"signedBy": ""
},
{
"time": "2025-06-12T11:33:00+02:00",
"code": "PU",
"message": "Picked up",
"description": "Picked up",
"location": "6662, ELST, Netherlands (Holland)",
"signedBy": ""
},
{
"time": "2025-06-12T14:32:00+02:00",
"code": "CC",
"message": "In transit",
"description": "International shipment release - Export",
"location": "6662, ELST, Netherlands (Holland)",
"signedBy": ""
}
]
}Examples
Don't know how to test these requests? Check our guide.
Request example - Track a shipment with a dummy tracking number
curl --location --request GET 'https://services.parcelparcel.com/partners-api/v1/track/123456789' \
--header 'X-PP-API: {YourAPIKey}@{YourAPISecret}' \
--header 'Content-Type: application/json'GET /partners-api/v1/track/123456789 HTTP/1.1
Host: services.parcelparcel.com
X-PP-API: {YourAPIKey}@{YourAPISecret}
Content-Type: application/jsonDon't forget to change the X-PP-API element in the header for this request to work. You can keep 123456789 as a dummy tracking number to try it out.