Skip to content
Navo24Navo24
GETAPI key

Spot rates for a lane

GETapi.navo24.com/v1/rates/lane/spot

Marketplace spot rates for a port pair, refreshed daily. fcl has one entry per offer with 20ST, 40ST and 40HC prices side by side; lcl is a ladder by shipment size. covers says whether origin and destination charges are in the price, so compare offers with the same covers only. A lane asked for the first time answers state: queued with empty lists and fills within the hour. Prices are USD and indicative.

Query parameters

polstringrequired

Port of loading UN/LOCODE.

podstringrequired

Port of discharge UN/LOCODE.

cbmnumber

Cargo volume, m3, for an LCL band. Give with kg.

kgnumber

Cargo weight, kg, for an LCL band. Give with cbm.

Response schema

32 fields

Derived from the example response, nested as the JSON is.

dataobject

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

polstring

Port of loading UN/LOCODE.

podstring

Port of discharge UN/LOCODE.

statestring

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

fetched_atstring
fclobject[]
fcl[]object
sourcestring

Where the answer on this call came from: direct_carrier or warm_db.

carrierany | null

Carrier name, falling back to the SCAC when we hold no name.

prices_usdobject
20STnumber
40STnumber
40HCnumber
transit_daysnumber

Port-to-port transit in days.

departureany | null

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

valid_untilstring
coversstring
detailsstring
badgestring
source_urlstring | null
lclobject
reference_kg_per_m3number
bandsobject[]
bands[]object
up_to_wmnumber
from_usdnumber
per_wm_usdnumber
offersnumber
transit_daysnumber[]

Port-to-port transit in days.

valid_untilstring
sourcestring

Where the answer on this call came from: direct_carrier or warm_db.

coversstring
estimateany | null
notesstring[]

Your own free-text note on this box. Null when you have written none.

Errors

A failure carries { "ok": false, "error": { "code", "message", "severity" } }. Branch on the code, and log the message.

invalid_request400

pol or pod missing or not a UN/LOCODE.

missing_key401

No key sent.

not_entitled402

The organisation has no active freightrates entitlement.

curl 'https://api.navo24.com/v1/rates/lane/spot?pol=CNSHA&pod=NLRTM' \
  -H "Authorization: Bearer tmcp_YOUR_API_KEY"
Response
{
  "data": {
    "pol": "CNSHA",
    "pod": "NLRTM",
    "state": "watching",
    "fetched_at": "2026-11-01T20:46:52.772335+00:00",
    "fcl": [
      {
        "source": "navo24",
        "carrier": null,
        "prices_usd": {
          "20ST": 1610,
          "40ST": 2560,
          "40HC": 2560
        },
        "transit_days": 60,
        "departure": null,
        "valid_until": "2026-11-04",
        "covers": "ocean_freight_only",
        "details": "Port-to-port ocean freight, origin/destination port charges excluded",
        "badge": "live",
        "source_url": null
      },
      {
        "source": "navo24",
        "carrier": "OOCL",
        "prices_usd": {
          "20ST": 2159,
          "40ST": 3209,
          "40HC": null
        },
        "transit_days": 48,
        "departure": "2026-11-08",
        "valid_until": "2026-11-09",
        "covers": "ocean_freight_only",
        "details": "1x 20ST, port-to-port CNSHA -> NLRTM, ocean freight service LL3, direct; local charges (THC, DOC etc.) not included",
        "badge": "live",
        "source_url": null
      }
    ],
    "lcl": {
      "reference_kg_per_m3": 500,
      "bands": [
        {
          "up_to_wm": 1,
          "from_usd": 159,
          "per_wm_usd": 159,
          "offers": 7,
          "transit_days": [
            29,
            65
          ],
          "valid_until": "2026-11-14",
          "source": "navo24",
          "covers": "ocean_freight_only"
        },
        {
          "up_to_wm": 3,
          "from_usd": 385.98,
          "per_wm_usd": 129,
          "offers": 3,
          "transit_days": [
            29,
            65
          ],
          "valid_until": "2026-11-14",
          "source": "navo24",
          "covers": "ocean_freight_only"
        },
        {
          "up_to_wm": 10,
          "from_usd": 1150,
          "per_wm_usd": 115,
          "offers": 3,
          "transit_days": [
            29,
            65
          ],
          "valid_until": "2026-11-14",
          "source": "navo24",
          "covers": "ocean_freight_only"
        }
      ],
      "estimate": null
    },
    "notes": [
      "Prices are USD per container (FCL) or per shipment (LCL) as each source quotes them. Sources do not all quote the same basis: `covers` says whether origin and destination charges are in the price, so compare only offers with the same `covers`.",
      "LCL is priced per shipment and falls steeply per cubic metre as the shipment grows; 1 W/M is 1 m3 or 1 tonne, whichever is greater. A band price is for the whole band, not an interpolation."
    ]
  }
}