How do I get USPS tracking data from an API?

USPS's current Tracking API (v3r2) is POST https://api.usps.com/tracking/v3r2/tracking with an array of 1 to 35 tracking numbers and an OAuth Bearer token, under a quota per app (429 when you go over). It also has endpoints to register up to 3 email addresses for notifications and to request proof of delivery. lastscanned returns USPS tracking as JSON from GET /v1/track/{number} with one Bearer key, in the same shape as every other carrier, and can send a signed webhook when a USPS package changes. 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: one USPS number (use your own)
curl "https://api.lastscanned.com/v1/track/YOUR_USPS_NUMBER?carrier=usps" \
  -H "Authorization: Bearer lsk_live_YOUR_KEY"
curl: get a webhook when a USPS package changes
curl -X POST https://api.lastscanned.com/v1/watches \
  -H "Authorization: Bearer lsk_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"trackingNumber": "YOUR_USPS_NUMBER", "carrier": "usps", "metadata": {"order": "1042"}}'

Ways to get USPS tracking by API

OptionHow it worksPriceNotes
USPS Tracking API (v3r2)POST /tracking/v3r2/tracking with 1 to 35 numbers and an OAuth token; optional mailing date and destination ZIP to pick the right item.Through your USPS developer accountUSPS only. Requests over your app's quota come back 429.
USPS tracking notificationsPOST /tracking/{trackingNumber}/notifications registers up to 3 email addresses.Through your USPS developer accountEmail to people, not events to your server.
lastscannedGET /v1/track/{number}, or ?numbers= with up to 35 USPS numbers (100 in all); POST /v1/watches for webhooks.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 Tracking API v3r2 and USPS Tracking v3r2 spec, read on November 5, 2026. They can change.

Details

OAuth and quotas or one key

USPS's API needs an app registered with USPS, an OAuth token on each call, and a quota per app. lastscanned takes one Bearer key that also covers UPS, FedEx and the other carriers.

Email notifications or webhooks

USPS can email up to 3 addresses about a package. A lastscanned watch sends a signed tracking.updated event to your server instead, re-checked every 15 minutes when out for delivery and hourly in transit.

The same shape for every carrier

USPS results use the same status values and event fields as UPS and FedEx, so one parser handles a mixed list.

USPS numbers from other shippers

Labels that hand off to USPS for the last mile carry USPS numbers (92 to 95 followed by 18 to 24 digits), which detect as USPS from the format.

FAQ

How many numbers does the USPS Tracking API take per request?
Version 3r2 takes 1 to 35 tracking numbers per POST /tracking request.
Do I need a USPS account to track USPS packages by API?
For USPS's own API you register an app with USPS and use OAuth. lastscanned needs only a lastscanned key.
Does USPS send webhooks for tracking?
Its v3r2 API registers email notifications for up to 3 addresses. For events sent to your own server, watch the number on lastscanned and set a webhook URL.
What happens when I go over the USPS API quota?
USPS returns 429. lastscanned Pro has no daily limit; past 1,000 unique numbers a month each extra number is $0.015.