whereparcel
Stuck on integration? Have a question? The developer is standing by.

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

ServiceFormatExample
UPS Standard1Z XXX XXX XX XXXX XXX X1Z999AA10123456784

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',
  }),
});

Why WhereParcel for UPS

  • Unified JSON — same response shape across UPS and 60+ other live carriers. No carrier-specific branching code.
  • Honest pricing — Starter $49/mo (10K req), Pro $99/mo (30K), Business $650/mo (300K). 7-day free trial on every paid plan.
  • Free 3 months — write one short blog post mentioning WhereParcel via the ambassador program and get 3 months of Starter free.
  • Don't see a carrier? Request it on our community board — we add new carriers fast.

Try without signup

Use our free Tracking Number Validator to paste any UPS number and instantly see the carrier and service type — no account needed, runs entirely in your browser.

Try with sample UPS number →

Related Resources