Real loads from multiple top freight data sources — aggregated every 3 minutes, queryable by exact origin/dest city+state. Built for TMS, freight analytics, broker dashboards, and automation.
Already have a key? Sign in to see usage, manage add-ons, and rotate signing secrets.
Email us with the tier + your contact info. We issue your key within 1 business day and email it directly. Self-serve dashboard ships Q3 2026.
Returns aggregated live rate stats for a specific origin → destination lane and optional equipment. Backed by real loads pulled from multiple top freight data sources within the last 24 hours, blended with TruckStop Rate Insights for median + low + high spread per direction (captures backhaul-realistic pricing). When the corridor is one of the ~80 top US truck corridors per FHWA's Freight Analysis Framework (FAF5.7.1, 2024 truck-mode base year), the response includes a flow_reference block with official annual ton-miles, tonnage, and dollar value — gov-source-cited freight context layered on top of live market rates.
Official US freight movement reference data from FHWA's Freight Analysis Framework (FAF5.7.1, 2024 base year, truck mode). Pure gov-source-cited corridor statistics — no live rates, just the authoritative annual ton-miles + tonnage + dollar value flowing on each top corridor. Different audience from api/lane_rates: TMS analytics dashboards, academic research, freight infrastructure planning, journalism. Cheap (~1ms response) since it's a single indexed lookup. Requires the faf_stats entitlement on your API key — toggle in the dashboard or contact us. Covers the top ~80 US corridors today; the full FAF5 dataset (16,666 zone-pairs) is on the roadmap for the Enterprise tier.
X-API-Key: sxlf_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Or, for GET requests, pass ?api_key=... in the query string.
| Name | Type | Required | Example | Notes |
|---|---|---|---|---|
origin_city | string | Yes | Atlanta | Case-insensitive match. |
origin_state | string | Yes | GA | 2-letter USPS code. |
dest_city | string | Yes | Miami | Case-insensitive match. |
dest_state | string | Yes | FL | 2-letter USPS code. |
equipment | string | No | van | van, reefer, flatbed, step_deck, hotshot, power_only. Omit for any. |
curl -X POST 'https://stretchxlfreight.com/stretch-crm/api/?endpoint=api/lane_rates' \
-H 'X-API-Key: sxlf_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' \
-H 'Content-Type: application/json' \
-d '{
"origin_city": "Atlanta",
"origin_state": "GA",
"dest_city": "Miami",
"dest_state": "FL",
"equipment": "van"
}'
const res = await fetch(
'https://stretchxlfreight.com/stretch-crm/api/?endpoint=api/lane_rates',
{
method: 'POST',
headers: {
'X-API-Key': process.env.SXLF_API_KEY,
'Content-Type': 'application/json',
},
body: JSON.stringify({
origin_city: 'Atlanta',
origin_state: 'GA',
dest_city: 'Miami',
dest_state: 'FL',
equipment: 'van',
}),
}
);
const { success, data } = await res.json();
if (!success) throw new Error(data || 'lookup failed');
console.log(`Median rate: $${data.rate.median} | ${data.samples} samples`);
import os, requests
r = requests.post(
'https://stretchxlfreight.com/stretch-crm/api/?endpoint=api/lane_rates',
headers={'X-API-Key': os.environ['SXLF_API_KEY']},
json={
'origin_city': 'Atlanta',
'origin_state': 'GA',
'dest_city': 'Miami',
'dest_state': 'FL',
'equipment': 'van',
},
timeout=10,
)
d = r.json()['data']
print(f"Median rate: ${d['rate']['median']} ({d['samples']} samples)")
{
"success": true,
"data": {
"lane": {
"origin": "Mount Gilead, NC",
"destination": "Enfield, CT",
"equipment": "any"
},
"samples": 48,
"sources_count": 1,
"rate": { "median": 3450, "low": 3200, "high": 3450 },
"per_mile": { "median": 4.62, "low": 4.29, "high": 4.62 },
"distance_avg": 747,
"data_freshness": {
"newest_load": "2026-05-29T20:30:31+00:00",
"cache_fetched": "2026-06-01 01:15:24"
},
"is_estimate": false,
"flow_reference": {
"source": "FHWA FAF5.7.1 (truck-mode aggregate)",
"data_year": 2024,
"rank_among_us_truck_corridors": 8,
"annual_truck_tmiles_M": 2244.09,
"annual_truck_tons_thousand": 6119.05,
"annual_truck_value_M_usd": 19422.81,
"attribution": "Federal Highway Administration Freight Analysis Framework v5.7.1, 2024 base year, truck mode"
},
"tier": "pro",
"quota": {
"daily_quota": 5000,
"daily_used": 47,
"daily_remaining": 4953,
"monthly_quota": 50000,
"monthly_used": 218,
"monthly_remaining": 49782
},
"fetched_at": "2026-06-01T05:18:22+00:00"
}
}
Empty-lane fallback: when no live loads matched the lane in the last 24h, we return "is_estimate": true and surface the national per-mile bucket for the equipment type with "rate": null (per-mile only). You can detect this and surface "Estimated" to your users.
FHWA flow_reference field (2026-06-24): when a queried lane is one of the ~80 top US truck corridors per FHWA's Freight Analysis Framework (FAF5.7.1, 2024 base year, truck mode), the response includes flow_reference with the official annual flow metrics — ton-miles, tons, dollar value, and corridor rank. This is government-source-cited freight intelligence layered on top of live market rates. Use it to: (1) prove corridor significance to customers, (2) compare your live rate against the trillion-dollar context, (3) add E-E-A-T-grade citations to your own published pages. Lanes outside the top-80 omit the field; flow_reference never blocks a response.
{ "success": false, "message": "Invalid API key", "data": null } // 401
{ "success": false, "message": "Daily quota of 100 exceeded for plan 'free'. Upgrade at /developers/", "data": null } // 429
{ "success": false, "message": "Need origin_city, origin_state, dest_city, dest_state", "data": null } // 400
Data at rest is encrypted with Dark Envelope (darkenvelope.io). Every API key's owner contact details, internal notes, and HMAC signing secret are sealed in an AES-256-GCM envelope (32-byte per-key DEK wrapped by the master KEK, IV + authentication tag per payload). Plaintext PII never persists in our database — even with full DB read access, an attacker only sees ciphertext. The KEK lives in our infrastructure secret store; we can rotate it without re-issuing keys. Dark Envelope is an open envelope-encryption specification developed by the Stretch XL team; the format is compatible across PHP and Node.js so cross-service decryption stays clean as we add new backend stacks.
Network: TLS 1.3 only. All requests must hit https://stretchxlfreight.com. Plain HTTP returns 301. We require modern cipher suites (no SSLv3, no TLS 1.0/1.1, no CBC).
Keys are SHA-256 hashed. Your raw sxlf_live_xxx key is shown ONCE at issuance and never stored — only the SHA-256 hash. Lost it? Issue a new one; the old one stays revoked.
For sensitive integrations, enable per-key HMAC signing in the admin portal. Each request must include three additional headers signed with a per-key secret. Replay attacks rejected via timestamp window (±300s) + nonce cache (10 min). Even if an attacker captures your API key in transit, they cannot forge a request without the signing secret. Default OFF; Enterprise customers can require it.
# 1. Build the canonical request string
ts=$(date +%s)
nonce=$(openssl rand -hex 16)
method="GET"
path="/api/?endpoint=api/lane_rates&origin_city=Phoenix&origin_state=AZ&dest_city=Dallas&dest_state=TX&equipment=van"
body=""
body_sha256=$(echo -n "$body" | sha256sum | cut -d' ' -f1)
canonical="$ts\n$nonce\n$method\n$path\n$body_sha256"
# 2. Sign with HMAC-SHA256, base64-encode
sig=$(printf "$canonical" | openssl dgst -binary -sha256 -hmac "$SXLF_SIGNING_SECRET" | base64)
# 3. Add headers
curl -H "X-API-Key: ${SXLF_API_KEY}" \
-H "X-SXLF-Timestamp: $ts" \
-H "X-SXLF-Nonce: $nonce" \
-H "X-SXLF-Signature: $sig" \
"https://stretchxlfreight.com${path}"
Signature validation: the server rejects requests where the timestamp is outside ±300s, the nonce was seen in the last 10 minutes for this key, or the HMAC doesn't match. All three failures return 401.
Three layers of throttling, all enforced independently:
| Plan | Daily quota | Monthly quota | Burst per second | Burst per minute | Add-ons available |
|---|---|---|---|---|---|
| Free | 100/day | 3,000/month | 1 req/s | 30 req/min | FHWA Stats (+$5/mo) |
| Starter $29/mo | 500/day | 5,000/month | 5 req/s | 100 req/min | FHWA Stats (+$5/mo) |
| Pro $99/mo | 5,000/day | 50,000/month | 20 req/s | 500 req/min | FHWA Stats included, HMAC signing available |
| Enterprise custom | ∞ | ∞ | 200 req/s | 5,000 req/min | Everything + dedicated support + HMAC required |
Quotas reset:
X-RateLimit-Limit-Second, X-RateLimit-Remaining-Second, X-RateLimit-Limit-Minute, X-RateLimit-Remaining-Minute headers so you can self-throttle.data.quota.When you hit any limit you'll get HTTP 429 with a Retry-After header indicating how long to wait. Burst limits exist to prevent runaway scripts from burning your daily quota in 60 seconds — they're not designed to be hit by normal integrations.
We aggregate loads from multiple top freight data sources, plus Stretch XL Freight's own direct shipper-load feed. Our load-board warmer pulls fresh data every 3 minutes. Each load is filtered to the requested lane (exact origin city/state → destination city/state match) and the last 24 hours.
data.data_freshness.newest_load is the timestamp of the freshest load in the match set. data.data_freshness.cache_fetched is when we last hit upstream.
By using this API you agree to the terms of service. Data is provided as-is for informational and analytical use. Do not redistribute raw load detail (broker contact info, exact load IDs) without an Enterprise license.