Discover/UPS API
live

UPS APIups.com

Track UPS shipments by tracking number. Returns current status, delivery address, milestones, weight, and full activity history via a single endpoint.

This API takes change requests — .
Endpoint health
verified 2h ago
track_shipment
1/1 passing latest checkself-healing
Endpoints
1
Updated
2h ago

What is the UPS API?

The UPS tracking API exposes 1 endpoint — track_shipment — that returns 10 structured fields for any UPS shipment, including current status, delivery address, package weight, recipient name, and a milestone array covering every key event from pickup through delivery. It accepts standard 1Z tracking numbers as well as UPS Mail Innovations and freight formats, with optional locale support for localized responses.

This call costs2 credits / call— charged only on success
Try it
Locale for the response language and formatting (e.g. en_US, nl_NL, de_DE). When omitted, defaults to en_US.
UPS tracking number (e.g. 1Z999AA10123456784). Supports standard 1Z format and other UPS tracking number formats.
api.parse.bot/scraper/a30637a6-b61c-455a-9522-230c551c9adf/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/a30637a6-b61c-455a-9522-230c551c9adf/track_shipment?tracking_number=1Z999AA10123456784' \
  -H 'X-API-Key: $PARSE_API_KEY'
All endpoints · 1 totalmissing one? ·

Track a UPS shipment by its tracking number. Returns the current status, delivery information, milestones, and detailed shipment progress activities. Supports UPS tracking number formats (1Z, mail innovations, freight, etc). Each call tracks one shipment; for invalid numbers UPS returns input_format_invalid, for valid-format numbers not found in their system it returns input_not_found.

Input
ParamTypeDescription
localestringLocale for the response language and formatting (e.g. en_US, nl_NL, de_DE). When omitted, defaults to en_US.
tracking_numberrequiredstringUPS tracking number (e.g. 1Z999AA10123456784). Supports standard 1Z format and other UPS tracking number formats.
Response
{
  "type": "object",
  "fields": {
    "status": "Current package status (e.g. Delivered, In Transit, Out for Delivery)",
    "weight": "Package weight as string",
    "left_at": "Where the package was left, if applicable",
    "milestones": "Array of milestone objects showing key shipment events with date, time, location, and name",
    "received_by": "Name of person who received the package, if delivered",
    "status_code": "Numeric status code from UPS",
    "status_type": "Status type code (e.g. D for Delivered, I for In Transit, P for Pickup)",
    "ship_to_address": "Destination address object with city, state, country fields",
    "tracking_number": "The UPS tracking number",
    "delivery_address": "Delivery address object with country and zipCode",
    "progress_bar_type": "Progress bar category (e.g. Delivered, InTransit)",
    "ship_from_address": "Origin address object, if available",
    "service_information": "Object with service_name describing the UPS service used",
    "shipped_or_billed_date": "Date the shipment was shipped or billed (MM/DD/YYYY format)",
    "progress_bar_percentage": "Progress bar percentage as string (0-100)",
    "shipment_progress_activities": "Array of detailed activity objects showing all tracking scans with date, time, location, and activityScan description"
  },
  "sample": {
    "data": {
      "status": "Delivered",
      "weight": "",
      "left_at": "Other",
      "milestones": [
        {
          "date": "",
          "name": "Label Created",
          "time": "",
          "nameKey": "cms.stapp.orderReceived",
          "category": null,
          "isFuture": false,
          "location": "Germany",
          "isCurrent": false,
          "isRFIDIcon": false,
          "isCompleted": true,
          "subMilestone": null,
          "cTrackingNumber": null,
          "pTrackingNumber": null,
          "returnTrackingNumber": null
        }
      ],
      "received_by": "TAYLOR",
      "status_code": "011",
      "status_type": "D",
      "ship_to_address": {
        "city": "LONGVIEW",
        "state": "TX",
        "country": "US",
        "zipCode": "",
        "province": null,
        "companyName": "",
        "attentionName": "",
        "isHoldAddress": false,
        "streetAddress1": "",
        "streetAddress2": "",
        "streetAddress3": "",
        "isReturnAddress": false,
        "isAddressCorrected": false
      },
      "tracking_number": "1Z999AA10123456784",
      "delivery_address": {
        "country": "US",
        "zipCode": null
      },
      "progress_bar_type": "Delivered",
      "ship_from_address": null,
      "service_information": {
        "service_name": "UPS Express™ 12:00"
      },
      "shipped_or_billed_date": "02/16/2026",
      "progress_bar_percentage": "100",
      "shipment_progress_activities": [
        {
          "date": "12/05/2025",
          "time": "10:29 A.M.",
          "actCode": "9E",
          "gmtDate": "20251205",
          "gmtTime": "16:29:38",
          "trailer": "",
          "location": "LONGVIEW, TX, US",
          "gmtOffset": "-06:00",
          "activityScan": "DELIVERED ",
          "milestoneName": {
            "name": "Delivered",
            "nameKey": "cms.stapp.delivered"
          },
          "exceptionCodes": null,
          "isRFIDIconEvent": false,
          "isBrokerageEvent": false,
          "isDisplayPodLink": true,
          "isInOverViewTable": false,
          "alternateTrackingNumbers": null,
          "activityAdditionalDescription": null
        }
      ]
    },
    "status": "success"
  }
}

About the UPS API

What the API Returns

The track_shipment endpoint accepts a tracking_number and an optional locale parameter, then returns a structured object for that shipment. Core fields include status (e.g. "Delivered", "In Transit", "Out for Delivery"), status_type (single-letter code such as D, I, or P), and status_code (numeric UPS status code). Address data comes back in two forms: ship_to_address with city, state, and country, and delivery_address with country and zip code.

Milestones and Delivery Detail

The milestones array contains ordered shipment events, each with a date, time, location, and event name — covering the full journey from pickup to final delivery. On delivered shipments, received_by returns the name of the person who signed or accepted the package, and left_at indicates where it was left when no signature was obtained (e.g. "Front Door"). weight returns the package weight as a string in the carrier-reported unit.

Tracking Number Formats and Locale

The tracking_number input supports UPS standard 1Z format (e.g. 1Z999AA10123456784) as well as Mail Innovations and freight tracking numbers. The locale parameter accepts IETF-style locale strings such as en_US, nl_NL, or de_DE, which controls the language and regional formatting of the response. When omitted, the response defaults to en_US. Each call resolves exactly one tracking number; batch tracking is not supported in the current endpoint.

Reliability & maintenanceVerified

The UPS API is a managed, monitored endpoint for ups.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when ups.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.

This isn't an official ups.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.

Last verified
2h ago
Latest check
1/1 endpoint passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Display real-time delivery status in an order management dashboard using the status and status_type fields
  • Send automated delivery notifications when status transitions to "Out for Delivery" or "Delivered"
  • Build a post-purchase tracking page that renders the full milestones timeline for customers
  • Log received_by and left_at data for proof-of-delivery records in logistics software
  • Populate destination details in a warehouse management system using ship_to_address and delivery_address
  • Support multi-language storefronts by passing the appropriate locale for each customer's region
  • Monitor freight and Mail Innovations shipments alongside standard 1Z parcels in a unified tracking tool
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo2005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min
Team$300/mo20,000300 req/min
Company$1,000/mo100,000500 req/min

Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.

Frequently asked questions
Does UPS have an official developer API for tracking?+
Yes. UPS provides the UPS Developer Kit, which includes a Tracking API, at developer.ups.com. Access requires a UPS account and approved API credentials.
What does the milestones array contain versus the status field?+
The status field gives the single current state of the shipment. The milestones array returns every key event in sequence — each with a date, time, location, and event name — so you can reconstruct the full shipment timeline rather than just the latest state.
Can I track multiple shipments in one API call?+
No. The track_shipment endpoint resolves one tracking number per request. To track multiple shipments you need to make one call per tracking number. You can fork this API on Parse and revise it to accept a list of tracking numbers and fan out requests if you need batch behavior.
Is estimated delivery date (ETA) returned by this API?+
Not currently. The API returns current status, milestones, weight, and address fields, but does not expose a dedicated estimated delivery date field. You can fork this API on Parse and revise it to add that field if UPS surfaces it for the shipment you are tracking.
Are there any tracking number formats this endpoint does not support?+
The endpoint covers UPS standard 1Z format, Mail Innovations, and freight tracking numbers. Tracking numbers issued by third-party carriers or non-UPS services (FedEx, USPS, DHL) are not supported. You can fork this API on Parse and revise it to point at a different carrier's tracking source for those cases.
Page content last updated . Spec covers 1 endpoint from ups.com.
Related APIs in EcommerceSee all →
dhl.com API
Track DHL shipments worldwide by entering a tracking number to retrieve real-time status updates, delivery location details, product information, and a complete history of all shipment events. Monitor packages from origin to destination with comprehensive tracking data.
track.ukrposhta.ua API
Track parcels sent through Ukrposhta by looking up individual shipments or monitoring multiple packages at once to get real-time delivery status and tracking information. Access detailed tracking page metadata to stay informed about your parcels' locations and delivery progress.
dsv.com API
Track your DSV shipments in real-time using reference numbers like STT numbers, waybill numbers, or container numbers to get up-to-date delivery status and location information. Monitor multiple shipment types across DSV's global network with a single lookup tool.
fedex.com API
Access data from fedex.com.
jbhunt.com API
Track your J.B. Hunt shipments in real-time for both business and home deliveries, search for service information across their site, and access freight class and location data for LTL quoting. Get company information and reference data to support your logistics and shipping needs.
indiapost.gov.in API
Track India Post shipments, money orders, and complaints in real-time using a consignment number, booking reference, or complaint ID. Retrieve delivery status, tracking events, and progress updates for postal items.
tracker.shadowfax.in API
Track Shadowfax shipments in real-time and monitor delivery status, while accessing the company's latest blogs and website configuration details. Validate tracking IDs and retrieve up-to-date content and header announcements from the Shadowfax platform.
maersk.com API
Track your Maersk shipping containers in real-time, monitor vessel schedules and locations, and discover available routes between ports and countries. Access comprehensive port data, search for specific locations, and view detailed shipping route information to plan your logistics more effectively.