Supply Chain Disruption Monitoring: What You Can Build Today
The Ever Given blocked the Suez Canal for six days in 2021 and cost global trade an estimated $9.6 billion per day. The Red Sea crisis rerouted most container traffic around the Cape of Good Hope. COVID-19 shut down ports across Asia for weeks.
Supply chain disruptions are constants. Early detection still matters — reroute before capacity fills, lock rates before panic pricing, tell customers before they see the headline. This article is about what FreightPulse actually exposes today, including what it still doesn't.
What /v1/disruptions actually returns
The endpoint merges three free sources: GDACS (global natural disasters), USGS (significant earthquakes), and NOAA/NWS (US severe weather). Each source degrades independently — check meta.source_status before trusting an empty result.
curl "https://freightpulsehq.com/api/v1/disruptions?port=USLAX&severity=high" \ -H "X-API-Key: your_api_key" \ -H "Accept: application/json"
{
"success": true,
"data": {
"results": [
{
"id": "gdacs:TC:1001305",
"type": "cyclone",
"severity": "moderate",
"title": "Tropical Cyclone SAUDEL-26",
"country": "Japan",
"location": { "lat": 17.1, "lon": 147.3 },
"starts_at": "2026-08-18T12:00:00+00:00",
"source": "GDACS"
}
],
"meta": {
"sources": ["GDACS", "USGS", "NOAA/NWS"],
"coverage": "Natural hazards only. Does not cover geopolitical events, strikes, port closures, or canal disruptions.",
"source_status": { "gdacs": "ok", "usgs": "ok", "nws": "ok" }
}
}
}
Pass port to filter events within a radius of a port (300km, 100km for US severe weather), type to filter by hazard (cyclone, earthquake, flood, volcano, drought, wildfire, severe_weather), or severity. There's still no /disruptions/history and no webhooks — poll and cache, the same pattern that already works for fuel, ports, and FTL.
The cost of late detection
Most logistics teams still learn about disruptions from the news. By then rates have moved and alternative capacity is gone. Early signals — even imperfect ones — help you:
- Reroute before alternative capacity fills up
- Lock rates before panic pricing
- Notify customers before they find out elsewhere
- Adjust inventory by accelerating or delaying orders
Combine disruptions with the other live endpoints
/v1/disruptions covers natural hazards. For everything it doesn't — capacity, cost, and congestion signals — compose three more live calls:
- Port activity — IMF PortWatch ratio vs baseline (
/port-congestion?port=USLAX). Lag ~6–7 days; not wait time. - EIA fuel — weekly US diesel/gasoline (
/fuel-prices). - US FTL — Warp quotes (
/freight-rates?mode=trucking&origin_zip=10001&destination_zip=90210).
Example: watch a gateway
Poll /port-congestion?port=USLAX once a day. If congestion is high or ratio_vs_baseline ≥ 1.2, page the ops channel. That is a volume-vs-normal flag, not a confirmed closure.
Example: watch inland cost
Store yesterday’s FTL price_usd for a handful of ZIP pairs. A sudden jump is a capacity/fuel signal you can show next to the PortWatch label — still not a weather alert.
Don't assume broader coverage than the source list
type is limited to cyclone | earthquake | flood | volcano | drought | wildfire | severe_weather — the categories GDACS, USGS, and NOAA/NWS actually publish. There's no labor or geopolitical type because no free structured source exists for those; treat carrier advisories and the news as the source for that category, same as before.
What's still not covered
Geopolitical events, strikes, port closures, and canal disruptions have no free structured source, so /v1/disruptions doesn't carry them — check meta.coverage on every response for the current boundary. Webhooks aren't on the roadmap in v1; polling plus your own cache is the pattern that already works for fuel, ports, and FTL.
Getting started
Use the API docs for live endpoints. Free tier: 100 calls/month. Register at /register — there is no /signup route.
Use the Live Endpoints
Natural-hazard disruptions, port activity, EIA fuel, US FTL, and carrier lookup. 100 free calls/month.
Start Free →