Carriers

GOFO Express Tracking API & MCP

Query live GOFO Express (gofo) US last-mile package status and scan history in a single synchronous GET request or MCP tool call. lastscanned auto-detects 18-character GFUS… barcodes in Pass 1 and 15-character GF… barcodes in Pass 2, returning a normalized TrackingResult JSON payload—with zero carrier credentials or webhook registration required.

Overview & Quick Facts

PropertyValue
Carrier slug (?carrier=)gofo
Brand & service aliasesGOFO Express, GOFO US Last-Mile, GFUS / GF
CategoryUS regional e-commerce last-mile carrier (Detection precedence #8 of 31)
Single-package REST endpointGET https://api.lastscanned.com/v1/track/{trackingNumber}
Batch REST endpointGET https://api.lastscanned.com/v1/track?numbers=GFUS...,GFUS... (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 GOFO Express

  • No shipper contract or webhook setup: GOFO's merchant API is only provisioned to direct high-volume shippers and consolidators. lastscanned lets any e-commerce store, 3PL, or AI support agent query GOFO shipments synchronously via GET /v1/track/:number.
  • Fixes GOFO's hardcoded -0700 timezone offset bug: GOFO's upstream API prints each scan in the facility's local clock alongside an IANA processTimeZone (e.g. America/New_York), but hardcodes -0700 on the timestamp string regardless of state. lastscanned strips the bogus offset and converts the scan's local clock using its true IANA timezone so timestamp (UTC) and localTime are always accurate.
  • Strips boilerplate support footers: GOFO appends "For Delivery Issues & Tracking Support..." to every delivered scan description; lastscanned strips this noise automatically.

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

GOFO is evaluated eighth (#8) in lastscanned's two-pass detector and supports both Pass 1 (matches) and Pass 2 (mayMatch):

PassRule / RegexCheck DigitExamples
Pass 1 (matches) — Standard GFUS/^GFUS\d{14}$/i (GFUS + 14 digits = 18 chars)—GFUS01074503026309, GFUS01092837465012
Pass 2 (mayMatch) — Legacy GF/^GF\d{13}$/i (GF + 13 digits = 15 chars)—GF6281904827163

Disambiguating GOFO vs Cirro & YunExpress (?carrier=gofo)

  • Auto-detected (GFUS + 14 digits and GF + 13 digits): No ?carrier= parameter is needed.
  • Querying GOFO by shipper number (CR… or YT…): GOFO's tracking system also indexes parcels by their upstream Cirro (CR + 12 digits) or YunExpress (YT + 16 digits) waybill numbers. Without ?carrier=gofo, CR… routes to cirro and YT… routes to yunexpress. Pass ?carrier=gofo if you want to query GOFO directly using the upstream shipper number.

Synchronous GET Request & Normalized JSON Response

curl

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

JavaScript / TypeScript (fetch)

const res = await fetch("https://api.lastscanned.com/v1/track/GFUS01074503026309", {
  headers: { Authorization: `Bearer ${process.env.LASTSCANNED_API_KEY}` },
});
const pkg = await res.json();
console.log(pkg.status, pkg.destination, pkg.deliveredAt);

MCP track_package tool call

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

Normalized TrackingResult JSON response

{
  "carrier": "gofo",
  "trackingNumber": "GFUS01074503026309",
  "status": "delivered",
  "statusDescription": "Your package has been delivered, Left at Front Door",
  "service": "GOFO Standard",
  "deliveredAt": "2026-10-25T17:42:11Z",
  "deliveredAtLocal": "2026-10-25T13:42:11",
  "signedBy": null,
  "destination": {
    "city": "EDISON",
    "state": "NJ",
    "country": "US"
  },
  "estimatedDelivery": null,
  "events": [
    {
      "timestamp": "2026-10-25T17:42:11Z",
      "localTime": "2026-10-25T13:42:11",
      "status": "delivered",
      "description": "Your package has been delivered, Left at Front Door",
      "location": "EDISON, NJ",
      "code": "205"
    },
    {
      "timestamp": "2026-10-25T12:15:08Z",
      "localTime": "2026-10-25T08:15:08",
      "status": "out_for_delivery",
      "description": "Your package is out for delivery",
      "location": "EDISON, NJ",
      "code": "208"
    },
    {
      "timestamp": "2026-10-25T07:30:22Z",
      "localTime": "2026-10-25T03:30:22",
      "status": "in_transit",
      "description": "Arrived at GOFO Distribution Facility",
      "location": "NEWARK, NJ",
      "code": "201"
    },
    {
      "timestamp": "2026-10-23T09:10:00Z",
      "localTime": "2026-10-23T05:10:00",
      "status": "label_created",
      "description": "Shipping label created, GOFO awaiting item",
      "location": null,
      "code": "100"
    }
  ]
}

Raw status & process codes: events[].code preserves GOFO's processCode ("100" → label_created, "200" loaded on vehicle, "201"/"202" arrived at station/hub, "205" → delivered, "208" → out_for_delivery, "411"/"412" → in_transit), while package-level statuses (Processing, Transit, Delivered, Alert, Returned) map cleanly to the 7 standard statuses.

Carrier-Specific Status & Integration Notes

  • CIRRO E-Commerce acquisition: GOFO acquired Cirro E-Commerce in 2026 and handles US last-mile delivery for Cirro parcels. You can track GFUS… numbers under gofo (default) or cirro.
  • High-throughput batch support: Up to 35 GOFO tracking numbers can be queried in a single batch call via GET /v1/track?numbers=....

On this page