Carriers
SPL Saudi Post Tracking API & MCP
Query live SPL Saudi Post (spl, Saudi Post / سبل) parcel status and scan history in a single synchronous GET request or MCP tool call. lastscanned auto-detects UPU S10 numbers ending in SA (valid check digit) in Pass 1; SPL's other number shapes need ?carrier=spl.
Overview & Quick Facts
| Property | Value |
|---|---|
Carrier slug (?carrier=) | spl |
| Brand & service aliases | SPL, Saudi Post, Saudi Post and Logistics, SaudiPost, سبل, البريد السعودي |
| Category | National post of Saudi Arabia |
| Single-package REST endpoint | GET https://api.lastscanned.com/v1/track/{trackingNumber} (add ?carrier=spl for numbers that are not S10 …SA) |
| Batch REST endpoint | GET https://api.lastscanned.com/v1/track?numbers=RR...SA,RR...SA |
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=spl)
| Pass | Rule / Regex | Check Digit | Examples |
|---|---|---|---|
Pass 1 (matches) | UPU S10: /^[A-Z]{2}\d{9}SA$/ | S10 mod 11 | RR123456785SA, EE123456785SA |
Pass 2 (mayMatch) | None | none | none |
Explicit (?carrier=spl) | SPL's other shapes: letters, 4 to 25 digits, then a check character | none | ?carrier=spl |
Synchronous GET Request & Normalized JSON Response
curl -s "https://api.lastscanned.com/v1/track/RR123456785SA" \
-H "Authorization: Bearer $LASTSCANNED_API_KEY"{
"carrier": "spl",
"trackingNumber": "RR123456785SA",
"status": "out_for_delivery",
"statusDescription": "Under delivery",
"service": "Registered Mail",
"deliveredAt": null,
"deliveredAtLocal": null,
"signedBy": null,
"destination": null,
"estimatedDelivery": "2026-10-28T00:00:00",
"events": [
{
"timestamp": null,
"localTime": "2026-10-27T08:40:00",
"status": "out_for_delivery",
"description": "Under delivery",
"location": "Riyadh Mail Center",
"code": "4"
},
{
"timestamp": null,
"localTime": "2026-10-26T19:05:00",
"status": "in_transit",
"description": "Received from the customer",
"location": "Jeddah Post Office",
"code": "1"
}
]
}Status Notes
- Times: scan times are printed without a zone, so events carry
localTimeonly. - Customs bill: status code
8means a VAT bill has been issued and must be paid; it reportsexception. - Naqel numbers: SPL's tracking page also accepts Naqel waybills (8, 9, 13 or 14 digits). Those are Naqel shipments and are not tracked as
spl.
Related Resources
- Carrier hub: All supported carriers
- Regex & check digits: Tracking number formats & auto-detection
YTO Express (Yuantong) Tracking API & MCP
Track YTO Express (圆通速递) parcels in China via one synchronous REST GET or MCP call. Normalized JSON status and scan history, no carrier credentials required.
KEX Express Thailand (Kerry Express) Tracking API & MCP
Track KEX Express Thailand (formerly Kerry Express Thailand) parcels via synchronous REST GET or MCP. Normalized JSON status and scan history, no carrier credentials required.