Carriers
An Post (Ireland) Tracking API & MCP
Query live An Post (anpost, Ireland's national post) package status and scan history in a single synchronous GET request or MCP tool call. lastscanned auto-detects UPU S10 numbers ending IE (for example CY123456785IE) in Pass 1.
Overview & Quick Facts
| Property | Value |
|---|---|
Carrier slug (?carrier=) | anpost |
| Brand & service aliases | An Post, Irish Post, An Post Parcels, An Post Track & Trace |
| Category | Regional national post (Ireland) |
| Single-package REST endpoint | GET https://api.lastscanned.com/v1/track/{trackingNumber} (auto-detected for S10 numbers ending IE) |
| Batch REST endpoint | GET https://api.lastscanned.com/v1/track?numbers=CY123456785IE,CY123456786IE |
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=anpost)
| Pass | Rule / Regex | Check Digit | Examples |
|---|---|---|---|
Pass 1 (matches) | UPU S10 /^[A-Z]{2}\d{9}IE$/ | S10 mod-11 | CY123456785IE |
Pass 2 (mayMatch) | None | — | — |
Explicit (?carrier=anpost) | Other numbers An Post tracks (for example parcels it receives from foreign posts under another barcode) | — | — |
- Optional (auto-detected): S10 numbers ending
IEwith a valid check digit. - Required (
?carrier=anpost): any An Post number that is not anIES10 number.
Synchronous GET Request & Normalized JSON Response
curl
curl -s "https://api.lastscanned.com/v1/track/CY123456785IE" \
-H "Authorization: Bearer $LASTSCANNED_API_KEY"MCP track_package tool call
{
"tool": "track_package",
"arguments": {
"tracking_number": "CY123456785IE"
}
}Normalized TrackingResult JSON response
{
"carrier": "anpost",
"trackingNumber": "CY123456785IE",
"status": "in_transit",
"statusDescription": "Item sorted at Dublin Mail Centre",
"service": null,
"deliveredAt": null,
"deliveredAtLocal": null,
"signedBy": null,
"destination": null,
"message": null,
"events": [
{
"timestamp": "2026-10-25T22:41:00.000Z",
"localTime": "2026-10-25T23:41:00",
"status": "in_transit",
"description": "Item sorted at Dublin Mail Centre",
"location": "Dublin Mail Centre",
"code": "15"
}
]
}Notes
- Scan times: An Post prints Irish local time with no offset.
lastscannedappliesEurope/Dublin, sotimestamp(UTC) andlocalTimeare both set. - Delivery attempts: A failed delivery (for example a "Sorry we missed you" card) is reported as
exception, with the reason appended to the description. - Unknown numbers: A number An Post has no record of returns
not_found.
Related Resources
- Carrier hub: All supported carriers
- Regex & check digits: Tracking number formats & auto-detection
- AI support workflows: WISMO AI agents & synchronous tracking
Evri (UK) Tracking API & MCP
Track Evri (formerly Hermes UK) parcels via synchronous REST GET or MCP. Normalized JSON status and scan history, no carrier credentials required.
Swiss Post Tracking API & MCP
Track Swiss Post (Die Post) parcels and international mail, S10 numbers ending CH and 18-digit domestic 99 numbers, via synchronous REST GET or MCP. Normalized JSON status and scan history, no carrier credentials required.