SwiftX Express Tracking API & MCP
Query live SwiftX Express (swiftx) parcel status in a single synchronous GET request or MCP tool call. SwiftX delivers Cainiao (AliExpress) parcels across the US, and lastscanned auto-detects its SWX numbers.
Overview & Quick Facts
| Property | Value |
|---|---|
Carrier slug (?carrier=) | swiftx |
| Brand aliases | SwiftX, SwiftX Express (swiftx-express.com) |
| Category | US last-mile parcel carrier (Cainiao) |
| Single-package REST endpoint | GET https://api.lastscanned.com/v1/track/{trackingNumber} |
| Batch REST endpoint | GET https://api.lastscanned.com/v1/track?numbers=SWX421890000223565246,... (up to 20 SwiftX numbers per tracker request) |
MCP server (https://mcp.lastscanned.com) | track_package, track_packages, list_carriers |
| Authentication & pricing | Authorization: Bearer lsk_live_... · 1 free keyless lookup/day per IP |
Tracking Number Formats & Auto-Detection
| Pass | Rule / Regex | Check Digit | Examples |
|---|---|---|---|
Pass 1 (matches) | /^SWX\d{18}$/ (SWX + 18 digits = 21 chars) | none | SWX421890000223565246 |
Pass 2 (mayMatch) | none | none | none |
SWX numbers are auto-detected, so ?carrier=swiftx is optional.
Synchronous GET Request & Normalized JSON Response
curl -s "https://api.lastscanned.com/v1/track/SWX421890000223565246" \
-H "Authorization: Bearer $LASTSCANNED_API_KEY"{
"carrier": "swiftx",
"trackingNumber": "SWX421890000223565246",
"status": "delivered",
"statusDescription": "Delivered",
"service": null,
"deliveredAt": null,
"deliveredAtLocal": "2026-11-02T15:27:45",
"signedBy": null,
"destination": { "city": null, "state": null, "country": "US" },
"message": "SwiftX shows its scan history only with the last 4 digits of the recipient's phone number; this is the parcel's current step.",
"events": [
{
"timestamp": null,
"localTime": "2026-11-02T15:27:45",
"status": "delivered",
"description": "Delivered",
"location": null,
"code": "step 5"
}
]
}Notes
- Current step, not every scan: SwiftX's tracker shows the full scan list only to someone who enters the last 4 digits of the recipient's phone number. Without them it gives the parcel's step on a five-step bar (Label created, Picked up, In transit, Out for delivery, Delivered) and when that step was last updated.
lastscannedreturns that step as one event (codeisstep 1tostep 5) and says so inmessage. - Statuses: Label created maps to
label_created; Picked up and In transit toin_transit; Out for delivery toout_for_delivery; Delivered todelivered. - Time zone: SwiftX gives the update time with no zone, so only
localTimeis set andtimestampisnull. - Bot wall: swiftx-express.com puts its tracker behind a Cloudflare challenge, so lookups run in a cloud browser and take about 10 to 15 seconds. A batch of up to 20 numbers shares one browser session.
Related Resources
- Regex & check digits: Tracking number formats & auto-detection
- Upstream consolidator: Cainiao