Freight forwarders (3PL)
Stabilize routing and capacity with port-level truth. Comparable metrics across regions let ops teams set lane buffers, trigger exceptions, and evaluate alternative POL/POD before booking.

Pain
- Volatile delays across trunk & feeder legs; weekend bunching.
- DIY “wait time” definitions differ by port and vendor.
- Stale snapshots and opaque freshness break customer updates.
- Hard to compare gateways for alternative routings.
How we help
- Comparable avg_wait_hours, dwell, and normalized congestion_score.
- Freshness SLO (p95 ≤ 2h) with
as_of/last_updatedfor audit. - Lane-level rules, alerts, and buffer recommendations you can automate.
- CSV/JSON parity with strong ETag/304 to keep pulls fast and cheap.
Result KPIs
- Lower average delay vs. plan on key SKUs.
- Fewer exceptions & rehandles in cut-off weeks.
- Reduced demurrage & detention (D&D) exposure.
- Higher OTIF and customer trust in status updates.
Ops story — from screens to contract
A regional control tower relied on screenshots and vendor dashboards to flag port issues, but the definitions behind “waiting time” varied. Weekend bunching in South China caused last-minute truck reschedules and rolled cargo. PortPulse exposed consistent avg_wait_hours and a normalized congestion_score across LA/LB, Singapore, and feeder hubs. Within a week, the team moved to lane rules and Slack/webhook alerts. Rolled cargo dropped, and buffer days could be justified with data.
curl -H "X-API-Key: DEMO_KEY" \ "https://api.useportpulse.com/v1/ports/CNSZX/trend?days=30&fields=date,avg_wait_hours,congestion_score"
Use the same fields for every port. Add a single cross-port threshold (e.g., congestion_score ≥ 0.65) to standardize alerts and buffers.

3PL playbook — monitor → decide → act
Monitor
- Track avg_wait_hours and congestion_score for origin POL and downstream hubs.
- Watch weekend bunching patterns on feeder transshipment hubs.
- Keep an eye on p95 dwell for risky terminals (rollover hotspots).
Decide
- Raise lane buffer when score ≥ 0.65 for 5 consecutive days.
- Prefer alternative gateway with lower p95 dwell in the last 14 days.
- Escalate when feeder rollover ratio exceeds policy threshold.
Act
- Push Slack/webhook exception with last 5 points and action hint.
- Auto-populate customer status with consistent definitions & freshness.
- Trigger booking rules to switch gateway or adjust cut-off.
Rule template — raise lane buffer
Use a single, cross-port policy for apples-to-apples automation.
{
"lane": "APAC -> USWC",
"ports": ["CNSZX","CNSHA","USLAX","USLGB"],
"signal": "congestion_score",
"threshold": 0.65,
"consecutive_days": 5,
"action": { "type": "raise_buffer_days", "value": 1 }
}Rule template — choose alternative gateway
Compare percentiles on recent dwell and pick the safer gateway.
{
"candidate_ports": ["NLRTM","BEANR","FRLEH"],
"metric": "dwell_p95_hours",
"lookback": "14d",
"select": "min",
"action": { "type": "recommend_gateway" }
}Quick demo — fetch & rank gateways
Pull last 30 days and compute a simple risk score that blends absolute hours and normalized congestion.
curl -s -H "X-API-Key: DEMO_KEY" \ "https://api.useportpulse.com/v1/ports/NLRTM/trend?days=30&fields=date,avg_wait_hours,congestion_score" | jq '.' // Combine with BEANR/FRLEH, compute: // risk = 0.6 * p95(avg_wait_hours) + 0.4 * max(congestion_score) // Pick the min-risk gateway for the week.
API endpoints (v1)
- GET /v1/health
- GET /v1/meta/sources
- GET /v1/ports/{code}/overview
- GET /v1/ports/{code}/trend
- GET /v1/ports/{code}/snapshot
- GET /v1/ports/{code}/dwell
- GET /v1/ports/{code}/alerts
- GET /v1/hs/{code}/imports (beta)
Contract-first: v1 is frozen; breaking changes go to v1beta with a ≥90-day deprecation window.
Comparable by design
avg_wait_hours, queue_length, berth_efficiency, and normalized congestion_score — definitions you can inspect and trust.
Transparent SLO
Freshness p95 ≤ 2h; edge p95 < 300ms with ≥60% cache-hit target; timestamps & ETags for audit.
Ops-ready
Lane rules, alerts, and buffers map directly to 3PL workflows and customer updates.
Start in days, not months
Start a 14-day evaluation (up to 5 ports) or talk to us about bundles for network-wide coverage.
FAQ
How do we set the same rule across different ports?
Use the normalized congestion_score with a common threshold (e.g., 0.65) and consecutive-day logic. Combine with absolute hours for guardrails.
Can we automate customer updates?
Yes. Use our snapshot/trend endpoints to drive a templated status message with consistent definitions and as_of freshness.
Does CSV match JSON exactly?
Yes — CSV is a first-class contract. It supports strong ETag/304 for cache-friendly pulls in schedulers.
What about transshipment volatility?
Track feeder rollover and yard dwell p95 at key hubs. Use rule templates to raise buffer or route via a safer gateway when variance spikes.