CDL Last Mile Tracking API & MCP
Query live CDL Last Mile Solutions (cdl) package status and scan history across the US Northeast and Mid-Atlantic in a single synchronous GET request or MCP tool call. lastscanned auto-detects CDL… label numbers in Pass 1 and hyphenated 943506776-0 order numbers in Pass 2, returning a normalized TrackingResult JSON payload—without requiring a CDL shipper account.
Overview & Quick Facts
| Property | Value |
|---|---|
Carrier slug (?carrier=) | cdl |
| Brand & service aliases | CDL Last Mile Solutions, CDL Delivers |
| Category | US Northeast & Mid-Atlantic regional last-mile carrier (Detection precedence #11 of 31) |
| Single-package REST endpoint | GET https://api.lastscanned.com/v1/track/{trackingNumber} |
| Batch REST endpoint | GET https://api.lastscanned.com/v1/track?numbers=CDL...,CDL... (up to 35 numbers per carrier in a 100-number call) |
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 CDL Last Mile
- No shipper portal credentials: CDL's merchant tracking feeds require an active shipper relationship.
lastscannedlets any application or WISMO agent query CDL shipments synchronously viaGET /v1/track/:number. - Fixes out-of-order delivery scans & duplicate photo rows: CDL stamps
"Delivery complete"truncated to the whole minute (which can sort chronologically before the"Package Scanned at Delivery"doorstep scan taken seconds later in the same minute) and emits duplicate event rows when a driver uploads two proof-of-delivery photos.lastscannedsorts"Delivery complete"to the top of its minute and deduplicates identical photo rows automatically.
Tracking Number Formats & Auto-Detection (matches vs mayMatch)
CDL Last Mile is evaluated eleventh (#11) in lastscanned's two-pass detector and supports both Pass 1 (matches) and Pass 2 (mayMatch):
| Pass | Rule / Regex | Check Digit | Examples |
|---|---|---|---|
Pass 1 (matches) — CDL label | /^CDL\d{11}$/i (CDL + 11 digits = 14 chars) | — | CDL02855120513 |
Pass 2 (mayMatch) — CDL order number | /^\d{9}-\d$/ (9 digits + hyphen + 1 digit = 11 chars) | — | 943506776-0 |
When is ?carrier=cdl optional vs required?
- Optional (auto-detected): All
CDL+ 11-digit labels (Pass 1) and943506776-0-style hyphenated order numbers (Pass 2). - Required (
?carrier=cdl): Custom shipper references (such asCDDL07909376, plain numeric order IDs, or internal13509.031725tracking IDs).
Synchronous GET Request & Normalized JSON Response
curl
curl -s "https://api.lastscanned.com/v1/track/CDL02855120513" \
-H "Authorization: Bearer $LASTSCANNED_API_KEY"JavaScript / TypeScript (fetch)
const res = await fetch("https://api.lastscanned.com/v1/track/CDL02855120513", {
headers: { Authorization: `Bearer ${process.env.LASTSCANNED_API_KEY}` },
});
const pkg = await res.json();
console.log(pkg.status, pkg.statusDescription, pkg.deliveredAt);MCP track_package tool call
{
"tool": "track_package",
"arguments": {
"tracking_number": "CDL02855120513"
}
}Normalized TrackingResult JSON response
{
"carrier": "cdl",
"trackingNumber": "CDL02855120513",
"status": "delivered",
"statusDescription": "Delivery complete",
"service": null,
"deliveredAt": "2026-10-24T18:14:00Z",
"deliveredAtLocal": "2026-10-24T14:14:00",
"signedBy": null,
"destination": {
"city": "BROOKLYN",
"state": "NY",
"country": "US"
},
"estimatedDelivery": null,
"events": [
{
"timestamp": "2026-10-24T18:14:00Z",
"localTime": "2026-10-24T14:14:00",
"status": "delivered",
"description": "Delivery complete",
"location": "BROOKLYN, NY",
"code": null
},
{
"timestamp": "2026-10-24T18:14:27Z",
"localTime": "2026-10-24T14:14:27",
"status": "out_for_delivery",
"description": "Package Scanned at Delivery",
"location": "BROOKLYN, NY",
"code": null
},
{
"timestamp": "2026-10-24T12:05:11Z",
"localTime": "2026-10-24T08:05:11",
"status": "out_for_delivery",
"description": "Package Out For Delivery",
"location": "CARLSTADT, NJ",
"code": null
},
{
"timestamp": "2026-10-24T08:32:44Z",
"localTime": "2026-10-24T04:32:44",
"status": "in_transit",
"description": "Package Scanned at Local Delivery Center",
"location": "CARLSTADT, NJ",
"code": null
},
{
"timestamp": "2026-10-23T19:20:00Z",
"localTime": "2026-10-23T15:20:00",
"status": "label_created",
"description": "Label has been created",
"location": "CARLSTADT, NJ",
"code": null
}
]
}Raw status & exception flags: CDL scans do not use separate event codes (
events[].codeisnull), but include anisExceptionboolean flag (e.g. on"DELAYED- Wrong Address"or"Awaiting Package From Shipper").lastscannedmaps"Awaiting Package"and"Label has been created"tolabel_created,"Package Out For Delivery"and"Package Scanned at Delivery"toout_for_delivery,"Delivery complete"todelivered, and flagged delay scans toexception.
Carrier-Specific Status & Integration Notes
- Eastern Time UTC conversion: CDL operates across Eastern Time states (
CT,DC,DE,GA,MA,MD,ME,NC,NH,NJ,NY,OH,PA,RI,SC,VA,VT,WV), so scans in those states convert to exact UTC intimestampusingAmerica/New_York. - No
estimatedDeliveryfield: CDL does not publish an estimated delivery timestamp on public tracking records, soestimatedDeliveryis alwaysnull.
Related Resources
- Live browser lookup tool: Track a CDL Last Mile package live on lastscanned.com/lookup/cdl
- Carrier hub: All 31 supported carriers
- Regex & check digits: Tracking number formats & auto-detection
- AI support workflows: WISMO AI agents & synchronous tracking
Spee-Dee Delivery Tracking API & MCP
Track Spee-Dee Delivery Service (SP 18- and 20-character Midwest regional packages) via synchronous REST GET or MCP. Normalized JSON status, scan history, and tracking number format rules—no carrier credentials required.
Better Trucks Tracking API & MCP
Track Better Trucks (BTS_ and BTP tracking numbers) regional next-day and two-day parcels via synchronous REST GET or MCP. Normalized JSON status, scan history, and tracking number format rules—no carrier credentials required.