# Speedy Tracking API & MCP

URL: https://docs.lastscanned.com/carriers/speedy

Query live **Speedy** (`speedy`) package status, scan history and the foreign carrier's number (for Greek deliveries via ACS) in a single synchronous `GET` request or MCP tool call. Speedy's 11-digit numbers look like other carriers' numbers, so pass `?carrier=speedy`.

## Overview & Quick Facts

| Property | Value |
|---|---|
| **Carrier slug (`?carrier=`)** | `speedy` |
| **Brand aliases** | Speedy, Speedy Bulgaria, MySpeedy |
| **Category** | Regional courier (Bulgaria) |
| **Single-package REST endpoint** | `GET https://api.lastscanned.com/v1/track/{trackingNumber}` |
| **Batch REST endpoint** | `GET https://api.lastscanned.com/v1/track?numbers=63700000000,...` |
| **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 (11 digits, shared with other carriers) | none | none |
| **Pass 2 (`mayMatch`)** | none | none | none |

## Synchronous `GET` Request & Normalized JSON Response

```bash
curl -s "https://api.lastscanned.com/v1/track/63700000000?carrier=speedy" \
  -H "Authorization: Bearer $LASTSCANNED_API_KEY"
```

```json
{
  "carrier": "speedy",
  "trackingNumber": "63700000000",
  "status": "delivered",
  "statusDescription": "Delivered",
  "service": null,
  "deliveredAt": "2026-10-12T10:11:38Z",
  "deliveredAtLocal": "2026-10-12T13:11:38",
  "signedBy": null,
  "destination": null,
  "message": "Handed to ACS as 2800000000",
  "events": [
    {
      "timestamp": "2026-10-12T10:11:38Z",
      "localTime": "2026-10-12T13:11:38",
      "status": "delivered",
      "description": "Delivered",
      "location": "Athens, Greece",
      "code": "-14"
    },
    {
      "timestamp": "2026-10-04T12:08:55Z",
      "localTime": "2026-10-04T15:08:55",
      "status": "label_created",
      "description": "Shipment data received",
      "location": null,
      "code": "148"
    }
  ]
}
```

## Notes

- **Source**: the public REST JSON of the MySpeedy portal (`myspeedy.speedy.bg/rest/public/track`). It is shared with [DPD Romania](/docs/carriers/dpdro).
- **Handoff**: when Speedy passes the parcel to a partner (ACS in Greece), `message` carries the partner and its number.
- **Status**: Speedy's own phase (`DELIVERED`, `DELIVERED_BACK_TO_SENDER`) sets `delivered` or `returned`; otherwise the newest scan's wording decides.

## Related Resources

- **Regex & check digits**: [Tracking number formats & auto-detection](/formats)
