Global Fishing Watch API
API v3

Events API

Explore vessel activity: apparent fishing, encounters between vessel types, loitering, port visits and AIS gaps.

Introduction Events API

Events API allows you to explore different activities of a vessel. You can analyze:

  • apparent fishing events
  • encounters between these vessel types: fishing-carrier, fishing-support, fishing-bunker, fishing-fishing, tanker-fishing, carrier-bunker and support-banker.
    • In this API Portal we are offering more encounter types compared to our Public Map
  • loitering for all vessel types
  • port visits for all vessel types
  • AIS off (aka GAPs) for all vessel types

Check more detail about data caveats here.

Event responses are paginated. See Pagination for how limit, offset, and nextOffset work.

REMINDER! Change the API Dataset to select the event type:

  • For fishing events, use public-global-fishing-events:latest
  • For encounters events, use public-global-encounters-events:latest
  • For loitering events, use public-global-loitering-events:latest
  • For port visits, use public-global-port-visits-events:latest
  • For AIS off event, use public-global-gaps-events:latest

Get All Events (GET endpoint)

We recommend use the GET endpoint if you are using the API from a Web APP because you can take advantage of the Browser cache to improve the load speed

Events GET

GET
/api/v3/events

Authorization

ApiKeyAuth
AuthorizationBearer <token>

In: header

Query Parameters

vesselTypes?array<string>

Vessel types. Possible values: BUNKER,CARGO,DISCREPANCY,CARRIER,FISHING,GEAR,OTHER,PASSENGER,SEISMIC_VESSEL,SUPPORT,NON_FISHING,RESEARCH,

vesselTypesOperator?string

Operators to apply for the filter: [INCLUDE, EXCLUDE]

flags?array<string>

Flags in format ISO3.

flagsOperator?string

Operators to apply for the filter: [INCLUDE, EXCLUDE]

vessels?array<string>

List of vessel ids separated by comma. You can get this information using the search endpoints

vesselGroups?array<string>

Ids of vessel-groups

types?array<string>

Event types. Possible values: ENCOUNTER,FISHING,LOITERING,GAP_START,GAP,PORT_VISIT

typesOperator?string

Operators to apply for the filter: [INCLUDE, EXCLUDE]

start-date?string

Start date in format YYYY-MM-DD of the start date of the event (inclusive)

end-date?string

End date in format YYYY-MM-DD of the end date of the event (exclusive)

confidences?array<string>

This param applies only to port visits events, check data caveats to understand the different levels. Values go from 2 to 4, where 2 is low confidence, 3 is medium and 4 is high confidence. Values are separated by comma. Possible values: 2, 3, 4

confidencesOperator?string

Operators to apply for the filter: [INCLUDE, EXCLUDE]

encounter-types?array<string>

Possible values: FISHING-BUNKER, BUNKER-FISHING, FISHING-TANKER, TANKER-FISHING, CARRIER-BUNKER, BUNKER-CARRIER, SUPPORT-BUNKER, BUNKER-SUPPORT, FISHING-NON_FISHING, FISHING-RESEARCH, FISHING-, NON_FISHING-FISHING, NON_FISHING-NON_FISHING, NON_FISHING-SUPPORT, NON_FISHING-CARRIER, NON_FISHING-RESEARCH, NON_FISHING-, SUPPORT-NON_FISHING, SUPPORT-RESEARCH, SUPPORT-, CARRIER-NON_FISHING, CARRIER-CARRIER, CARRIER-RESEARCH, CARRIER-, RESEARCH-FISHING, RESEARCH-NON_FISHING, RESEARCH-SUPPORT, RESEARCH-CARRIER, RESEARCH-RESEARCH, RESEARCH-, -FISHING, -NON_FISHING, -SUPPORT, -CARRIER, -RESEARCH, -, FISHING-FISHING, FISHING-SUPPORT, FISHING-CARRIER, SUPPORT-FISHING, SUPPORT-SUPPORT, SUPPORT-CARRIER, CARRIER-FISHING, CARRIER-SUPPORT

encounterTypesOperator?string

Operators to apply for the filter: [INCLUDE, EXCLUDE]

gap-intentional-disabling?boolean

Flag to specify if you want to get those gaps that were intentional or not true means that the gap was intentional, false means that the gap was not intentional. If the flag is not present, then the response contains all gaps.

includes?array<string>

Specify the properties that you want to obtain. If it's empty, the response will contains all data.

portIds?array<string>

Port ids to filter by

portIdsOperator?string

Operators to apply for the filter: [INCLUDE, EXCLUDE]

timeFilterMode?string

Time filter mode

Default"OVERLAP"
regionDatasets?array<string>

Dataset of regions to filter by

regionIds?array<string>

Dataset ids of regions to filter by

buffer-value?number

Distance to draw the buffer (negative values are allowed)

buffer-unit?string

Distance to draw the buffer (negative values are allowed)

Value in

  • "MILES"
  • "NAUTICALMILES"
  • "KILOMETERS"
  • "RADIANS"
  • "DEGREES"
buffer-operation?string

Operation to apply to the region after the buffer. Only works together with buffer-value and buffer-unit query param. If not send, the default operation is dissolve

Value in

  • "DIFFERENCE"
  • "DISSOLVE"
minDuration?number

Min duration in hours (inclusive)

maxDuration?number

Max duration in hours (exclusive)

nextPortIds?array<string>

Next port id

nextPortIdsOperator?string

Operators to apply for the filter: [INCLUDE, EXCLUDE]

is-closed?array<boolean>

If the gap event is closed

datasets*array<string>

Specify the datasets that will be used to search the vessel. You can learn more about which are the possible datasets here.

ids?array<string>

Events ids.

include-regions?boolean

Flag to specify if the matching with regions should be executed or not. Check our data caveats for details on how the region is matching. Default value is True.

summary?boolean
offset*number

Offset into the search results, used for pagination. It starts at 0. It is used in combination with the param “limit”. For example, you send limit = 5 and you get in the response total vessels =10. So, If you send offset =0, you will get the first 5 results (first page). Therefore, in order to get the second page, you need to send offset = 5 which is the position of the first element you want from the second page.

Range0 <= value
limit*number

Amount of search results to return.

Range1 <= value
curl -X GET "https://example.com/api/v3/events?datasets=public-global-fishing-events%3Alatest&datasets=public-global-encounter-events%3Alatest&offset=0&limit=1"
{  "entries": [    {      "boundingBox": [        "-26.6544916667",        "-27.4231866667",        "-58.2073683333",        "-58.7976633333"      ],      "distances": {        "endDistanceFromPortKm": "0.0",        "endDistanceFromShoreKm": "0.0",        "startDistanceFromPortKm": "0.0",        "startDistanceFromShoreKm": "0.0"      },      "end": "2015-01-04T02:20:00.000Z",      "id": "a6e00481737d3e2c9903e1f565c51143",      "position": {        "lat": "125.2089",        "lon": "12.14587"      },      "regions": {        "eez": [],        "eez12Nm": [],        "fao": [],        "highSeas": [],        "majorFao": [],        "mpa": [],        "mpaNoTake": [],        "mpaNoTakePartial": [],        "rfmo": []      },      "start": "2015-01-02T23:50:00.000Z",      "type": "loitering",      "vessel": {        "flag": "ESP",        "id": "a6e00481737d3e2c9903e1f565c51143",        "name": "Don tito",        "nextPort": {},        "publicAuthorizations": "12345789",        "ssvid": "12345789",        "type": "FSIHING"      }    }  ],  "limit": 10,  "metadata": {},  "nextOffset": 10,  "offset": 0,  "total": 152}

Events GET examples

These examples are available:

  1. Example 1 (GET) - Get Fishing Events
  2. Example 2 (GET) - Get Encounter Events
  3. Example 3 (GET) - Get Loitering Events
  4. Example 4 (GET) - Get Port Visits

Get All Events (POST endpoint)

Events POST

POST
/api/v3/events

Authorization

ApiKeyAuth
AuthorizationBearer <token>

In: header

Query Parameters

offset*number

Offset into the search results, used for pagination. It starts at 0. It is used in combination with the param “limit”. For example, you send limit = 5 and you get in the response total vessels =10. So, If you send offset =0, you will get the first 5 results (first page). Therefore, in order to get the second page, you need to send offset = 5 which is the position of the first element you want from the second page.

Range0 <= value
limit*number

Amount of search results to return.

Range1 <= value

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

buffer-operation?string

Operation to apply to the region after the buffer. Only works together with buffer-value and buffer-unit query param. If not send, the default operation is dissolve

Value in

  • "DIFFERENCE"
  • "DISSOLVE"
buffer-unit?string

Distance to draw the buffer (negative values are allowed)

Value in

  • "MILES"
  • "NAUTICALMILES"
  • "KILOMETERS"
  • "RADIANS"
  • "DEGREES"
buffer-value?number

Distance to draw the buffer (negative values are allowed)

confidences?array<string>

This param applies only to port visits events, check data caveats to understand the different levels. Values go from 2 to 4, where 2 is low confidence, 3 is medium and 4 is high confidence. Values are separated by comma. Possible values: 2, 3, 4

confidencesOperator?string

Operators to apply for the filter: [INCLUDE, EXCLUDE]

datasets*array<string>

Specify the datasets that will be used to search the vessel. You can learn more about which are the possible datasets here.

duration?number

Min duration, in minutes, of the event

encounterTypes?array<string>

Possible values: FISHING-BUNKER, BUNKER-FISHING, FISHING-TANKER, TANKER-FISHING, CARRIER-BUNKER, BUNKER-CARRIER, SUPPORT-BUNKER, BUNKER-SUPPORT, FISHING-NON_FISHING, FISHING-RESEARCH, FISHING-, NON_FISHING-FISHING, NON_FISHING-NON_FISHING, NON_FISHING-SUPPORT, NON_FISHING-CARRIER, NON_FISHING-RESEARCH, NON_FISHING-, SUPPORT-NON_FISHING, SUPPORT-RESEARCH, SUPPORT-, CARRIER-NON_FISHING, CARRIER-CARRIER, CARRIER-RESEARCH, CARRIER-, RESEARCH-FISHING, RESEARCH-NON_FISHING, RESEARCH-SUPPORT, RESEARCH-CARRIER, RESEARCH-RESEARCH, RESEARCH-, -FISHING, -NON_FISHING, -SUPPORT, -CARRIER, -RESEARCH, -, FISHING-FISHING, FISHING-SUPPORT, FISHING-CARRIER, SUPPORT-FISHING, SUPPORT-SUPPORT, SUPPORT-CARRIER, CARRIER-FISHING, CARRIER-SUPPORT

encounterTypesOperator?string

Operators to apply for the filter: [INCLUDE, EXCLUDE]

endDate?string

End date in format YYYY-MM-DD of the end date of the event (exclusive)

flags?array<string>

Flags in format ISO3.

flagsOperator?string

Operators to apply for the filter: [INCLUDE, EXCLUDE]

gapIntentionalDisabling?boolean

Flag to specify if you want to get those gaps that were intentional or not true means that the gap was intentional, false means that the gap was not intentional. If the flag is not present, then the response contains all gaps.

geometry?

Geojson of the region to filter

ids?array<string>

Events ids.

includes?array<string>

Specify the properties that you want to obtain. If it's empty, the response will contains all data.

is-closed?array<boolean>

If the gap event is closed

maxDuration?number

Max duration in hours (exclusive)

minDuration?number

Min duration in hours (inclusive)

nextPortIds?array<string>

Next port id

nextPortIdsOperator?string

Operators to apply for the filter: [INCLUDE, EXCLUDE]

portIds?array<string>

Port ids to filter by

portIdsOperator?string

Operators to apply for the filter: [INCLUDE, EXCLUDE]

region?

Region info to filter

regionDatasets?array<string>

Dataset of regions to filter by

regionIds?array<string>

Dataset ids of regions to filter by

regions?array<>

Regions info to filter

startDate?string

Start date in format YYYY-MM-DD of the start date of the event (inclusive)

timeFilterMode?string

Time filter mode

Default"OVERLAP"
types?array<string>

Event types. Possible values: ENCOUNTER,FISHING,LOITERING,GAP_START,GAP,PORT_VISIT

typesOperator?string

Operators to apply for the filter: [INCLUDE, EXCLUDE]

vesselGroups?array<string>

Ids of vessel-groups

vesselTypes?array<string>

Vessel types. Possible values: BUNKER,CARGO,DISCREPANCY,CARRIER,FISHING,GEAR,OTHER,PASSENGER,SEISMIC_VESSEL,SUPPORT,NON_FISHING,RESEARCH,

vesselTypesOperator?string

Operators to apply for the filter: [INCLUDE, EXCLUDE]

vessels?array<string>

List of vessel ids separated by comma. You can get this information using the search endpoints

curl -X POST "https://example.com/api/v3/events?offset=0&limit=1" \  -H "Content-Type: application/json" \  -d '{    "datasets": [      "public-global-fishing-events:latest",      "public-global-encounter-events:latest"    ]  }'
{  "entries": [    {      "boundingBox": [        "-26.6544916667",        "-27.4231866667",        "-58.2073683333",        "-58.7976633333"      ],      "distances": {        "endDistanceFromPortKm": "0.0",        "endDistanceFromShoreKm": "0.0",        "startDistanceFromPortKm": "0.0",        "startDistanceFromShoreKm": "0.0"      },      "end": "2015-01-04T02:20:00.000Z",      "id": "a6e00481737d3e2c9903e1f565c51143",      "position": {        "lat": "125.2089",        "lon": "12.14587"      },      "regions": {        "eez": [],        "eez12Nm": [],        "fao": [],        "highSeas": [],        "majorFao": [],        "mpa": [],        "mpaNoTake": [],        "mpaNoTakePartial": [],        "rfmo": []      },      "start": "2015-01-02T23:50:00.000Z",      "type": "loitering",      "vessel": {        "flag": "ESP",        "id": "a6e00481737d3e2c9903e1f565c51143",        "name": "Don tito",        "nextPort": {},        "publicAuthorizations": "12345789",        "ssvid": "12345789",        "type": "FSIHING"      }    }  ],  "limit": 10,  "metadata": {},  "nextOffset": 10,  "offset": 0,  "total": 152}

Events POST examples

These examples are available:

  1. Example 1 (POST) - Get Fishing Events
  2. Example 2 (POST) - Get Encounter Events
  3. Example 3 (POST) - Get Loitering Events
  4. Example 4 (POST) - Get Port Visits
  5. Example 5 (POST) - Get Fishing Events Within Senegal EEZ

Get one by Event ID

Get by event id

GET
/api/v3/events/{eventId}

Authorization

ApiKeyAuth
AuthorizationBearer <token>

In: header

Path Parameters

eventId*string

Query Parameters

dataset*string

Specify the dataset that will be used to search the vessel. You can learn more about which are the possible datasets here.

raw?boolean
curl -X GET "https://example.com/api/v3/events/string?dataset=public-global-fishing-events%3Alatest"
{  "boundingBox": [    "-26.6544916667",    "-27.4231866667",    "-58.2073683333",    "-58.7976633333"  ],  "distances": {    "endDistanceFromPortKm": "0.0",    "endDistanceFromShoreKm": "0.0",    "startDistanceFromPortKm": "0.0",    "startDistanceFromShoreKm": "0.0"  },  "end": "2015-01-04T02:20:00.000Z",  "id": "a6e00481737d3e2c9903e1f565c51143",  "position": {    "lat": "125.2089",    "lon": "12.14587"  },  "regions": {    "eez": [],    "eez12Nm": [],    "fao": [],    "highSeas": [],    "majorFao": [],    "mpa": [],    "mpaNoTake": [],    "mpaNoTakePartial": [],    "rfmo": []  },  "start": "2015-01-02T23:50:00.000Z",  "type": "loitering",  "vessel": {    "flag": "ESP",    "id": "a6e00481737d3e2c9903e1f565c51143",    "name": "Don tito",    "nextPort": {},    "publicAuthorizations": "12345789",    "ssvid": "12345789",    "type": "FSIHING"  }}

GET A PORT VISIT EVENT BY ITS ID

curl --location --request GET 'https://gateway.api.globalfishingwatch.org/v3/events/c2f0967e061f99a01793edac065de003?dataset=public-global-port-visits-events:latest' \
  -H "Authorization: Bearer [TOKEN]"

Make sure to replace [TOKEN] with your API Access Token. If the request is successful, the response will be:

{
  "start": "2020-01-26T05:52:47.000Z",
  "end": "2020-01-29T14:39:33.000Z",
  "id": "c2f0967e061f99a01793edac065de003",
  "type": "port_visit",
  "position": {
    "lat": 20.8374,
    "lon": -17.0161
  },
  "regions": {
    "mpa": [],
    "eez": ["8369"],
    "rfmo": ["IWC", "NAMMCO", "ACAP", "ICCAT", "SRFC"],
    "fao": ["34.1", "34.1.32", "34.1.3", "34"],
    "majorFao": ["34"],
    "eez12Nm": [],
    "highSeas": [],
    "mpaNoTakePartial": [],
    "mpaNoTake": []
  },
  "boundingBox": [-17.0147743934, 20.7287971969, -17.0301185356, 20.8284907611],
  "distances": {
    "startDistanceFromShoreKm": 7,
    "endDistanceFromShoreKm": 2,
    "startDistanceFromPortKm": 0,
    "endDistanceFromPortKm": 0
  },
  "vessel": {
    "id": "8c7304226-6c71-edbe-0b63-c246734b3c01",
    "name": "FRIOFORWIN",
    "ssvid": "210631000"
  },
  "port_visit": {
    "visitId": "54a297966f51994d8bad91ba58945f8c",
    "confidence": 4,
    "durationHrs": 80.77944444444445,
    "startAnchorage": {
      "anchorageId": "0ea1bbe7",
      "atDock": false,
      "distanceFromShoreKm": 7,
      "flag": "MRT",
      "id": "mrt-cansado",
      "lat": 20.72879719687954,
      "lon": -17.014774393446658,
      "name": "CANSADO",
      "topDestination": "NOUADHIBOU"
    },
    "intermediateAnchorage": {
      "anchorageId": "0ea1b6ad",
      "atDock": false,
      "distanceFromShoreKm": 4,
      "flag": "MRT",
      "id": "mrt-nouadhibou",
      "lat": 20.885489104200627,
      "lon": -17.003218026679036,
      "name": "NOUADHIBOU",
      "topDestination": "NOUADHIBOU"
    },
    "endAnchorage": {
      "anchorageId": "0ea1b0c3",
      "atDock": true,
      "distanceFromShoreKm": 2,
      "flag": "MRT",
      "id": "mrt-cansado",
      "lat": 20.828490761089796,
      "lon": -17.030118535609358,
      "name": "CANSADO",
      "topDestination": "NOUADHIBOU"
    }
  }
}

Statistics on events (POST)

Get events statistics worldwide or for a specific region. The available events to get stats are:

  • Fishing events

  • Encounter events

  • Loitering events

  • AIS Off events (aka GAPs)

  • Port visits

Events Stats POST

POST
/api/v3/events/stats

Authorization

ApiKeyAuth
AuthorizationBearer <token>

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

buffer-operation?string

Operation to apply to the region after the buffer. Only works together with buffer-value and buffer-unit query param. If not send, the default operation is dissolve

Value in

  • "DIFFERENCE"
  • "DISSOLVE"
buffer-unit?string

Distance to draw the buffer (negative values are allowed)

Value in

  • "MILES"
  • "NAUTICALMILES"
  • "KILOMETERS"
  • "RADIANS"
  • "DEGREES"
buffer-value?number

Distance to draw the buffer (negative values are allowed)

confidences?array<string>

This param applies only to port visits events, check data caveats to understand the different levels. Values go from 2 to 4, where 2 is low confidence, 3 is medium and 4 is high confidence. Values are separated by comma. Possible values: 2, 3, 4

confidencesOperator?string

Operators to apply for the filter: [INCLUDE, EXCLUDE]

datasets*array<string>

Specify the datasets that will be used to search the vessel. You can learn more about which are the possible datasets here.

duration?number

Min duration, in minutes, of the event

encounter-types?array<string>

Possible values: FISHING-BUNKER, BUNKER-FISHING, FISHING-TANKER, TANKER-FISHING, CARRIER-BUNKER, BUNKER-CARRIER, SUPPORT-BUNKER, BUNKER-SUPPORT, FISHING-NON_FISHING, FISHING-RESEARCH, FISHING-, NON_FISHING-FISHING, NON_FISHING-NON_FISHING, NON_FISHING-SUPPORT, NON_FISHING-CARRIER, NON_FISHING-RESEARCH, NON_FISHING-, SUPPORT-NON_FISHING, SUPPORT-RESEARCH, SUPPORT-, CARRIER-NON_FISHING, CARRIER-CARRIER, CARRIER-RESEARCH, CARRIER-, RESEARCH-FISHING, RESEARCH-NON_FISHING, RESEARCH-SUPPORT, RESEARCH-CARRIER, RESEARCH-RESEARCH, RESEARCH-, -FISHING, -NON_FISHING, -SUPPORT, -CARRIER, -RESEARCH, -, FISHING-FISHING, FISHING-SUPPORT, FISHING-CARRIER, SUPPORT-FISHING, SUPPORT-SUPPORT, SUPPORT-CARRIER, CARRIER-FISHING, CARRIER-SUPPORT

encounterTypesOperator?string

Operators to apply for the filter: [INCLUDE, EXCLUDE]

end-date?string

End date in format YYYY-MM-DD of the end date of the event (exclusive)

flags?array<string>

Flags in format ISO3.

flagsOperator?string

Operators to apply for the filter: [INCLUDE, EXCLUDE]

gap-intentional-disabling?boolean

Flag to specify if you want to get those gaps that were intentional or not true means that the gap was intentional, false means that the gap was not intentional. If the flag is not present, then the response contains all gaps.

geometry?

Geojson of the region to filter

groupBy?string

Group data by. Options FLAG,GEARTYPE,REGION_EEZ,REGION_EEZ12NM,REGION_FAO,REGION_HIGH_SEAS,REGION_MAJOR_FAO,REGION_MPA,REGION_MPA_NO_TAKE,REGION_MPA_NO_TAKE_PARTIAL,REGION_RFMO,NEXT_PORT_ID

Value in

  • "FLAG"
  • "GEARTYPE"
  • "REGION_EEZ"
  • "REGION_EEZ12NM"
  • "REGION_FAO"
  • "REGION_HIGH_SEAS"
  • "REGION_MAJOR_FAO"
  • "REGION_MPA"
  • "REGION_MPA_NO_TAKE"
  • "REGION_MPA_NO_TAKE_PARTIAL"
  • "REGION_RFMO"
  • "NEXT_PORT_ID"
includes?array<>

Data ton include in the response. Options TOTAL_COUNT,TIME_SERIES,EVENTS_GROUPED

is-closed?array<boolean>

If the gap event is closed

maxDuration?number

Max duration in hours (exclusive)

minDuration?number

Min duration in hours (inclusive)

nextPortIds?array<string>

Next port id

nextPortIdsOperator?string

Operators to apply for the filter: [INCLUDE, EXCLUDE]

portIds?array<string>

Port ids to filter by

portIdsOperator?string

Operators to apply for the filter: [INCLUDE, EXCLUDE]

region?

Geojson of the region to filter

regionDatasets?array<string>

Dataset of regions to filter by

regionIds?array<string>

Dataset ids of regions to filter by

regions?array<>

Region info to filter

start-date?string

Start date in format YYYY-MM-DD of the start date of the event (inclusive)

timeFilterMode?string

Time filter mode

Default"OVERLAP"
timeseriesInterval*string

Time series granularity. Options HOUR,DAY,MONTH,YEAR

Value in

  • "HOUR"
  • "DAY"
  • "MONTH"
  • "YEAR"
types?array<string>

Event types. Possible values: ENCOUNTER,FISHING,LOITERING,GAP_START,GAP,PORT_VISIT

typesOperator?string

Operators to apply for the filter: [INCLUDE, EXCLUDE]

vesselGroups?array<string>

Ids of vessel-groups

vesselTypes?array<string>

Vessel types. Possible values: BUNKER,CARGO,DISCREPANCY,CARRIER,FISHING,GEAR,OTHER,PASSENGER,SEISMIC_VESSEL,SUPPORT,NON_FISHING,RESEARCH,

vesselTypesOperator?string

Operators to apply for the filter: [INCLUDE, EXCLUDE]

vessels?array<string>

List of vessel ids separated by comma. You can get this information using the search endpoints

curl -X POST "https://example.com/api/v3/events/stats" \  -H "Content-Type: application/json" \  -d '{    "datasets": [      "public-global-fishing-events:latest",      "public-global-encounter-events:latest"    ],    "timeseriesInterval": "DAY"  }'
{  "flags": [    "ESP"  ],  "groups": [    {      "flag": "",      "label": "",      "name": "",      "value": 2    }  ],  "numEvents": 20,  "numFlags": 2,  "numVessels": 10,  "timeseries": [    {      "date": "",      "value": 2    }  ]}

| 500 |

Internal Server Error

| Server side issue. Please contact us at apis@globalfishingwatch.org | Error Codes |

Properties Events Stats Response

NameTypeRequiredRestrictionsDescription
flags[string]truenoneDistinct flags
numEventsnumbertruenoneNumber of events
numFlagsnumbertruenoneNumber of distinct vessel flags
numVesselsnumbertruenoneNumber of distinct vessels
timeseries[See Timeseries definition below]truenoneTimeseries
Properties Events Stats Response Timeseries
NameTypeRequiredRestrictionsDescription
datestring(date-time)truenoneDate
valuenumbertruenoneNumber of events

Events Stats POST examples

These examples are available:

  1. Example 1 (POST) - Get Encounters Stats
  2. Example 2 (POST) - Get Fishing Events Stats in a Custom Region
  3. Example 3 (POST) - Get Port Visits Stats in a Region ID (Senegal)

On this page