SpeedX Tracking API & MCP
Query live SpeedX (speedx) last-mile package status and scan history across the US and Australia in a single synchronous GET request or MCP tool call. lastscanned auto-detects 18- and 24-character SPX… barcodes in Pass 1 and returns a normalized TrackingResult JSON payload—without requiring a SpeedX shipper account or webhook registration.
Overview & Quick Facts
| Property | Value |
|---|---|
Carrier slug (?carrier=) | speedx |
| Brand & service aliases | SpeedX, Speed X, SPX US, SPX Australia, tracking.speedx.io |
| Category | US & Australian e-commerce last-mile carrier (Detection precedence #19 of 31) |
| Single-package REST endpoint | GET https://api.lastscanned.com/v1/track/{trackingNumber} |
| Batch REST endpoint | GET https://api.lastscanned.com/v1/track?numbers=SPX...,SPX... (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 & 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) |
Why developers use lastscanned for SpeedX instead of direct requests
- No public developer API or self-serve credentials: SpeedX powers high-volume last-mile deliveries for Temu, Shein, TikTok Shop, and AliExpress across major US metros (
SPXLAX…,SPXJFK…,SPXORD…,SPXCLT…) and Australia (SPXSYD…), but does not offer a public self-serve REST API for merchants or post-purchase tools. - Full scan history instead of latest-event-only summaries: SpeedX's summary endpoints only return the single latest scan.
lastscannedreturns the complete chronological scan history (events), recipient city/state (destination), estimated delivery date (estimatedDelivery), and normalized status codes in oneGETrequest. - Cross-border handoff target: Cross-border parcels from Cainiao, YunExpress, Yanwen, and SunYou frequently hand over to SpeedX for final-mile delivery under an
SPX…tracking number.
Tracking Number Formats & Auto-Detection (matches vs mayMatch)
SpeedX is evaluated nineteenth (#19) in lastscanned's two-pass detector:
| Pass | Rule / Regex | Check Digit | Examples |
|---|---|---|---|
Pass 1 (matches) — Standard 18-char SPX | /^SPX[0-9A-Z]{15}$/i (SPX + 15 letters and digits = 18 chars, typically SPX + 3-letter airport/hub code + 12 digits) | — | SPXLAX204518736092, SPXCLT138701431240, SPXSYD104600343237 |
Pass 1 (matches) — Extended 24-char SPX | /^SPX[0-9A-Z]{21}$/i (SPX + 21 letters and digits = 24 chars on cross-border labels) | — | SPXWCA003022610150019140 |
Pass 2 (mayMatch) | None | — | — |
Disambiguating SpeedX (SPX…) vs Spee-Dee (SP…)
- Zero collision with Spee-Dee Delivery: Spee-Dee tracking numbers start with
SPfollowed strictly by 16 or 18 digits (/^SP(\d{16}|\d{18})$/i), whereas SpeedX tracking numbers always start withSPXfollowed by 15 or 21 alphanumeric characters (/^SPX([0-9A-Z]{15}|[0-9A-Z]{21})$/i). Both auto-detect in Pass 1 without?carrier=.
Synchronous GET Request & Normalized JSON Response
curl
curl -s "https://api.lastscanned.com/v1/track/SPXLAX204518736092" \
-H "Authorization: Bearer $LASTSCANNED_API_KEY"JavaScript / TypeScript (fetch)
const res = await fetch("https://api.lastscanned.com/v1/track/SPXLAX204518736092", {
headers: { Authorization: `Bearer ${process.env.LASTSCANNED_API_KEY}` },
});
const pkg = await res.json();
console.log(pkg.status, pkg.destination, pkg.events[0]);MCP track_package tool call
{
"tool": "track_package",
"arguments": {
"tracking_number": "SPXLAX204518736092"
}
}Normalized TrackingResult JSON response
{
"carrier": "speedx",
"trackingNumber": "SPXLAX204518736092",
"status": "delivered",
"statusDescription": "Delivered",
"service": null,
"deliveredAt": "2026-10-25T18:14:22Z",
"deliveredAtLocal": "2026-10-25T14:14:22",
"signedBy": null,
"destination": {
"city": "Bronx",
"state": "NY",
"country": "US"
},
"estimatedDelivery": null,
"events": [
{
"timestamp": "2026-10-25T18:14:22Z",
"localTime": "2026-10-25T14:14:22",
"status": "delivered",
"description": "Delivered",
"location": "Bronx, NY",
"code": "57201"
},
{
"timestamp": "2026-10-25T12:47:01Z",
"localTime": "2026-10-25T08:47:01",
"status": "out_for_delivery",
"description": "Out for delivery",
"location": "Jamaica, NY",
"code": "57104"
},
{
"timestamp": "2026-10-25T07:19:40Z",
"localTime": "2026-10-25T03:19:40",
"status": "in_transit",
"description": "Arrived at last-mile facility",
"location": "Jamaica, NY",
"code": "57101"
},
{
"timestamp": "2026-10-23T04:10:00Z",
"localTime": "2026-10-23T00:10:00",
"status": "label_created",
"description": "Shipping label created",
"location": null,
"code": "50001"
}
]
}Raw status & event codes:
events[].codepreserves SpeedX's 5-digit event code ("50001"label created,"51005"picked up,"52001"/"52002"origin facility,"57101"/"57102"/"57112"last-mile facility,"57104"out for delivery,"57201"–"57203"delivered,"57411"weather exception) alongside SpeedX's milestone category (PICKUP,ORIGIN_HANDLING,MIDDLE_MILE,LAST_MILE_ENROUTE,LAST_MILE_DELIVERED,LAST_MILE_ATTEMPTED,LAST_MILE_UNDELIVERED,LAST_MILE_INTERCEPT,LAST_MILE_RETURNS).
Carrier-Specific Status & Integration Notes
- Dual UTC and local timestamps (
timestamp+localTime): SpeedX provides both UTC timestamps (ts) and offset-qualified local timestamps (localTs), so bothtimestampandlocalTime(plusdeliveredAtanddeliveredAtLocal) are populated on every scan. - Estimated delivery (
estimatedDelivery): While a parcel is in transit,estimatedDeliveryholds SpeedX's expected delivery date (YYYY-MM-DD). Once delivered,estimatedDeliveryis cleared tonull.
Related Resources
- Live browser lookup tool: Track a SpeedX package live on lastscanned.com/lookup/speedx
- Carrier hub: All 31 supported carriers
- Regex & check digits: Tracking number formats & auto-detection
- AI support workflows: WISMO AI agents & synchronous tracking
YunExpress Tracking API & MCP
Track YunExpress (YT 18-character tracking numbers) cross-border packages and last-mile USPS / UniUni / GOFO handoffs via synchronous REST GET or MCP. Normalized JSON status, scan history, and format rules—no carrier credentials required.
Intelcom (Dragonfly) Tracking API & MCP
Track Intelcom / Dragonfly (INTLCM 16-character Canadian and Australian last-mile packages) via synchronous REST GET or MCP. Normalized JSON status, scan history, dropoff notes, and tracking number format rules—no carrier credentials required.