Multi-Carrier Package Tracking avatar

Multi-Carrier Package Tracking

Pricing

from $20.00 / 1,000 package tracking results

Go to Apify Store
Multi-Carrier Package Tracking

Multi-Carrier Package Tracking

Track public USPS, UPS, and FedEx shipments with normalized status, delivery estimates, latest events, and masked diagnostics for operations and AI workflows.

Pricing

from $20.00 / 1,000 package tracking results

Rating

0.0

(0)

Developer

Muhammad Afzal

Muhammad Afzal

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

5 days ago

Last modified

Categories

Share

Multi-Carrier Package Tracking (USPS, UPS, FedEx)

Track public USPS, UPS, and FedEx shipments in one Apify Actor and receive a normalized dataset for ecommerce operations, support workflows, delivery monitoring, and AI agents.

The Actor accepts a mixed list of tracking numbers, detects unambiguous carrier formats, opens each carrier's public tracking flow in a consistent browser and residential-proxy session, and converts the available status into one stable JSON contract. It requires no carrier login or developer account. It does not solve CAPTCHAs or expose authenticated shipment documents.

What it extracts

Each active public shipment produces one dataset item. Missing carrier fields are returned as null; the Actor never guesses them.

FieldMeaning
trackingNumberNormalized tracking number
carrierUSPS, UPS, or FedEx
statusCross-carrier category such as in_transit, out_for_delivery, or delivered
statusTextCurrent carrier-provided status text
terminalWhether the package is delivered or returned
delivered / delayedAutomation-friendly state flags
estimatedDeliveryPublic delivery estimate when available
actualDeliveryPublic delivery date or timestamp when available
servicePublic carrier service name when available
origin / destinationPublic location summaries when exposed
lastEventLatest scan or progress event
eventsPublic tracking history when requested and exposed
sourceUrl / scrapedAtCarrier page and UTC extraction time

Invalid, ambiguous, inactive, challenged, or failed lookups are not inserted as fake shipment rows. Masked diagnostics are stored in the OUTPUT key-value-store record with an outcome of DATA, EMPTY, BLOCKED, REJECTED, or FAILED.

When to use it

Use this Actor for small, current batches of shipments you own, administer, or are authorized to monitor. Common workflows include checking fulfillment exceptions, enriching helpdesk tickets, monitoring orders on a schedule, feeding normalized status into Make, Zapier, or n8n, and giving an AI agent one contract across three US carriers.

Do not use it to create labels, calculate rates, change delivery instructions, submit claims, retrieve proof-of-delivery signatures, or run a high-volume carrier integration. Those workflows belong on the carriers' authenticated APIs. Public tracking records can expire, and carrier sites can suppress details based on shipment age, service, or destination.

Input

FieldRequiredDefaultNotes
trackingNumbersYesPublic inactive UPS sample1–25 numbers; spaces, hyphens, and duplicates are removed
carrierNoautoUse an explicit carrier for ambiguous numeric formats
includeDetailedEventsNotrueReturn public event history where extractable
requestTimeoutSecsNo4520–90 seconds per lookup
proxyConfigurationNoApify Residential, USRecommended because public carrier pages reject many datacenter sessions

Automatic detection is conservative. UPS numbers beginning with 1Z, common USPS domestic and international formats, and 12- or 15-digit FedEx numbers are recognized. Some all-numeric formats overlap between carriers; the Actor rejects those as ambiguous instead of querying the wrong company. Set carrier explicitly when a whole batch belongs to one carrier.

Mixed-carrier Console input

{
"trackingNumbers": [
"1Z999AA10123456784",
"9400111899223856928499",
"794644790138"
],
"carrier": "auto",
"includeDetailedEvents": true,
"requestTimeoutSecs": 45,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"],
"apifyProxyCountry": "US"
}
}

Explicit-carrier input

{
"trackingNumbers": ["YOUR_AMBIGUOUS_NUMERIC_TRACKING_NUMBER"],
"carrier": "FedEx",
"includeDetailedEvents": false
}

API call

curl -X POST "https://api.apify.com/v2/actors/YOUR_USERNAME~multi-carrier-package-tracking/runs" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"trackingNumbers":["YOUR_TRACKING_NUMBER"],"carrier":"auto"}'

Keep Apify tokens in authorization headers or secret stores. Tracking numbers and delivery details can be sensitive, so avoid placing them in public logs, issue reports, or URLs outside the intended carrier flow.

Output example

{
"trackingNumber": "1Z999AA10123456784",
"carrier": "UPS",
"status": "delivered",
"statusText": "Delivered",
"terminal": true,
"delivered": true,
"delayed": false,
"estimatedDelivery": null,
"actualDelivery": null,
"service": null,
"origin": null,
"destination": null,
"lastEvent": {
"timestamp": null,
"status": "Delivered",
"description": null,
"location": "Austin, TX"
},
"events": [],
"sourceUrl": "https://www.ups.com/track?loc=en_US&tracknum=1Z999AA10123456784",
"scrapedAt": "2026-09-09T12:00:00.000Z"
}

Pay per event pricing

EventPriceTrigger
Tracking run start$0.005Once when a run starts
Package tracking result$0.020Each schema-valid dataset item

An inactive, invalid, ambiguous, or blocked number produces no result-item charge. A run with one found shipment costs about $0.025 in events; ten found shipments cost about $0.205. The Actor checks the run's maximum charge before crawling additional potential results and never manually charges Apify's synthetic start or dataset-item events.

Reliability and failure behavior

USPS, UPS, and FedEx all restrict automated datacenter traffic on parts of their public tracking sites. The Actor therefore uses a real browser, one coherent user agent, cookie jar, US locale, timezone, and sticky proxy identity. Images, fonts, media, and common analytics are blocked to reduce bandwidth while retaining tracking scripts. Lookups run sequentially, and an access challenge gets one bounded retry with a fresh session.

The Actor does not bypass a CAPTCHA or authentication wall. A repeated carrier challenge becomes BLOCKED with zero fabricated rows and zero result-item events. An inactive or expired number becomes EMPTY; a malformed or ambiguous number becomes REJECTED; a rendering or upstream defect becomes FAILED. Valid results from other numbers are preserved when one lookup fails. Carrier markup and page-owned JSON can change, so business-critical or high-volume users should use official authenticated carrier APIs.

Run this Actor only for shipments you own, operate, support, or have permission to monitor. Keep runs and datasets private, apply short retention, and avoid publishing recipient names, precise delivery locations, or tracking numbers. The Actor masks tracking numbers in diagnostics and intentionally excludes proof-of-delivery images and signatures. You are responsible for applicable carrier terms, privacy law, contractual duties, and data-retention rules.

This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by the United States Postal Service, United Parcel Service, or FedEx. Carrier names and trademarks are used descriptively to identify public sources.

Support

When reporting a problem, share the Apify run ID, outcome, carrier, and timestamp. Do not post a complete tracking number or recipient data in a public issue; the first two and last four characters are sufficient for most diagnostics.