# APC Postal Logistics Tracking API & MCP

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

Query live **APC Postal Logistics** (`apc`) package status, scan history, and the **final-mile carrier's tracking number** in a single synchronous `GET` request or MCP tool call. APC numbers have no shape of their own, so pass `?carrier=apc`.

## Overview & Quick Facts

| Property | Value |
|---|---|
| **Carrier slug (`?carrier=`)** | `apc` |
| **Brand aliases** | APC Postal Logistics, APC-PLI, Hermes by BorderGuru |
| **Category** | US international mail & parcel consolidator |
| **Single-package REST endpoint** | `GET https://api.lastscanned.com/v1/track/{trackingNumber}?carrier=apc` |
| **Batch REST endpoint** | `GET https://api.lastscanned.com/v1/track?numbers=...,...&carrier=apc` |
| **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 |
| **Explicit (`?carrier=apc`)** | the number printed on the APC label | none | the label's tracking number |

APC labels carry the number of whichever postal service or courier is used, so `?carrier=apc` is always required.

## Synchronous `GET` Request & Normalized JSON Response

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

```json
{
  "carrier": "apc",
  "trackingNumber": "AB123456789US",
  "status": "in_transit",
  "statusDescription": "Arrived at destination country",
  "service": "Priority",
  "deliveredAt": null,
  "deliveredAtLocal": null,
  "signedBy": null,
  "destination": { "city": null, "state": null, "country": "CA" },
  "message": "Handed to Canada Post as 7012345678901230",
  "events": [
    {
      "timestamp": "2026-10-25T18:22:00Z",
      "localTime": "2026-10-25T14:22:00",
      "status": "in_transit",
      "description": "Arrived at destination country",
      "location": "Toronto, ON, CA",
      "code": "AR"
    }
  ]
}
```

## Notes

- **Delivered**: the scan that APC's own page marks as the delivery step sets `delivered`; other scans are classified from their wording.
- **Unknown numbers**: APC's page answers a missing number and a failed upstream with the same error, so both are reported as `not_found`.
- **Handoff**: `message` carries the final-mile carrier and number when APC gives one; pass it to `GET /v1/track/{number}` for that carrier's scans.

## Related Resources

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