Carrier performance is the backbone of your transportation strategy, but most organizations still score carriers using stale KPIs and fragmented data. On-time pickup and delivery tell only part of the story. Volatile fuel costs distort effective rate performance. Weather and seismic events complicate root-cause analysis. Port slowdowns quietly extend cycle times. Without a consolidated, objective lens, you can’t separate carrier-driven variance from market-driven variance—and that means you can’t build trustworthy scorecards or align incentives that actually move the needle.
This post shows how to build end-to-end carrier performance scorecards and incentive programs backed by a single, developer-first API: FreightPulse. We will pull fuel prices, live US FTL rate quotes, port congestion signals, trucking and ocean carrier lookups, and natural-disruption alerts from one place. You’ll see how to calculate normalized cost performance (fuel-adjusted), resiliency factors (exposure to disruptions and congested ports), and compliance measures (safety and registration status). The result: auditable scorecards your executives will trust and your carriers will respect—because the inputs are objective and the math is transparent.
Whether you’re a 3PL benchmarking hundreds of carriers per quarter, an enterprise supply chain team designing KPI-linked incentives, or a supply chain SaaS platform embedding scorecards into your TMS, the approach below is pragmatic and production-ready. We’ll work through the core endpoints, show complete JSON examples, and discuss reliability patterns, governance, and observability so your scoring pipelines stay healthy even under peak tender volumes.
Why FreightPulse
Carrier performance programs collapse when the underlying data is scattered across EIA for fuel, FMCSA/FMC directories for verification, proprietary freight rate providers, AIS-powered port tools, and a blend of weather and disaster feeds. Stitching those together is slow and brittle. FreightPulse consolidates this into one REST surface so you can build faster and spend your time on analytics instead of integration glue.
- Single-source operational intelligence. Pull fuel, live US FTL quotes, port congestion, carrier verification, and natural-disruption alerts from the same base URL and unified response schema. Your pipeline logic is simpler, test coverage is smaller, and incident blast radius is reduced.
- Comparable rate and fuel context in one schema. A live lane quote next to national and regional diesel trends lets you normalize by fuel exposure and measure true carrier value-added. For scorecards, that’s crucial: judge performance on controllables, not macro inputs.
- Verified carrier identity and safety signals. FMCSA SAFER (trucking) and FMC NVOCC/OTI (ocean) checks give you an audit-ready foundation for onboarding, performance baselines, and incentive eligibility gates.
- Disruption-aware analytics at the shipment and port level. Natural hazard alerts filtered by port radius and a lagged, quantitative view of port congestion (7-day average vs 90-day baseline) let you distinguish market headwinds from execution gaps when grading carriers.
Developer ergonomics matter, too. FreightPulse uses consistent response shapes across endpoints, supports straightforward pagination-free access for most queries, and pairs well with resilient client patterns like retries, circuit breakers, and health checks. You can instrument calls with metrics and structured logs to build audit trails for every score revision, making incentive negotiations equitable and data-backed.
Quick Start
Base URL for all endpoints:
https://freightpulsehq.com/api/v1
To get oriented, let’s fetch national fuel prices to power fuel-adjusted carrier cost metrics. The example below includes a header that your client can send; adapt as needed in your environment.
curl -s -H "X-API-Key: YOUR_API_KEY" \
"https://freightpulsehq.com/api/v1/fuel-prices"
Example 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 and how they feed scorecards:
- diesel.national_average: Anchor for estimating fuel surcharge exposure when comparing quotes or paid rates across weeks.
- diesel.regions.*: Regionalization for more accurate normalization on lanes that operate within or across PADD regions.
- historical.*: Trend-aware adjustments (e.g., weighting recent variance) and forecasting heuristic baselines.
With this single call, you can compute a fuel-normalized rate KPI for each carrier lane: normalized_rate = paid_rate - (fuel_index_factor × diesel.national_average). That makes your incentives fairer by isolating operational execution from volatile energy markets.
Core Endpoints for Carrier Scorecards and Audits
Below are the endpoints we’ll use most for building objective scorecards. We will cover every FreightPulse capability and connect each to practical KPIs and incentive logic.
1) Fuel Prices — GET /fuel-prices
Purpose: Provide national and regional diesel/gasoline prices with weekly change and historical averages. This is the cornerstone for fuel-adjusted cost metrics and budget variance analysis.
Key parameters: None required.
curl -s -H "X-API-Key: YOUR_API_KEY" \
"https://freightpulsehq.com/api/v1/fuel-prices"
Example response (abbreviated above; full structure repeated for clarity):
{
"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
}
}
}
}
}
How to use it:
- Normalize paid rates: paid - fuel_component determines true operational competitiveness per carrier.
- Regional fairness: If a lane sits largely in the Gulf Coast region, tie the fuel component to regions.gulf_coast rather than national_average.
- Trend flags: Detect when a carrier’s net rate climbs faster than fuel indices, triggering a review or incentive clawback.
2) Freight Rates — GET /freight-rates
Purpose: Fetch live FTL quotes for US trucking lanes (and limited ocean/air into US ZIPs). This is vital for benchmarking carrier bids or evaluating whether current routing guides remain market-competitive.
Key parameters (trucking mode):
- mode: trucking (default)
- origin_zip, destination_zip: Required for trucking
- pickup_date, qty, total_weight_lb: Optional, helpful for scenario testing
curl -s -H "X-API-Key: YOUR_API_KEY" \
"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"
}
}
How to use it:
- Market competitiveness KPI: Compare contracted carrier spend vs price_usd to quantify value-add or overpayment per lane and per carrier, adjusted by diesel index.
- Transit-time realism: transit_days sets baseline expectations and fuels on-time-performance targets.
- Scenario testing: If carriers request short-notice pickups, recheck market price benchmarks day-over-day and adjust incentives accordingly.
Note: If required parameters are missing, the API returns success with available=false (HTTP 200) rather than an error. Handle “available” checks in your benchmarking code.
3) Port Congestion — GET /port-congestion
Purpose: Provide a lagged, quantitative view of port activity: the 7-day average portcalls vs a 90-day baseline. Use this to avoid penalizing carriers for macro port slowdowns and to contextualize dwell.
Key parameters:
- port: Name or LOCODE (e.g., USLAX)
- country, region: Optional filters
- congestion: Optional filter (low|moderate|high)
curl -s -H "X-API-Key: YOUR_API_KEY" \
"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
}
}
]
}
}
Important context:
- Lagged approximation: Data uses a ~6–7 day lag and compares a 7-day average to a 90-day baseline. It is not live AIS tracking, and it does not represent real-time vessel wait times.
- Scoring implication: If a lane touches USLAX while ratio_vs_baseline is significantly below 1.0, adjust late-delivery penalties to avoid misattributing port-driven delays to carrier execution.
4) Carriers — GET /carriers
Purpose: Verify trucking (FMCSA SAFER) and ocean (FMC NVOCC/OTI) carrier details for onboarding and compliance KPIs. Use these signals as eligibility gates and for safety-weighted incentive multipliers.
Key parameters:
- q: Required (DOT number, org number, or name)
- type: trucking (default) | ocean | air (air returns available:false)
curl -s -H "X-API-Key: YOUR_API_KEY" \
"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"
}
}
]
}
}
How to use it:
- Compliance filter: Only include status=active carriers in your routing guide and incentive programs.
- Safety-weighted incentives: Apply multipliers based on safety_rating tiers; maintain an auditable lookup log for each score.
- Capacity signal: drivers can proxy scale. Distribute tenders across large and small carriers for resilience.
5) Disruptions — GET /disruptions
Purpose: Natural hazard monitoring from consolidated sources (GDACS, USGS, NOAA/NWS). Filter by port radius to preemptively excuse or de-risk lanes likely to be affected by cyclones, earthquakes, severe weather, and more.
Key parameters:
- type: cyclone|earthquake|flood|volcano|drought|wildfire|severe_weather
- severity: low|moderate|high
- country: Filter by country
- port: Filter by port and distance window (300km; 100km for US weather)
curl -s -H "X-API-Key: YOUR_API_KEY" \
"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"
}
]
}
}
How to use it:
- Excusable delays: If a shipment’s planned port falls within an active severe_weather or cyclone area, apply an excused-delay flag in the scorecard.
- Proactive routing: Trigger re-tendering or mode switches when hazards escalate, and pause penalties for impacted legs.
- Root-cause transparency: Record disruption IDs alongside shipment events to ensure consistent post-mortems.
6) Historical Series — GET /historical
Purpose: Pull weekly national fuel series or daily port-congestion series for curated ports. This powers trend charts on your carrier scorecard dashboards and supports seasonality adjustments.
Key parameters:
- metric: fuel_price_diesel_national | fuel_price_gasoline_national | port_congestion:<portid>
- period: 30d (default) | 90d | 1y
curl -s -H "X-API-Key: YOUR_API_KEY" \
"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 }
]
}
}
How to use it:
- Seasonal normalization: Compare carrier performance against same-period last year or multi-week averages, not just a single week snapshot.
- Port trend gating: If a port’s ratio_vs_baseline is depressed for weeks, cap delay penalties for ocean legs that transit that port.
End-to-End Architecture for Scorecards: Patterns, Reliability, and Governance
Your carrier scorecard pipeline should be as reliable and auditable as your TMS. Below are practical patterns that play nicely with FreightPulse endpoints and keep operators and developers confident during peak season.
- Client-side retries with backoff: Implement exponential backoff with jitter for transient network errors. Distinguish between transport errors and logical API responses (success=false). Avoid retry storms by bounding attempts and using circuit breakers.
- Health checks and warm caches: Periodically validate core endpoints (/fuel-prices, /port-congestion) and refresh cached baselines for fast scoring. This decouples your dashboard latency from the network.
- Idempotent enrichment: When scoring shipments, enrich with Fuel, Rates, Carrier, Disruption, and Port data in a stable order. Cache by key (e.g., lane+week for rates benchmarks) to prevent redundant calls.
- Observability and audit logs: Emit structured logs with correlation IDs per shipment and per API call. Store the full FreightPulse response payloads for any score-affecting query so you can reproduce a past score for audit or dispute resolution.
- Governance and roles: In multi-tenant or multi-app environments, isolate credentials per app and per environment, apply role-based access to who can change scoring formulas, and record change history to an audit log. Keep data locality in mind if you operate across regions; store only what you need to meet compliance.
- Provider-agnostic resilience: If you maintain fallback chains for rate data or weather, ensure FreightPulse is your primary and pre-wire your code to degrade gracefully if a secondary source is used. Always annotate which data source fed a given score.
- Performance and routing: Co-locate your app compute near your user base and your analytics store; batch enrichments when possible; prefer incremental updates to full recomputations; and use streaming UI updates fed by your internal cache for operator consoles.
Hands-On: Building KPIs that Drive Carrier Incentives
Let’s translate the endpoints into actionable KPIs. We’ll define a few canonical measures and show how to calculate them using FreightPulse.
- Fuel-Normalized Lane Cost (FNLC): For each shipment s on lane L in week W, FNLC = paid_rate_s - (fuel_factor_L × diesel_index_W). Fetch diesel_index_W from /fuel-prices or /historical, then compute weekly rollups per carrier.
- Market Competitiveness Index (MCI): MCI = (contracted_rate_L / live_market_rate_L) × 100. Pull live_market_rate_L via /freight-rates and apply a congestion/disruption adjustment factor when lanes touch heavily impacted ports or hazards appear.
- Resiliency Adjustment (RA): RA increases permissible transit variance when /port-congestion shows ratio_vs_baseline < 1 or /disruptions lists nearby high-severity events. Define tiered multipliers to avoid over-penalizing legitimate exceptions.
- Compliance & Safety Gate (CSG): Binary eligibility derived from /carriers fields: status must be active; safety_rating within acceptable bands. Apply a penalty or disqualify from incentive payout if out of compliance in the evaluated period.
Together, these KPIs produce a composite score: Score = Weight(FNLC) + Weight(MCI) + Weight(OTP) + Weight(Claims) + RA - Noncompliance Penalties. What’s different here is the objective context: fuel, market rates, port trends, and disruptions are all coming from one API, time-stamped, and stored for audit.
Code Examples: Fetch, Normalize, and Score
Below are minimal client snippets you can adapt for services and batch jobs that compute carrier KPIs.
JavaScript (Node.js) — Fetch fuel and rates, then compute FNLC and MCI
import fetch from "node-fetch";
async function getFuel() {
const res = await fetch("https://freightpulsehq.com/api/v1/fuel-prices", {
headers: { "X-API-Key": process.env.FP_KEY }
});
const body = await res.json();
if (!body.success) throw new Error(body.error || "fuel error");
return body.data.data.diesel.national_average;
}
async function getRate(origin, dest) {
const url = `https://freightpulsehq.com/api/v1/freight-rates?mode=trucking&origin_zip=${origin}&destination_zip=${dest}`;
const res = await fetch(url, { headers: { "X-API-Key": process.env.FP_KEY } });
const body = await res.json();
if (!body.success) throw new Error(body.error || "rate error");
return body.data.price_usd;
}
async function computeKpis({ origin, dest, paidRate, fuelFactor }) {
const [diesel, liveRate] = await Promise.all([getFuel(), getRate(origin, dest)]);
const f n l c = paidRate - (fuelFactor * diesel); // Fuel-Normalized Lane Cost
const mci = (paidRate / liveRate) * 100; // Market Competitiveness Index (%)
return { diesel, liveRate, FNLC: f n l c, MCI: mci };
}
computeKpis({ origin: "10001", dest: "90210", paidRate: 7600, fuelFactor: 100 })
.then(console.log)
.catch(console.error);
Notes:
- Guard success flags; log body.error on failures.
- Cache diesel for at least a day in your service to reduce repeated calls during recomputations.
- Parameterize fuelFactor by lane logic (e.g., per-mile fuel table or contract formula).
Python — Apply congestion and disruption adjustments
import os
import requests
BASE = "https://freightpulsehq.com/api/v1"
HDRS = {"X-API-Key": os.getenv("FP_KEY")}
def get_port_congestion(locode):
r = requests.get(f"{BASE}/port-congestion", params={"port": locode}, headers=HDRS, timeout=20)
j = r.json()
if not j.get("success"): raise RuntimeError(j.get("error", "port error"))
results = j["data"]["results"]
return results[0] if results else None
def get_disruptions(port, severity="high"):
r = requests.get(f"{BASE}/disruptions", params={"port": port, "severity": severity}, headers=HDRS, timeout=20)
j = r.json()
if not j.get("success"): raise RuntimeError(j.get("error", "disruption error"))
return j["data"]["results"]
def resiliency_adjustment(locode):
adj = 0.0
pc = get_port_congestion(locode)
if pc:
ratio = pc["metrics"]["ratio_vs_baseline"]
if ratio < 0.9: adj += 0.05
if ratio < 0.8: adj += 0.05
haz = get_disruptions(locode, "high")
if haz:
adj += 0.05
return min(adj, 0.15)
if __name__ == "__main__":
ra = resiliency_adjustment("USLAX")
print({"resiliency_adjustment": ra})
Notes:
- resiliency_adjustment returns a percentage you can add to transit tolerance or subtract from penalty calculations.
- Store inputs (locode, timestamps, raw responses) in your audit log so the same shipment scored next month still yields the same result.
Error Handling and Troubleshooting
FreightPulse returns structured JSON with success and data keys for normal responses and includes an error message when success=false. Some endpoints return HTTP 200 with “available”: false (e.g., missing params on /freight-rates). Implement robust guards around both transport-level and application-level errors.
- 401: Invalid or missing header in your request. Verify headers are populated by your client and environment.
- 403: Subscription inactive in your environment. Surface this in telemetry so operators see a clear root cause.
- 422: Missing required parameter (e.g., q on /carriers). Validate inputs before making calls.
- 429: Quota or per-minute threshold exceeded by your environment. Implement circuit breakers and backoff; buffer non-urgent updates for later.
Error example:
{
"success": false,
"error": "Missing required parameter: q"
}
Best practices:
- Validate query parameters before dispatch and centralize your error mapping.
- Differentiate retryable vs non-retryable states; 4xx with missing params is non-retryable until corrected.
- Surface SLOs on median and p95 latency per endpoint in your observability stack; alert on anomalies that could impact scoring windows.
Real-World Use Cases
1) Fuel-Surcharge Aware Carrier Scorecards
A shipper’s transportation analytics team builds a weekly scorecard that deducts fuel volatility from the equation. They pull /fuel-prices to compute a lane-specific fuel component, compare paid rates against live /freight-rates for benchmark context, then roll up FNLC and MCI into a composite cost performance score. Disputes about “the market moved” are settled by referencing time-stamped fuel and live quote data from the same source.
2) Port-Conscious On-Time Performance Dashboard for a Freight Forwarder
A forwarder’s ocean control tower overlays /port-congestion readings on their ETA risk board. When Los Angeles-Long Beach drops to 0.85 ratio_vs_baseline, the dashboard automatically widens ETA tolerance bands and tags impacted shipments. Late-delivery penalties for carriers are paused or reduced during the affected window using the measured ratio and /historical trends to ensure fairness.
3) Carrier Vetting and Incentive Eligibility for a 3PL
A 3PL integrates /carriers to programmatically verify FMCSA active status and safety ratings for every carrier in its routing guide. Only carriers with status=active and acceptable safety_rating are eligible for quarterly incentive pools. During severe weather alerts detected via /disruptions around key ports, the 3PL exempts certain penalties but maintains the vetted roster, keeping quality and safety front-and-center.
4) Disruption-Aware Shipment Tracker with Automated Exceptions
A supply chain SaaS platform ingests /disruptions and associates alerts to planned port calls. The platform uses alert severity to tag shipments with “exception_exempt” flags so that its customer-facing scorecards don’t penalize carriers for events outside their control, while still recording exactly why a shipment missed its original ETA.
5) KPI-Linked Carrier Incentive Program for an Enterprise Shipper
An enterprise shipper establishes quarterly bonuses tied to normalized cost, OTP, and claims—then offsets penalties when /port-congestion or /disruptions show objective headwinds. They include /historical series in the executive dashboard to justify seasonal adjustments. Because every external input is fetched from FreightPulse and logged, carrier negotiations stay fact-based.
Deep Dive: Field-by-Field Interpretation and Practical Use
The value of a scorecard rests on field semantics. Below is a targeted breakdown of critical fields and how to operationalize them.
-
/fuel-prices
- diesel.national_average: Use as the default cost driver; sensitive to weekly updates. Store timestamp to justify which price index governed a score period.
- diesel.regions: For intra-region moves, consider region-specific factors; for cross-region moves, blend by distance or time in region.
- diesel.historical.30d_avg and 90d_avg: Stabilize week-to-week noise when setting incentive thresholds.
-
/freight-rates
- price_usd: The anchor for market competitiveness; compare to contracted or paid rates to quantify value-add.
- transit_days: Use as a target guardrail; align OTP calculations to realistic market transit, not just contracted SLAs.
-
/port-congestion
- ratio_vs_baseline: Your core scaling factor for tolerance windows. Tie penalty reduction tiers to this ratio.
- as_of: Always record in your audit log; this is lagged data by design. Do not present as real-time.
-
/carriers
- status: active is table-stakes for eligibility. Non-active requires immediate routing guide updates.
- safety_rating: Apply multipliers or caps; document the rationale in your incentive policy.
- drivers: Capacity proxy—use to balance award freight across tiers.
-
/disruptions
- type, severity: Drive exception logic; codify which severities trigger penalty relief.
- id and starts_at: Forensically link shipments to events; preserve chain-of-custody for disputes.
-
/historical
- series[]: Build trend lines for both diesel and ports; power BI dashboards and decision memos with context.
Comprehensive JSON Examples for Auditable Pipelines
Below are several complete responses you can copy into your fixtures for unit tests and ETL validations.
Fuel, Rates, and Congestion Fixture
{
"fuel": {
"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
}
}
}
}
},
"rate": {
"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"
}
},
"congestion": {
"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
}
}
]
}
}
}
Carrier Verification Fixture
{
"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"
}
}
]
}
}
Disruption Fixture
{
"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"
}
]
}
}
Historical Series Fixture
{
"success": true,
"data": {
"metric": "port_congestion:USLAX",
"period": "90d",
"series": [
{ "date": "2026-06-01", "value": 0.96 },
{ "date": "2026-06-15", "value": 0.93 },
{ "date": "2026-07-01", "value": 0.91 },
{ "date": "2026-07-15", "value": 0.88 },
{ "date": "2026-08-01", "value": 0.86 }
]
}
}
Production Tips: Data Modeling, Caching, and Versioning
To keep your scorecards fast and reproducible, treat external facts as slowly changing dimensions with explicit versioning:
- DimFuelIndex: { week_start, diesel_national, diesel_regions..., source_ts, fp_payload_hash }
- DimLaneBenchmark: { lane_id, day, mode, price_usd, transit_days, fp_payload_hash }
- DimPortCongestion: { port, as_of, ratio, recent_avg, baseline_avg, fp_payload_hash }
- DimCarrier: { id, type, status, safety_rating, drivers, last_verified_ts, fp_payload_hash }
- FactDisruption: { disruption_id, type, severity, port, starts_at, source, fp_payload_hash }
Store fp_payload_hash (a checksum of the raw JSON) to ensure you can verify integrity if results are challenged months later. Keep a pointer from every shipment score to the exact dimensions used so you can reconstruct historical scores and defend incentive calculations.
Caching guidance:
- /fuel-prices: Daily cache refresh aligned to source timestamp; provide a manual override if fuel volatility spikes.
- /freight-rates: Cache by lane and pickup_date; shorter TTL (hours) to remain current while serving dashboards quickly.
- /port-congestion and /historical: Since data is lagged, once-per-day refresh is typically sufficient.
- /carriers: Cache verification results and set scheduled refresh (weekly or monthly); tighten cadence for critical suppliers.
- /disruptions: Poll more frequently during peak storm seasons; alert downstream systems via pub/sub on changes.
Security, Governance, and Auditing Controls
Carrier incentives affect real money. Put governance guardrails around both data and formulas:
- Per-application credentials and roles in your environment segregate responsibilities across ingestion, scoring, and reporting services.
- Immutable scoring snapshots (shipment_id, period, inputs, outputs) prevent retroactive edits without a change record.
- Change management for formulas: Store formula versions and annotate each score with the version used; require approvals for edits.
- Data locality and retention: Keep only the fields you need; set retention policies aligned to your corporate standards and customer contracts.
Additional cURL Recipes
Live trucking quote with shipment attributes
curl -s -H "X-API-Key: YOUR_API_KEY" \
"https://freightpulsehq.com/api/v1/freight-rates?mode=trucking&origin_zip=60601&destination_zip=77001&pickup_date=2026-08-24&qty=24&total_weight_lb=36000"
Ocean carrier lookup
curl -s -H "X-API-Key: YOUR_API_KEY" \
"https://freightpulsehq.com/api/v1/carriers?q=MAERSK&type=ocean"
Remember: For air queries, the endpoint returns available:false. Use that to gracefully disable UI elements for unsupported modes.
FAQ
How often do FreightPulse fuel prices update?
Fuel prices reflect EIA updates and include weekly changes and historical averages. For most scorecards, a daily refresh is sufficient; store the timestamp and apply it consistently across all shipments in the evaluated period.
Can I look up ocean carriers as well as trucking carriers?
Yes. Use GET /carriers with type=ocean to query FMC NVOCC/OTI records by organization number or name. The same endpoint with type=trucking returns FMCSA SAFER details for US trucking carriers.
Does the port congestion data reflect real-time vessel wait times?
No. Port congestion is a lagged approximation: a 7-day average compared to a 90-day baseline, with about a 6–7 day lag. It’s ideal for fairness adjustments in scorecards but is not a live AIS tracker.
What hazards are covered by the disruptions feed?
Cyclones, earthquakes, floods, volcanoes, droughts, wildfires, and severe weather are consolidated from GDACS, USGS, and NOAA/NWS. Filter by type, severity, country, or by proximity to a port to drive exception logic.
How should I handle missing parameters or unavailable results?
Validate inputs on the client before requesting. Some endpoints may return success with available:false when parameters are incomplete; handle that case distinctly from errors with success=false and an error message. Log both for observability and user feedback.
Conclusion and Call to Action
Carrier scorecards become contentious when they’re built on subjective inputs and stitched-together feeds. With FreightPulse, you can consolidate verified carrier identity and safety data, live US FTL rate benchmarks, objective fuel indices, disruption alerts, and quantitative port congestion into one pipeline. That lets you measure what matters, excuse what’s outside anyone’s control, and pay for sustained performance, not luck or market noise.
If you’re a developer, you’ll appreciate the unified JSON shape, straightforward endpoints, and how quickly you can stand up a production-grade enrichment service with proper retries, caching, and audits. If you’re an operator or analyst, you’ll value the consistency and defensibility when bringing carriers to the table with data that everyone can agree on.
Build your next scorecard and incentive program on a solid, objective foundation. Explore the endpoints, wire them into your scoring engine, and start shipping fair, auditable KPIs this quarter. Visit FreightPulse and Try FreightPulse for free to get started.