Skip to content
GETAPI key

Track an air waybill

GETapi.aircargomcp.com/track/{awb}

One 11-digit AWB in; status, route, flights, pieces and weight out, with Cargo-IMP milestones normalised to a single timeline.

Path parameters

awbstringrequired

Air waybill, any format. The 3-digit prefix identifies the airline.

Response schema

118 fields

Nested exactly as the JSON is. Open a branch to read its fields; hover a name for the full dot-path.

dataobject

The payload. Everything an endpoint returns sits under this key.

awbstring

Air waybill number.

airline_prefixstring

The three-digit prefix half of the AWB, which is what identifies the issuing airline.

airline_iatastring

Airline 2-letter IATA code.

airline_namestring

Airline name.

statusstring

Current normalised status of the shipment. Ocean lifecycle order: discharged, available, delivered, returned_empty. Two values end a shipment, delivered and returned_empty, and returned_empty outranks delivered.

originstring

Origin code (airport IATA or UN/LOCODE).

origin_namestring

Origin port name, falling back to its UN/LOCODE.

origin_locationobject

The origin airport in full: both codes, the city, the country and its coordinate. Null when the airline named a station we could not resolve.

iata_codestring

Three-letter IATA airport code, which is the code an AWB and a flight number are quoted against.

icao_codestring

Four-letter ICAO airport code, for systems that speak ICAO. Null when we hold none.

namestring

Human-readable name.

citystring

City the airport serves.

statestring

Why the field stands where it does: resolved, contract_required, not_published, not_applicable or awaiting_carrier.

countrystring

Country name.

country_codestring

ISO 3166-1 alpha-2 country code.

latnumber

Latitude.

lngnumber

Longitude.

timezonestring

IANA time zone of the place. Null when we could not resolve the port.

destinationstring

Destination code (airport IATA or UN/LOCODE).

destination_namestring

Destination port name, falling back to its UN/LOCODE.

destination_locationobject

The destination airport in full, on the same terms.

iata_codestring

Three-letter IATA airport code, which is the code an AWB and a flight number are quoted against.

icao_codestring

Four-letter ICAO airport code, for systems that speak ICAO. Null when we hold none.

namestring

Human-readable name.

citystring

City the airport serves.

statestring

Why the field stands where it does: resolved, contract_required, not_published, not_applicable or awaiting_carrier.

countrystring

Country name.

country_codestring

ISO 3166-1 alpha-2 country code.

latnumber

Latitude.

lngnumber

Longitude.

timezonestring

IANA time zone of the place. Null when we could not resolve the port.

piecesnumber

Number of pieces.

weight_kgnumber

Gross weight in kilograms.

flight_numberstring

Operating flight number.

departureobject

Departure of the consignment as a pair: the estimate and the actual. Read `actual` before treating a flight as flown.

estimatedstring

Planned departure (ISO 8601). It stays populated after the actual lands, so schedule and outcome can be compared.

actualstring

Real departure (ISO 8601), or null while the leg is unflown. This is the field that says a flight went.

arrivalobject

Arrival of the consignment as the same pair.

estimatedstring

Planned arrival (ISO 8601), kept alongside the actual.

actualstring

Real arrival (ISO 8601), or null until the consignment is on the ground at that airport.

etastring

Arrival time (ISO 8601). Null when the carrier publishes none and we cannot predict one.

eta_is_actualboolean

True when arrival is confirmed rather than estimated.

eventsobject[]

Milestone timeline, oldest to newest.

events[]object
status_codestring

The Cargo-IMP status code the airline filed, for example FOH and RCS on acceptance, DEP and ARR in flight, RCF on transfer, NFD on notification, DLV on delivery. UNKNOWN when the airline sent a code we do not recognise, never a guess.

event_familystring

Our grouping of that code: ACCEPTANCE, FLIGHT, CUSTOMS or DELIVERY. FLIGHT is the fallback for a code with no family of its own.

is_actualboolean

True when the event happened. False means planned or estimated.

datetimestring

Event timestamp (ISO 8601), or null when the carrier gave none.

datetimesobject

The event as a pair: the estimate and the actual. The flat `datetime` next to it is whichever of the two is the more definite.

estimatedany | null

When the event was planned for. Null when the airline filed no estimate.

actualstring

When the event actually happened. Null on a planned event, which is how the two are told apart.

stationstring

Airport station code.

station_namestring

The airport this event happened at, by name.

locationobject

UN/LOCODE for the event, or null when the carrier gave no place.

iata_codestring

Three-letter IATA airport code, which is the code an AWB and a flight number are quoted against.

icao_codestring

Four-letter ICAO airport code, for systems that speak ICAO. Null when we hold none.

namestring

Human-readable name.

citystring

City the airport serves.

statestring

Why the field stands where it does: resolved, contract_required, not_published, not_applicable or awaiting_carrier.

countrystring

Country name.

country_codestring

ISO 3166-1 alpha-2 country code.

latnumber

Latitude.

lngnumber

Longitude.

timezonestring

IANA time zone of the place. Null when we could not resolve the port.

flight_numberstring | null

Operating flight number.

piecesnumber

Number of pieces.

weight_kgnumber

Gross weight in kilograms.

descriptionstring

The carrier own phrasing for the event, falling back to our word for the code.

routesobject[]

The AWB broken into flown and planned legs, in order, each with its own airports, flight and times.

routes[]object
order_idnumber

Position of the leg on the waybill, starting at 1.

statusstring

Where the leg stands, for example ARRIVED or DEPARTED. Read it before reading its times.

transport_typestring

What carries the leg: PLANE, or TRUCK on a road feeder segment, which is normal on European AWBs. Null when the airline did not say.

fromobject

Airport the leg leaves.

iata_codestring

Three-letter IATA airport code, which is the code an AWB and a flight number are quoted against.

icao_codestring

Four-letter ICAO airport code, for systems that speak ICAO. Null when we hold none.

namestring

Human-readable name.

citystring

City the airport serves.

statestring

State, province or region of the port, when the gazetteer holds one.

countrystring

Country name.

country_codestring

ISO 3166-1 alpha-2 country code.

latnumber

Latitude.

lngnumber

Longitude.

timezonestring

IANA time zone of the place. Null when we could not resolve the port.

toobject

Airport the leg reaches.

iata_codestring

Three-letter IATA airport code, which is the code an AWB and a flight number are quoted against.

icao_codestring

Four-letter ICAO airport code, for systems that speak ICAO. Null when we hold none.

namestring

Human-readable name.

citystring

City the airport serves.

statestring

State, province or region of the port, when the gazetteer holds one.

countrystring

Country name.

country_codestring

ISO 3166-1 alpha-2 country code.

latnumber

Latitude.

lngnumber

Longitude.

timezonestring

IANA time zone of the place. Null when we could not resolve the port.

departureobject

Departure of the consignment as a pair: the estimate and the actual. Read `actual` before treating a flight as flown.

estimatedstring

Planned departure (ISO 8601). It stays populated after the actual lands, so schedule and outcome can be compared.

actualstring

Real departure (ISO 8601), or null while the leg is unflown. This is the field that says a flight went.

arrivalobject

Arrival of the consignment as the same pair.

estimatedstring

Planned arrival (ISO 8601), kept alongside the actual.

actualstring

Real arrival (ISO 8601), or null until the consignment is on the ground at that airport.

flight_numberstring

Operating flight number.

piecesnumber

Number of pieces.

weight_kgnumber

Gross weight in kilograms.

pathnumber[][]

The drawn geometry of the leg as lat and lng pairs. Empty on an inland leg, where we do not draw a line we cannot verify.

metadataobject

Everything about the ANSWER rather than the shipment: what resolved, where it came from, how fresh it is, and what it cost you.

status_codestring

The upstream status for the lookup itself, OK on a normal answer. It describes the ANSWER, not the shipment.

airlineobject

The issuing airline resolved from the AWB prefix, with its codes and its own tracking site.

namestring

Human-readable name.

prefixstring

3-digit AWB prefix.

iata_codestring

Three-letter IATA airport code, which is the code an AWB and a flight number are quoted against.

icao_codestring

Four-letter ICAO airport code, for systems that speak ICAO. Null when we hold none.

urlstring

Where we POST the events.

updated_atstring

When the record itself last changed in our database, which includes bookkeeping writes. For "when did we last learn something about the shipment", read last_updated_at.

from_cacheboolean

True when this answer came from our cache rather than a fresh airline call. The data is still ours and still stamped: read updated_at for how old it is.

cache_expiresstring

When the cached answer stops being served and the next call goes to the airline.

errorobject

Present INSTEAD of data when the lookup failed. The two never appear together, so branch on which key you got.

codestring

Machine-readable failure code. `not_found` means the airline has no data for that AWB, which is not the same as the AWB being invalid.

messagestring

What went wrong, in one sentence, including which upstream said so.

curl 'https://api.aircargomcp.com/track/020-12345675' \
  -H "Authorization: Bearer tmcp_YOUR_API_KEY"
Response
{
  "data": {
    "awb": "020-12345675",
    "airline_prefix": "020",
    "airline_iata": "LH",
    "airline_name": "Lufthansa Cargo",
    "status": "delivered",
    "origin": "VCP",
    "origin_name": "Viracopos International Airport",
    "origin_location": {
      "iata_code": "VCP",
      "icao_code": "SBKP",
      "name": "Viracopos International Airport",
      "city": "Campinas",
      "state": "São Paulo",
      "country": "Brazil",
      "country_code": "BR",
      "lat": -23.0074005127,
      "lng": -47.1344985962,
      "timezone": "America/Sao_Paulo"
    },
    "destination": "BOM",
    "destination_name": "Chhatrapati Shivaji International Airport",
    "destination_location": {
      "iata_code": "BOM",
      "icao_code": "VABB",
      "name": "Chhatrapati Shivaji International Airport",
      "city": "Mumbai",
      "state": "Maharashtra",
      "country": "India",
      "country_code": "IN",
      "lat": 19.0886993408,
      "lng": 72.8678970337,
      "timezone": "Asia/Kolkata"
    },
    "pieces": 3,
    "weight_kg": 2790,
    "flight_number": "LH8362",
    "departure": {
      "estimated": "2026-08-09T03:20:00.000Z",
      "actual": "2026-08-09T04:18:01.000Z"
    },
    "arrival": {
      "estimated": "2026-08-11T05:50:00.000Z",
      "actual": "2026-08-11T05:34:00.000Z"
    },
    "eta": "2026-08-11T05:34:00.000Z",
    "eta_is_actual": true,
    "events": [
      {
        "status_code": "FOH",
        "event_family": "ACCEPTANCE",
        "is_actual": true,
        "datetime": "2026-08-07T13:54:14.000Z",
        "datetimes": {
          "estimated": null,
          "actual": "2026-08-07T13:54:14.000Z"
        },
        "station": "VCP",
        "station_name": "Viracopos International Airport",
        "location": {
          "iata_code": "VCP",
          "icao_code": "SBKP",
          "name": "Viracopos International Airport",
          "city": "Campinas",
          "state": "São Paulo",
          "country": "Brazil",
          "country_code": "BR",
          "lat": -23.0074005127,
          "lng": -47.1344985962,
          "timezone": "America/Sao_Paulo"
        },
        "flight_number": null,
        "pieces": 3,
        "weight_kg": 2790,
        "description": "Freight on hand, 3 pcs / 2790 kg"
      },
      {
        "status_code": "RCS",
        "event_family": "ACCEPTANCE",
        "is_actual": true,
        "datetime": "2026-08-08T13:59:04.000Z",
        "datetimes": {
          "estimated": "2026-08-08T17:20:00.000Z",
          "actual": "2026-08-08T13:59:04.000Z"
        },
        "station": "VCP",
        "station_name": "Viracopos International Airport",
        "location": {
          "iata_code": "VCP",
          "icao_code": "SBKP",
          "name": "Viracopos International Airport",
          "city": "Campinas",
          "state": "São Paulo",
          "country": "Brazil",
          "country_code": "BR",
          "lat": -23.0074005127,
          "lng": -47.1344985962,
          "timezone": "America/Sao_Paulo"
        },
        "flight_number": null,
        "pieces": 3,
        "weight_kg": 2790,
        "description": "Received from shipper, 3 pcs / 2790 kg"
      }
    ],
    "routes": [
      {
        "order_id": 1,
        "status": "ARRIVED",
        "transport_type": "PLANE",
        "from": {
          "iata_code": "VCP",
          "icao_code": "SBKP",
          "name": "Viracopos International Airport",
          "city": "Campinas",
          "state": "São Paulo",
          "country": "Brazil",
          "country_code": "BR",
          "lat": -23.0074005127,
          "lng": -47.1344985962,
          "timezone": "America/Sao_Paulo"
        },
        "to": {
          "iata_code": "FRA",
          "icao_code": "EDDF",
          "name": "Frankfurt am Main International Airport",
          "city": "Frankfurt am Main",
          "state": "Hesse",
          "country": "Germany",
          "country_code": "DE",
          "lat": 50.0264015198,
          "lng": 8.543129921,
          "timezone": "Europe/Berlin"
        },
        "departure": {
          "estimated": "2026-08-09T03:20:00.000Z",
          "actual": "2026-08-09T04:18:01.000Z"
        },
        "arrival": {
          "estimated": "2026-08-09T20:00:00.000Z",
          "actual": "2026-08-09T20:40:00.000Z"
        },
        "flight_number": "LH8263",
        "pieces": 3,
        "weight_kg": 2790,
        "path": [
          [
            -23.0074005127,
            -47.1344985962
          ],
          [
            -19.007,
            -45.336
          ],
          [
            -16.007,
            -43.964
          ]
        ]
      }
    ],
    "metadata": {
      "status_code": "OK",
      "airline": {
        "name": "Lufthansa Cargo",
        "prefix": "020",
        "iata_code": "LH",
        "icao_code": "GEC",
        "url": "https://www.lufthansa-cargo.com"
      },
      "updated_at": "2026-08-19T17:29:55.000Z",
      "from_cache": true,
      "cache_expires": "2026-08-19T23:29:55.712Z"
    }
  }
}