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
| Property | Value |
|---|---|
Carrier slug (?carrier=) | yto |
| Brand & service aliases | YTO, YTO Express, Yuantong, 圆通, 圆通速递 |
| Category | China domestic express parcel carrier |
| Single-package REST endpoint | GET https://api.lastscanned.com/v1/track/{trackingNumber} (add ?carrier=yto for numbers that are not YT + 13 digits) |
| Batch REST endpoint | GET 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 & pricing | Authorization: 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)
| Pass | Rule / Regex | Check Digit | Examples |
|---|---|---|---|
Pass 1 (matches) | /^YT\d{13}$/ and /^YT[DGHZ]\d{12}$/ | none | YT2412345678901, YTH123456789012 |
Pass 2 (mayMatch) | None | none | none |
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 bothtimestamp(UTC) andlocalTime. - Parcel lockers: a scan putting the parcel in a locker or parcel station (code
751) and a courier taking it back out (756) both reportexception, since the parcel is waiting for the recipient. - Recycled numbers: YTO reuses numbers, so an old number can show an earlier parcel's history.
Related Resources
- Carrier hub: All supported carriers
- Regex & check digits: Tracking number formats & auto-detection
Mainfreight Tracking API & MCP
Track Mainfreight parcels with one synchronous REST GET or MCP call. Normalized JSON status and scan history, with no carrier credentials required.
SPL Saudi Post Tracking API & MCP
Track Saudi Post (SPL) parcels and registered mail in Saudi Arabia via one synchronous REST GET or MCP call. Normalized JSON status and scan history, no carrier credentials required.