How do I track multiple USPS tracking numbers at once?

USPS.com tracks up to 35 numbers at a time, separated by commas. The USPS Tracking API (v3r2) takes 1 to 35 numbers per POST /tracking request, with an OAuth token from an app you register with USPS. With lastscanned you send up to 35 USPS numbers per GET /v1/track request, or up to 100 when the list mixes carriers, with one key and no USPS account, and loop for longer lists. 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: USPS mixed with UPS and FedEx in one request (put your own USPS number first)
curl "https://api.lastscanned.com/v1/track?numbers=YOUR_USPS_NUMBER,1Z000Y770414233027,541270563758" \
  -H "Authorization: Bearer lsk_live_YOUR_KEY"
Node: a long USPS list, 35 per request, written out as CSV
// node track-list.mjs < numbers.txt > results.csv   (one number per line)
import { stdin } from "node:process";

let text = "";
for await (const chunk of stdin) text += chunk;
const numbers = [...new Set(text.split(/[\s,]+/).map((n) => n.trim().toUpperCase()).filter(Boolean))];
// e.g. YOUR_USPS_NUMBER_1, YOUR_USPS_NUMBER_2

console.log("tracking_number,carrier,status,last_scan_utc,last_scan,location,error");
for (let i = 0; i < numbers.length; i += 35) {
  const batch = numbers.slice(i, i + 35);
  const url = new URL("https://api.lastscanned.com/v1/track");
  url.searchParams.set("numbers", batch.join(","));
  url.searchParams.set("carrier", "usps");
  const res = await fetch(url, { headers: { Authorization: `Bearer ${process.env.LASTSCANNED_KEY}` } });
  if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);
  for (const { trackingNumber, result, error } of (await res.json()).results) {
    const last = result?.events?.[0]; // events are newest first
    const row = [trackingNumber, result?.carrier, result?.status, last?.timestamp, last?.description, last?.location, error?.code];
    console.log(row.map((v) => JSON.stringify(v ?? "")).join(","));
  }
}

Ways to track USPS numbers in bulk

OptionHow it worksPriceNotes
USPS.com TrackingEnter up to 35 numbers, separated by commas.FreeMade for reading on screen; a longer list means another search.
USPS Tracking API (v3r2)POST https://api.usps.com/tracking/v3r2/tracking with an array of 1 to 35 numbers and an OAuth Bearer token.Through your USPS developer accountUSPS only. A request over your app's quota comes back 429.
lastscannedGET /v1/track?numbers=a,b,c with up to 35 USPS numbers (100 in all), one Bearer key.Free: 5 numbers a day. Pro: $4.99/mo for 1,000 unique numbers, then $0.015 each, no daily limit.USPS and 548 other carriers in one response shape.

Carrier limits from USPS: track up to 35 items at a time and USPS Tracking API v3r2, read on November 5, 2026. They can change.

Details

35 per carrier, 100 per request

USPS caps both its site and its API at 35 numbers. lastscanned caps any one carrier at 35 per request too, but a request can hold 100 numbers in all, so USPS numbers can go out alongside UPS, FedEx and the rest of a mixed list.

No USPS developer app or OAuth

USPS's API needs an app registered with USPS and an OAuth token on every call, under a quota per app. lastscanned needs one Bearer key, and the same key covers every other carrier.

The USPS leg of other shippers' labels

eCommerce labels that hand off to USPS for the last mile carry USPS numbers (92 to 95 followed by 18 to 24 digits). They detect as USPS from the format, so you can send them without a carrier hint.

What a big USPS list costs

On Pro a number counts once a month however often you re-check it. 3,000 different USPS numbers in a month is $4.99 + 2,000 × $0.015 = $34.99.

FAQ

How many USPS numbers can I track at once on USPS.com?
Up to 35, separated by commas.
Can the USPS Tracking API track multiple numbers in one call?
Yes. Version 3r2 takes an array of 1 to 35 tracking numbers per POST /tracking request, with an OAuth token.
How many USPS numbers fit in one lastscanned request?
35. A request can hold 100 numbers in all, with no more than 35 for any one carrier, so a USPS-only list goes out 35 at a time.
Do I need a USPS business account to track USPS by API?
For USPS's own API you register an app with USPS and request OAuth tokens. lastscanned needs only a lastscanned key.