# Midland Transport Tracking API & MCP

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

Query live **Midland Transport** (`midlandtransport`) package status and scan history in a single synchronous `GET` request or MCP tool call. Midland Transport / Midland Courier (Canada) parcels, with the travel history.

## Overview & Quick Facts

| Property | Value |
|---|---|
| **Carrier slug (`?carrier=`)** | `midlandtransport` |
| **Brand aliases** | Midland Courier, Midland |
| **Category** | Canadian courier and LTL (Atlantic Canada and Quebec) |
| **Single-package REST endpoint** | `GET https://api.lastscanned.com/v1/track/{trackingNumber}` |
| **Batch REST endpoint** | `GET https://api.lastscanned.com/v1/track?numbers=2606250011700001,2606250011700001` |
| **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`)** | `^\d{16}$` | none | `2606250011700001` |

The shape is shared with other carriers, so it is only tried when no other carrier claims the number; `?carrier=midlandtransport` is the sure way.

## Synchronous `GET` Request & Normalized JSON Response

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

```json
{
  "carrier": "midlandtransport",
  "trackingNumber": "2606250011700001",
  "status": "delivered",
  "statusDescription": "Delivered",
  "service": null,
  "deliveredAt": null,
  "deliveredAtLocal": "2026-09-18T14:58:00",
  "signedBy": null,
  "destination": null,
  "message": null,
  "events": [
    {
      "timestamp": null,
      "localTime": "2026-09-18T14:58:00",
      "status": "delivered",
      "description": "Delivered",
      "location": "PARADISE, NL",
      "code": "Delivered"
    },
    {
      "timestamp": null,
      "localTime": "2026-09-17T11:08:00",
      "status": "exception",
      "description": "Delivery Exception: Delayed in Transit - SHIPPER'S DELAY",
      "location": "DIEPPE, NB",
      "code": "Delivery Exception"
    }
  ]
}
```

## Notes

- **Source**: The 2Ship-hosted tracking page `ship.midlandtransport.com/Tracking/TrackClientTrackings?TrackingNumber={number}`, server-rendered HTML parsed into normalized events. No account.
- **Activities** (`In Transit`, `Delivery Exception`, `Out For Delivery`, `Delivered`) become the status; the description is the activity and the wording, and the place is the `(CITY,PR)` the wording ends with.
- The "Shipment Created" step comes from the page's progress bar.
- **Time zone**: the page does not say which zone its clock is in, so only `localTime` is set.
- A 16-digit number is not unique to Midland, so it is only auto-detected when nothing else claims it.

## Related Resources

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