Transportation

Port-call throughput deviation with a weather risk overlay - IMF PortWatch

Changed on

For a set of the world's ports, how far the latest port-call count sits from each port's own recent baseline (a throughput DEVIATION, not a congestion, dwell or wait measurement - IMF PortWatch publishes none of those), reported ALONGSIDE a Weather-Disruption-Risk overlay and never blended into it. Pick the busiest ports (default), one country, or specific port ids. Directionally ambiguous and several days stale by construction; not for navigation or operational routing.

get/api/v2/transport/ports/congestion

Request

Query parameters

countrystring nullable

ISO3 country code, e.g. CHN, USA, NLD.

Example:CHN
portsstring nullable

Comma-separated PortWatch port ids, e.g. port1201,port1114.

topinteger

Number of ports to return (busiest first when no country/ports filter).

min_abs_znumber nullable

Keep only ports whose absolute throughput z-score reaches this.

sort'anomaly' | 'activity'

anomaly = by absolute throughput deviation; activity = by call count.

Response

Successful Response

Example response

{
  "data": {
    "query": {
      "country": "CHN",
      "ports": "port1201,port1114",
      "top": 25,
      "min_abs_z": 2,
      "sort": "anomaly"
    },
    "port_set": {
      "requested": "top",
      "scorable_universe": 406,
      "resolved": 25
    },
    "total_matched": 25,
    "count": 25,
    "ports": [
      {
        "port_id": "port1201",
        "name": "Singapore",
        "country": "Singapore",
        "iso3": "SGP",
        "lat": 1.272,
        "lon": 103.707,
        "throughput": {
          "activity": 137,
          "baseline_mean": 123.47,
          "baseline_stddev": 14.52,
          "baseline_days": 30,
          "baseline_rows": 30,
          "baseline_window_days": 30,
          "z_score": 0.93,
          "pct_deviation": 11,
          "direction": "above",
          "band": "normal",
          "available": true,
          "reason_code": "baseline_too_thin"
        },
        "risk_overlay": {
          "index": 42.5,
          "band": "elevated",
          "dominant_driver": "wave",
          "components_count": 5,
          "sub_scores": {
            "wave": 47,
            "wind": 35
          },
          "unavailable_factors": [
            "wave",
            "precipitation"
          ],
          "available": true
        }
      }
    ],
    "data_quality": {
      "as_of": "2026-07-17",
      "published_at": "2026-08-28T00:23:09Z",
      "staleness_days": 7
    }
  },
  "meta": {
    "endpoint": "/api/v1/fred/us/cpi",
    "data_time": "2026-04-16T14:30:00Z",
    "response_time": "2026-04-16T14:30:12Z",
    "provider": "Sugra API v1.0.1",
    "data_age_days": 8.532,
    "source": "sugra_crypto",
    "attribution": "Short interest and Reg SHO daily short volume data is owned by and sourced from FINRA (Financial Industry Regulatory Authority).",
    "source_url": "https://fred.stlouisfed.org/series/UNRATE",
    "citation": "Federal Reserve Bank of St. Louis (FRED) - Unemployment Rate (UNRATE) - https://fred.stlouisfed.org/series/UNRATE - retrieved 2026-11-02",
    "fallback_chain": [
      "sugra_crypto",
      "sugra_finance"
    ],
    "stale_since": "2026-09-08T12:00:00Z",
    "period": "2026-Q1",
    "notes": "the UKMTO report behind these counts is dated 2026-08-21 and is 11 days old"
  }
}

Changes

    • info

      added the optional property / to the response with the status

    • info

      added the optional property / to the response with the status

    • breaking

      added subschema #1 to the response body oneOf list for the response status

    • breaking

      the response's body type changed from object to no type for status

    • breaking

      removed the required property from the response with the status

    • breaking

      removed the required property from the response with the status

    • warning

      removed the optional property from the response with the status

    • warning

      removed the optional property from the response with the status

    • warning

      removed the optional property from the response with the status

    • warning

      removed the optional property from the response with the status

    • warning

      removed the optional property from the response with the status

    • warning

      removed the optional property from the response with the status

    • warning

      removed the optional property from the response with the status

    • warning

      removed the optional property from the response with the status

    • warning

      removed the optional property from the response with the status

    This list may be incomplete.