# China Post Tracking API & MCP

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

Query live **China Post** (`chinapost`) package status and scan history in a single synchronous `GET` request or MCP tool call.

## Overview & Quick Facts

| Property | Value |
|---|---|
| **Carrier slug (`?carrier=`)** | `chinapost` |
| **Brand aliases** | China Post, 中国邮政, ChinaPost, China Post e-packet, EMS China app |
| **Category** | China Post international mail (S10 numbers ending CN) |
| **Single-package REST endpoint** | `GET https://api.lastscanned.com/v1/track/{trackingNumber}` |
| **Batch REST endpoint** | `GET https://api.lastscanned.com/v1/track?numbers=LZ430297212CN,LZ430297212CN` |
| **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`)** | `UPU S10 *CN` numbers that do not start with `E` (valid check digit); `E…CN` EMS numbers go to `ems` | none | `LZ430297212CN` |
| **Pass 2 (`mayMatch`)** | none | none | none |

Shapes this carrier uses:

- S10 international mail (not EMS): `^[A-DF-Z][A-Z]\d{9}CN$`
- Domestic EMS (13 digits, pass ?carrier=chinapost): `^\d{13}$`

## Synchronous `GET` Request & Normalized JSON Response

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

```json
{
  "carrier": "chinapost",
  "trackingNumber": "LZ430297212CN",
  "status": "delivered",
  "statusDescription": "【巴西】已妥投",
  "service": "e邮宝",
  "deliveredAt": null,
  "deliveredAtLocal": "2026-08-25T15:16:00",
  "signedBy": null,
  "destination": null,
  "message": "Showing the latest 3 of 23 scans",
  "events": [
    {
      "timestamp": null,
      "localTime": "2026-08-25T15:16:00",
      "status": "delivered",
      "description": "【巴西】已妥投",
      "location": "巴西",
      "code": "463"
    },
    {
      "timestamp": null,
      "localTime": "2026-08-25T09:54:00",
      "status": "out_for_delivery",
      "description": "【巴西】安排投递",
      "location": "巴西",
      "code": "462"
    },
    {
      "timestamp": null,
      "localTime": "2026-08-24T13:24:00",
      "status": "in_transit",
      "description": "离开境外经转局",
      "location": null,
      "code": "489"
    }
  ]
}
```

## Notes

- **Source**: the China EMS mobile app's API, with the app's request signature (an HMAC-SHA256 header). It is not the UPU tracker `ems` uses, so it also answers `LZ`, `RR`, `CX` and similar numbers.
- **Latest scans only**: the API returns the three most recent scans of a longer history; `message` says how many exist.
- **Wording**: scans are in Chinese. Times are Beijing time at home and each office's local time abroad, so only `localTime` is set.
- **Domestic numbers**: 13-digit domestic numbers can be looked up with `?carrier=chinapost`; they are not auto-detected.

## Related Resources

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