# SAP Express Tracking API & MCP

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

Query live **SAP Express** (`sapxexpress`) package status and scan history in a single synchronous `GET` request or MCP tool call. SAP Express numbers have no shape that is theirs alone, so pass `?carrier=sapxexpress`.

## Overview & Quick Facts

| Property | Value |
|---|---|
| **Carrier slug (`?carrier=`)** | `sapxexpress` |
| **Brand aliases** | SAP Express, SAPX, SAP Express Indonesia, Satria Antaran Prima, SAP Satria |
| **Category** | Domestic express and cargo, Indonesia |
| **Single-package REST endpoint** | `GET https://api.lastscanned.com/v1/track/{trackingNumber}` |
| **Batch REST endpoint** | `GET https://api.lastscanned.com/v1/track?numbers=CGK8158354802046,...` |
| **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 |

## Synchronous `GET` Request & Normalized JSON Response

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

```json
{
  "carrier": "sapxexpress",
  "trackingNumber": "CGK8158354802046",
  "status": "delivered",
  "statusDescription": "Paket Telah Diterima",
  "service": "SATRIA ODS",
  "deliveredAt": null,
  "deliveredAtLocal": "2026-04-06T17:56:00",
  "signedBy": null,
  "destination": {
    "city": "Padang",
    "state": null,
    "country": "ID"
  },
  "events": [
    {
      "timestamp": null,
      "localTime": "2026-04-06T17:56:00",
      "status": "delivered",
      "description": "Paket Telah Diterima",
      "location": null,
      "code": null
    },
    {
      "timestamp": null,
      "localTime": "2026-04-04T11:55:00",
      "status": "out_for_delivery",
      "description": "Paket Diantar Kurir Satria",
      "location": null,
      "code": null
    },
    {
      "timestamp": null,
      "localTime": "2026-04-03T10:48:00",
      "status": "in_transit",
      "description": "Sampai di Kantor Cabang Padang",
      "location": "Padang",
      "code": null
    },
    {
      "timestamp": null,
      "localTime": "2026-04-02T21:10:00",
      "status": "label_created",
      "description": "Verifikasi Paket",
      "location": "Kantor Pusat",
      "code": null
    }
  ]
}
```

## Notes

- **Time zone**: step times are `dd Mon yyyy | hh:mm` with Indonesian month names (`Mei`, `Agu`, `Okt`, `Des`); Indonesia spans three zones and the page does not say which, so only `localTime` is given.
- **Privacy**: courier and recipient names in a step's note are left out, including the `oleh <name>` in the delivery step.
- **Auto-detection**: `CGK…` AWBs and similar are not unique to SAP Express, so pass `?carrier=sapxexpress`. A number the site does not know renders an empty page, answered `not_found`.

## Related Resources

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