# Carriers

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

## Carrier ids

`GET /v1/carriers` lists them. No key needed.

```bash
curl https://api.lastscanned.com/v1/carriers
```

```json
{ "carriers": ["ups", "usps", "dhl", "fedex", "amazon", "ontrac", "uniuni", "gofo", "veho", "speedee", "cdl", "bettertrucks", "axlehire", "cirro", "yanwen", "4px", "cainiao", "yunexpress"] }
```

## Detected formats

✓ marks formats that must also pass a check digit. Looser formats are used only when no other carrier claims the number. Anything else needs `?carrier=`.

| Carrier | id | Detected formats | Looser formats |
|---|---|---|---|
| UPS | `ups` | `1Z` + 16 letters/digits ✓ | |
| USPS | `usps` | 22-digit labels starting `92`, `93`, `94` or `95`, optionally with a `420` + ZIP prefix; `EA123456785US`-style international ✓ | |
| DHL | `dhl` | 10 digits (Express) ✓; `JD`/`JJD` + 10–20 digits; `GM` + 16–20 digits (eCommerce); 20 digits starting `0034043` (Paket); `RR123456785DE`-style Deutsche Post ✓ | |
| FedEx | `fedex` | 12, 15 or 20 digits; 22 digits starting `96` | |
| Amazon | `amazon` | `TBA`/`TBC`/`TBM` + 12 digits | |
| OnTrac | `ontrac` | `C` or `D` + 14 digits; LaserShip `1LS` + 12–15 letters/digits and `LX12345678`-style | |
| UniUni | `uniuni` | `UUS` + 13–16 letters/digits | `UR…`, `U9999…`, `U000…` |
| GOFO | `gofo` | `GFUS` + 14 digits | `GF` + 13 digits |
| Veho | `veho` | `VH` + 12 letters/digits | |
| Spee-Dee | `speedee` | `SP` + 16 or 18 digits | |
| CDL Last Mile | `cdl` | `CDL` + 11 digits | order numbers like `943506776-0` |
| Better Trucks | `bettertrucks` | `BTS_` + 8–14 letters/digits; `BTP` + 12 letters/digits | |
| AxleHire (Jitsu) | `axlehire` | | `SCD` + 16 letters/digits; 12- or 16-character letter/digit codes |
| Cirro | `cirro` | `CR` + 12 digits; `CIFR` + 13 digits | |
| Yanwen | `yanwen` | `XX123456785YP`-style ✓; `YW` + 3 letters + 12 digits | |
| 4PX | `4px` | `4PX` + 13 digits + `CN` | |
| Cainiao | `cainiao` | `LP` + 14–17 digits; `AP` + 14 digits | |
| YunExpress | `yunexpress` | `YT` + 16 digits | |

When two carriers share a format, the earlier row wins. 12- and 20-digit numbers go to FedEx, except 20-digit `0034043…` (DHL Paket); other DHL Paket numbers need `?carrier=dhl`.

## Numbers that need `?carrier=`

- OnTrac reference numbers
- UniUni `GV…` and `JY…` partner numbers
- GOFO shipper numbers (`CR…`, `YT…`)
- Shippers' own numbers on Veho
- CDL shipper references other than `CDL…` and order numbers
- AxleHire codes outside the looser formats above
- Cirro numbers starting `GFUS` (Cirro delivers through GOFO, so these are detected as GOFO)
- Other carriers' numbers on AliExpress parcels tracked through Cainiao

## Carrier notes

- **Amazon**: Amazon Shipping and Multi-Channel Fulfillment parcels only. Ordinary amazon.com orders are private to the buyer's account and return `not_found`.
- **Spee-Dee**: allows 10 lookups a minute, so part of a large batch can come back `rate_limited`. Retry those numbers after a minute.
- **Yanwen, 4PX, Cainiao, YunExpress**: cross-border from China. `message` names the destination carrier and its number once the parcel is handed over.
- **No estimated delivery**: Spee-Dee, CDL, 4PX, Cainiao.
