Carriers
Correos Express Tracking API & MCP
Query live Correos Express (correosexpress) package status and scan history in a single synchronous GET request or MCP tool call.
Overview & Quick Facts
| Property | Value |
|---|---|
Carrier slug (?carrier=) | correosexpress |
| Brand aliases | Correos Express Paquetería, CEX |
| Category | Express parcels (Spain) |
| Single-package REST endpoint | GET https://api.lastscanned.com/v1/track/{trackingNumber} |
| Batch REST endpoint | GET https://api.lastscanned.com/v1/track?numbers=...,... |
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) | none | none | none |
Pass 2 (mayMatch) | none | none | none |
matches and mayMatch are both empty: Correos Express numbers are 16 digits, a shape Canada Post and others also use, so pass ?carrier=correosexpress. This is the parcel company, not the postal service (correos).
Synchronous GET Request & Normalized JSON Response
curl -s "https://api.lastscanned.com/v1/track/3230001234567890?carrier=correosexpress" \
-H "Authorization: Bearer $LASTSCANNED_API_KEY"{
"carrier": "correosexpress",
"trackingNumber": "3230001234567890",
"status": "exception",
"statusDescription": "En Gestión",
"service": null,
"deliveredAt": null,
"deliveredAtLocal": null,
"signedBy": null,
"destination": null,
"message": "Linked shipment 32300012345678901230001: NO LOCALIZADO",
"events": [
{
"timestamp": "2026-08-19T09:37:00Z",
"localTime": "2026-08-19T11:37:00",
"status": "exception",
"description": "En Gestión",
"location": null,
"code": "X130000R"
},
{
"timestamp": "2026-08-06T20:01:00Z",
"localTime": "2026-08-06T22:01:00",
"status": "delivered",
"description": "Entregado",
"location": null,
"code": "X120000V"
},
{
"timestamp": "2026-08-04T05:41:32Z",
"localTime": "2026-08-04T07:41:32",
"status": "out_for_delivery",
"description": "En reparto",
"location": null,
"code": "X080000V"
},
{
"timestamp": "2026-08-03T23:44:30Z",
"localTime": "2026-08-04T01:44:30",
"status": "in_transit",
"description": "En destino",
"location": null,
"code": "X060000V"
},
{
"timestamp": "2026-08-01T15:39:41Z",
"localTime": "2026-08-01T17:39:41",
"status": "label_created",
"description": "Informado",
"location": null,
"code": "X010000V"
}
]
}Notes
- Source: the JSON service
localizador.correos.es/canonico/eventos_envio_servicio/{number}that the Correos Express tracking page uses. No account is needed. - Status codes: the event code is
X<nn>0000<V|R>, andnndecides the status (01 label created, 02 and 06 in transit, 08 out for delivery, 12 delivered, 13 under customer-service management, which isexception). Other codes fall back to the Spanish wording. - Newest scan wins: a parcel can be delivered and then reopened by customer service, as in the sample, in which case the status follows the newest scan.
- Linked shipment: when Correos Express lists an associated shipment,
messagenames it with its state. - Time zone: scan clocks are converted from
Europe/Madrid. Scans on the Canary Islands are an hour out.
Related Resources
- Regex & check digits: Tracking number formats & auto-detection
CDEK Tracking API & MCP
Track CDEK parcels via synchronous REST GET or MCP. Normalized JSON status and scan history, no carrier credentials required.
CTT Express Tracking API & MCP
Track CTT Express parcels via synchronous REST GET or MCP. Normalized JSON status and scan history, no carrier credentials required.