Esc
GETAPI key
Market rate for a lane
GETapi.navo24.com/v1/loading/freight/lane
Indicative market rate per container for a port pair and container type, without planning a load. The same rate POST /v1/loading/plan returns in options.freight, refreshed about once a day. Never charges Navo Tokens.
Query parameters
pol
Port of loading UN/LOCODE.
pod
Port of discharge UN/LOCODE.
equipment
20GP, 40GP or 40HC.
Response schema
9 fields
Derived from the example response, nested as the JSON is.
ok
Whether the request succeeded.
available
ratePerContainer
currency
ISO currency code.
rateDate
equipmentCode
Target equipment code.
origin
Origin code (airport IATA or UN/LOCODE).
destination
Destination code (airport IATA or UN/LOCODE).
laneUrl
Errors
A failure carries { "ok": false, "error": { "code", "message", "severity" } }. Branch on the code, and log the message.
BAD_REQUEST
pol or pod is not a UN/LOCODE.
UNAUTHORIZED
No key or an unknown key.
NOT_ENTITLED
The key has no paid loading entitlement.
curl 'https://api.navo24.com/v1/loading/freight/lane?pol=CNSHA&pod=NLRTM&equipment=40HC' \
-H "Authorization: Bearer lmcp_YOUR_API_KEY"const res = await fetch("https://api.navo24.com/v1/loading/freight/lane?pol=CNSHA&pod=NLRTM&equipment=40HC", {
headers: {
"Authorization": "Bearer lmcp_YOUR_API_KEY"
}
});
const data = await res.json();import requests
res = requests.get(
"https://api.navo24.com/v1/loading/freight/lane?pol=CNSHA&pod=NLRTM&equipment=40HC",
headers={"Authorization": "Bearer lmcp_YOUR_API_KEY"},
)
data = res.json()Response
{
"ok": true,
"available": true,
"ratePerContainer": 3230,
"currency": "USD",
"rateDate": "2026-11-01T19:00:22+00:00",
"equipmentCode": "40HC",
"origin": "CNSHA",
"destination": "NLRTM",
"laneUrl": "https://freightratesmcp.com/rates/cnsha-nlrtm"
}