How do I get Canada Post tracking data from an API?
lastscanned returns Canada Post tracking as JSON from GET /v1/track/{number}?carrier=canadapost with one Bearer key and no Canada Post Developer Program account. It reads 16-digit PINs and S10 numbers ending in CA, takes 35 per request, and answers in the same shape as all 549 carriers. Free is 5 numbers a day; Pro is $4.99/mo for 1,000 unique numbers.
Try it
curl "https://api.lastscanned.com/v1/track/4007854296017911?carrier=canadapost" \
-H "Authorization: Bearer lsk_live_YOUR_KEY"curl -X POST https://api.lastscanned.com/v1/watches \
-H "Authorization: Bearer lsk_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"trackingNumber": "4007854296017911", "carrier": "canadapost", "metadata": {"order": "1042"}}'Ways to get Canada Post tracking by API
| Option | How it works | Price | Notes |
|---|---|---|---|
| Canada Post tracking web service | One PIN or delivery notice card number per GET call, with Basic auth from a Developer Program API key. | Through the Canada Post Developer Program | Canada Post only. Over the throttle limit, the key is blocked for up to a minute. |
| lastscanned, one number | GET /v1/track/{number}?carrier=canadapost with a Bearer key. | Free: 5 numbers a day. Pro: $4.99/mo for 1,000 unique numbers, then $0.015 each, no daily limit. | Status, every scan, service name and delivery time. |
| lastscanned, many numbers | GET /v1/track?numbers=a,b,c with up to 35 Canada Post numbers (100 in all). | Same plan; on Pro re-checks are free | Each entry comes back with a result or an error, in the order sent. |
Carrier limits from Canada Post: Get Tracking Summary and Canada Post: web services fundamentals, read on November 5, 2026. They can change.
Details
Formats
Domestic parcels carry a 16-digit PIN. International registered and Xpresspost items use the S10 format: 2 letters, 9 digits, then CA. When a list is all Canada Post, add carrier=canadapost so every number goes to Canada Post.
A live sample
4007854296017911 is an Expedited Parcels PIN delivered on February 16, 2026. It comes back with status delivered, deliveredAt in UTC, the service name and every scan, newest first.
Bulk lists
A request takes up to 35 Canada Post numbers, or 100 when the list mixes carriers. Long lists loop 35 at a time.
Webhooks and handoffs
POST /v1/watches re-checks Canada Post numbers on a schedule and sends a signed webhook when something changes. Cross-border parcels often reach Canada Post from another carrier.
FAQ
- Does this work for Postes Canada and CPC numbers?
- Yes. Postes Canada and CPC are other names for Canada Post, and those numbers come back as carrier canadapost.
- Do I need a Canada Post Developer Program account?
- Not to use lastscanned. Canada Post's own web services need Developer Program API keys.
- Does the Canada Post API take more than one PIN per call?
- No. Get Tracking Summary and Get Tracking Details each take one PIN or delivery notice card number. lastscanned takes 35 Canada Post numbers per request.
- Can an AI agent track Canada Post packages?
- Yes. Add lastscanned as an MCP server (https://mcp.lastscanned.com/mcp) and ask: "Where is Canada Post package 4007854296017911?"
- What does it cost?
- Pro is $4.99/mo for 1,000 unique numbers, then $0.015 each, with no daily limit. A free key tracks 5 numbers a day. With no key you get 1 lookup a day, then pay per request over MPP: $0.50 by card for a 25-number pack, or $0.02 a number in USDC on Tempo or Solana.