Is there one API to track packages from every carrier?

Yes. GET /v1/track?numbers=a,b,c takes up to 100 tracking numbers from any of 549 carriers in one request, with no more than 35 for any one carrier. The carrier is detected from each number's format, each entry comes back in the order sent with either a result or an error, and every carrier answers in the same JSON shape. 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.

Try it

curl: UPS, FedEx, DHL and Canada Post in one request
curl "https://api.lastscanned.com/v1/track?numbers=1Z000Y770414233027,541270563758,JJD149150000000340699,4007854296017911" \
  -H "Authorization: Bearer lsk_live_YOUR_KEY"
TypeScript: one loop for every carrier
type Entry = { trackingNumber: string; result?: { carrier: string; status: string }; error?: { code: string } };

const numbers = ["1Z000Y770414233027", "541270563758", "JJD149150000000340699", "4007854296017911"];
const res = await fetch(`https://api.lastscanned.com/v1/track?numbers=${numbers.join(",")}`, {
  headers: { Authorization: `Bearer ${process.env.LASTSCANNED_KEY}` },
});
const { results } = (await res.json()) as { results: Entry[] };
for (const { trackingNumber, result, error } of results) {
  console.log(trackingNumber, result ? `${result.carrier}: ${result.status}` : `error: ${error?.code}`);
}

Ways to track packages across carriers

OptionHow it worksPriceNotes
Each carrier's own APIA developer app and OAuth token per carrier; UPS takes one number per call, FedEx up to 30.Through each carrier's developer accountOne integration, response shape and limit per carrier.
Tracking platformsAfterShip, 17TRACK, Ship24 and others register numbers and report back.Plans varySee the comparison for prices read from each vendor.
lastscannedGET /v1/track?numbers= with up to 100 mixed numbers, one Bearer key.Free: 5 numbers a day. Pro: $4.99/mo for 1,000 unique numbers, then $0.015 each, no daily limit.549 carriers, synchronous answer, same shape.

Carrier limits from UPS API docs: one call per package and FedEx Developer Portal: Track API, read on November 3, 2026. They can change.

Details

Detection, with a hint when you need one

Most formats identify their carrier on their own. When a list is all one carrier whose numbers share a shape with another, add ?carrier= to the request.

One bad number never fails the rest

Each entry has either result or error. A number the carrier has no record of yet comes back as not_found while the others return in full.

Statuses you can switch on

Every carrier maps to label_created, in_transit, out_for_delivery, delivered, exception, returned or unknown, with the carrier's own wording kept in statusDescription.

From AI agents too

The same tracking is available as an MCP tool at https://mcp.lastscanned.com/mcp, which an agent can call to track one number or a list.

FAQ

How many carriers does lastscanned track?
549, including UPS, FedEx, USPS, DHL, Canada Post and regional last-mile carriers.
How many numbers can one request hold?
100, with no more than 35 for any one carrier.
Do I need to say which carrier each number is?
Usually not. Add ?carrier= when every number in the request belongs to one carrier whose format another carrier shares.
Is it synchronous?
Yes. The request answers when every number in it has a result or an error. For updates later, watch the numbers and get webhooks.