TEU turnaround time is the heartbeat metric for freight forwarders and 3PLs managing ocean boxes across complex, multi-leg transportation networks. When containers dwell too long at port or inland terminals, detention and demurrage charges balloon, asset utilization falls, and customer SLAs slip. Developers and operators alike often struggle to assemble a clear picture across port congestion, inland trucking capacity, fuel cost trends, and carrier vetting data—typically stitching together several siloed data sources that don’t talk to each other.
This post shows how to instrument container flow with a single, developer-friendly data surface: FreightPulse. We will combine container dwell and congestion signals, nearby natural-disruption alerts, verified trucking capacity data, and live full-truckload (FTL) quotes to reduce TEU turnaround times—without building a patchwork of AIS, EIA, FMCSA, FMC, and weather feeds. You will learn how to plug congestion and disruption signals into your workflow, pre-book drayage with live FTL quotes when a port is tightening up, and alert stakeholders before delays cascade.
The focus is practical: get to a deployable plan quickly. We will walk through the core endpoints, realistic responses, error handling, and design patterns that help freight forwarders and supply-chain teams move from reactive firefighting to proactive flow control.
Why FreightPulse
FreightPulse consolidates logistics intelligence behind one REST API so developers can move faster with fewer dependencies. Instead of juggling port congestion approximations, AIS feeds, carrier directories, fuel price series, and ad-hoc rate-quote scrapers, you consume normalized JSON across endpoints designed for production use.
- Unified operational view for transportation decisions: In the same schema, you can read IMF PortWatch-driven congestion approximations, national and regional EIA fuel prices, live US FTL quotes (via Warp), carrier verification from FMCSA/FMC directories, and natural-disruption alerts. This lets you align port-side decisions (dwell risk) with inland capacity (trucking quotes) and cost drivers (diesel).
- Developer velocity and lower integration risk: One base URL, consistent response envelope, and shared error semantics eliminate category-specific adapters. Your client code handles the same success/error shape across endpoints, reducing the number of moving parts you maintain and monitor in production.
- Production-minded reliability: Responses are compact and predictable, which simplifies retries, circuit breakers, and structured logging. You can treat FreightPulse as a typed data backbone for your orchestration services that reconcile voyage legs, yard slots, and drayage bookings.
- Built-in exploration path: You can test ideas and prototype dashboards quickly without committing to heavy contracts. That means faster feedback loops as you iterate on dwell analytics, alerting heuristics, or procurement logic.
Taken together, these advantages compress the time from “we need to reduce dwell 12% this quarter” to “we shipped a congestion-aware drayage recommender in production,” all while avoiding the complexity of wiring together multiple unrelated data vendors.
Quick Start
Base URL:
https://freightpulsehq.com/api/v1
All endpoints return the same high-level envelope:
{
"success": true,
"data": { ... }
}
If you include an X-API-Key header, you’ll receive authenticated responses; unauthenticated exploration is also supported for light testing. Here is a first request to check national fuel prices—a foundational cost input for drayage and long-haul decisions:
curl -s -H "X-API-Key: YOUR_API_KEY" \
"https://freightpulsehq.com/api/v1/fuel-prices"
Sample JSON response:
{
"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:
- diesel.national_average: Current national baseline for fuel-surcharge models.
- diesel.regions: Regional variation to tune lane-level surcharges for drayage out of specific ports or inland ramps.
- diesel.historical: Rolling averages to stabilize surcharge indices and avoid weekly volatility.
With a single call, your operations tooling can ground rate decisions against current and historical diesel benchmarks.
Core Endpoints
1) Port Congestion — Container dwell risk signal
Endpoint:
GET /port-congestion
Purpose: Provides a 7-day average of port calls compared to a 90-day baseline (ratio vs baseline). This is a lagged approximation (typically 6–7 days) based on IMF PortWatch AIS data for curated ports. Use it to flag tightening capacity and dwell risk trends—not to track live vessel queues.
Key parameters:
- port: Name or LOCODE (e.g., USLAX).
- country: Country name or ISO3, if filtering by country.
- region: Geographic region (continent level).
- congestion: Optional filter (low | moderate | high).
Example:
curl -s -H "X-API-Key: YOUR_API_KEY" \
"https://freightpulsehq.com/api/v1/port-congestion?port=USLAX"
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
}
}
]
}
}
How to use:
- congestion: Categorical label you can map to risk bands for dwell SLAs and milestone buffers.
- metrics.ratio_vs_baseline: Quantifies deviation; values below 1.0 often imply fewer port calls than usual. Combine this with historical series to detect trend inflections.
- as_of: Date stamp for the 7-day window endpoint calculation; not real-time. Treat as a lagged fair proxy for capacity pressure.
Best practices:
- Model dwell buffers by port: Use a lookup table mapping congestion bands to additional free-time buffers (e.g., +24h if moderate, +48h if high).
- Display trend lines: Pull daily historical series via GET /historical (metric port_congestion:<portid>) to show leadership whether conditions are improving or degrading week-over-week.
2) Disruptions — Natural hazards near ports
Endpoint:
GET /disruptions
Purpose: Consolidates natural-hazard alerts (cyclones, earthquakes, severe weather, etc.) from sources such as GDACS, USGS, and NOAA/NWS. This is particularly useful for spotting risks that can turn moderate congestion into unexpected dwell spikes within hours or days.
Key parameters:
- type: cyclone | earthquake | flood | volcano | drought | wildfire | severe_weather.
- severity: low | moderate | high.
- country: Filter by country if not port-centric.
- port: Filter by proximity to a LOCODE; the API applies a default search radius (300km, 100km for US weather).
Example (high-severity events near Los Angeles/Long Beach):
curl -s -H "X-API-Key: YOUR_API_KEY" \
"https://freightpulsehq.com/api/v1/disruptions?port=USLAX&severity=high"
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"
}
]
}
}
How to use:
- type/severity: Drive alerting policy. For example, only auto-adjust buffer times for severe_weather at high severity; notify ops for moderate.
- starts_at: Hints at the event timeline; pair with current ETA windows to determine which containers are at risk if a storm hits during pickup windows.
- port filter: Anchor disruption awareness to your active gateway ports and inland ramps, minimizing noise and focusing on shipments that matter.
Best practices:
- Merge disruption signals with congestion: When disruption severity crosses a threshold near an already moderate/high congestion port, auto-escalate to pre-book drayage and yard slots.
- Store minimal event context: Cache id, type, severity, starts_at, and affected port(s) to support deduplication and postmortems.
3) Freight Rates — Pre-book inland legs during congestion build-ups
Endpoint:
GET /freight-rates
Purpose: Fetch live FTL trucking quotes for US lanes (via Warp) in the same schema family as your congestion and fuel signals. During congestion tiers rising at gateway ports, quickly score and pre-book drayage or long-haul repositioning to keep TEUs moving.
Key parameters (trucking mode):
- mode: trucking (default) | ocean | air.
- origin_zip, destination_zip: Required for trucking.
- pickup_date, qty, total_weight_lb: Optional but useful for realistic quotes.
Example (New York, NY 10001 to Beverly Hills, CA 90210):
curl -s -H "X-API-Key: YOUR_API_KEY" \
"https://freightpulsehq.com/api/v1/freight-rates?mode=trucking&origin_zip=10001&destination_zip=90210"
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"
}
}
How to use:
- price_usd, transit_days: Feed scoring functions that compare “act-now” drayage costs against projected detention if dwell extends by X days. If detention+storage costs exceed lane quote deltas, pull the trigger sooner.
- pickup_date/delivery_date: Aligns drayage slots and DC dock availability, minimizing yard congestion that can cause secondary dwell.
Best practices:
- Use diesel trend as a prior: If diesel 30d_avg is rising, forward-run expected trucking quotes to anticipate budget impact and book early.
- Handle “available=false” guardrails: If you omit required params, the endpoint responds with available=false instead of an error. Build client logic to prompt users for the missing fields.
4) Fuel Prices — Power accurate drayage surcharge models
Endpoint:
GET /fuel-prices
Purpose: Integrate national and PADD-level diesel benchmarks (EIA) for surcharge calculations and budget baselines. Tie surcharge updates to a deterministic data cadence instead of ad-hoc spreadsheets.
No required parameters. Example shown in Quick Start.
Implementation tips:
- Stabilize surcharges with 30d_avg or 90d_avg while still observing national_average for responsiveness. This helps avoid weekly surcharge whiplash during volatile periods.
- Apply regional adjustments for origin-anchored legs. For a drayage run out of Los Angeles, rely on west_coast or california series when calibrating cost projections.
5) Carriers — Verify trucking partners before dispatch
Endpoint:
GET /carriers
Purpose: Look up US trucking carriers (FMCSA SAFER) or ocean NVOCC/OTI filings (FMC). Before committing containers to a motor carrier for drayage, verify the DOT number, status, and safety indicators.
Key parameters:
- q: DOT number, organization number, or name (required).
- type: trucking (default) | ocean | air (air returns available:false).
Example (trucking, DOT lookup):
curl -s -H "X-API-Key: YOUR_API_KEY" \
"https://freightpulsehq.com/api/v1/carriers?q=54283"
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"
}
}
]
}
}
How to use:
- status and safety_rating: Gate dispatch eligibility. Route dynamically to vetted alternates if a carrier is inactive or has an unacceptable rating.
- drivers: A rough proxy for capacity scale. Use with caution; always combine with live quotes and historical performance.
6) Historical Series — Build predictive dashboards
Endpoint:
GET /historical
Purpose: Pull historical diesel or port-congestion series to build trend dashboards and forecasting features. This is essential for separating signal from noise when deciding whether to accelerate a drayage move.
Key parameters:
- metric: fuel_price_diesel_national | fuel_price_gasoline_national | port_congestion:<portid>.
- period: 30d (default) | 90d | 1y.
Example (30-day national diesel series):
curl -s -H "X-API-Key: YOUR_API_KEY" \
"https://freightpulsehq.com/api/v1/historical?metric=fuel_price_diesel_national&period=30d"
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 }
]
}
}
How to use:
- series: Build moving averages, slope estimates, and alerts. Feed your ML features or rule-based heuristics to determine whether to lock in capacity sooner.
- metric port_congestion:<portid>: Show management trend charts for ports like Shanghai, Singapore, Rotterdam, or Los Angeles-Long Beach. Stakeholder visibility reduces “surprise” detention incidents.
Interpreting Responses and Field Semantics
Every FreightPulse response shares a consistent envelope: success (boolean) and either data or error. This simplifies your client code: parse the envelope once and dispatch by endpoint. Below are additional details that matter in production when building transportation systems focused on reducing TEU dwell.
- success: true/false. Always check before dereferencing data.
- error: Present only when success=false. Safe to render directly into alerting logs for triage.
- Timestamps (timestamp, as_of, starts_at): Treat each timestamp as an indicator of data recency. For example, /port-congestion is a lagged 7-day average with a baseline reference; do not confuse it with real-time vessel counts.
- Categoricals (congestion, severity): Map to numeric risk scores (e.g., low=1, moderate=2, high=3). Scoring simplifies automated routing and escalation logic.
- Quantitative metrics (ratio_vs_baseline, price_usd, transit_days): Feed directly into optimization objectives: minimize cost subject to dwell SLA risk. A common rule: If expected dwell cost surpasses lane price_usd minus your budget tolerance, pre-book.
End-to-End Flow: From Port Risk to Drayage Booking
To connect the dots and actually reduce TEU turnaround time:
- Check /port-congestion for gateway ports relevant to your sailings. If congestion is moderate or high, record ratio_vs_baseline and as_of.
- Query /disruptions filtered by port to see if severe weather or seismic events may compound delays during your container’s pickup window.
- If risk is rising, request /freight-rates for candidate inland lanes (port ZIP to ramp/DC ZIP). Forecast detention cost against the quote’s price_usd and transit_days.
- Use /fuel-prices and /historical diesel trends to update surcharge models and sanity-check rapidly changing quotes against macro fuel signals.
- Before confirming drayage, verify the carrier via /carriers. Confirm status is active and safety_rating meets your compliance floors.
This pipeline replaces manual monitoring and guesswork with a deterministic playbook you can automate. It also creates a shared source of truth for operations, procurement, and customer-support teams handling ETA communications.
Practical Code Examples
cURL: End-to-end sampling
# 1) Congestion at Los Angeles/Long Beach
curl -s -H "X-API-Key: YOUR_API_KEY" \
"https://freightpulsehq.com/api/v1/port-congestion?port=USLAX"
# 2) High-severity disruptions near the same port
curl -s -H "X-API-Key: YOUR_API_KEY" \
"https://freightpulsehq.com/api/v1/disruptions?port=USLAX&severity=high"
# 3) Live FTL quote for a likely drayage/linehaul to a DC ZIP
curl -s -H "X-API-Key: YOUR_API_KEY" \
"https://freightpulsehq.com/api/v1/freight-rates?mode=trucking&origin_zip=90744&destination_zip=85001"
Python: Risk scoring and decision rule
import requests
import math
BASE = "https://freightpulsehq.com/api/v1"
HEADERS = {"X-API-Key": "YOUR_API_KEY"}
def get_json(path, params=None):
r = requests.get(f"{BASE}{path}", headers=HEADERS, params=params, timeout=20)
r.raise_for_status()
payload = r.json()
if not payload.get("success"):
raise RuntimeError(payload.get("error", "Unknown error"))
return payload["data"]
def congestion_risk_score(port_locode):
data = get_json("/port-congestion", {"port": port_locode})
if not data.get("results"):
return 0.0
m = data["results"][0]["metrics"]
ratio = m.get("ratio_vs_baseline", 1.0)
# Lower ratio could indicate reduced port calls vs baseline; normalize risk
# Invert and cap: risk = max(0, 1 - ratio)
return max(0.0, 1.0 - ratio)
def disruption_risk_boost(port_locode):
data = get_json("/disruptions", {"port": port_locode, "severity": "high"})
# Simple boost per high-severity event (cap at 0.3)
boost = min(0.3, 0.05 * len(data.get("results", [])))
return boost
def expected_dwell_cost(days, daily_detention=150.0):
return days * daily_detention
def should_prebook_drayage(port_locode, origin_zip, dest_zip, detention_per_day=150.0):
base_risk = congestion_risk_score(port_locode)
boost = disruption_risk_boost(port_locode)
risk = min(1.0, base_risk + boost)
# Map risk to expected delay days (simple heuristic)
expected_delay_days = 0.0
if risk >= 0.7:
expected_delay_days = 3.0
elif risk >= 0.4:
expected_delay_days = 1.5
elif risk >= 0.2:
expected_delay_days = 1.0
dwell_cost = expected_dwell_cost(expected_delay_days, detention_per_day)
quote = get_json("/freight-rates", {
"mode": "trucking",
"origin_zip": origin_zip,
"destination_zip": dest_zip
})
price = quote.get("price_usd", 0.0)
# Decision: prebook if dwell cost >= 10% of the lane price (tunable)
decision = dwell_cost >= 0.1 * price
return {
"risk_score": risk,
"expected_delay_days": expected_delay_days,
"dwell_cost": dwell_cost,
"lane_price": price,
"prebook": decision
}
print(should_prebook_drayage("USLAX", "90744", "85001"))
This snippet ties congestion and disruption risk to a cost-aware drayage decision. In practice, refine the mapping between ratio_vs_baseline and expected_delay_days by correlating with your historical dwell data.
Error Handling, Reliability, and Observability
Robust transportation systems need predictable failure modes. FreightPulse returns structured errors you can log, alert on, and retry appropriately.
Common error response
{
"success": false,
"error": "Human-readable message."
}
Best practices:
- Always check success. Do not assume data is present.
- Implement retry with exponential backoff for transient network issues. Idempotent GET requests are safe to retry.
- Time-box outbound calls with client timeouts; log latency percentiles by endpoint. This makes it easier to isolate downstream slowness from upstream congestion conditions (which you may be observing simultaneously).
- Circuit-breaker design: If a dependency edge becomes unavailable, fail soft by using the last known good response for a bounded duration and surfacing a non-blocking warning in the UI. For dwell-risk dashboards, stale congestion data may still be better than empty screens.
Real-World Use Cases
1) Congestion-aware drayage prebooking for port-to-DC moves
A freight forwarder monitors gateway ports in a dashboard. When the /port-congestion endpoint labels a port as moderate or high, the system queries /disruptions filtered by that port to determine if weather will intensify delays. If risk rises above a threshold, it automatically calls /freight-rates with candidate inland ZIPs and recommends prebooking an FTL move. This reduces dwell-based detention fees and improves ETA reliability.
2) Fuel-surcharge calculator embedded in TMS workflows
A 3PL integrates /fuel-prices with /historical (30d and 90d) to compute weekly surcharges. It normalizes volatility by mixing national_average with 30d_avg and applies regional multipliers for west_coast or gulf_coast where appropriate. When a customer requests a quote, the TMS instantly calculates surcharges using the same model used across all ops teams, eliminating spreadsheet drift and inconsistent pricing.
3) Carrier vetting gate before dispatch
Before assigning a drayage job, a dispatcher’s console calls /carriers with the DOT number to verify status and safety rating. If status is not active or safety_rating violates policy, the console suggests alternates and triggers new /freight-rates requests. This reduces compliance risk and failed pickups that would otherwise inflate TEU dwell at the terminal.
4) Port trend reporting for leadership
A supply chain analytics team builds trend charts by calling /historical with metric port_congestion:<portid> for major lanes (Shanghai–LA/LB, Singapore–Rotterdam). They correlate ratio_vs_baseline to actual container dwell from WMS/TMS timestamps and show confidence intervals for next week’s dwell risk. This justifies pre-emptive routing decisions and improves weekly planning cadence.
5) Automated disruption routing guardrails
A SaaS shipment tracker uses /disruptions with port-based filters to flag high-severity events within 300km. If containers are scheduled to discharge during the event window, the app raises alerts in the customer portal and suggests contingency moves (earlier pickup or alternate inland routing). Users see a unified picture without switching between weather, seismic, and port feeds.
Detailed Endpoint Walkthroughs with Complete JSON
/port-congestion — multiple-port filtering example
curl -s -H "X-API-Key: YOUR_API_KEY" \
"https://freightpulsehq.com/api/v1/port-congestion?country=United%20States&congestion=high"
{
"success": true,
"data": {
"results": [
{
"port": "Los Angeles-Long Beach",
"locode": "US LAX",
"country": "United States",
"congestion": "high",
"as_of": "2026-08-14",
"metrics": {
"recent_avg_portcalls_per_day": 7.9,
"baseline_avg_portcalls_per_day": 10.5,
"ratio_vs_baseline": 0.75
}
},
{
"port": "New York-New Jersey",
"locode": "US NYC",
"country": "United States",
"congestion": "high",
"as_of": "2026-08-14",
"metrics": {
"recent_avg_portcalls_per_day": 11.1,
"baseline_avg_portcalls_per_day": 14.2,
"ratio_vs_baseline": 0.78
}
}
]
}
}
Interpretation:
- Both gateways show ratio_vs_baseline significantly below 1.0, implying fewer average port calls versus baseline. In practice, this often correlates with operational constraints or schedule shifts that can increase dwell volatility.
- Action: If you have containers on both coasts, stagger pickup appointments and pre-allocate drayage capacity across DCs to avoid simultaneous yard congestion.
/disruptions — type and severity filtering
curl -s -H "X-API-Key: YOUR_API_KEY" \
"https://freightpulsehq.com/api/v1/disruptions?type=severe_weather&country=US&severity=moderate"
{
"success": true,
"data": {
"results": [
{
"id": "noaa:SW:2026-08-21:CA-SoCal",
"type": "severe_weather",
"severity": "moderate",
"title": "Coastal Wind Advisory - Southern California",
"country": "United States",
"starts_at": "2026-08-21T00:00:00+00:00",
"source": "NOAA/NWS"
},
{
"id": "noaa:SW:2026-08-22:TX-Gulf",
"type": "severe_weather",
"severity": "moderate",
"title": "Thunderstorm Risk - Upper Texas Coast",
"country": "United States",
"starts_at": "2026-08-22T06:00:00+00:00",
"source": "NOAA/NWS"
}
]
}
}
Interpretation:
- Moderate weather may reduce truck gate hours or port productivity. Pair with /freight-rates to preempt slot shortages at nearby ramps.
- Operationalize: Trigger “heads-up” alerts to dispatch, not “all hands” escalations. Save high-severity triggers for auto-booking logic.
/freight-rates — minimal vs. enriched requests
# Minimal trucking request (required zips)
curl -s -H "X-API-Key: YOUR_API_KEY" \
"https://freightpulsehq.com/api/v1/freight-rates?mode=trucking&origin_zip=11232&destination_zip=07030"
# Enriched trucking request with weight and pickup date
curl -s -H "X-API-Key: YOUR_API_KEY" \
"https://freightpulsehq.com/api/v1/freight-rates?mode=trucking&origin_zip=11232&destination_zip=07030&pickup_date=2026-08-25&qty=1&total_weight_lb=36000"
{
"success": true,
"data": {
"mode": "trucking",
"service": "FTL (53' dry van)",
"source": "Warp",
"price_usd": 412.50,
"transit_days": 1,
"pickup_date": "2026-08-25",
"delivery_date": "2026-08-26"
}
}
Interpretation:
- Short-haul examples are valuable for drayage flows in dense port metros (NY/NJ, LA/LB). The same code path supports longer inland repositioning when capacity tightens.
- Use price_usd and transit_days to score bids in procurement automations; store them with context (weight, pickup window) for auditability.
/fuel-prices — augmenting surcharge stability
curl -s -H "X-API-Key: YOUR_API_KEY" \
"https://freightpulsehq.com/api/v1/fuel-prices"
{
"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
}
}
}
}
}
Interpretation:
- For TEU flow, prioritize diesel series. West-coast drayage should anchor on west_coast/california depending on your policy.
- Change metrics: Use change_week and change_percent to trigger weekly review tasks, not instant repricing, unless you run dynamic contracts.
/carriers — ocean vs trucking lookups
# Ocean NVOCC/OTI by name
curl -s -H "X-API-Key: YOUR_API_KEY" \
"https://freightpulsehq.com/api/v1/carriers?q=expeditors&type=ocean"
{
"success": true,
"data": {
"type": "ocean",
"query": "expeditors",
"results": [
{
"org_number": "XXXXXXX",
"legal_name": "EXPEDITORS INTERNATIONAL OF WASHINGTON, INC.",
"status": "active",
"address": {
"city": "Seattle",
"state": "WA",
"country": "US"
}
}
]
}
}
Interpretation:
- Use for compliance checks when selecting NVOCCs/OTIs. While your dwell logic is typically driven by port and inland legs, ocean partner validation strengthens end-to-end control.
/historical — port congestion trend series
# Example: 90-day congestion series for Los Angeles-Long Beach
curl -s -H "X-API-Key: YOUR_API_KEY" \
"https://freightpulsehq.com/api/v1/historical?metric=port_congestion:USLAX&period=90d"
{
"success": true,
"data": {
"metric": "port_congestion:USLAX",
"period": "90d",
"series": [
{ "date": "2026-06-01", "value": 0.98 },
{ "date": "2026-06-08", "value": 0.94 },
{ "date": "2026-06-15", "value": 0.91 },
{ "date": "2026-06-22", "value": 0.89 },
{ "date": "2026-06-29", "value": 0.87 }
]
}
}
Interpretation:
- value approximates ratio_vs_baseline by day for the curated port. Downward slope implies sustained deviation from baseline activity—a precursor to operational constraints you must plan around.
- Blend with your own yard and gate-in timestamps to produce predictive dwell alerts.
Modeling TEU Dwell Reduction with FreightPulse Signals
Let’s translate the combined signals into a simple decision framework that your orchestration service can run hourly:
- Signal collection: Pull latest /port-congestion for active gateway ports; fetch /historical to fit a linear trend; query /disruptions by port at moderate+ severity.
- Risk synthesis: Convert congestion band to a base score; add a boost for event density near the port. Fit an expected_delay_days from your historical mapping.
- Cost crossover: Compute expected detention and storage charges from your tariff matrix. Compare against /freight-rates for candidate inland legs.
- Execution: If crossover occurs (dwell cost ≥ threshold of lane price), pre-book FTL; else, reassess in the next cycle. Verify carriers via /carriers before final dispatch.
- Communication: Update ETA and risk banners in customer portals; attach supporting data points (as_of, ratio_vs_baseline, event titles).
This disciplined loop turns port and disruption signals into an operational control system for containers—precisely the lever you need to cut TEU turnaround times.
Performance Tuning and Implementation Tips
- Batching: If monitoring multiple ports, issue parallel GET calls or aggregate by country/region filters to reduce round trips. Cache results for short windows (e.g., 10–30 minutes) since congestion data is lagged and disruption updates have finite cadence.
- Idempotent retries: For GETs, use exponential backoff with jitter. Log both HTTP status and the payload’s error for diagnosability.
- Client timeouts and health checks: Enforce reasonable timeouts (e.g., 10–20s) and periodically run health pings against a lightweight endpoint to warm up connections and detect network anomalies.
- Schema evolution: Guard your parsers against unknown fields; prefer presence checks. FreightPulse maintains a stable envelope which makes non-breaking changes easy to adopt.
- Observability: Tag logs with endpoint, params hash, latency, success flag, and a correlation ID per shipment or container. This helps reconcile data-driven decisions with operational outcomes during post-incident reviews.
FAQ
How often do FreightPulse fuel prices update?
Fuel prices reflect EIA benchmarks with national and regional coverage, along with rolling 30/90-day averages. Use national_average for fast updates and pair with 30d_avg to dampen weekly noise in surcharge formulas.
Can I look up ocean carriers as well as trucking carriers?
Yes. Use GET /carriers with type=ocean for NVOCC/OTI lookups from FMC directories, and the default trucking mode for FMCSA SAFER data. For air, the endpoint returns available:false to indicate lookup is not supported.
Does the port congestion data reflect real-time vessel wait times?
No. Port congestion is a lagged approximation, typically 6–7 days stale, reporting a 7-day average of port calls versus a 90-day baseline. Use it as a strong directional signal for capacity pressure and dwell risk—not for minute-by-minute queue tracking.
How can I reduce false positives in disruption alerts?
Anchor alerts to ports with the port parameter and set a severity threshold. Combine disruption counts with congestion bands to prioritize true risks where hazards coincide with already-stressed terminals.
What’s the fastest way to build a congestion dashboard for leadership?
Start with GET /port-congestion for current bands and GET /historical with metric port_congestion:<portid> for trend lines. Add nearby /disruptions for context and overlay diesel 30d_avg from /fuel-prices to frame the cost backdrop for drayage decisions.
Conclusion + CTA
Reducing TEU turnaround time is ultimately a data coordination problem across ports, hazards, carriers, trucks, and cost drivers. With FreightPulse, you unify these signals behind one consistent API and wire them directly into your TMS, dashboards, and automation workflows. That turns a chaotic blend of congestion anecdotes and weather headlines into a predictable system that buys capacity when it matters and eliminates unnecessary dwell.
If you need to move faster—standing up a congestion-aware drayage planner, a fuel-surcharge service, or a carrier vetting gate—start by instrumenting the endpoints covered here. You will have a measurable path to fewer days in terminal, fewer detention bills, and happier shippers.
Build smarter transportation systems today with FreightPulse. Explore the endpoints, prototype your first dashboard, and get to production without juggling five separate feeds. Try FreightPulse for free and turn port and disruption signals into action that cuts TEU dwell, starting this week.