# Asendia USA (Pirate Ship Simple Export Rate) Tracking API & MCP

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

Query live **Asendia USA** (`asendia`, including **Pirate Ship Simple Export Rate** `AHOY…` labels and `e-PAQ` international parcels) package status, scan history, and **destination postal carrier handoff numbers** in a single synchronous `GET` request or MCP tool call. `lastscanned` auto-detects 12-character `AHOY…` tracking numbers in Pass 1 and tracks USPS outbound consolidation labels, `AS…US` numbers, and destination carrier numbers when you pass `?carrier=asendia`.

## Overview & Quick Facts

| Property | Value |
|---|---|
| **Carrier slug (`?carrier=`)** | `asendia` |
| **Brand & service aliases** | Asendia, Asendia USA, Pirate Ship Simple Export Rate (`AHOY…`), Asendia e-PAQ Select / e-PAQ Plus / e-PAQ Elite (`a1.asendiausa.com`) |
| **Category** | US outbound international e-commerce mail & parcel consolidator (Detection precedence **#31 of 31**) |
| **Single-package REST endpoint** | `GET https://api.lastscanned.com/v1/track/{trackingNumber}` (auto-detected for `AHOY…`; add `?carrier=asendia` for USPS / `AS…US` / destination numbers) |
| **Batch REST endpoint** | `GET https://api.lastscanned.com/v1/track?numbers=AHOY...,AHOY...` |
| **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) |

## Why developers use `lastscanned` for Asendia USA & Pirate Ship Export

- **Automatic destination postal carrier & secondary tracking number extraction**: When US merchants ship internationally using Pirate Ship Simple Export Rate (`AHOY…`) or Asendia e-PAQ, the parcel moves through an Asendia USA consolidation hub (`Folcroft, PA`, `Elk Grove Village, IL`, `Bell, CA`) and is handed over to a foreign postal operator or courier (**Canada Post**, **Royal Mail**, **Australia Post**, **La Poste / Colissimo**, **DHL / Deutsche Post**, **PostNord**, **Swiss Post**, **Correos**, **Evri**, **An Post**, **Poste Italiane**). `lastscanned` extracts both the destination carrier name and the final-mile barcode (`trackingNumberVendor`) into top-level `message` (for example, `"Handed to Canada Post as 7012345678901230"` or `"Handed to Royal Mail as LE123456785GB"`).
- **No Asendia A1 API keys required**: Query `AHOY…` labels or Asendia `AS…US` numbers with a single `GET` call instead of configuring Asendia One (`A1`) Basic Auth and API keys.

## Tracking Number Formats & Auto-Detection (`matches` vs `?carrier=asendia`)

Asendia is evaluated **thirty-first (#31)** in `lastscanned`'s two-pass detector:

| Pass | Rule / Regex | Check Digit | Examples |
|---|---|---|---|
| **Pass 1 (`matches`) — Pirate Ship `AHOY`** | `/^AHOY[0-9A-Z]{8}$/i` (`AHOY` + 8 letters and digits = 12 chars) | — | `AHOY7K2M9Q4T`, `AHOY1A2B3C4D` |
| **Pass 2 (`mayMatch`)** | *None* | — | — |
| **Explicit (`?carrier=asendia`) — `AS…US` / USPS / Destination numbers** | Asendia `AS…US` numbers, the domestic `92…`/`94…` USPS consolidation label, or the destination carrier's tracking number | — | `AS123456789US`, `9400111899223197428490` |

### When is `?carrier=asendia` optional vs required?

- **Optional (auto-detected)**: All 12-character `AHOY` + 8 alphanumeric Pirate Ship Simple Export Rate tracking numbers auto-detect in Pass 1.
- **Required (`?carrier=asendia`)**: Asendia's `AS…US` numbers, the domestic `92…`/`94…` USPS label used for the US-to-Asendia-hub leg (which otherwise routes to [USPS](/carriers/usps) in Pass 1), or the destination postal number when you want Asendia's consolidated view.

## Synchronous `GET` Request & Normalized JSON Response

### `curl`

```bash
# Pirate Ship Simple Export Rate AHOY... number (auto-detected)
curl -s "https://api.lastscanned.com/v1/track/AHOY7K2M9Q4T" \
  -H "Authorization: Bearer $LASTSCANNED_API_KEY"

# Asendia AS...US or USPS consolidation label (pass ?carrier=asendia)
curl -s "https://api.lastscanned.com/v1/track/AS123456789US?carrier=asendia" \
  -H "Authorization: Bearer $LASTSCANNED_API_KEY"
```

### JavaScript / TypeScript (`fetch`)

```ts
const res = await fetch("https://api.lastscanned.com/v1/track/AHOY7K2M9Q4T", {
  headers: { Authorization: `Bearer ${process.env.LASTSCANNED_API_KEY}` },
});
const pkg = await res.json();
console.log(pkg.status, pkg.message, pkg.events[0]);
```

### MCP `track_package` tool call

```json
{
  "tool": "track_package",
  "arguments": {
    "tracking_number": "AHOY7K2M9Q4T"
  }
}
```

### Normalized `TrackingResult` JSON response

```json
{
  "carrier": "asendia",
  "trackingNumber": "AHOY7K2M9Q4T",
  "status": "in_transit",
  "statusDescription": "Arrived at destination country airport",
  "service": "e-PAQ Select",
  "deliveredAt": null,
  "deliveredAtLocal": null,
  "signedBy": null,
  "destination": {
    "city": null,
    "state": null,
    "country": "CA"
  },
  "message": "Handed to Canada Post as 7012345678901230",
  "events": [
    {
      "timestamp": null,
      "localTime": "2026-10-25T14:22:00",
      "status": "in_transit",
      "description": "Arrived at destination country airport",
      "location": "TORONTO, ON, CA",
      "code": "A14"
    },
    {
      "timestamp": null,
      "localTime": "2026-10-24T09:15:30",
      "status": "in_transit",
      "description": "Processed by Asendia Facility",
      "location": "Folcroft, PA, US",
      "code": "A05"
    },
    {
      "timestamp": null,
      "localTime": "2026-10-22T11:04:12",
      "status": "label_created",
      "description": "Shipment information received",
      "location": "Folcroft, PA, US",
      "code": "A01"
    }
  ]
}
```

## Chaining Last-Mile Handoffs (`message`) & Status Notes

- **Chaining into Canada Post, DHL, or USPS**: When `message` reports `"Handed to Canada Post as 7012345678901230"` or `"Handed to DHL as ..."`, you can pass that secondary tracking number directly to `GET /v1/track/7012345678901230` to retrieve the destination carrier's native local delivery scans and UTC timestamps.
- **Smart `"Delivered to partner"` guard**: Asendia logs intermediate scans containing the word `"Delivered"` when handing a bag over to an airline or final-mile postal partner (e.g. `"Delivered to destination carrier"`). `lastscanned` excludes carrier/partner/agent handoff wording from triggering `delivered` so the parcel remains `in_transit` until actual recipient delivery.

## Related Resources

- **Live browser lookup tool**: [Track an Asendia USA package live on lastscanned.com/lookup/asendia](https://lastscanned.com/lookup/asendia)
- **Carrier hub**: [All 31 supported carriers](/carriers)
- **Regex & check digits**: [Tracking number formats & auto-detection](/formats)
- **AI support workflows**: [WISMO AI agents & synchronous tracking](/wismo)
