Carriers

UniUni Tracking API & MCP

Query live UniUni (uniuni) package status and scan history across the US and Canada in a single synchronous GET request or MCP tool call. lastscanned auto-detects primary UUS… tracking numbers in Pass 1 and UR… / U9999… / U000… partner numbers in Pass 2, returning a normalized TrackingResult JSON payload—without requiring a UniUni enterprise shipper contract or webhook integration.

Overview & Quick Facts

PropertyValue
Carrier slug (?carrier=)uniuni
Brand & service aliasesUniUni, UniUni Express, UniUni US & Canada Last-Mile
CategoryUS & Canada e-commerce last-mile carrier (Detection precedence #7 of 31)
Single-package REST endpointGET https://api.lastscanned.com/v1/track/{trackingNumber}
Batch REST endpointGET https://api.lastscanned.com/v1/track?numbers=UUS...,UUS... (up to 35 numbers per carrier in a 100-number call)
MCP server (https://mcp.lastscanned.com)track_package, track_packages, list_carriers (claude mcp add --transport http lastscanned https://mcp.lastscanned.com)
Authentication & pricingAuthorization: Bearer lsk_live_... · 1 free keyless lookup/day per IP · Free tier (5 unique numbers/day, $0) · Pro ($4.99/mo for 1,000 unique numbers, unlimited re-polls, $0.015/extra) · HTTP 402 Stripe MPP ($0.50 for 25-number lsk_pack_ key or $0.02/number in USDC on Tempo)

Why developers use lastscanned for UniUni

  • No merchant shipper account required: UniUni's shipper API is gated behind commercial onboarding for direct e-commerce merchants and 3PLs. With lastscanned, any application or AI support agent can track UniUni parcels immediately via GET /v1/track/:number.
  • Translates opaque numeric state codes: UniUni's raw payload reports numeric state codes (190, 195, 200, 202, 203, 211, 213, 230, 1870) and oldest-first scan arrays. lastscanned reverses the timeline to newest-first and normalizes every state code into the 7 standard statuses.
  • Seamless cross-border handoff target: Parcels originating on YunExpress, Yanwen, 4PX, or Cainiao frequently hand off to UniUni for North American final delivery.

Tracking Number Formats & Auto-Detection (matches vs mayMatch)

UniUni is evaluated seventh (#7) in lastscanned's two-pass detector and uses both Pass 1 (matches) and Pass 2 (mayMatch):

PassRule / RegexCheck DigitExamples
Pass 1 (matches) — Primary UUS/^UUS[0-9A-Z]{13,16}$/i (UUS + 13–16 alphanumeric characters = 16–19 chars)—UUS5BM1269395824723, UUSC000019638703
Pass 2 (mayMatch) — Partner UR / U9999 / U000/^(UR\d{12,20}|U9999\d{6,20}|U000\d{6,20})$/i—UR07270000003615622, U999912345678, U000123456789

When is ?carrier=uniuni optional vs required?

  • Optional (auto-detected in Pass 1): All UUS + 13–16 alphanumeric tracking numbers.
  • Optional (auto-detected in Pass 2): UR + 12–20 digits, U9999 + 6–20 digits, and U000 + 6–20 digits. Because these formats sit in Pass 2 (mayMatch), they route to uniuni whenever no Pass 1 carrier claims the number.
  • Required (?carrier=uniuni): Canadian / partner barcodes starting with GV… or JY… (such as GV2601…CAA0… or JY2601…CAA0…). Pass ?carrier=uniuni when querying these numbers.

Synchronous GET Request & Normalized JSON Response

curl

curl -s "https://api.lastscanned.com/v1/track/UUS5BM1269395824723" \
  -H "Authorization: Bearer $LASTSCANNED_API_KEY"

JavaScript / TypeScript (fetch)

const res = await fetch("https://api.lastscanned.com/v1/track/UUS5BM1269395824723", {
  headers: { Authorization: `Bearer ${process.env.LASTSCANNED_API_KEY}` },
});
const pkg = await res.json();
console.log(pkg.status, pkg.statusDescription, pkg.deliveredAt);

MCP track_package tool call

{
  "tool": "track_package",
  "arguments": {
    "tracking_number": "UUS5BM1269395824723"
  }
}

Normalized TrackingResult JSON response

{
  "carrier": "uniuni",
  "trackingNumber": "UUS5BM1269395824723",
  "status": "delivered",
  "statusDescription": "Delivered",
  "service": null,
  "deliveredAt": "2026-10-24T21:18:42Z",
  "deliveredAtLocal": "2026-10-24T14:18:42",
  "signedBy": null,
  "destination": {
    "city": "LOS ANGELES",
    "state": "CA",
    "country": "US"
  },
  "estimatedDelivery": null,
  "events": [
    {
      "timestamp": "2026-10-24T21:18:42Z",
      "localTime": "2026-10-24T14:18:42",
      "status": "delivered",
      "description": "Delivered",
      "location": "Los Angeles, CA",
      "code": "203"
    },
    {
      "timestamp": "2026-10-24T15:04:10Z",
      "localTime": "2026-10-24T08:04:10",
      "status": "out_for_delivery",
      "description": "Out for delivery",
      "location": "Los Angeles, CA",
      "code": "202"
    },
    {
      "timestamp": "2026-10-24T06:31:55Z",
      "localTime": "2026-10-23T23:31:55",
      "status": "in_transit",
      "description": "Arrived at UniUni facility",
      "location": "Los Angeles, CA",
      "code": "195"
    },
    {
      "timestamp": null,
      "localTime": "2026-10-21T05:46:35",
      "status": "label_created",
      "description": "Order received",
      "location": null,
      "code": "190"
    }
  ]
}

Raw status & state codes: events[].code preserves UniUni's numeric state code as a string ("190" / "1870" → label_created; "202" → out_for_delivery; "203" / "216" / "228" → delivered; "230" → returned; "206", "207", "209", "211" failed attempt, "215", "222", "229", "235" → exception; "195", "199", "200", "212", "213", "217", "220" → in_transit).

Carrier-Specific Status & Integration Notes

  • Timestamps (timestamp vs localTime): Physical hub and driver scans include both a Unix epoch (ts), local clock (localTime), and IANA timezone, populating both timestamp (UTC) and localTime. The initial electronic "Order received" scan (190/1870) carries no timezone, so timestamp is null and localTime holds the printed timestamp.
  • Failed delivery attempts vs depot returns: State 211 (failed delivery attempt) maps to exception, whereas state 213 (parcel returned to local UniUni depot for redelivery) maps to in_transit and state 230 (returned to merchant/sender) maps to returned.

On this page