Carriers

YTO Express (Yuantong) Tracking API & MCP

Query live YTO Express (yto, Yuantong 圆通速递) parcel status and scan history in a single synchronous GET request or MCP tool call. lastscanned auto-detects YT + 13 digit numbers in Pass 1; YTO's all-digit and other letter-prefixed numbers need ?carrier=yto.

Overview & Quick Facts

PropertyValue
Carrier slug (?carrier=)yto
Brand & service aliasesYTO, YTO Express, Yuantong, 圆通, 圆通速递
CategoryChina domestic express parcel carrier
Single-package REST endpointGET https://api.lastscanned.com/v1/track/{trackingNumber} (add ?carrier=yto for numbers that are not YT + 13 digits)
Batch REST endpointGET https://api.lastscanned.com/v1/track?numbers=YT...,YT...
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)

Tracking Number Formats & Auto-Detection (matches vs ?carrier=yto)

PassRule / RegexCheck DigitExamples
Pass 1 (matches)/^YT\d{13}$/ and /^YT[DGHZ]\d{12}$/noneYT2412345678901, YTH123456789012
Pass 2 (mayMatch)Nonenonenone
Explicit (?carrier=yto)YTO's all-digit numbers (for example 18 digits starting with 6 or 8) and letter-prefixed numbers such as G8… or M…none?carrier=yto

Synchronous GET Request & Normalized JSON Response

curl -s "https://api.lastscanned.com/v1/track/YT2412345678901" \
  -H "Authorization: Bearer $LASTSCANNED_API_KEY"
{
  "carrier": "yto",
  "trackingNumber": "YT2412345678901",
  "status": "delivered",
  "statusDescription": "您的快件已领取,收件人在[丰巢]取件",
  "service": null,
  "deliveredAt": "2026-10-14T03:50:57Z",
  "deliveredAtLocal": "2026-10-14T11:50:57",
  "signedBy": null,
  "destination": null,
  "events": [
    {
      "timestamp": "2026-10-14T03:50:57Z",
      "localTime": "2026-10-14T11:50:57",
      "status": "delivered",
      "description": "您的快件已领取,收件人在[丰巢]取件",
      "location": "江苏省常州市新北区龙城",
      "code": "745"
    },
    {
      "timestamp": "2026-10-13T09:17:22Z",
      "localTime": "2026-10-13T17:17:22",
      "status": "out_for_delivery",
      "description": "【江苏省常州市新北区龙城】的派件员正在为您派件",
      "location": "江苏省常州市新北区龙城",
      "code": "710"
    }
  ]
}

Status Notes

  • Language: scan descriptions and locations are in Chinese, as YTO prints them.
  • Times: scan times are China time (Asia/Shanghai), so every event has both timestamp (UTC) and localTime.
  • Parcel lockers: a scan putting the parcel in a locker or parcel station (code 751) and a courier taking it back out (756) both report exception, since the parcel is waiting for the recipient.
  • Recycled numbers: YTO reuses numbers, so an old number can show an earlier parcel's history.

On this page