Skip to content
LaneCost

The freight rate API

Price a truckload between any two places in the lower 48 with one GET request. 8 truck types, monthly history since December 2003. It works without a key; a free key raises the limit.

Request

curl "https://lanecost.com/api/v1/estimate?origin=chicago-il&destination=atlanta-ga&equipment=dry-van"
Base URL
https://lanecost.com/api/v1
Auth
None needed. A free key raises the limit.
Limit
60 requests a minute per IP address, or 600 with a key
CORS
Open: call it from a browser
Spec
OpenAPI 3.1

Response

{
  "data": {
    "origin": {
      "slug": "chicago-il",
      "city": "Chicago",
      "state": "IL"
    },
    "destination": {
      "slug": "atlanta-ga",
      "city": "Atlanta",
      "state": "GA"
    },
    "miles": 691,
    "month": "2026-10",
    "estimates": [
      {
        "equipment": "dry-van",
        "name": "53' dry van",
        "totalUsd": 3035,
        "lowUsd": 2701,
        "highUsd": 3369,
        "ratePerMile": 4.39,
        "linehaulUsd": 2400,
        "fuelUsd": 635,
        "transitDays": 2
      }
    ],
    "url": "https://lanecost.com/lanes/chicago-il-to-atlanta-ga"
  },
  "meta": {
    "apiVersion": "v1",
    "indexMonth": "2026-10",
    "dataUpdated": "2026-11-13",
    "basis": "modeled_estimate",
    "docs": "https://lanecost.com/developers"
  }
}

What the numbers mean

Every price is a modeled estimate of the all-in cost of one full load: linehaul plus fuel, for standard freight picked up a few days out. It is not a quote or an offer to haul freight. lowUsd and highUsd give the typical range. How the estimate works.

Prices are in US dollars. Months are YYYY-MM. Places are a city and state (Chicago, IL, chicago-il or Chicago, Illinois) or a 5-digit ZIP; a city alone picks the largest of that name, and the response says which place was used. Truck types are dry-van, reefer, flatbed, step-deck, power-only, hotshot, box-truck, sprinter-van.

Responses and errors

A success is { "data": …, "meta": … }. meta.indexMonth is the latest month the index covers and meta.dataUpdated is when its source data was last refreshed.

A failure is { "error": { "code", "message", "param" } } with a matching status: 400 invalid_parameter, 404 place_not_found or not_found, 401 invalid_api_key, 429 rate_limited (wait the Retry-After seconds).

Version 1 only adds fields. Anything that would break a client ships as a new version.

Get a free key

You do not need a key to start. A key raises your limit from 60 to 600 requests a minute, counted per key instead of per IP address, so a shared office or cloud IP does not eat your budget.

Send it in a header, never in the URL:

curl -H "Authorization: Bearer lc_live_…" "https://lanecost.com/api/v1/rates"

X-API-Key: lc_live_… works too. The same key works for the MCP server. Keep it on your server: a key in browser code is visible to everyone.

Use it from an AI tool

Lane Cost runs a Model Context Protocol (MCP) server, so an assistant can look up rates itself. It works without a key and has the same data, limits and optional key as the API.

MCP server

https://lanecost.com/mcp

In Claude, ChatGPT or any app that accepts a remote MCP server, add this URL as a custom connector. It uses Streamable HTTP and needs no sign-in.

Claude Code

claude mcp add --transport http lanecost https://lanecost.com/mcp

With a key, add --header "Authorization: Bearer lc_live_…".

Cursor and other JSON configs

{
  "mcpServers": {
    "lanecost": {
      "url": "https://lanecost.com/mcp"
    }
  }
}

Tools it offers

  • estimate_lane_rateEstimate a truckload lane
  • get_lane_rate_historyA lane's price history
  • get_national_ratesNational truckload rates
  • get_rate_historyRate history for a truck type
  • get_state_ratesTruckload rates by state
  • list_equipmentTruck types
  • get_diesel_priceDiesel price
  • search_placesFind a place

Without MCP

  • Custom GPTs and function calling: import the OpenAPI spec as an action or tool definition. Every operation has a name and description written for a model.
  • Agents that browse: llms.txt lists the endpoints, and every endpoint is a plain GET that returns JSON.

Terms of use

  • Free to use, in commercial and non-commercial products, within the rate limits.
  • Credit the source. Where you show these figures to people, say they come from Lane Cost and link to lanecost.com.
  • Call them estimates. Do not present a figure as a quote, a bid or an offer to haul freight.
  • No warranty. The figures are modeled and can be wrong for a given load. Do not rely on them alone to price or book freight.
  • We may change limits, or revoke a key that abuses the service.

Endpoints

GET /api/v1/estimate

Estimate a lane

The all-in cost of one full truckload between two places, for every truck type or one. Linehaul plus fuel, standard freight, picked up a few days out.

ParameterRequiredValue
originYesA city and state (Chicago, IL, chicago-il or Chicago, Illinois) or a 5-digit ZIP. A city alone picks the largest of that name. The response says which place was used.
destinationYesA city and state (Chicago, IL, chicago-il or Chicago, Illinois) or a 5-digit ZIP. A city alone picks the largest of that name. The response says which place was used.
equipmentNoLimit the answer to one truck type. Default: all.
monthNoPrice the lane as of an earlier month, YYYY-MM from 2003-12. Default: the latest month.

/api/v1/estimate?origin=chicago-il&destination=atlanta-ga

GET /api/v1/estimate/history

A lane's monthly history

The same estimate for every month since 2003-12, for one truck type.

ParameterRequiredValue
originYesA city and state (Chicago, IL, chicago-il or Chicago, Illinois) or a 5-digit ZIP. A city alone picks the largest of that name. The response says which place was used.
destinationYesA city and state (Chicago, IL, chicago-il or Chicago, Illinois) or a 5-digit ZIP. A city alone picks the largest of that name. The response says which place was used.
equipmentNoTruck type. Default: dry-van.

/api/v1/estimate/history?origin=chicago-il&destination=atlanta-ga&equipment=dry-van

GET /api/v1/rates

National rates

This month's national average rate per mile for every truck type, on a 750-mile haul, with 1, 3 and 12-month changes.

/api/v1/rates

GET /api/v1/rates/{equipment}

One truck type, with history

The rate per mile for one truck type and its monthly history since 2003-12: national, or for freight leaving or entering one state.

ParameterRequiredValue
equipmentYesTruck type.
stateNoTwo-letter code of a lower-48 state. Default: national.
directionNoWith state: freight leaving the state or entering it. Default: outbound.

/api/v1/rates/reefer

GET /api/v1/states

Rates by state

Outbound and inbound rate per mile for each of the lower 48 states and DC, for one truck type.

ParameterRequiredValue
equipmentNoTruck type. Default: dry-van.

/api/v1/states?equipment=flatbed

GET /api/v1/equipment

Truck types

The truck types the index prices, with deck size and capacity. The `equipment` value is the one every other endpoint takes.

/api/v1/equipment

GET /api/v1/diesel

Diesel price

The US average on-highway diesel price (EIA): the latest week, and each month since 2003-12. It is the fuel input to every estimate.

/api/v1/diesel

GET /api/v1/places

Find a place

City-name or ZIP-prefix search. Returns the slugs the estimate endpoints take.

ParameterRequiredValue
qYesStart of a city name (optionally with a state: spring il), or three or more digits of a ZIP.

/api/v1/places?q=dallas