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

Canada Post Tracking API

Track Canada Post packages with WhereParcel's unified tracking API. Support for Xpresspost, Expedited Parcel, and all Canada Post services.

Quick Start

Track Canada Post 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": "ca.post",
      "trackingNumber": "7023210039414025"
    }]
  }'

Canada Post Tracking Number Formats

ServiceFormatExample
Canada Post StandardXXXX XXXX XXXX XXXX (16 digits)7023210039414025

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: 'ca.post',
      trackingNumber: '7023210039414025',
    }],
  }),
});

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': 'ca.post',
            'trackingNumber': '7023210039414025',
        }],
    },
)

data = response.json()
print(data['trackingItems'][0]['status'])

Real-Time Updates with Webhooks

Instead of polling, register a webhook to receive Canada Post 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: 'Canada Post tracking updates',
  }),
});