---
title: "Area activity over time"
method: GET
path: "/api/v2/maritime/activity"
tags: ["Maritime"]
---

# Area activity over time

`GET /api/v2/maritime/activity`

Aggregate vessel activity over an area, bucketed by hour or day — distinct vessels, total + moving positions, and average/max speed per bucket. Generalizes /transits to arbitrary geography (chokepoint, bounding box, or proximity). The "is this area's traffic anomalous vs the baseline" view. Requires a plan with Maritime intelligence access (`can_use_maritime`) — the Corporate & Supply Chain plan and above.

Historical / baseline surface: reads raw AIS positions directly (not the derived rollups). Forward-accruing: positions begin at launch (June 2026) — no historical backfill. Terrestrial AIS only (no satellite). Date windows are capped at 30 days; defaults to the trailing 14 days. Bucket auto-selects hour for spans ≤2 days, otherwise day.

## Query parameters

- `chokepoint` 'hormuz' | 'bab_el_mandeb' | 'malacca' | 'suez' | 'panama' | 'bosphorus' | 'gibraltar' | 'dover' | 'kerch' | 'taiwan' | 'danish_straits'
- `bbox` string
- `near` string
- `near_gem_id` string
- `radius_km` number
- `bucket` 'hour' | 'day'
- `date_start` string
- `date_end` string
- `days` integer
- `limit` integer

## Response `200`

Bucketed activity, most recent first. Envelope: { success, bucket ('hour'|'day'), data, pagination, applied_filters }. Each data row: bucket (timestamp), vessels (distinct mmsi), positions (AIS message count), moving_positions (sog > 1), avg_sog, max_sog (knots).

- object
  - `success` boolean
  - `bucket` string
  - `data` object[]
    - `bucket` string
    - `vessels` integer
    - `positions` integer
    - `moving_positions` integer
    - `avg_sog` number
    - `max_sog` number
  - `pagination` object
    - `limit` integer
    - `cursor` unknown
    - `next_cursor` unknown
  - `applied_filters` object
    - `date_start` string
    - `date_end` string
    - `chokepoint` string
    - `bucket` string
    - `ignored` object

## Other responses

- `400` — Invalid parameter (e.g. INVALID_BBOX, INVALID_NEAR, INVALID_RADIUS)
- `401` — Missing/invalid API key
- `403` — Plan required (PLAN_REQUIRED) — the caller's plan does not carry the required source entitlement.
- `500` — Server error

---

[API](https://skmtc.net/gdeltcloud/apis/gdelt-cloud-api-v2.md) · [All operations](https://skmtc.net/gdeltcloud/apis/gdelt-cloud-api-v2/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/gdeltcloud/gdelt-cloud-api-v2/revisions/01aaa6255180/schema)
