Carriers

Intelcom (Dragonfly) Tracking API & MCP

Query live Intelcom / Dragonfly (intelcom) package status, scan history, and driver drop-off notes in a single synchronous GET request or MCP tool call. Intelcom is Amazon Canada's largest private last-mile carrier and also operates internationally under the Dragonfly brand; lastscanned auto-detects 16-character INTLCM… tracking numbers in Pass 1 and returns a normalized TrackingResult JSON payload.

Overview & Quick Facts

PropertyValue
Carrier slug (?carrier=)intelcom
Brand & service aliasesIntelcom, Dragonfly, Intelcom Express, Dragonfly Shipping (intelcom.ca, dragonflyshipping.ca)
CategoryCanadian & regional e-commerce last-mile courier (Detection precedence #20 of 31)
Single-package REST endpointGET https://api.lastscanned.com/v1/track/{trackingNumber}
Batch REST endpointGET https://api.lastscanned.com/v1/track?numbers=INTLCM...,INTLCM... (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 & pricingAuthorization: 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 Intelcom / Dragonfly

  • Unified Intelcom + Dragonfly coverage with zero enterprise onboarding: Intelcom rebranded its consumer-facing operations outside Quebec (and in Australia) to Dragonfly, and does not offer self-serve API keys to merchants or third-party developers. lastscanned tracks INTLCM… barcodes across both brands out of the box.
  • Template interpolation & cleanup: Intelcom's raw tracking responses contain uninterpolated placeholders like "{driver} has delivered your package." or trailing internal suffixes like "First delivery attempt / REASON". lastscanned interpolates driver_name / client_code, strips internal suffixes, filters out hidden steps, and maps step numbers (1–4, negative steps for exceptions) into the 7 standard statuses.
  • Drop-off location notes in message: When an Intelcom driver leaves a package, lastscanned surfaces the English drop-off location note (for example, "Your package was left at your front door" or "left in your mailbox or mail slot") in top-level message.

Tracking Number Formats & Auto-Detection (matches vs mayMatch)

Intelcom is evaluated twentieth (#20) in lastscanned's two-pass detector:

PassRule / RegexCheck DigitExamples
Pass 1 (matches)/^INTLCM[A-Z]\d{9}$/i (INTLCM + 1 letter + 9 digits = 16 chars)—INTLCMK204815937, INTLCMI719662704
Pass 2 (mayMatch)None——

When is ?carrier=intelcom optional vs required?

  • Optional (auto-detected): All 16-character INTLCM + letter + 9-digit barcodes auto-detect in Pass 1 (the letter increments as the 9-digit counter wraps, e.g. INTLCME…, INTLCMI…, INTLCMK…).
  • Amazon Canada TBC… numbers: Amazon Logistics Canada numbers starting TBC + 12 digits route to Amazon (amazon) by default. If you have a non-INTLCM partner reference billed directly through Intelcom, pass ?carrier=intelcom.

Synchronous GET Request & Normalized JSON Response

curl

curl -s "https://api.lastscanned.com/v1/track/INTLCMK204815937" \
  -H "Authorization: Bearer $LASTSCANNED_API_KEY"

JavaScript / TypeScript (fetch)

const res = await fetch("https://api.lastscanned.com/v1/track/INTLCMK204815937", {
  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

{
  "tool": "track_package",
  "arguments": {
    "tracking_number": "INTLCMK204815937"
  }
}

Normalized TrackingResult JSON response

{
  "carrier": "intelcom",
  "trackingNumber": "INTLCMK204815937",
  "status": "delivered",
  "statusDescription": "Delivered - No Signature",
  "service": "STANDARD",
  "deliveredAt": "2026-10-25T17:42:10Z",
  "deliveredAtLocal": "2026-10-25T13:42:10",
  "signedBy": null,
  "destination": {
    "city": "Montreal",
    "state": "QC",
    "country": "CA"
  },
  "estimatedDelivery": null,
  "estimatedDeliveryAt": null,
  "message": "Marc has delivered your package.",
  "events": [
    {
      "timestamp": "2026-10-25T17:42:10Z",
      "localTime": "2026-10-25T13:42:10",
      "status": "delivered",
      "description": "Delivered - No Signature",
      "location": "Montreal, QC",
      "code": "601"
    },
    {
      "timestamp": "2026-10-25T12:15:04Z",
      "localTime": "2026-10-25T08:15:04",
      "status": "out_for_delivery",
      "description": "Loaded",
      "location": null,
      "code": "300"
    },
    {
      "timestamp": "2026-10-25T08:03:51Z",
      "localTime": "2026-10-25T04:03:51",
      "status": "in_transit",
      "description": "Delivery station inbound scan",
      "location": null,
      "code": "108"
    },
    {
      "timestamp": "2026-10-24T19:20:00Z",
      "localTime": "2026-10-24T15:20:00",
      "status": "label_created",
      "description": "Data received",
      "location": null,
      "code": "0"
    }
  ]
}

Raw status & step codes: events[].code preserves Intelcom's numeric status code ("0" data received, "105" received, "108" delivery station inbound scan, "300" loaded / out for delivery, "590" first delivery attempt, "601" delivered without signature), while status maps Intelcom's step (1 → label_created, 2 → in_transit, 3 → out_for_delivery, 4 → delivered, < 0 → exception).

Carrier-Specific Status & Integration Notes

  • UTC & local timestamps: Intelcom reports scan times as Unix epoch milliseconds alongside an offset-qualified eta timestamp (e.g. 2026-10-25T12:32:23.000000-04:00), which lastscanned uses to compute both UTC timestamp and local wall-clock localTime (plus estimatedDelivery and estimatedDeliveryAt while in transit).
  • Retention window: Intelcom retains delivered parcels in its tracking system for roughly 90 days after delivery; older numbers return 404 not_found.

On this page