UPS Tracking API
Track UPS packages with WhereParcel's unified tracking API. Support for Ground, Next Day Air, 2nd Day Air, and all UPS services. Unified JSON response format.
Quick Start
Track UPS packages with a single API call:
curl -X POST https://api.whereparcel.com/v2/track \
-H "Authorization: Bearer YOUR_API_KEY:YOUR_SECRET_KEY" \
-H "Content-Type: application/json" \
-d '{
"trackingItems": [{
"carrier": "us.ups",
"trackingNumber": "1Z999AA10123456784"
}]
}'UPS Tracking Number Formats
| Service | Format | Example |
|---|---|---|
| UPS Standard | 1Z XXX XXX XX XXXX XXX X | 1Z999AA10123456784 |
Code Examples
JavaScript / Node.js
const response = await fetch('https://api.whereparcel.com/v2/track', {
method: 'POST',
headers: {
'Authorization': `Bearer ${API_KEY}:${SECRET_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
trackingItems: [{
carrier: 'us.ups',
trackingNumber: '1Z999AA10123456784',
}],
}),
});
const data = await response.json();
console.log(data.trackingItems[0].status);
// → "in_transit", "delivered", etc.Python
import requests
response = requests.post(
'https://api.whereparcel.com/v2/track',
headers={
'Authorization': f'Bearer {API_KEY}:{SECRET_KEY}',
'Content-Type': 'application/json',
},
json={
'trackingItems': [{
'carrier': 'us.ups',
'trackingNumber': '1Z999AA10123456784',
}],
},
)
data = response.json()
print(data['trackingItems'][0]['status'])Real-Time Updates with Webhooks
Instead of polling, register a webhook to receive UPS status updates automatically. Each tracking number counts as just 1 request — no matter how many status changes occur.
// Register a webhook endpoint
await fetch('https://api.whereparcel.com/v2/webhook-endpoints', {
method: 'POST',
headers: {
'Authorization': `Bearer ${API_KEY}:${SECRET_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
url: 'https://yourapp.com/webhooks/tracking',
description: 'UPS tracking updates',
}),
});