In this playbook, we will walk through how 3PL providers can leverage lane-level data from FreightPulse to forecast capacity and optimize network planning. The core challenge is familiar: capacity volatility and cost swings across lanes create frequent fire drills. Teams stitch together EIA fuel datasets for surcharge baselines, query multiple freight rate sources for spot checks, scan port data to estimate downstream drayage congestion, verify carriers across databases, and monitor weather and seismic alerts from yet another set of feeds. Doing any of this manually (or via brittle scrapers) doesn’t scale—and it often breaks during peak season, exactly when you need it most.
A second, related problem is data latency and model drift in analytics pipelines. Even if you’ve built a robust internal data lake, you still need clean, standardized inputs for live US FTL quotes, fuel price curves, port congestion trends, and disruption alerts. Training a forecasting model on stale or mismatched data sources yields poor fits and spurious recommendations: you forecast ample capacity on a Transcon lane because your model didn’t ingest last week’s typhoon that stalled drayage at the West Coast. The solution is not “more data” but “the right data, standardized, and delivered consistently.” That is the operational gap this post addresses.
FreightPulse consolidates the critical logistics signals—EIA fuel prices, live US full-truckload (FTL) quotes, IMF PortWatch congestion approximations, FMCSA/FMC carrier lookups, and natural-disruption alerts—behind one REST API. For 3PL network planners, analysts, and platform teams, this means you can iterate faster on lane-level capacity forecasting, reduce integration surface area, and deploy decision automation with confidence. Below, we will show a practical path from zero to production: pulling data, interpreting the fields correctly, and wiring it into planning tools and alerting systems.
Why FreightPulse
FreightPulse eliminates the “data patchwork” that slows down forecasting tools. Instead of juggling five different providers and schemas, you pull unified JSON from one source. Here are the differentiators that matter for developers and operators:
- One API for critical logistics signals. You can fetch national and regional fuel prices, get live US FTL quotes by lane, check port congestion approximations across major global ports, verify trucking and ocean carriers, and monitor natural hazards—all using the same response shape. That consistency reduces parsing and integration overhead, enabling you to focus on modeling and decision logic rather than ETL glue code.
- Operational awareness fused with cost signals. Live trucking rates (via Warp) and fuel price time series from EIA are available side-by-side with disruption alerts (GDACS, USGS, NOAA/NWS) and port congestion approximations (IMF PortWatch). This fusion lets you back-test how disruptions and port slowdowns propagate into linehaul and drayage costs on specific corridors, a powerful ingredient for lane-level capacity forecasting.
- Lag-aware maritime context for inland planning. Port congestion metrics are not real-time AIS counts. They are lagged (~6–7 days) approximations: a 7-day average of port calls vs a 90-day baseline. That’s exactly what your trend models need to gauge systemic slowdowns without confusing noise from intra-day vessel movements. You get topology-level context that complements live trucking quotes.
- Lower friction for exploration. You can try endpoints without ceremony and start prototyping forecast features quickly. For product teams, that means faster stakeholder demos. For data science, it means more time running experiments and fewer Jira tickets to provision inputs.
Under the hood, this consolidation unlocks engineering best practices you already use elsewhere: standardized observability (the same success/data/error envelope for all endpoints), graceful fallback strategies (e.g., to historical series if a real-time quote is temporarily unavailable), and governance-friendly controls over who consumes which signal in which environment. With a single REST surface, you can instrument retries, circuit breakers, health checks, and structured logs uniformly across your stack.
Quick Start
The base URL for all requests is:
https://freightpulsehq.com/api/v1
Let’s start with a simple call to the national fuel price endpoint and inspect the response. You can run this directly in your terminal:
curl "https://freightpulsehq.com/api/v1/fuel-prices"
A successful response returns a standardized JSON envelope with the key data payload:
{
"success": true,
"data": {
"timestamp": "2026-07-30T12:00:00Z",
"source": "EIA (U.S. Energy Information Administration)",
"currency": "USD",
"unit": "gallon",
"data": {
"diesel": {
"national_average": 3.847,
"change_week": -0.023,
"change_percent": -0.6,
"regions": {
"east_coast": 3.912,
"midwest": 3.756,
"gulf_coast": 3.623,
"rocky_mountain": 3.891,
"west_coast": 4.456,
"california": 4.892
},
"historical": {
"30d_avg": 3.82,
"90d_avg": 3.75,
"yoy_change_percent": -8.2
}
},
"gasoline": {
"national_average": 3.156,
"historical": {
"30d_avg": 3.1,
"90d_avg": 3.05,
"yoy_change_percent": 1.1
}
}
}
}
}
Key fields to note:
- timestamp: When the underlying EIA data was last updated—use this to validate freshness in your pipeline.
- diesel.national_average: Baseline for calculating fuel surcharges on linehaul. Many 3PLs compute FSC from this series.
- diesel.regions: PADD-region view, useful when your surcharge formulas vary by origin/destination macro-region.
- diesel.historical: Rolling averages and YoY change—useful features for regression models and anomaly detection in pricing.
This one call demonstrates why unification matters: you get a clean JSON schema, consistent source annotation, and fields crafted for logistics use cases. We’ll now build on this foundation and pull lane-level signals for forecasting.
Core Endpoints for Lane-Level Capacity Forecasting
/freight-rates — Live US FTL quotes for lanes
Purpose: Fetch spot-like live quotes for US trucking lanes (via Warp), including service, price, and transit days. Use this to measure current market tension and calibrate your lane-level capacity score. Combining this with historical diesel and port context yields a richer forecasting signal than rates alone.
Key params:
- mode: trucking (default). Ocean and air are limited to Asian origins into US ZIPs.
- origin_zip and destination_zip: Required for trucking mode.
- pickup_date, qty, total_weight_lb: Optional but recommended to simulate realistic shipments.
Example request:
curl "https://freightpulsehq.com/api/v1/freight-rates?mode=trucking&origin_zip=10001&destination_zip=90210"
Example response:
{
"success": true,
"data": {
"mode": "trucking",
"service": "FTL (53' dry van)",
"source": "Warp",
"price_usd": 7207.92,
"transit_days": 4,
"pickup_date": "2026-08-24",
"delivery_date": "2026-08-28"
}
}
Field guide:
- service: Interpret the equipment and service class (e.g., 53' dry van) to ensure comparability across lanes.
- price_usd: A live price signal—use it to estimate today’s procurement cost; pair it with diesel trends to isolate macro fuel effects vs network pressure.
- transit_days, pickup_date, delivery_date: Useful for forecasting cycle times and setting customer expectations. Drift in transit days is a leading indicator of capacity tightening.
Notes:
- If required parameters are missing, the endpoint returns HTTP 200 with {"available": false} semantics rather than an error. Your client should handle this gracefully and prompt for missing inputs.
/port-congestion — Maritime activity approximations for drayage and inland planning
Purpose: Estimate port activity levels using IMF PortWatch data (derived from AIS) as a ratio of recent 7-day average port calls versus a 90-day baseline. This is not real-time vessel wait time. It’s a lagged (approximately 6–7 days) approximation designed for trend analysis—perfect for predicting how maritime bottlenecks might propagate into drayage and inland TL capacity and pricing over the following weeks.
Key params:
- port: Name or LOCODE (e.g., USLAX) is the most precise filter.
- country or region: For broader queries when modeling at macro geographies.
- congestion: Optional filter of low | moderate | high.
Example request:
curl "https://freightpulsehq.com/api/v1/port-congestion?port=USLAX"
Example response:
{
"success": true,
"data": {
"results": [
{
"port": "Los Angeles-Long Beach",
"locode": "US LAX",
"country": "United States",
"congestion": "moderate",
"as_of": "2026-08-14",
"metrics": {
"recent_avg_portcalls_per_day": 8.7,
"baseline_avg_portcalls_per_day": 10.2,
"ratio_vs_baseline": 0.85
}
}
]
}
}
Field guide:
- congestion: A categorical simplification (low|moderate|high) to drive alerting and dashboards quickly.
- metrics.ratio_vs_baseline: The quantitative backbone. A value below 1.0 indicates activity below trend; above 1.0 signals above-trend activity. Pair this with disruption alerts to explain the “why” behind shifts.
- as_of: Reflects the lag in source data. Align your ETL schedule and modeling windows accordingly.
Best practices:
- Persist the time series in your warehouse and compute moving averages by lane groups connected to the port. This makes the ocean-to-inland forecasting step reproducible.
- When approximations shift from moderate to high congestion, anticipate increased drayage times and consider pre-booking linehaul capacity earlier on connected inland lanes.
/disruptions — Natural-hazard alerts for proactive re-routing
Purpose: Consolidate natural hazards (cyclones, earthquakes, severe weather, and more) from GDACS, USGS, and NOAA/NWS. Use this feed to protect loads and to forecast temporary capacity shocks (e.g., winter storms in the Midwest tightening TL capacity quickly).
Key params:
- type: cyclone | earthquake | flood | volcano | drought | wildfire | severe_weather
- severity: low | moderate | high
- country, port: Geography targeting; port filter applies a distance buffer (300 km globally, with ~100 km for US weather).
Example request:
curl "https://freightpulsehq.com/api/v1/disruptions?port=USLAX&severity=high"
Example response:
{
"success": true,
"data": {
"results": [
{
"id": "gdacs:TC:1001305",
"type": "cyclone",
"severity": "moderate",
"title": "Tropical Cyclone SAUDEL-26",
"country": "Japan",
"starts_at": "2026-08-18T12:00:00+00:00",
"source": "GDACS"
}
]
}
}
Field guide:
- type, severity: Drive routing and scheduling automation; severity thresholds map to different playbooks (e.g., switch to contracted carriers, lengthen pickup windows).
- starts_at: Useful for lead-time buffers and for sequencing alerts relative to pickup and delivery dates.
- port filtering: Tie hazards to port-centric drayage/inland planning. For example, severe weather near USLAX may push certain long-haul lanes into constrained status.
/carriers — FMCSA and FMC verification to de-risk procurement
Purpose: Lookup US trucking carriers (FMCSA SAFER) by DOT number or name, and ocean NVOCC/OTI carriers (FMC) by org number or name. This enables automated compliance checks and supply base expansion without manual directory lookups.
Key params:
- q: Required query (DOT number, company name, org number).
- type: trucking (default) | ocean | air (returns available:false).
Example request (trucking):
curl "https://freightpulsehq.com/api/v1/carriers?q=54283"
Example response:
{
"success": true,
"data": {
"type": "trucking",
"query": "54283",
"results": [
{
"dot_number": 54283,
"legal_name": "SWIFT TRANSPORTATION COMPANY OF ARIZONA LLC",
"status": "active",
"safety_rating": "S",
"drivers": 12883,
"address": {
"city": "Phoenix",
"state": "AZ",
"country": "US"
}
}
]
}
}
Field guide:
- status, safety_rating: Automate pre-award checks and restrict auto-tendering to compliant carriers in your TMS integrations.
- drivers: A rough capacity proxy when considering new partnerships; combine with your load density by lane to target outreach.
/fuel-prices — Surcharge calculators and modeling features
Purpose: Retrieve diesel and gasoline price levels nationally and by region, plus rolling averages and YoY changes. For TL forecasting, diesel is the key exogenous feature feeding both surcharge models and expected future rate bands.
Key params: None required.
Example request:
curl "https://freightpulsehq.com/api/v1/fuel-prices"
We saw the response structure earlier. Use diesel.national_average for standard FSC baselines; regions when you localize surcharge assumptions; and historical averages to construct lagged features. You can also fetch time series via /historical for model training.
/historical — Baselines for modeling and backtests
Purpose: Fetch historical time series for national fuel prices and daily port-congestion approximations across curated major ports. Historical series are the canonical inputs for training and validating forecasting models without building your own crawlers.
Key params:
- metric: fuel_price_diesel_national | fuel_price_gasoline_national | port_congestion:<portid>
- period: 30d (default) | 90d | 1y
Example request (diesel series):
curl "https://freightpulsehq.com/api/v1/historical?metric=fuel_price_diesel_national&period=30d"
Example response:
{
"success": true,
"data": {
"metric": "fuel_price_diesel_national",
"period": "30d",
"series": [
{ "date": "2026-07-27", "value": 5.257 },
{ "date": "2026-08-03", "value": 5.343 }
]
}
}
Example request (port congestion series for Los Angeles–Long Beach, if supported as a curated metric id):
curl "https://freightpulsehq.com/api/v1/historical?metric=port_congestion:USLAX&period=90d"
Interpretation tips:
- Use differencing (week-over-week) and moving averages to create stable features for your models.
- Join series to your lane table by port catchment and region to capture maritime-to-inland propagation.
End-to-End Examples: cURL, Python, and JavaScript
Below are minimal code samples that fetch lane-level signals and prepare them for capacity scoring. These are intentionally concise so you can slot them into schedulers, serverless tasks, or microservices.
Example: Fetch a live TL quote and combine with fuel price and port congestion context (cURL only).
# 1) Live FTL quote for lane 10001 -> 90210
curl "https://freightpulsehq.com/api/v1/freight-rates?mode=trucking&origin_zip=10001&destination_zip=90210"
# 2) Fuel prices (national + regions)
curl "https://freightpulsehq.com/api/v1/fuel-prices"
# 3) Port congestion near LA/LB
curl "https://freightpulsehq.com/api/v1/port-congestion?port=USLAX"
Example: Python script to fetch disruptions near a port and score risk for loads set to pass through that node.
import json
import time
import requests
BASE = "https://freightpulsehq.com/api/v1"
def get_disruptions(port, severity="moderate"):
url = f"{BASE}/disruptions?port={port}&severity={severity}"
r = requests.get(url, timeout=10)
payload = r.json()
if not payload.get("success"):
raise RuntimeError(payload.get("error", "Unknown error"))
return payload["data"]["results"]
def score_risk(disruptions):
# Simple heuristic: more events and higher severities raise risk
weights = {"low": 0.3, "moderate": 0.6, "high": 1.0}
score = 0.0
for ev in disruptions:
sev = ev.get("severity", "low")
score += weights.get(sev, 0.3)
return min(score, 3.0)
if __name__ == "__main__":
events = get_disruptions("USLAX", severity="moderate")
risk = score_risk(events)
print(json.dumps({"port": "USLAX", "events": events, "risk_score": risk}, indent=2))
Example: JavaScript (Node) fetching historical diesel data to compute a 4-week moving average.
import https from "https";
const BASE = "https://freightpulsehq.com/api/v1";
function fetchJSON(path) {
return new Promise((resolve, reject) => {
https.get(`${BASE}${path}`, (res) => {
let data = "";
res.on("data", (chunk) => data += chunk);
res.on("end", () => {
try { resolve(JSON.parse(data)); }
catch (e) { reject(e); }
});
}).on("error", reject);
});
}
function movingAverage(values, window) {
const out = [];
for (let i = 0; i < values.length; i++) {
const start = Math.max(0, i - window + 1);
const slice = values.slice(start, i + 1);
const avg = slice.reduce((a, b) => a + b, 0) / slice.length;
out.push(avg);
}
return out;
}
(async () => {
const resp = await fetchJSON("/historical?metric=fuel_price_diesel_national&period=1y");
if (!resp.success) throw new Error(resp.error || "Unknown error");
const series = resp.data.series || [];
const values = series.map(p => p.value);
const ma4 = movingAverage(values, 4);
console.log(JSON.stringify({ size: series.length, ma4_last: ma4[ma4.length - 1] }, null, 2));
})();
Designing a Lane-Level Capacity Forecast with FreightPulse
A practical capacity forecast combines exogenous signals (fuel, port trends, disruptions) and endogenous signals (live rates, transit times drift) aligned to a lane entity. Here’s a high-level approach:
- Define lanes and their port catchment: E.g., if a lane historically serves drayage and inland moves tied to LA/LB, associate it with USLAX for maritime context.
- Ingest time series: Use /historical for fuel and port congestion; persist responses daily for backtests.
- Add live snapshots: Poll /freight-rates on a cadence (e.g., hourly or daily) for representative OD pairs to capture current pricing pressure and transit day drift.
- Overlay disruptions: Subscribe to /disruptions around critical ports and weather-prone regions; transform into binary or graded features by severity.
- Model and thresholds: Fit a regression or gradient boosting model that outputs a capacity tightness score (e.g., 0–100). Drive playbooks: advance tendering, carrier diversification, dynamic surcharge policy, or pre-allocations per lane.
This entire loop runs on a single API surface and a shared JSON envelope, simplifying observability and operational controls. You can implement retries with exponential backoff uniformly, apply circuit breakers on a per-endpoint basis, and export standardized logs for audits and root-cause analysis.
Reliability, Observability, and Governance Best Practices
When you consolidate multiple logistics signals behind a single REST surface, you can apply platform patterns that raise reliability and speed up debugging:
- Client-side retries and backoff: For transient network errors, retry with exponential backoff and jitter. Avoid retry storms by bounding attempts and using circuit breakers to shed load if a dependency is degraded.
- Health checks and fallbacks: Periodically probe endpoints like /fuel-prices and /historical to verify data path health. If a live quote is temporarily unavailable, surface cached historical baselines with a clear banner in your UI so planners maintain situational awareness.
- Structured logging and trace correlation: Log the endpoint, query params, and a generated request_id for every call. On response, log success and the top-level keys you use downstream (e.g., data.mode, data.price_usd). This makes A/B tests and anomaly analysis much easier.
- Governance and roles: Segment consumption by app or microservice and tag logs accordingly. Apply role-based routing on the client side (e.g., give only your procurement tool access to /carriers), maintain audit logs of read operations, and isolate PII-containing payloads in data-local regions if required by your internal policy.
- Regional routing and latency: For latency-sensitive user flows (e.g., an ops console that loads live quotes), route calls from edge workers or the region closest to your users. Batch low-priority polling jobs to reduce variance.
- Provider overrides and fallback chains: Build a decision layer that can substitute a cached time series if a live quote is degraded, or temporarily rely on /historical port congestion if a specific port query fails. Alert only when the fallback chain exhausts.
These patterns help keep your lane-level capacity forecasts resilient during peak (when disruptions and maritime shifts are common) and transparent to auditors and leadership.
Error Handling and Troubleshooting Guidance
FreightPulse returns a standardized envelope across endpoints, which simplifies error handling:
- success: true | false — Always check this before parsing data. If false, consult error.
- data: Object — The payload. Its structure varies by endpoint, but the container is consistent.
- error: String — Present only if success=false. Use for operator messaging and logs.
Common scenarios:
- 422 Missing required parameter: For example, /carriers without q. Your client should validate inputs before dispatching and surface friendly messages to users.
- 401 or 403 Authentication/authorization problems: Handle by surfacing a structured message and directing operators to check client configuration. Avoid infinite retries when you see non-transient auth failures.
- 5xx Transient upstream errors: Retry with backoff and circuit breaking. Consider serving cached data with a small staleness window for non-critical flows.
Debug tips:
- Log endpoint, params, and a timestamp for each request. When success=false, capture the error string and a short hash of the params for correlation.
- For numerical anomalies (e.g., sudden price shifts), compare to your cached prior day’s response. If the delta exceeds a threshold, alert a human-in-the-loop to double-check with procurement.
Real-World Use Cases for 3PLs and Network Planners
Fuel surcharge calculator with forecasting:
- Problem: Surcharges lag reality, upsetting margin and customer trust.
- Build: Pull /fuel-prices daily and /historical for training a short-horizon AR model of diesel. Generate next-week surcharge tables per region and publish to your TMS.
- Value: Align recoveries with actual diesel movements; reduce manual spreadsheet cycles.
Port-congestion dashboard for drayage and inland planning:
- Problem: Planners lack a simple, explainable signal to forecast drayage delays and downstream TL capacity impacts.
- Build: Visualize /port-congestion and /historical series for priority ports. Overlay /disruptions filtered by port. Add thresholds that flip a port to “watch,” “concern,” or “action.”
- Value: Earlier buy signals for capacity on inland lanes; fewer last-minute expedites.
Carrier vetting and tender automation:
- Problem: Onboarding new carriers is slow and inconsistent; teams miss opportunities to diversify.
- Build: A vetting tool with /carriers lookups (FMCSA/FMC). Auto-approve based on status and safety_rating; flag exceptions for manual review. Combine with /freight-rates to test market prices with pre-approved carriers.
- Value: Faster onboarding, lower compliance risk, more dynamic procurement.
Disruption-aware shipment tracker:
- Problem: Weather and seismic events catch active loads mid-transit, causing misses and penalty costs.
- Build: Poll /disruptions by country and port; match alerts to shipments by proximity and ETAs. Inject buffers or re-route via alternates; auto-notify customers for at-risk loads.
- Value: Lower service failures and better customer comms.
Lane-level capacity forecast and auto-tendering thresholds:
- Problem: Planners over- or under-allocate tenders to certain lanes due to opaque signals.
- Build: Train a model blending /freight-rates, /fuel-prices, /port-congestion, and /disruptions features. Produce a daily capacity score per lane. If score crosses thresholds, adjust tender strategy and notify procurement.
- Value: Systematic, data-driven allocations; fewer surprises and smoother execution.
Deep Dive: Field-by-Field Interpretation Across Endpoints
It’s worth reiterating the most decision-critical fields and how to use them:
- /freight-rates.price_usd: Treat as a live barometer. Increases, especially when not fully explainable by diesel moves, signal capacity tightening. If transit_days drifts up simultaneously, escalate.
- /port-congestion.metrics.ratio_vs_baseline: Near-term demand/supply signal at maritime nodes. Sustained sub-1.0 ratios might indicate downstream softness; above 1.0 suggests inbound volume stress and potential drayage slowdowns.
- /disruptions.severity and starts_at: Use severity gating for automated actions. Align starts_at windows with your pickup_date and delivery_date to forecast direct vs residual impact.
- /fuel-prices.diesel.regions: Build region-specific FSC multipliers; the national average is solid for a baseline, but regionalization improves accuracy for multi-region networks.
- /historical.series: Always persist for backtests. Your best guardrail against spurious correlations is a clean, well-partitioned history of the exact signals you use in production.
- /carriers.status and safety_rating: Automate denylist/allowlist logic. Store snapshots to power compliance audits.
Performance Tips and Client Patterns
- Batching and cadence: Schedule non-interactive workloads (e.g., nightly training jobs) separately from interactive console fetches (e.g., on-demand lane checks). For data science, pull /historical in larger windows (90d/1y) rather than many small calls.
- Cache lifetimes: For lagged metrics like /port-congestion, a daily cache is often sufficient. For /freight-rates, cache minutes-to-hours depending on UI sensitivity.
- Concurrency and idempotency: Name your jobs by lane and date. For overlapping runs, gate by a distributed lock or a monotonic sequence to avoid double-writes.
- Observability: Record input params, response timestamps, and key outputs in a single row per call. Add a source tag (e.g., “FreightPulse”) to cleanly separate third-party vs internal metrics in dashboards.
Additional Example Responses and Usage Notes
Here are more full JSON examples to help you validate parsing logic across multiple endpoints.
Freight rates with optional params (illustrative):
{
"success": true,
"data": {
"mode": "trucking",
"service": "FTL (53' dry van)",
"source": "Warp",
"price_usd": 4235.50,
"transit_days": 3,
"pickup_date": "2026-09-02",
"delivery_date": "2026-09-05"
}
}
Port congestion filtered by region (illustrative multi-result shape):
{
"success": true,
"data": {
"results": [
{
"port": "Port of Shanghai",
"locode": "CN SHA",
"country": "China",
"congestion": "high",
"as_of": "2026-08-14",
"metrics": {
"recent_avg_portcalls_per_day": 12.1,
"baseline_avg_portcalls_per_day": 10.9,
"ratio_vs_baseline": 1.11
}
},
{
"port": "Singapore",
"locode": "SG SIN",
"country": "Singapore",
"congestion": "moderate",
"as_of": "2026-08-14",
"metrics": {
"recent_avg_portcalls_per_day": 15.4,
"baseline_avg_portcalls_per_day": 16.2,
"ratio_vs_baseline": 0.95
}
}
]
}
}
Disruptions filtered by type (wildfire, illustrative):
{
"success": true,
"data": {
"results": [
{
"id": "usgs:WF:789123",
"type": "wildfire",
"severity": "high",
"title": "Wildfire Event - Northern California",
"country": "United States",
"starts_at": "2026-08-21T03:00:00+00:00",
"source": "NOAA/NWS"
},
{
"id": "gdacs:WF:789124",
"type": "wildfire",
"severity": "moderate",
"title": "Wildfire Event - Southern Oregon",
"country": "United States",
"starts_at": "2026-08-22T10:00:00+00:00",
"source": "GDACS"
}
]
}
}
FAQ
How often do FreightPulse fuel prices update?
Fuel prices track the EIA data cadence, and responses include a timestamp so you can validate freshness. For forecasting and surcharge calculation, schedule a daily pull and persist the values with the provided timestamp to avoid double-counting updates.
Can I look up ocean carriers as well as trucking carriers?
Yes. The /carriers endpoint supports trucking (FMCSA SAFER) and ocean NVOCC/OTI (FMC) lookups. Use the type parameter to target the dataset that matches your use case; the response remains in the same success/data envelope regardless of type.
Does the port congestion data reflect real-time vessel wait times?
No. Port congestion data is a lagged approximation (about 6–7 days) using a 7-day average of port calls compared to a 90-day baseline. It’s designed for trend analysis and forecasting, not for minute-by-minute operational dispatch. Use it to anticipate drayage and inland impacts rather than to manage same-day port moves.
What’s the best way to combine live rates and fuel prices in a capacity model?
Start by normalizing live price_usd from /freight-rates with diesel baselines from /fuel-prices or /historical. Residuals beyond what diesel explains often capture network pressure. Add port-congestion ratios and disruption severity to improve early warnings on tightening lanes.
How should I handle missing or partial responses?
Always check the success flag. If false, consult the error field and avoid parsing data. For partial cases like “available”: false on /freight-rates when required params are missing, prompt for corrected inputs and retry. Maintain a small cache of recent valid responses to keep dashboards informative during transient gaps.
Conclusion + CTA
Lane-level capacity forecasting doesn’t fail for lack of ideas; it fails when data pipelines collapse under their own complexity. The fastest path to resilient forecasts is consolidating the inputs that matter—fuel, live rates, port trends, carrier verification, and disruption alerts—behind a single, consistent API. That’s exactly what FreightPulse delivers. With unified JSON responses, lag-aware maritime context, live US FTL quotes, and natural-hazard alerts, you can finally connect maritime signals to inland capacity, ground your surcharge math in reliable data, and automate tendering decisions with confidence.
Whether you are a 3PL building a planning console, a freight forwarder creating a port health dashboard, or a supply chain SaaS platform shipping a new analytics module, you can go from concept to production in days, not months. Start by wiring /freight-rates for lane snapshots, layer in /fuel-prices and /historical for baselines, pull /port-congestion to anticipate drayage-driven shocks, and subscribe to /disruptions to protect active loads. Then operationalize with retries, circuit breakers, and structured observability to keep it humming during peak.
Explore what’s possible with FreightPulse, and put unified logistics intelligence behind your forecasting and planning workflows today. Ready to build? Try FreightPulse for free and start shipping lane-level capacity forecasting that your operators will trust.