Five questions a compliance, underwriting or authority team asks about an area, each answered with one call.Every window is historical on purpose. Reuse the shape, not the dates. All five use the same zone UUID; swap in your own from Zone Insights.
Question: how did traffic through the North Sea NOx ECA move week by week?
group_by=NONE with a period aggregation is the line chart shape: one point per week, each holding a single combined count.
{"zone_information":{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","name":"North Sea (NOx)","zone_type":"Emission Control Areas (ECA)","zone_sub_type":"NOX","country_common_name":null},"totals":{"entries":3812,"exits":3795,"vessels_per_day":54,"max_vessels_per_day":102},"data":[{"period_key":"2026-01-11","items":[{"entries":271,"exits":269,"group_by_key":"none"}]},{"period_key":"2026-01-18","items":[{"entries":364,"exits":359,"group_by_key":"none"}]}]}
Entries and exits rarely match over a fixed window, and that is correct rather than a rounding problem: vessels inside the zone when the window opened will exit without a matching entry, and the reverse at the other end.
A type with nothing in a quarter is left out of that quarter rather than returned as zero. Build your series from the union of group_by_key values across the whole response.Underwriting work usually wants this call with period_aggregation=MONTHLY and a rolling twelve month window, so exposure is readable against the month a policy was written.
Question: across the year, what share of crossings did each vessel type account for?
period_aggregation=NONE collapses the range to a single data point with one item per type.Zones count all 16 vessel type categories, so this distribution includes passenger vessels, tugs, fishing and offshore support. Port Analytics covers 11 commercial types only, so the same question asked of a port returns a narrower picture.
Question: how much of the traffic through this zone was Russian flagged, month by month?
Filtering with flag_codes and grouping by NONE returns a single clean series for that flag, and totals describes it alone rather than the whole zone. Run the same call without the filter to get the denominator.Repeat the parameter for several flags rather than passing a comma-separated list. Codes are ISO 3166-1 alpha-3.
Question: how many VLCC movements crossed this zone, and which were the busiest vessels?
Filters combine as an AND, so this is oil tankers that are also VLCC class. Names are case sensitive: Oil Tanker works, oil tanker does not.top_visitors is where a distribution turns into a list of hulls to look at:
It returns ten entries by default and up to 50, busiest first. Pass top_visitors_sort=ASC for the other end of the list, which is how you find the vessels that crossed once.
Go from the count to the crossing
These are counts. When one stands out, Call GET /zone-port-insights/v1/zone-and-port-traffic/{id_type}/{id} for the same zone, then find the ZONE_ENTRY and ZONE_EXIT events for that IMO in the returned list, with timestamps and positions. The analytics endpoint tells you where to look; the traffic endpoint tells you what happened.