# OSM Worldwide Tracking API & MCP

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

Query live **OSM Worldwide** (`osm`, One Stop Mailing) consolidator package status and middle-mile sort scans in a single synchronous `GET` request or MCP tool call.

> **Solving the `"USPS Currently Awaiting Package"` consolidator black hole with `?carrier=osm`:** Most OSM Worldwide parcels travel under a **22-digit `92…` USPS IMpb barcode** (or 30-digit `420` + ZIP + `92…` barcode). Because `usps` claims all `92…` barcodes in Pass 1, querying a `92…` number without `?carrier=` queries USPS—which only shows *"Pre-Shipment: Shipping Label Created, USPS Awaiting Item"* (`"Picked Up by Shipping Partner, USPS Awaiting Item"`) for 3–7 days while OSM moves the parcel across the country. Pass **`?carrier=osm`** (or `"carrier": "osm"` in MCP) with that exact same `92…` or `420…92…` USPS number to retrieve OSM Worldwide's live middle-mile sort facility scans (`OSM04`/`OSM05`) before USPS receives the bag!

## Overview & Quick Facts

| Property | Value |
|---|---|
| **Carrier slug (`?carrier=`)** | `osm` |
| **Brand & service aliases** | OSM Worldwide, OSM, One Stop Mailing (`osmworldwide.com`) |
| **Category** | US domestic & international e-commerce parcel consolidator / Postal Qualified Wholesaler (Detection precedence **#25 of 31**) |
| **Single-package REST endpoint** | `GET https://api.lastscanned.com/v1/track/{trackingNumber}?carrier=osm` (or without `?carrier=` for `OSM…` / `A…` IDs) |
| **Batch REST endpoint** | `GET https://api.lastscanned.com/v1/track?numbers=OSM...,92...&carrier=osm` |
| **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 OSM Worldwide

- **Eliminate WISMO tickets during the 3–7 day USPS pre-shipment black hole**: High-volume DTC brands, book/media clubs, and 3PLs ship millions of parcels via OSM Worldwide where USPS is only the final-mile carrier. While `tools.usps.com` says *"USPS Currently Awaiting Package"*, calling `GET /v1/track/92...?carrier=osm` exposes every intermediate OSM sort center arrival and departure scan (`Glendale Heights, IL`, `Atlanta, GA`, `York, PA`, `Las Vegas, NV`, `Dallas, TX`)—and continues relaying USPS's final-mile scans (`OSM06`–`OSM15`, `OSM01`) after induction.
- **Automatic `420` + ZIP prefix stripping**: If your warehouse or label system stores the full 30-digit GS1-128 barcode (`420` + 5-digit ZIP + 22-digit `92…`), `lastscanned` automatically strips the `420\d{5}` routing prefix before querying OSM Worldwide and returns your original tracking number in `trackingNumber`.

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

OSM Worldwide is evaluated **twenty-fifth (#25)** in `lastscanned`'s two-pass detector:

| Pass | Rule / Regex | Check Digit | Examples |
|---|---|---|---|
| **Pass 1 (`matches`) — Native `OSM` ID** | `/^OSM[0-9A-Z]{14}$/i` (`OSM` + 14 letters and digits = 17 chars) | — | `OSM4F7K2Q9X1B3D5H`, `OSM000000LM00B0LO` |
| **Pass 2 (`mayMatch`) — Legacy `A…` Hub ID** | `/^A\d{10}[A-Z]{3}\d{8}$/i` (`A` + 10 digits + 3-letter hub code + 8 digits = 22 chars) | — | `A1353543146ATL03930071` |
| **Explicit (`?carrier=osm`) — USPS `92…` / `420…92…` IMpb** | `/^(420\d{5})?9[2345]\d{18,24}$/` (Matches [USPS](/carriers/usps) in Pass 1 unless `?carrier=osm` is passed) | — | `9261290312839104827163`, `420787019261290312839104827163` |

### Recommended WISMO workflow for `92…` USPS consolidator labels

If your merchant ships with OSM Worldwide (or if a [USPS](/carriers/usps) lookup returns `status: "label_created"` with description containing `"Shipping Partner: OSM WORLDWIDE"` or `"USPS Awaiting Item"`), immediately query the same tracking number with **`?carrier=osm`** to get the live middle-mile sort scans and OSM's `estimatedDelivery` date.

## Synchronous `GET` Request & Normalized JSON Response

### `curl`

```bash
# Query a 92... USPS IMpb consolidator barcode directly on OSM Worldwide
curl -s "https://api.lastscanned.com/v1/track/9261290312839104827163?carrier=osm" \
  -H "Authorization: Bearer $LASTSCANNED_API_KEY"

# Native OSM... package ID (auto-detected)
curl -s "https://api.lastscanned.com/v1/track/OSM4F7K2Q9X1B3D5H" \
  -H "Authorization: Bearer $LASTSCANNED_API_KEY"
```

### JavaScript / TypeScript (`fetch`)

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

### MCP `track_package` tool call

```json
{
  "tool": "track_package",
  "arguments": {
    "tracking_number": "9261290312839104827163",
    "carrier": "osm"
  }
}
```

### Normalized `TrackingResult` JSON response

```json
{
  "carrier": "osm",
  "trackingNumber": "9261290312839104827163",
  "status": "in_transit",
  "statusDescription": "Departed OSM Facility",
  "service": null,
  "deliveredAt": null,
  "deliveredAtLocal": null,
  "signedBy": null,
  "destination": null,
  "estimatedDelivery": "2026-10-28",
  "events": [
    {
      "timestamp": "2026-10-25T09:14:00Z",
      "localTime": "2026-10-25T04:14:00",
      "status": "in_transit",
      "description": "Departed OSM Facility",
      "location": "GLENDALE HEIGHTS, IL",
      "code": "OSM05"
    },
    {
      "timestamp": "2026-10-24T22:31:00Z",
      "localTime": "2026-10-24T17:31:00",
      "status": "in_transit",
      "description": "Arrived at OSM Facility",
      "location": "GLENDALE HEIGHTS, IL",
      "code": "OSM04"
    },
    {
      "timestamp": "2026-10-23T19:05:00Z",
      "localTime": "2026-10-23T14:05:00",
      "status": "label_created",
      "description": "Picked Up by Shipping Partner, USPS Awaiting Item",
      "location": "GLENDALE HEIGHTS, IL",
      "code": "OSM03"
    }
  ]
}
```

> **Raw status & event codes**: `events[].code` preserves OSM Worldwide's event code (`"OSM02"` label created, `"OSM03"` picked up by shipping partner / manifest uploaded, `"OSM04"`/`"OSM05"` arrived at / departed OSM sort facility, `"OSM06"`/`"OSM07"`/`"OSM09"`/`"OSM13"` USPS arrival, acceptance, processing, and departure scans, `"OSM15"` out for delivery, `"OSM01"` delivered). Note that `"OSM03"` is emitted when the label is uploaded before OSM physically scans the parcel at a hub, so `lastscanned` maps `"OSM03"` to `label_created` until `"OSM04"` occurs.

## Carrier-Specific Status & Integration Notes

- **Rate limits on unbatched OSM lookups**: OSM Worldwide's upstream endpoint holds each request for ~3 seconds and rate-limits rapid bursts (`429`). Avoid sending large simultaneous bursts of `osm` numbers in a single request.
- **State-based UTC conversion**: OSM prints scan times in local wall-clock time without a timezone offset. Scans in US states that lie wholly within a single IANA timezone (`NY`, `PA`, `GA`, `IL`, `CA`, etc.) include a computed UTC `timestamp`; scans in split-timezone states (`TX`, `FL`, `TN`, `IN`, `KY`, etc.) populate `localTime` with `timestamp: null`.

## Related Resources

- **Live browser lookup tool**: [Track an OSM Worldwide package live on lastscanned.com/lookup/osm](https://lastscanned.com/lookup/osm)
- **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)
