Introduction
Welcome to the Global Fishing Watch Application Programming Interfaces (API) Documentation site!
Global Fishing Watch has created a technology portal that provides application programming interfaces, or APIs, to revolutionize the way we research and monitor human impacts across the world’s ocean.
Our APIs provide software instructions that enable automatic connection of our data and products to other systems so users can easily download and integrate our datasets, code, and models to power their own platforms. By providing streamlined access to information on current fishing vessel activity, identity and history, we are helping create solutions for a resilient, sustainable ocean.
Global Fishing Watch APIs are only available for non-commercial purposes. They are used by researchers, governments and technology companies.
Global Fishing Watch offers modern, low latency, secure and scalable REST APIs. Global Fishing Watch APIs use resource-oriented URLS, support HTTPS authentication and HTTPS verbs and leverage JSON in all responses.
We combine tracking data from the publicly available automatic identification system (AIS) and integrate that with information acquired through vessel monitoring systems that are operated by governments and made available to us through partnerships that we secure. Both AIS and VMS combine global positioning with a transmitter to regularly broadcast vessel location.
Harvesting big data from satellites and other sources
We combine tracking data from the publicly available automatic identification system (AIS) and integrate that with information acquired through vessel monitoring systems that are operated by governments and made available to us through partnerships that we secure. Both AIS and VMS combine global positioning with a transmitter to regularly broadcast vessel location.
Data available
In API Version 3
You can find the following APIs and data:
Map Visualization (4Wings API): apparent fishing effort based on AIS data including buffer analysis and SAR (Synthetic-aperture radar) vessel detections which are industrial vessels between 2017 to 5 days ago that were detected with satellite imagery and classified with deep learning.
Vessel API: vessel search and identity based on AIS self reported data and identity and authorization data from public regional and national registries for all vessel types.
Events API: encounters, loitering, port visits and fishing events based on AIS data. In this new version we added more encounters based on additional vessel types.
Insights API: a set of indicators or 'vessel insights' that bring together important information on a vessel's known activity (based on AIS) and authorizations. The objective of the insights is to support risk-based decision-making, operational planning, and other due diligence activities by making it easier for a user to identify vessel characteristics that can indicate an increased potential or opportunity for a vessel to engage in IUU (Illegal, Unreported, or Unregulated) fishing.
Datasets API: allows to download fixed Infrastructure Detections from Sentinel-1 and Sentinel-2 in MVT format.
If you want to learn on the differences between these APIs, gfwr (version 2) and the Data Downloads portal, you can review this document explaining the differences here.
If you want to learn which APIs are used in Vessel Viewer, you can review this document showing the exact API requests done behind each page.
In API Version 2
You can find the following APIs and data:
Map Visualization (4Wings API): apparent fishing effort based on AIS data
Vessel API: vessel search and identity based on AIS self reported data for fishing, carriers and support vessels.
Events API: encounters, loitering, port visits and fishing events based on AIS data
We are planning to expand the list in the near future, if you need any specific one that you would like us to prioritize, contact us to send your suggestion.
Quick Start
Register for a Global Fishing Watch account.
Request an API Access Token
Agree to the terms of use and attribute Global Fishing Watch in anything you publish.
Submit HTTP request - Search a fishing vessel and get the fishing events
SEARCH A FISHING VESSEL
curl --location -g --request GET 'https://gateway.api.globalfishingwatch.org/v3/vessels/search?query=7831410&datasets[0]=public-global-vessel-identity:latest' \
-H "Authorization: Bearer [TOKEN]"
Make sure to replace [TOKEN] with your API Access Token. If the request is successful, the response includes the vessels matching your query.
{
"limit": 20,
"since": null,
"total": 1,
"entries": [
{
"dataset": "public-global-vessel-identity:v20231026",
"registryInfoTotalRecords": 1,
"registryInfo": [
{
"id": "72f191cf1cb981cefc7733d32abba37e",
"recordId": "IMO-7831410",
"sourceCode": [
"IMO"
],
"ssvid": "701000948",
"flag": "ARG",
"shipname": "CLAUDINA",
"nShipname": "CLAUDINA",
"callsign": "LW3058",
"imo": "7831410",
"latestVesselInfo": true,
"transmissionDateFrom": "2013-01-01T07:26:04Z",
"transmissionDateTo": "2023-04-13T14:15:39Z",
"geartype": [
"FISHING"
],
"lengthM": 53.6,
"tonnageGt": 369,
"vesselInfoReference": "ce19d2b7-e5a6-43bf-b439-4070f10fe74e"
}
],
"registryOwners": [
{
"name": "DESEADO PESQUERA",
"flag": "ARG",
"ssvid": "701000948",
"sourceCode": [
"IMO"
],
"dateFrom": "2013-01-01T07:26:04Z",
"dateTo": "2023-04-13T14:15:39Z"
}
],
"registryAuthorizations": [],
"combinedSourcesInfo": [
{
"vesselId": "e9efd1586-61cf-74a8-757d-e8b4c0664c20",
"geartypes": [
{
"name": "SQUID_JIGGER",
"source": "COMBINATION_OF_REGISTRY_AND_AIS_INFERRED_NN_INFO",
"yearFrom": 2013,
"yearTo": 2016
},
{
"name": "OTHER",
"source": "COMBINATION_OF_REGISTRY_AND_AIS_INFERRED_NN_INFO",
"yearFrom": 2012,
"yearTo": 2012
}
],
"shiptypes": [
{
"name": "FISHING",
"source": "COMBINATION_OF_REGISTRY_AND_AIS_INFERRED_NN_INFO",
"yearFrom": 2013,
"yearTo": 2016
},
{
"name": "OTHER",
"source": "COMBINATION_OF_REGISTRY_AND_AIS_INFERRED_NN_INFO",
"yearFrom": 2012,
"yearTo": 2012
}
]
},
{
"vesselId": "9b3e9019d-d67f-005a-9593-b66b997559e5",
"geartypes": [
{
"name": "SQUID_JIGGER",
"source": "COMBINATION_OF_REGISTRY_AND_AIS_INFERRED_NN_INFO",
"yearFrom": 2016,
"yearTo": 2023
}
],
"shiptypes": [
{
"name": "FISHING",
"source": "COMBINATION_OF_REGISTRY_AND_AIS_INFERRED_NN_INFO",
"yearFrom": 2016,
"yearTo": 2023
}
]
}
],
"selfReportedInfo": [
{
"id": "9b3e9019d-d67f-005a-9593-b66b997559e5",
"ssvid": "701000948",
"shipname": "CLAUDINA",
"nShipname": "CLAUDINA",
"flag": "ARG",
"callsign": "LW3058",
"imo": "7831410",
"messagesCounter": 616714906,
"positionsCounter": 1914662,
"sourceCode": [
"AIS"
],
"matchFields": "SEVERAL_FIELDS",
"transmissionDateFrom": "2016-12-20T20:27:39Z",
"transmissionDateTo": "2023-04-13T18:19:16Z"
},
{
"id": "e9efd1586-61cf-74a8-757d-e8b4c0664c20",
"ssvid": "701000948",
"shipname": "CLAUDINA",
"nShipname": "CLAUDINA",
"flag": "ARG",
"callsign": "LW3058",
"imo": "0",
"messagesCounter": 8313445,
"positionsCounter": 73907,
"sourceCode": [
"AIS"
],
"matchFields": "SEVERAL_FIELDS",
"transmissionDateFrom": "2012-01-01T04:38:08Z",
"transmissionDateTo": "2016-09-15T15:07:46Z"
}
]
}
],
"metadata": {
"query": "7831410",
"normalizedQuery": "7831410",
"didYouMean": {
"shipname": {}
}
}
}
GET FISHING EVENTS
curl --location -g --request GET 'https://gateway.api.globalfishingwatch.org/v3/events?vessels[0]=9b3e9019d-d67f-005a-9593-b66b997559e5&datasets[0]=public-global-fishing-events:latest&start-date=2017-03-01&end-date=2017-03-31&limit=1&offset=0' \
-H "Authorization: Bearer [TOKEN]"
Make sure to replace [TOKEN] with your API Access Token. If the request is successful, the response includes the fishing events from the vessel id found in the previous request.
{
"metadata": {
"datasets": [
"public-global-fishing-events:v20231026"
],
"vessels": [
"9b3e9019d-d67f-005a-9593-b66b997559e5"
],
"dateRange": {
"from": "2017-03-01",
"to": "2017-03-31"
}
},
"limit": 1,
"offset": 0,
"nextOffset": 1,
"total": 160,
"entries": [
{
"start": "2017-02-28T23:09:29.000Z",
"end": "2017-03-01T04:25:22.000Z",
"id": "49c5ab5a5ba4139b15ca9c039b0ea4f7",
"type": "fishing",
"position": {
"lat": -47.1439,
"lon": -62.7624
},
"regions": {
"mpa": [],
"eez": [
"8466"
],
"rfmo": [
"ACAP",
"ICCAT",
"IWC",
"CCSBT"
],
"fao": [
"41",
"41.3.1",
"41.3"
],
"majorFao": [
"41"
],
"eez12Nm": [],
"highSeas": [],
"mpaNoTakePartial": [],
"mpaNoTake": []
},
"boundingBox": [
-62.752836666700006,
-47.16,
-62.768585,
-47.1277183333
],
"distances": {
"startDistanceFromShoreKm": 226,
"endDistanceFromShoreKm": 225,
"startDistanceFromPortKm": 241.536047,
"endDistanceFromPortKm": 241.137141
},
"vessel": {
"id": "9b3e9019d-d67f-005a-9593-b66b997559e5",
"name": "CLAUDINA",
"ssvid": "701000948"
},
"fishing": {
"totalDistanceKm": 3.9377160441499495,
"averageSpeedKnots": 0.9047619104333333,
"averageDurationHours": 0.263236111111111,
"potentialRisk": false
}
}
]
}
Search a fishing vessel by IMO = 7831410 using Vessel API
Get one fishing event from the fishing vessel searched in the previous request (first id
in the selfReportedInfo
object) and filter by Start Date=2017-03-01 and End Date=2017-03-31 using Events API
API Versioning
- Only major versions are tracked, current version is v3
- A new major version is created when there are breaking changes in the endpoints, Request (composed by url, params and verb) and/or the Response
- We only support 2 major versions running at the same time
Communication around API versions
- We send a deprecation notice 3 months in advanced:
- Via email to all registered users
- Via API, by returning a warning message with an url in the log when detecting you are using an old API
- Old API version will live 3 months while new API version is release
Version | Version Status | Deprecation Date | Release Notes |
---|---|---|---|
v3 | 🟢 CURRENT | Release Notes v3 | |
v2 | 🟠 MAINTENANCE | April 30 2024 | Release Notes v2 |
v1 | 🔴 DEPRECATED | May 31 2023 |
- Version status:
- 🔴 DEPRECATED: The endpoint is not operational or is going to be deleted soon. No improvements are added.
- 🟠 MAINTENANCE: The endpoint is operational and available but marked as in maintenance mode. That means that the engineering team are going to work on fixing issues but not implementing new/update features. All improvements/fixes in this version must has retrocompatibility. Users should plan to start using the CURRENT version.
- 🟢 CURRENT: The endpoint is operation and available to the public users. This version is alive and the engineering team will be able to implementing new features. In case there is a breaking change, a new version should be publish.
- Version deprecation date: when it was or will be deprecated
- Release Notes: What changes are included in the version
For API Dataset Versioning, check here
Version 2 API
API version 2 was moved to 🟠 MAINTENANCE which means that API is operational and available but marked as in maintenance mode. That means that the engineering team is going to work on fixing issues but not implementing new/update features. Users should plan to start using the CURRENT version: version 3. For more details, check the release notes
Get your GFW Postman collection for Version 2
You can download our Postman collection here to test some of the endpoints.
Remember to:
Add your API Access TOKEN, you can get one from here
Update variable
base_url
withhttps://gateway.api.globalfishingwatch.org/
Map Visualization - 4Wings API - V2
4Wings introduction - V2
4Wings API (aka Map Visualization) allows you to get fast visualisation, navigation and analysis for gridded spatiotemporal datasets.You can:
- visualize apparent fishing effort in png or mvt format
- generate a report and download apparent fishing effort data in csv, json or tiff format
Create a style for generate png tiles - V2
GENERATE PNG TILES WITH TEMPORAL FILTER
curl --location --request POST 'https://gateway.api.globalfishingwatch.org/v2/4wings/generate-png?interval=10days&datasets%5B0%5D=public-global-fishing-effort:latest&color=%23361c0c&date-range=2020-01-01,2020-01-31' \
-H "Authorization: Bearer [TOKEN]"
Make sure to replace [TOKEN] with your API Access Token. If the request is successful, the response will be:
{
"colorRamp": {
"stepsByZoom": {
"0": [
{
"color": "rgba(54,28,12,25)",
"value": 663
},
{
"color": "rgba(54,28,12,127)",
"value": 17471
},
{
"color": "rgba(54,28,12,153)",
"value": 27895
},
{
"color": "rgba(54,28,12,178)",
"value": 38839
},
{
"color": "rgba(54,28,12,255)",
"value": 60002
},
{
"color": "rgba(54,28,12,0)",
"value": 0
},
{
"color": "rgba(54,28,12,51)",
"value": 2400
},
{
"color": "rgba(54,28,12,76)",
"value": 5487
},
{
"color": "rgba(54,28,12,102)",
"value": 10663
}
],
"1": [
{
"color": "rgba(54,28,12,25)",
"value": 165
},
{
"color": "rgba(54,28,12,51)",
"value": 600
},
{
"color": "rgba(54,28,12,76)",
"value": 1371
},
{
"color": "rgba(54,28,12,127)",
"value": 4367
},
{
"color": "rgba(54,28,12,0)",
"value": 0
},
{
"color": "rgba(54,28,12,102)",
"value": 2665
},
{
"color": "rgba(54,28,12,153)",
"value": 6973
},
{
"color": "rgba(54,28,12,178)",
"value": 9709
},
{
"color": "rgba(54,28,12,255)",
"value": 15000
}
],
"10": [
{
"color": "rgba(54,28,12,255)",
"value": 0
}
],
"11": [
{
"color": "rgba(54,28,12,255)",
"value": 0
}
],
"12": [
{
"color": "rgba(54,28,12,255)",
"value": 0
}
],
"2": [
{
"color": "rgba(54,28,12,102)",
"value": 666
},
{
"color": "rgba(54,28,12,153)",
"value": 1743
},
{
"color": "rgba(54,28,12,0)",
"value": 0
},
{
"color": "rgba(54,28,12,51)",
"value": 150
},
{
"color": "rgba(54,28,12,76)",
"value": 342
},
{
"color": "rgba(54,28,12,255)",
"value": 3750
},
{
"color": "rgba(54,28,12,25)",
"value": 41
},
{
"color": "rgba(54,28,12,127)",
"value": 1091
},
{
"color": "rgba(54,28,12,178)",
"value": 2427
}
],
"3": [
{
"color": "rgba(54,28,12,0)",
"value": 0
},
{
"color": "rgba(54,28,12,153)",
"value": 435
},
{
"color": "rgba(54,28,12,127)",
"value": 272
},
{
"color": "rgba(54,28,12,178)",
"value": 606
},
{
"color": "rgba(54,28,12,255)",
"value": 937
},
{
"color": "rgba(54,28,12,25)",
"value": 10
},
{
"color": "rgba(54,28,12,51)",
"value": 37
},
{
"color": "rgba(54,28,12,76)",
"value": 85
},
{
"color": "rgba(54,28,12,102)",
"value": 166
}
],
"4": [
{
"color": "rgba(54,28,12,51)",
"value": 9
},
{
"color": "rgba(54,28,12,102)",
"value": 41
},
{
"color": "rgba(54,28,12,127)",
"value": 68
},
{
"color": "rgba(54,28,12,255)",
"value": 234
},
{
"color": "rgba(54,28,12,25)",
"value": 2
},
{
"color": "rgba(54,28,12,76)",
"value": 21
},
{
"color": "rgba(54,28,12,153)",
"value": 108
},
{
"color": "rgba(54,28,12,178)",
"value": 151
},
{
"color": "rgba(54,28,12,0)",
"value": 0
}
],
"5": [
{
"color": "rgba(54,28,12,51)",
"value": 2
},
{
"color": "rgba(54,28,12,76)",
"value": 5
},
{
"color": "rgba(54,28,12,102)",
"value": 10
},
{
"color": "rgba(54,28,12,127)",
"value": 17
},
{
"color": "rgba(54,28,12,153)",
"value": 27
},
{
"color": "rgba(54,28,12,178)",
"value": 37
},
{
"color": "rgba(54,28,12,255)",
"value": 58
},
{
"color": "rgba(54,28,12,25)",
"value": 0
}
],
"6": [
{
"color": "rgba(54,28,12,51)",
"value": 0
},
{
"color": "rgba(54,28,12,76)",
"value": 1
},
{
"color": "rgba(54,28,12,102)",
"value": 2
},
{
"color": "rgba(54,28,12,127)",
"value": 4
},
{
"color": "rgba(54,28,12,153)",
"value": 6
},
{
"color": "rgba(54,28,12,178)",
"value": 9
},
{
"color": "rgba(54,28,12,255)",
"value": 14
}
],
"7": [
{
"color": "rgba(54,28,12,102)",
"value": 0
},
{
"color": "rgba(54,28,12,153)",
"value": 1
},
{
"color": "rgba(54,28,12,178)",
"value": 2
},
{
"color": "rgba(54,28,12,255)",
"value": 3
}
],
"8": [
{
"color": "rgba(54,28,12,255)",
"value": 0
}
],
"9": [
{
"color": "rgba(54,28,12,255)",
"value": 0
}
]
}
},
"url": "https://gateway.api.globalfishingwatch.org/v2/4wings/tile/heatmap/{z}/{x}/{y}?format=png&interval=10days&datasets[0]=public-global-fishing-effort:latest&date-range=2020-01-01,2020-01-31&style=eyJjb2xvciI6WzU0LDI4LDEyXSwicmFtcCI6WzAsNjYzLjIzMTk0NDQ0NDQ0NDUsMjQwMC4wMDMzMzMzMzMzMzMsNTQ4Ny4wNDIyMjIyMjIyMjMsMTA2NjMuMDY2OTQ0NDQ0NDQzLDE3NDcxLjUxODA1NTU1NTU1NiwyNzg5NS42NjUyNzc3Nzc3NzgsMzg4MzkuNTUyNTAwMDAwMDA1LDYwMDAyLjcxNDk5OTk5OTk4XX0="
}
GENERATE PNG TILES WITH GEAR TYPE AND TEMPORAL FILTER
curl --location --request POST 'https://gateway.api.globalfishingwatch.org/
/v2/4wings/generate-png?interval=10days&datasets[0]=public-global-fishing-effort:latest&filters[0]=geartype in ("tuna_purse_seines","driftnets")&date-range=2020-01-01,2020-01-31' \
-H "Authorization: Bearer [TOKEN]"
Make sure to replace [TOKEN] with your API Access Token. If the request is successful, the response will be:
{
"colorRamp": {
"stepsByZoom": {
"0": [
{
"color": "rgba(22,63,137,0)",
"value": 0
},
{
"color": "rgba(22,63,137,102)",
"value": 384
},
{
"color": "rgba(22,63,137,178)",
"value": 1502
},
{
"color": "rgba(22,63,137,255)",
"value": 1944
},
{
"color": "rgba(22,63,137,25)",
"value": 26
},
{
"color": "rgba(22,63,137,51)",
"value": 88
},
{
"color": "rgba(22,63,137,76)",
"value": 186
},
{
"color": "rgba(22,63,137,127)",
"value": 677
},
{
"color": "rgba(22,63,137,153)",
"value": 1047
}
],
"1": [
{
"color": "rgba(22,63,137,0)",
"value": 0
},
{
"color": "rgba(22,63,137,51)",
"value": 22
},
{
"color": "rgba(22,63,137,102)",
"value": 96
},
{
"color": "rgba(22,63,137,153)",
"value": 261
},
{
"color": "rgba(22,63,137,255)",
"value": 486
},
{
"color": "rgba(22,63,137,25)",
"value": 6
},
{
"color": "rgba(22,63,137,76)",
"value": 46
},
{
"color": "rgba(22,63,137,127)",
"value": 169
},
{
"color": "rgba(22,63,137,178)",
"value": 375
}
],
"10": [
{
"color": "rgba(22,63,137,255)",
"value": 0
}
],
"11": [
{
"color": "rgba(22,63,137,255)",
"value": 0
}
],
"12": [
{
"color": "rgba(22,63,137,255)",
"value": 0
}
],
"2": [
{
"color": "rgba(22,63,137,255)",
"value": 121
},
{
"color": "rgba(22,63,137,25)",
"value": 1
},
{
"color": "rgba(22,63,137,76)",
"value": 11
},
{
"color": "rgba(22,63,137,102)",
"value": 24
},
{
"color": "rgba(22,63,137,127)",
"value": 42
},
{
"color": "rgba(22,63,137,178)",
"value": 93
},
{
"color": "rgba(22,63,137,0)",
"value": 0
},
{
"color": "rgba(22,63,137,51)",
"value": 5
},
{
"color": "rgba(22,63,137,153)",
"value": 65
}
],
"3": [
{
"color": "rgba(22,63,137,102)",
"value": 6
},
{
"color": "rgba(22,63,137,127)",
"value": 10
},
{
"color": "rgba(22,63,137,153)",
"value": 16
},
{
"color": "rgba(22,63,137,178)",
"value": 23
},
{
"color": "rgba(22,63,137,255)",
"value": 30
},
{
"color": "rgba(22,63,137,25)",
"value": 0
},
{
"color": "rgba(22,63,137,51)",
"value": 1
},
{
"color": "rgba(22,63,137,76)",
"value": 2
}
],
"4": [
{
"color": "rgba(22,63,137,102)",
"value": 1
},
{
"color": "rgba(22,63,137,127)",
"value": 2
},
{
"color": "rgba(22,63,137,153)",
"value": 4
},
{
"color": "rgba(22,63,137,178)",
"value": 5
},
{
"color": "rgba(22,63,137,255)",
"value": 7
},
{
"color": "rgba(22,63,137,76)",
"value": 0
}
],
"5": [
{
"color": "rgba(22,63,137,127)",
"value": 0
},
{
"color": "rgba(22,63,137,255)",
"value": 1
}
],
"6": [
{
"color": "rgba(22,63,137,255)",
"value": 0
}
],
"7": [
{
"color": "rgba(22,63,137,255)",
"value": 0
}
],
"8": [
{
"color": "rgba(22,63,137,255)",
"value": 0
}
],
"9": [
{
"color": "rgba(22,63,137,255)",
"value": 0
}
]
}
}
}
A Style is a document that defines the visual appearance of a map, in this case the map will be in png format, it includes what data to draw, the order to draw it in, and how to style the data when drawing it. You can find on the right, two examples:
- Filtering by time period
- Filtering by time period and gear type. Check Gear Types supported here.
Generate PNG v2 - HTTP Request
POST https://gateway.api.globalfishingwatch.org/v2/4wings/generate-png
Generate PNG v2 - URL Parameters
Parameter | Description | Required | Format | Param Type |
---|---|---|---|---|
color | Color in hexadecimal used to generate the color ramp. If you don't send this information, by default the color will be #002457.Default value: #002457 | False | string | query |
interval | Tiles are available at several time resolutions (hourly, daily, monthly and 10 days), it means one frame every one hour, one day or 10 days. For each resolution, the the max displayable length items: 1 hour: 20 days, 1 day: 1 year and 10 days: several years depending on the dataset for AIS Fishing effort it starts in 2012. Default value: 10days | False | Enum: ['10days', 'day', 'hour'] | query |
datasets[0] | Specify the datasets that will be used to create the style. You can learn more about which are the possible datasets here. The parameters should be defined using an index, in case only one dataset is going to be sent: ?dataset[0]=xxxxx, in case of multiple datasets: ?dataset[0]=xxxxx&dataset[1]=yyyyy Example: public-global-fishing-effort:latest | True | string | query |
filters[0] | Filters are applied to the dataset parameter with the corresponding index. For example if we want to apply a filter to dataset[0], we should apply the filter attributes to filter[0].For AIS fishing effort, the possible filters are: flag, geartype. Example: flag in ('ESP') | False | string | query |
date-range | Start date and end date to filter the data Example: 2021-01-01,2021-03-01 | False | string | query |
Get fishing effort in raster format by tile coordinates - V2
GET PNG TILE BY COORDINATES
curl --location --request GET 'https://gateway.api.globalfishingwatch.org/v2/4wings/tile/heatmap/2/3/1?format=png&interval=10days&datasets[0]=public-global-fishing-effort:latest&date-range=2020-01-01,2020-01-31&style=[STYLE]' \
-H "Authorization: Bearer [TOKEN]" \
-o "tile-by-coordinates.png"
Make sure to replace [TOKEN] with your API Access Token and [STYLE] with the style obtained in the previous endpoint "Create a style for generate png tiles" in the 'url' field
If the request is successful, in this example the response will be a png file
This endpoint allows you to get details of the cell of the tile (in PNG or MVT format depending on the parameter).
⚠️ Before using this endpoint, remember to create your STYLE that specifies how the fishing effort will be visualized. Check more detail about how to generate your style here.
Get fishing effort in raster v2 - HTTP Request
GET https://gateway.api.globalfishingwatch.org/v2/4wings/tile/heatmap/{z}/{x}/{y}
Get fishing effort in raster v2 - URL Parameters
Parameter | Description | Required | Format | Param Type |
---|---|---|---|---|
z | Zoom level (from 0 to 12) Example: 1 | True | number | path |
x | X index (lat) of the tile | True | number | path |
y | Y index (lon) of the tile | True | number | path |
temporal-aggregation | Aggregates temporarily the data in the tile Example: True | False | boolean | query |
interval | Tiles are available at several time resolutions (hourly, daily, monthly and 10 days), it means one frame every one hour, one day or 10 days. For each resolution, the max displayable length items: 1 hour: 20 days, 1 day: 1 year and 10 days: several years depending on the dataset for AIS Fishing effort it starts in 2012. Example: 10days | False | Enum: ['10days', 'day', 'hour'] | query |
datasets[0] | Specify the datasets that will be used to create the style. You can learn more about which are the possible datasets here. The parameters should be defined using an index, in case only one dataset is going to be sent: ?dataset[0]=xxxxx, in case of multiple datasets: ?dataset[0]=xxxxx&dataset[1]=yyyyy. Example: public-global-fishing-effort:latest | True | string | query |
filters[0] | Filters are applied to the dataset parameter with the corresponding index. For example if we want to apply a filter to dataset[0], we should apply the filter attributes to filter[0].For AIS fishing effort, the possible filters are: flag, geartype. Example: flag in ('ESP') | False | string | query |
date-range | Start date and end date to filter the data Example: 2021-01-01,2021-03-01 | False | string | query |
format | Format of response Example: mvt | False | Enum: ['mvt', 'png'] | query |
style | Id of the style obtained with endpoint /v2/4wings/generate-png. | False | string |
Generate bins of inputs to know the data (For example to create a color ramp of the data) - V2
GENERATE FISHING EFFORT REPORT GROUPED BY YEAR AND BY CUSTOM POLYGON IN JSON FORMAT
curl --location -g --request GET 'https://gateway.api.globalfishingwatch.org/v2/4wings/bins/1?datasets[0]=public-global-fishing-effort:latest&temporal-aggregation=false&num-bins=9&interval=10days' \
-H "Authorization: Bearer [TOKEN]"
Make sure to replace [TOKEN] with your API Access Token. If the request is successful, the response will be:
[
[
0, 681.7608333333334, 3155.027222222222, 11128.39916666666,
24225.742837079433, 39811.977777777785, 59699.12027777779,
88621.67472222226, 118122.56555555557
]
]
Get bins v2 - HTTP Request
GET https://gateway.api.globalfishingwatch.org/v2/4wings/bins/{z}
Get bins v2 - URL Parameters
Parameter | Description | Required | Format | Param Type |
---|---|---|---|---|
z | Zoom level (from 0 to 12) | True | number | path |
temporal-aggregation | Aggregates temporarily the data in the tile Example: True | False | boolean | query |
num-bins | Number of bins or buckets that you would like Example: 10 | False | number | query |
interval | Tiles are available at several time resolutions (hourly, daily, monthly and 10 days), it means one frame every one hour, one day or 10 days. For each resolution, the the max displayable length items: 1 hour: 20 days, 1 day: 1 year and 10 days: several years depending on the dataset for AIS Fishing effort it starts in 2012. Example: 10days | False | Enum: ['10days', 'day', 'hour'] | query |
datasets[0] | Specify the datasets that will be used to create the style. You can learn more about which are the possible datasets here. The parameters should be defined using an index, in case only one dataset is going to be sent: ?dataset[0]=xxxxx, in case of multiple datasets: ?dataset[0]=xxxxx&dataset[1]=yyyyy. Example: public-global-fishing-effort:latest | True | string | query |
filters[0] | Filters are applied to the dataset parameter with the corresponding index. For example if we want to apply a filter to dataset[0], we should apply the filter attributes to filter[0].For AIS fishing effort, the possible filters are: flag, geartype. Example: flag in ('ESP') | False | string | query |
date-range | Start date and end date to filter the data Example: 2021-01-01,2021-03-01 | False | string | query |
Return info in the cells of the tile specified - V2
GET DETAIL OF A TILE TO ALLOW FURTHER INTERACTION
curl --location -g --request GET 'https://gateway.api.globalfishingwatch.org/v2/4wings/interaction/1/0/0/107?date-range=2021-01-01,2021-12-31&datasets[0]=public-global-fishing-effort:latest' \
-H "Authorization: Bearer [TOKEN]"
Make sure to replace [TOKEN] with your API Access Token. If the request is successful, the response will be: fishing hours and vessel id that allow you to get more detail of a vessel by using the Vessel API
{
"total": 1,
"limit": null,
"offset": null,
"nextOffset": null,
"metadata": {},
"entries": [
[
{
"hours": 11.455833333333334,
"id": "f2134364c-c3d5-8ee9-ddd4-5511c0500a50"
},
{
"hours": 9.895000000000001,
"id": "f042d0bcf-fe96-cad5-5833-36b4aff2e87a"
},
{
"hours": 12.617222222222223,
"id": "e2d464a53-35ed-f059-c7e2-1ac76e12c9cc"
},
{
"hours": 1.238611111111111,
"id": "c88e21112-2a09-4d56-196e-ff9cb26f76c9"
},
{
"hours": 0.053055555555555564,
"id": "b8de3c8e8-84f0-ba2f-528c-ff877e2d0e9e"
},
{
"hours": 3.531944444444444,
"id": "b5d3439b6-6d19-5385-9d6b-08a0dfd60fa7"
},
{
"hours": 18.993333333333332,
"id": "ab75d8a33-3f93-62eb-0c86-38d8c742eff3"
},
{
"hours": 9.597777777777777,
"id": "a812d4320-0608-5ad0-1929-d5206eda123a"
},
{
"hours": 34.2575,
"id": "9eab37595-5bf1-471e-2e38-c070ebb00a7a"
},
{
"hours": 47.11222222222222,
"id": "9cf14ce31-144f-dda7-ded3-743bec9e41db"
},
{
"hours": 9.228888888888891,
"id": "9aed1677e-ef23-f541-58eb-8d755d410df4"
},
{
"hours": 1.6025,
"id": "784830b33-3de5-b572-61aa-bd9496643fb1"
},
{
"hours": 5.095000000000001,
"id": "70a3ff9ca-ab64-12b2-6446-34cdf14000c6"
},
{
"hours": 5.3925,
"id": "6b3129a20-009f-1741-5877-a714ea11cf2b"
},
{
"hours": 16.631666666666668,
"id": "68ab5e789-96a1-fd61-016c-92bd413a9682"
},
{
"hours": 10.718055555555555,
"id": "65aaba596-62eb-49af-910d-f7d9d47a2d06"
},
{
"hours": 9.872222222222222,
"id": "3f7c46fe4-45f8-0685-a7e5-60d531c7c352"
},
{
"hours": 8.126666666666667,
"id": "2ab8c04ff-f0e3-a3f1-7ef4-2428604174e0"
},
{
"hours": 38.58861111111111,
"id": "1abad9a58-8758-383e-8c58-6c8029ecaa44"
},
{
"hours": 10.016388888888889,
"id": "184b291b6-619c-748c-1f32-5fe46616d0dc"
},
{
"hours": 0.11166666666666666,
"id": "1738bc096-6373-5ae6-8bd0-dd31ecf6c0eb"
},
{
"hours": 2.338888888888889,
"id": "098ac6ed6-65a9-260b-fb84-8c932eb977ae"
},
{
"hours": 47.81805555555555,
"id": "050743514-4618-79b3-8643-96ada9281517"
},
{
"hours": 17.753055555555555,
"id": "04b95cb83-31d8-06e7-0845-8691696643f5"
}
]
]
}
Interaction v2 - HTTP Request
GET https://gateway.api.globalfishingwatch.org/v2/4wings/interaction/{z}/{x}/{y}/{cells}
Interaction v2 - URL Parameters
Parameter | Description | Required | Format | Param Type |
---|---|---|---|---|
z | Zoom level (from 0 to 12) | True | number | path |
x | X index (lat) of the tile | True | number | path |
y | Y index (lon) of the tile | True | number | path |
cells | Indexes of cells separated by comma Example: 107,1,2 | True | string | path |
limit | Number maximun of results Example: 10 | False | number | query |
datasets[0] | Specify the datasets that will be used to create the style. You can learn more about which are the possible datasets here. The parameters should be defined using an index, in case only one dataset is going to be sent: ?dataset[0]=xxxxx, in case of multiple datasets: ?dataset[0]=xxxxx&dataset[1]=yyyyy. Example: public-global-fishing-effort:latest | True | string | query |
filters[0] | Filters are applied to the dataset parameter with the corresponding index. For example if we want to apply a filter to dataset[0], we should apply the filter attributes to filter[0].For AIS fishing effort, the possible filters are: flag, geartype. Example: flag in ('ESP') | False | string | query |
date-range | Start date and end date to filter the data Example: 2021-01-01,2021-03-01 | False | string | query |
Create a report of a specified region - V2
EXAMPLE 1 - GENERATE FISHING EFFORT REPORT GROUPED BY YEAR AND BY CUSTOM POLYGON IN JSON FORMAT
curl --location -g --request POST 'https://gateway.api.globalfishingwatch.org/v2/4wings/report?spatial-resolution=low&temporal-resolution=yearly&group-by=flag&datasets[0]=public-global-fishing-effort:latest&date-range=2021-01-01T00:00:00.000Z,2022-01-01T00:00:00.000Z&format=json' \
-H "Authorization: Bearer [TOKEN]"
-H 'Content-Type: application/json' \
--data-raw '{"geojson":{"type":"Polygon","coordinates":[[[-76.11328125,-26.273714024406416],[-76.201171875,-26.980828590472093],[-76.376953125,-27.527758206861883],[-76.81640625,-28.30438068296276],[-77.255859375,-28.767659105691244],[-77.87109375,-29.152161283318918],[-78.486328125,-29.45873118535532],[-79.189453125,-29.61167011519739],[-79.892578125,-29.6880527498568],[-80.595703125,-29.61167011519739],[-81.5625,-29.382175075145277],[-82.177734375,-29.07537517955835],[-82.705078125,-28.6905876542507],[-83.232421875,-28.071980301779845],[-83.49609375,-27.683528083787756],[-83.759765625,-26.980828590472093],[-83.84765625,-26.35249785815401],[-83.759765625,-25.64152637306576],[-83.583984375,-25.16517336866393],[-83.232421875,-24.447149589730827],[-82.705078125,-23.966175871265037],[-82.177734375,-23.483400654325635],[-81.5625,-23.241346102386117],[-80.859375,-22.998851594142906],[-80.15625,-22.917922936146027],[-79.453125,-22.998851594142906],[-78.662109375,-23.1605633090483],[-78.134765625,-23.40276490540795],[-77.431640625,-23.885837699861995],[-76.9921875,-24.28702686537642],[-76.552734375,-24.846565348219727],[-76.2890625,-25.48295117535531],[-76.11328125,-26.273714024406416]]]}}'
Make sure to replace [TOKEN] with your API Access Token. If the request is successful, the response will be:
{
"total": 1,
"limit": null,
"offset": null,
"nextOffset": null,
"metadata": {},
"entries": [
{
"public-global-fishing-effort:v20201001": [
{
"date": "2021",
"flag": "ESP",
"hours": 0.41805555555555557,
"lat": -24.2,
"lon": -77.8,
"vesselIDs": 1
},
{
"date": "2021",
"flag": "ESP",
"hours": 0.4283333333333333,
"lat": -27.3,
"lon": -82,
"vesselIDs": 1
},
{
"date": "2021",
"flag": "ESP",
"hours": 0.27555555555555555,
"lat": -24.6,
"lon": -78.4,
"vesselIDs": 2
},
{
"date": "2021",
"flag": "ESP",
"hours": 0.9591666666666667,
"lat": -24.7,
"lon": -78.6,
"vesselIDs": 2
},
{
"date": "2021",
"flag": "ESP",
"hours": 0.034444444444444444,
"lat": -24.7,
"lon": -78.5,
"vesselIDs": 1
}
]
}
]
}
EXAMPLE 2 - GENERATE FISHING EFFORT REPORT GROUPED BY GEAR TYPE, USING EXISTING REGIONS (Russian EEZ) IN CSV FORMAT. To get details of existing regions, check Regions in the Reference data section
curl --location -g --request POST 'https://gateway.api.globalfishingwatch.org/v2/4wings/report?spatial-resolution=low&temporal-resolution=monthly&group-by=gearType&datasets[0]=public-global-fishing-effort:latest&date-range=2022-01-01,2022-05-01&format=csv' \
--header 'Authorization: Bearer [TOKEN]' \
--header 'Content-Type: application/json' \
--output 'report-grouped.json' \
--data-raw '{
"region": {
"dataset": "public-eez-areas",
"id": 5690
}
}'
Make sure to replace [TOKEN] with your API Access Token. If the request is successful, the response will be a ZIP file including the CSV file and a pdf with data considerations.
EXAMPLE 3 - GENERATE REPORT WITH TOTAL FISHING HOURS PER LAT/LON GRID CELL USING EXISTING REGIONS (MPA Dorsal de Nasca) IN JSON FORMAT. To get details of existing regions, check Regions in the Reference data section
curl --location -g --request POST 'https://gateway.api.globalfishingwatch.org/v2/4wings/report?spatial-resolution=low&temporal-resolution=entire&spatial-aggregation=false&datasets[0]=public-global-fishing-effort:latest&date-range=2022-05-01,2022-12-01&format=json'\
--header 'Authorization: Bearer [TOKEN]' \
--header 'Content-Type: application/json' \
--output 'report-grouped.json' \
--data-raw '{
"region": {
"dataset": "public-mpa-all",
"id": 555745302
}
}'
Make sure to replace [TOKEN] with your API Access Token. If the request is successful, the response will be:
{
"total": 1,
"limit": null,
"offset": null,
"nextOffset": null,
"metadata": {},
"entries": [
{
"public-global-fishing-effort:v20201001": [
{
"date": "2022-05-01,2022-12-01",
"hours": 2.9250000000000003,
"lat": -15.7,
"lon": -76.7
},
{
"date": "2022-05-01,2022-12-01",
"hours": 1.2999999999999998,
"lat": -15.2,
"lon": -77.5
},
{
"date": "2022-05-01,2022-12-01",
"hours": 2.069166666666667,
"lat": -15.7,
"lon": -76.8
},
{
"date": "2022-05-01,2022-12-01",
"hours": 0.9936111111111111,
"lat": -15.8,
"lon": -77.5
},
{
"date": "2022-05-01,2022-12-01",
"hours": 2.3311111111111114,
"lat": -15.6,
"lon": -77.2
},
{
"date": "2022-05-01,2022-12-01",
"hours": 2.0277777777777777,
"lat": -15.7,
"lon": -76.6
},
{
"date": "2022-05-01,2022-12-01",
"hours": 0.8758333333333334,
"lat": -15.8,
"lon": -76.6
},
{
"date": "2022-05-01,2022-12-01",
"hours": 3.988888888888889,
"lat": -16,
"lon": -76.3
},
{
"date": "2022-05-01,2022-12-01",
"hours": 1.0811111111111111,
"lat": -15.5,
"lon": -77.3
},
{
"date": "2022-05-01,2022-12-01",
"hours": 0.6916666666666667,
"lat": -14.9,
"lon": -76.9
},
{
"date": "2022-05-01,2022-12-01",
"hours": 9.885555555555555,
"lat": -15.1,
"lon": -77.6
},
{
"date": "2022-05-01,2022-12-01",
"hours": 2.058611111111111,
"lat": -15.3,
"lon": -77.3
},
{
"date": "2022-05-01,2022-12-01",
"hours": 1.7366666666666668,
"lat": -17.5,
"lon": -77.9
},
{
"date": "2022-05-01,2022-12-01",
"hours": 1.17,
"lat": -15.9,
"lon": -76.3
},
{
"date": "2022-05-01,2022-12-01",
"hours": 3.750277777777778,
"lat": -15,
"lon": -77
},
{
"date": "2022-05-01,2022-12-01",
"hours": 4.2636111111111115,
"lat": -15.9,
"lon": -77.3
},
{
"date": "2022-05-01,2022-12-01",
"hours": 1.0566666666666669,
"lat": -15.9,
"lon": -76.2
},
{
"date": "2022-05-01,2022-12-01",
"hours": 0.7,
"lat": -15.8,
"lon": -77.6
},
{
"date": "2022-05-01,2022-12-01",
"hours": 1.3966666666666665,
"lat": -15,
"lon": -77.2
},
{
"date": "2022-05-01,2022-12-01",
"hours": 1.2666666666666666,
"lat": -15.7,
"lon": -77.5
},
{
"date": "2022-05-01,2022-12-01",
"hours": 0.8836111111111112,
"lat": -17.6,
"lon": -77.8
},
{
"date": "2022-05-01,2022-12-01",
"hours": 1.6336111111111113,
"lat": -15.4,
"lon": -76.9
},
{
"date": "2022-05-01,2022-12-01",
"hours": 3.7730555555555556,
"lat": -15.9,
"lon": -77.4
},
{
"date": "2022-05-01,2022-12-01",
"hours": 2.056944444444444,
"lat": -17.5,
"lon": -77.8
},
{
"date": "2022-05-01,2022-12-01",
"hours": 3.3041666666666667,
"lat": -16,
"lon": -76.4
},
{
"date": "2022-05-01,2022-12-01",
"hours": 4.950277777777777,
"lat": -15.1,
"lon": -76.9
},
{
"date": "2022-05-01,2022-12-01",
"hours": 11.073611111111111,
"lat": -15.5,
"lon": -76.7
},
{
"date": "2022-05-01,2022-12-01",
"hours": 2.269722222222222,
"lat": -16.1,
"lon": -76.3
},
{
"date": "2022-05-01,2022-12-01",
"hours": 2.401111111111111,
"lat": -15.6,
"lon": -76.7
},
{
"date": "2022-05-01,2022-12-01",
"hours": 0.24166666666666664,
"lat": -16.2,
"lon": -76.5
},
{
"date": "2022-05-01,2022-12-01",
"hours": 0.5788888888888889,
"lat": -16,
"lon": -77
},
{
"date": "2022-05-01,2022-12-01",
"hours": 6.835277777777778,
"lat": -16.1,
"lon": -76.2
},
{
"date": "2022-05-01,2022-12-01",
"hours": 1.1025000000000003,
"lat": -15.5,
"lon": -76.8
},
{
"date": "2022-05-01,2022-12-01",
"hours": 1.0766666666666667,
"lat": -16.5,
"lon": -76.1
},
{
"date": "2022-05-01,2022-12-01",
"hours": 0.9891666666666667,
"lat": -15.4,
"lon": -76.8
},
{
"date": "2022-05-01,2022-12-01",
"hours": 1.395,
"lat": -15.5,
"lon": -77.6
},
{
"date": "2022-05-01,2022-12-01",
"hours": 6.915277777777777,
"lat": -15.9,
"lon": -77.2
},
{
"date": "2022-05-01,2022-12-01",
"hours": 6.261944444444444,
"lat": -16.2,
"lon": -76
},
{
"date": "2022-05-01,2022-12-01",
"hours": 1.3144444444444443,
"lat": -15.1,
"lon": -77
},
{
"date": "2022-05-01,2022-12-01",
"hours": 0.20166666666666666,
"lat": -15.5,
"lon": -76.6
},
{
"date": "2022-05-01,2022-12-01",
"hours": 0.10583333333333333,
"lat": -15.6,
"lon": -76.8
},
{
"date": "2022-05-01,2022-12-01",
"hours": 1.2480555555555557,
"lat": -15.3,
"lon": -77.8
}
]
}
]
}
Report v2 - HTTP Request
POST https://gateway.api.globalfishingwatch.org/v2/4wings/report
EXAMPLE 429 ERROR RESPONSE
{
"statusCode": 429,
"error": "Too Many Requests",
"messages": [
{
"title": "Too Many Requests",
"detail": "Your application token is not currently enabled to perform more than one concurrent report. If you need to generate more than one report concurrently, contact us at [email protected]",
"metadata": {
"currentReportBody": {
"geojson": null,
"region": {
"dataset": "public-mpa-all",
"id": "555635930"
}
},
"currentReportUrl": "/v2/4wings/report?format=csv&datasets%5B0%5D=public-global-fishing-effort%3Av20201001&date-range=2023-05-01T00%3A00%3A00.000Z%2C2023-06-01T00%3A00%3A00.000Z&spatial-aggregation=true&temporal-resolution=entire&group-by=vessel_id"
}
}
]
}
Report v2 - Examples
On the right side, you can find 3 examples:
- Example 1 - Generate fishing effort report grouped By Year and by Custom Polygon In JSON Format
- Example 2 - Generate fishing effort report grouped By Gear Type, Using existing Regions (Russian Eez) In CSV Format.
- Example 3 - Generate report with total fishing hours per Lat/Lon grid cell (no grouping) using existing Regions (MPA Dorsal De Nasca) In JSON Format
Report v2 - URL Parameters
Parameter | Description | Required | Format | Param Type |
---|---|---|---|---|
spatial-resolution | Low means at 10th degree resolution and High means at 100th degree resolution. Only required if spatial-aggregation is false or it's not sent. Example: low | False | Enum: ['low', 'high'] | query |
format | As result you get a zip file that contains caveat information and also the actual file including the results that could be in different results. Example: csv | True | Enum: ['csv', 'tif', 'json'] | query |
group-by | The report data can be grouped by different criteria, for example a csv by vessel_id means that you get on row for each vessel id. Only required when spatial-aggregation is True. Example: vessel_id | False | Enum: ['vessel_id', 'flag', 'gearType', 'flagAndGearType', 'mmsi'] | query |
temporal-resolution | You can decide the level of detail regarding time. For example if you request csv, group by vessel_id and daily, you get one row per vessel id per day, or if you request csv, group by vessel_id and entire, you get one row per vessel id. Example: yearly | True | Enum: ['hourly', 'daily', 'monthly', 'yearly','entire'] | query |
datasets[0] | Specify the datasets that will be used to create the style. You can learn more about which are the possible datasets here. The parameters should be defined using an index, in case only one dataset is going to be sent: ?dataset[0]=xxxxx, in case of multiple datasets: ?dataset[0]=xxxxx&dataset[1]=yyyyy. Example: public-global-fishing-effort:latest | True | string | query |
filters[0] | Filters are applied to the dataset parameter with the corresponding index. For example if we want to apply a filter to dataset[0], we should apply the filter attributes to filter[0].For AIS fishing effort, the possible filters are: flag, geartype. Example: flag in ('ESP') | False | string | query |
date-range | Start date and end date to filter the data. Maximum 366 days. Example: 2021-01-01,2021-03-01 | False | string | query |
spatial-aggregation | Aggregates spatially the data in the report. With value true, the formats supported are only csv and json. Example: True | False | boolean | query |
Report v2 - Body
Key | Description | Required | Format | Param Type |
---|---|---|---|---|
geojson | Geometry to filter the data in GeoJSON format | False | object | body |
region | Object with region information (To get details of existing regions, check Regions in the Reference data section) | False | object | body |
region.dataset | Id of the dataset to obtain the region (example: public-eez-areas) | False | string | body |
region.id | Id of the region (example: 5690) | False | string | body |
This endpoint only supports
geojson
orregion
object in the same request.
Statistics on fishing activity worldwide - V2
EXAMPLE 1 - GET WORLDWIDE STATS RELATED TO FISHING EFFORT FOR A TIME PERIOD WITH NO FILTER
curl --location -g --request GET 'https://gateway.api.globalfishingwatch.org/v2/4wings/stats/?datasets[0]=public-global-fishing-effort:latest&fields=flags,vessel-ids,activity-hours&date-range=2022-10-22,2023-01-22' \
-H 'Authorization: Bearer {access-token}'
Make sure to replace [TOKEN] with your API Access Token. If the request is successful, the response will be:
[
{
"activityHours": 15893604.112467173,
"flags": 181,
"maxLat": 81.58017,
"maxLon": 179.99969333333334,
"minLat": -76.05226666666667,
"minLon": -179.99952333333334,
"vesselIds": 51236
}
]
EXAMPLE 2 - GET WORLDWIDE STATS RELATED TO FISHING EFFORT FOR A TIME PERIOD WITH GEAR TYPE FILTER
curl --location -g --request GET 'https://gateway.api.globalfishingwatch.org/v2/4wings/stats/?datasets[0]=public-global-fishing-effort:latest&fields=flags,vessel-ids,activity-hours&date-range=2022-10-22,2023-01-22&filters[0]=geartype in ("tuna_purse_seines","driftnets")' \
-H 'Authorization: Bearer {access-token}'
Make sure to replace [TOKEN] with your API Access Token. If the request is successful, the response will be:
[
{
"activityHours": 100793.99916805542,
"flags": 60,
"maxLat": 64.15896833333333,
"maxLon": 179.993765,
"minLat": -43.90320833333333,
"minLon": -179.98104999999998,
"vesselIds": 589
}
]
Get statistics worldwide
Stats v2 - HTTP Request
GET /v2/4wings/stats
Stats v2 - Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
fields | query | string | false | Statitics fields (separated by comma). For AIS fishing effort, available fields are: flags, vessel-ids, activity-hours |
vessel-groups[0] | query | string | false | Vessel group ids to filter (separated by comma). Vessel groups applied at dataset with index 0. At the same as datasets, this query param could be send with different index to apply filters to other datasets. |
datasets[0] | query | string | true | Specify the datasets that will be used to create the style. You can learn more about which are the possible datasets here. The parameters should be defined using an index, in case only one dataset is going to be sent: ?dataset[0]=xxxxx, in case of multiple datasets: ?dataset[0]=xxxxx&dataset[1]=yyyyy |
filters[0] | query | string | false | Filters are applied to the dataset parameter with the corresponding index. For example if we want to apply a filter to dataset[0], we should apply the filter attributes to filter[0].For AIS fishing effort, the possible filters are: flag, geartype |
date-range | query | string | false | Start date and end date to filter the data |
Example responses
200 Response
[
{
"activityHours": 0,
"flags": 0,
"maxLat": 0,
"maxLon": 0,
"minLat": 0,
"minLon": 0,
"vesselIds": 0
}
]
Stats v2 - Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK. | Stats response | StatsResponse |
401 | Unauthorized. | No Unauthorized. | Error Codes |
403 | Forbidden | You do not have permissions to do the action. | Error Codes |
422 | Unprocessable Entity | Unprocessable Entity. Validation error. | Error Codes |
429 | Too Many Requests | Too Many Request. | Error Codes |
503 | Service Unavailable | Service Unavailable. | Error Codes |
Vessels API - V2
Introduction Vessels API - V2
Vessels API allows you to search for vessels and get vessel identity details. You can:
- Search for AIS fishing vessels, carriers and purse seine support vessels
- Get identity details based on AIS self reported data. Check more detail about data caveats here.
Basic Search - V2
SEARCH ANY VESSEL BY MMSI = 224224000
curl --location --request GET 'https://gateway.api.globalfishingwatch.org/v2/vessels/search?query=224224000&datasets=public-global-support-vessels:latest,public-global-carrier-vessels:latest,public-global-fishing-vessels:latest&limit=10&offset=0' \
-H "Authorization: Bearer [TOKEN]"
Make sure to replace [TOKEN] with your API Access Token. If the request is successful, the response will be:
{
"metadata": {
"query": "224224000",
"suggestion": null,
"field": "shipname"
},
"total": 1,
"limit": 10,
"offset": 0,
"nextOffset": null,
"entries": [
{
"callsign": "EBSJ",
"firstTransmissionDate": "2015-10-13T15:47:16Z",
"flag": "ESP",
"geartype": null,
"id": "3c99c326d-dd2e-175d-626f-a3c488a4342b",
"imo": "8733445",
"lastTransmissionDate": "2019-10-15T12:10:51Z",
"mmsi": "224224000",
"msgCount": 1887249,
"posCount": 73677,
"shipname": "AGURTZA BERRIA",
"source": "AIS",
"vesselType": "Purse Seine Support",
"years": [2015, 2016, 2017, 2018, 2019],
"dataset": "public-global-support-vessels:v20201001",
"score": 29.100689
}
]
}
This endpoint searches for a vessel given a free form query. The query will be matched against any identifiers for the vessel, and a paginated, ranked results list will be returned. It allows you to perform a basic search of a vessel by sending some identifier, for example: MMSI, IMO, CALL SIGN,Shipname, etc.
Basic search v2 - HTTP Request
GET https://gateway.api.globalfishingwatch.org/v2/vessels/search
Basic search v2 - URL Parameters
Parameter | Description | Required | Format | Param Type |
---|---|---|---|---|
limit | Amount of search results to return. Example: 10 | True | number | query |
offset | 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 OR you don’t send it, 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. Example: 5 | True | number | query |
datasets | Specify the datasets that will be used to search the vessel. You can learn more about which are the possible datasets here. You can send several datasets separated by comma. Example: public-global-fishing-vessels:latest,public-global-carrier-vessels:latest | True | string | query |
query | Free form query that allows you to search a vessel by sending some identifier, for example: MMSI, IMO, CALL SIGN,Shipname, etc. Identifier depends on the dataset. You can send one character length but we recommend sending at least 3 characters. Example: Don tito | True | string | query |
binary | If the response should be in binary format (proto buffer) or not. It is useful if you want to improve the performance of your platform. A decoder is needed to transform the response. Default is False. Example: True | False | boolean | query |
suggest-field | Field for suggestion. The list of fields to suggest depend on the dataset Example: shipname | False | string | query |
query-fields | List of fields to match with the search query instead of the entire object property. The list of query fields depend on the dataset (separated by comma) Example: shipname,mmsi | False | string | query |
Advanced Search - V2
SEARCH ANY VESSEL BY MMSI AND IMO AND A VESSEL NAME
curl --location --request GET 'https://gateway.api.globalfishingwatch.org/v2/vessels/advanced-search?datasets=public-global-carrier-vessels:latest,public-global-fishing-vessels:latest,public-global-support-vessels:latest&query=shipname%20LIKE%20%27%25GABU%20REEFE%25%27%20OR%20imo%20%3D%20%278300949%27&limit=1&offset=0' \
-H "Authorization: Bearer [TOKEN]"
Make sure to replace [TOKEN] with your API Access Token. If the request is successful, the response will be:
{
"metadata": {
"query": "shipname LIKE '%GABU REEFE%' OR imo = '8300949'"
},
"total": 3,
"limit": 1,
"offset": 1,
"nextOffset": 1,
"entries": [
{
"callsign": "ER2732",
"firstTransmissionDate": "2019-02-22T21:46:13Z",
"flag": "MDA",
"geartype": null,
"id": "0b7047cb5-58c8-6e63-4bfd-96a6af515c91",
"imo": "8300949",
"lastTransmissionDate": "2022-02-17T14:08:20Z",
"mmsi": "214182732",
"msgCount": 70035084,
"posCount": 378287,
"shipname": "GABU REEFER",
"source": "AIS",
"vesselType": "Carrier",
"years": [2019, 2020, 2021, 2022],
"dataset": "public-global-carrier-vessels:v20201001",
"score": 7.6147256
}
]
}
This endpoint allows you to perform an advanced search by creating a query like shipname LIKE '%GABU REEFE%' OR imo = '8300949
. Where you can combine several fields, for example: id (vessel id), callsign, flag, imo, mmsi, shipname, normalized_shipname, lastTransmissionDate and firstTransmissionDate.
Advanced search v2 - HTTP Request
GET https://gateway.api.globalfishingwatch.org/v2/vessels/advanced-search
Advanced search v2 - URL Parameters
Parameter | Description | Required | Format | Param Type |
---|---|---|---|---|
limit | Amount of search results to return. Example: 10 | True | number | query |
offset | 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 OR you don’t send it, 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. Example: 5 | True | number | query |
datasets | Specify the datasets that will be used to search the vessel. You can learn more about which are the possible datasets here. You can send several datasets separated by comma. Example: public-global-fishing-vessels:latest,public-global-carrier-vessels:latest | True | string | query |
query | Advanced query that allows you to search a vessel by sending several identifiers. The list of identifiers depends on the dataset. You can combine logic operators like AND, OR, LIKE, >= , <. Example: (shipname LIKE '%SEIN PHOENIX%' OR mmsi = '441618000' OR imo = '9047271' OR callsign='D8SP') AND lastTransmissionDate >= '2021-05-29' AND firstTransmissionDate <= '2021-08-29' AND flag = 'KOR' | True | string | query |
Get list of vessels filtered by ids - V2
GET DETAILS OF TWO FISHING VESSELS AND ONE CARRIER
curl --location --request GET 'https://gateway.api.globalfishingwatch.org/v2/vessels?datasets=public-global-fishing-vessels:latest,public-global-carrier-vessels:latest,public-global-support-vessels:latest&ids=8c7304226-6c71-edbe-0b63-c246734b3c01,6583c51e3-3626-5638-866a-f47c3bc7ef7c,71e7da672-2451-17da-b239-857831602eca' \
-H "Authorization: Bearer [TOKEN]"
Make sure to replace [TOKEN] with your API Access Token. If the request is successful, the response will be:
{
"metadata": {},
"total": 3,
"limit": null,
"offset": null,
"nextOffset": null,
"entries": [
{
"callsign": "DTBY3",
"firstTransmissionDate": "2013-09-02T03:59:51Z",
"flag": "KOR",
"geartype": "tuna_purse_seines",
"id": "6583c51e3-3626-5638-866a-f47c3bc7ef7c",
"imo": "891948900",
"lastTransmissionDate": "2022-06-24T06:15:01Z",
"mmsi": "441734000",
"msgCount": 3466294,
"posCount": 196191,
"shipname": "ADRIA",
"source": "AIS",
"vesselType": "Fishing",
"years": [2013, 2014, 2015, 2017, 2020],
"dataset": "public-global-fishing-vessels:v20201001"
},
{
"callsign": "DUQA-7",
"firstTransmissionDate": "2017-02-15T05:54:53Z",
"flag": "PHL",
"geartype": "tuna_purse_seines",
"id": "71e7da672-2451-17da-b239-857831602eca",
"imo": "8118322",
"lastTransmissionDate": "2019-08-09T05:56:14Z",
"mmsi": "548012100",
"msgCount": 1967237,
"posCount": 105523,
"shipname": "JOHN REYNALD",
"source": "AIS",
"vesselType": "Fishing",
"years": [2017, 2018, 2019],
"dataset": "public-global-fishing-vessels:v20201001"
},
{
"callsign": "5BWC3",
"firstTransmissionDate": "2013-05-15T20:18:31Z",
"flag": "CYP",
"geartype": null,
"id": "8c7304226-6c71-edbe-0b63-c246734b3c01",
"imo": "9076260",
"lastTransmissionDate": "2022-07-10T23:57:22Z",
"mmsi": "210631000",
"msgCount": 132125326,
"posCount": 825764,
"shipname": "FRIO FORWIN",
"source": "AIS",
"vesselType": "Carrier",
"years": [2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022],
"dataset": "public-global-carrier-vessels:v20201001"
}
]
}
After you perform a Basic or an Advanced Search, you get the vessel id, for example 58cf536b1-1fca-dac3-ad31-7411a3708dcd
. You can use this endpoint to get the details of a list of specific vessel ids.
Get by ids v2 - HTTP Request
GET https://gateway.api.globalfishingwatch.org/v2/vessels
Get by ids v2 - URL Parameters
Parameter | Description | Required | Format | Param Type |
---|---|---|---|---|
datasets | Specify the datasets that will be used to search the vessel. You can learn more about which are the possible datasets here. You can send several datasets separated by comma. Example: public-global-fishing-vessels:latest,public-global-carrier-vessels:latest | True | string | query |
ids | List of vessel ids separated by comma. You can get this information using the search endpoints Example: 6583c51e3-3626-5638-866a-f47c3bc7ef7c | True | string | query |
binary | If the response should be in binary format (proto buffer) or not. It is useful if you want to improve the performance of your platform. A decoder is needed to transform the response. Default is False. Example: True | False | boolean | query |
Get vessel by id - V2
GET DETAILS OF ONE VESSEL
curl --location --request GET 'https://gateway.globalfishingwatch.org/v2/vessels/8c7304226-6c71-edbe-0b63-c246734b3c01?datasets=public-global-carrier-vessels:latest' \\
-H "Authorization: Bearer [TOKEN]"
Make sure to replace [TOKEN] with your API Access Token. If the request is successful, the response will be:
{
"callsign": "5BWC3",
"firstTransmissionDate": "2013-05-15T20:18:31Z",
"flag": "CYP",
"geartype": null,
"id": "8c7304226-6c71-edbe-0b63-c246734b3c01",
"imo": "9076260",
"lastTransmissionDate": "2022-07-10T23:57:22Z",
"mmsi": "210631000",
"msgCount": 132125326,
"posCount": 825764,
"shipname": "FRIO FORWIN",
"source": "AIS",
"vesselType": "Carrier",
"years": [2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022],
"dataset": "public-global-carrier-vessels:v20201001"
}
After you perform a Basic or an Advanced Search, you get the vessel id, for example 58cf536b1-1fca-dac3-ad31-7411a3708dcd
. You can use this endpoint to get the details of ONE vessel id.
Get by id v2 - HTTP Request
GET https://gateway.api.globalfishingwatch.org/v2/vessels/{vesselId}
Get by id v2 - URL Parameters
Parameter | Description | Required | Format | Param Type |
---|---|---|---|---|
vesselId | Example: 6583c51e3-3626-5638-866a-f47c3bc7ef7c | True | string | path |
datasets | Specify the dataset that will be used to search the vessel. You can learn more about which are the possible datasets here. You can send only one dataset. Example: public-global-fishing-vessels:latest | True | string | query |
Events API - V2
Introduction Events API - V2
Events API allows you to explore different activities of a vessel. You can analyze:
- apparent fishing events
- encounters between vessel types fishing-carrier
- loitering
- port visits
Check more detail about data caveats here.
Get All Events (GET endpoint) - V2
GET FISHING EVENTS
curl --location --request GET 'https://gateway.api.globalfishingwatch.org/v2/events?vessels=9b3e9019d-d67f-005a-9593-b66b997559e5&datasets=public-global-fishing-events:latest&start-date=2017-01-01&end-date=2017-01-31&limit=1&offset=0' \
-H "Authorization: Bearer [TOKEN]"
Make sure to replace [TOKEN] with your API Access Token. If the request is successful, the response will be:
{
"metadata": {
"datasets": ["public-global-fishing-events:v20201001"],
"vessels": ["9b3e9019d-d67f-005a-9593-b66b997559e5"],
"dateRange": {
"from": "2017-01-01",
"to": "2017-01-31"
},
"encounterTypes": []
},
"total": 10,
"nextOffset": 1,
"offset": 0,
"limit": 1,
"entries": [
{
"id": "718a4d93c16f78d9a54e9bc56d20c7e0",
"type": "fishing",
"start": "2017-01-18T23:56:16.000Z",
"end": "2017-01-19T03:42:27.000Z",
"position": {
"lat": -46.1538,
"lon": -63.2245
},
"regions": {
"mpa": [],
"eez": [8466],
"rfmo": ["ICCAT"]
},
"boundingBox": [
-63.21452500000001, -46.1618533333, -63.23098, -46.1495283333
],
"distances": {
"startDistanceFromShoreKm": 221,
"endDistanceFromShoreKm": 220,
"startDistanceFromPortKm": 242.616953,
"endDistanceFromPortKm": 240.71707800000001
},
"vessel": {
"id": "9b3e9019d-d67f-005a-9593-b66b997559e5",
"name": "CLAUDINA",
"ssvid": "701000948"
},
"fishing": {
"totalDistanceKm": 2.1365631888840078,
"averageSpeedKnots": 0.49600001274,
"averageDurationHours": 0.15707175925925926
}
}
]
}
GET ENCOUNTER EVENTS
curl --location --request GET 'https://gateway.api.globalfishingwatch.org/v2/events?datasets=public-global-encounters-events:latest&vessels=8c7304226-6c71-edbe-0b63-c246734b3c01&limit=1&offset=0' \
-H "Authorization: Bearer [TOKEN]"
Make sure to replace [TOKEN] with your API Access Token. If the request is successful, the response will be:
{
"metadata": {
"datasets": ["public-global-encounters-events:v20201001"],
"vessels": ["8c7304226-6c71-edbe-0b63-c246734b3c01"],
"dateRange": {
"from": null,
"to": null
},
"encounterTypes": [
"fishing-carrier",
"fishing-support",
"carrier-fishing",
"support-fishing"
]
},
"total": 2,
"nextOffset": 1,
"offset": 0,
"limit": 1,
"entries": [
{
"id": "da55e5723374f99f91887d4f51256d5a.2",
"type": "encounter",
"start": "2016-07-23T00:00:00.000Z",
"end": "2016-07-23T11:50:00.000Z",
"position": {
"lat": 72.0866,
"lon": 8.0857
},
"regions": {
"mpa": [],
"eez": [],
"rfmo": ["ICCAT"]
},
"boundingBox": [
8.085723348900002, 72.0865557573, 8.085723348900002, 72.0865557573
],
"distances": {
"startDistanceFromShoreKm": 426,
"endDistanceFromShoreKm": 426,
"startDistanceFromPortKm": 425.01421899999997,
"endDistanceFromPortKm": 425.01421899999997
},
"vessel": {
"id": "8c7304226-6c71-edbe-0b63-c246734b3c01",
"flag": "CYP",
"name": "FRIO FORWIN",
"type": "carrier",
"ssvid": "210631000"
},
"encounter": {
"vessel": {
"id": "208659960-0142-40c1-339a-c816edcab44b",
"flag": "RUS",
"name": "FORPOST",
"type": "fishing",
"ssvid": "273355780"
},
"medianDistanceKilometers": 0.065,
"medianSpeedKnots": 0.5,
"type": "carrier-fishing"
}
}
]
}
GET LOITERING EVENTS
curl --location --request GET 'https://gateway.api.globalfishingwatch.org/v2/events?datasets=public-global-loitering-events-carriers:latest&vessels=8c7304226-6c71-edbe-0b63-c246734b3c01&limit=1&offset=0' \
-H "Authorization: Bearer [TOKEN]"
Make sure to replace [TOKEN] with your API Access Token. If the request is successful, the response will be:
{
"metadata": {
"datasets": ["public-global-loitering-events-carriers:v20201001"],
"vessels": ["8c7304226-6c71-edbe-0b63-c246734b3c01"],
"dateRange": {
"from": null,
"to": null
},
"encounterTypes": []
},
"total": 107,
"nextOffset": 1,
"offset": 0,
"limit": 1,
"entries": [
{
"id": "9991a9e4b2ee7313c33f5263308d045c",
"type": "loitering",
"start": "2013-06-12T11:40:09.000Z",
"end": "2013-06-12T12:01:09.000Z",
"position": {
"lat": 32.2075,
"lon": -13.9346
},
"regions": {
"mpa": [],
"eez": [8363],
"rfmo": ["ICCAT"]
},
"boundingBox": [-13.9335216667, 32.2104016667, -13.9357016667, 32.20455],
"distances": {
"startDistanceFromShoreKm": 239,
"endDistanceFromShoreKm": 239,
"startDistanceFromPortKm": 242.068016,
"endDistanceFromPortKm": 241.65545300000002
},
"vessel": {
"id": "8c7304226-6c71-edbe-0b63-c246734b3c01",
"name": "FRIO FORWIN",
"type": "carrier",
"ssvid": "210631000"
},
"loitering": {
"totalTimeHours": 0.35,
"totalDistanceKm": 0.6822365329451406,
"averageSpeedKnots": 1.0525093072279246,
"averageDistanceFromShoreKm": 239.00000000000003
}
}
]
}
GET PORT VISITS
curl --location --request GET 'https://gateway.api.globalfishingwatch.org/v2/events?datasets=public-global-port-visits-c2-events:latest&vessels=914f83946-6af4-04c6-4974-44a203a87952&limit=1&offset=0' \
-H "Authorization: Bearer [TOKEN]"
Make sure to replace [TOKEN] with your API Access Token. If the request is successful, the response will be:
{
"metadata": {
"datasets": ["public-global-port-visits-c2-events:v20201001"],
"vessels": ["914f83946-6af4-04c6-4974-44a203a87952"],
"dateRange": {
"from": null,
"to": null
},
"encounterTypes": []
},
"total": 63,
"nextOffset": 1,
"offset": 0,
"limit": 1,
"entries": [
{
"id": "a7b8b2f40b75ea6bec8bc8dbcb56741e",
"type": "port_visit",
"start": "2014-04-15T20:09:21.000Z",
"end": "2014-04-28T12:15:34.000Z",
"position": {
"lat": 42.2182,
"lon": -8.7915
},
"regions": {
"mpa": ["348806", "555557037", "555583119", "555593050"],
"eez": [5693],
"rfmo": ["ICCAT"]
},
"boundingBox": [
-8.7508320328, 42.2291383982, -8.8819075644, 42.2035438605
],
"distances": {
"startDistanceFromShoreKm": 0,
"endDistanceFromShoreKm": 2,
"startDistanceFromPortKm": 0,
"endDistanceFromPortKm": 0
},
"vessel": {
"id": "914f83946-6af4-04c6-4974-44a203a87952",
"name": "IRENE",
"ssvid": "355794000"
},
"port_visit": {
"visitId": "f5fafee33631a3948c8e2042b5810cdc",
"confidence": 3,
"durationHrs": 304.1036111111111,
"startAnchorage": {
"id": "esp-cangas",
"lat": 42.229138398208576,
"lon": -8.750832032773074,
"flag": "ESP",
"name": "CANGAS",
"at_dock": true,
"anchorage_id": "0d2f61f7",
"top_destination": "VIGO",
"distance_from_shore_km": 0
},
"intermediateAnchorage": {
"id": "esp-cangas",
"lat": 42.229138398208576,
"lon": -8.750832032773074,
"flag": "ESP",
"name": "CANGAS",
"at_dock": true,
"anchorage_id": "0d2f61f7",
"top_destination": "VIGO",
"distance_from_shore_km": 0
},
"endAnchorage": {
"id": "esp-vigo",
"lat": 42.20354386049306,
"lon": -8.881907564441319,
"flag": "ESP",
"name": "VIGO",
"at_dock": false,
"anchorage_id": "0d25f581",
"top_destination": "VIGO",
"distance_from_shore_km": 2
}
}
}
]
}
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 between carriers and fishing vessels, use
public-global-loitering-events-carriers:latest
- For port visits, use
public-global-port-visits-c2-events:latest
Events GET v2 - HTTP Request
GET https://gateway.api.globalfishingwatch.org/v2/events
Events GET v2 - URL Parameters
Parameter | Description | Required | Format | Param Type |
---|---|---|---|---|
limit | Amount of search results to return. Example: 10 | True | number | query |
offset | 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 OR you don’t send it, 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. Example: 5 | True | number | query |
sort | Property used to sort using a property. The list of possible values depends on the dataset. Before the property you can use ‘+’ or ‘-’ and based on that prefix, you can decide if it will be sort ascending + (ASC) or descending - (DESC).Example: -start | False | Enum: ['+start', '-start', '+end', '-end'] | query |
datasets | Specify the datasets that will be used to search the vessel. You can learn more about which are the possible datasets here. You can send several datasets separated by comma. Example: public-global-fishing-events:latest,public-global-encounter-events:latest | True | string | query |
vessels | List of vessel ids separated by comma. You can get this information using the search endpoints Example: 8c7304226-6c71-edbe-0b63-c246734b3c01,6583c51e3-3626-5638-866a-f47c3bc7ef7c | False | string | query |
types | Event types separated by comma. Possible values: port,encounter,loitering,gap,port_visit Example: fishing | False | string | query |
start-date | Start date in format YYYY-MM-DD of the start date of the event (inclusive). Filter the events that their end date is greater or equal than the start date filter. Example: 2020-01-01 | False | string | query |
end-date | End date in format YYYY-MM-DD of the end date of the event (exclusive). Filter the events that their start date is less than the end date filter. Example: 2020-02-01 | False | string | query |
include-regions | 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. Example: True | False | boolean | query |
confidences | 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 Example: 3,4 | False | string | query |
encounter-types | Possible values: carrier-fishing, fishing-carrier, fishing-support, support-fishing Example: carrier-fishing,fishing-carrier | False | string | query |
Get All Events (POST endpoint) - V2
EXAMPLE 1 - GET FISHING EVENTS
curl --location --request POST 'https://gateway.api.globalfishingwatch.org/v2/events?offset=0&limit=1' \
--header 'Authorization: Bearer [TOKEN]' \
--header 'Content-Type: application/json' \
--data-raw '{
"datasets": [ "public-global-fishing-events:latest"],
"startDate": "2017-01-01",
"endDate": "2017-01-31",
"flags": ["CHN"],
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
120.36621093749999,
26.725986812271756
],
[
122.36572265625,
26.725986812271756
],
[
122.36572265625,
28.323724553546015
],
[
120.36621093749999,
28.323724553546015
],
[
120.36621093749999,
26.725986812271756
]
]
]
}
}'
Make sure to replace [TOKEN] with your API Access Token. If the request is successful, the response will be:
{
"metadata": {
"datasets": ["public-global-fishing-events:v20201001"],
"dateRange": {
"from": "2017-01-01",
"to": "2017-01-31"
},
"encounterTypes": [],
"flags": ["CHN"],
"geometry": {
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry": {
"type": "Polygon",
"coordinates": [
[
[120.36621093749999, 26.725986812271756],
[122.36572265625, 26.725986812271756],
[122.36572265625, 28.323724553546015],
[120.36621093749999, 28.323724553546015],
[120.36621093749999, 26.725986812271756]
]
]
}
}
]
}
},
"total": 1774,
"nextOffset": 1,
"offset": 0,
"limit": 1,
"entries": [
{
"id": "dc0e88984dd9106fe1e1d2151da6d4ec",
"type": "fishing",
"start": "2017-01-01T00:00:45.000Z",
"end": "2017-01-01T00:56:45.000Z",
"position": {
"lat": 27.2241,
"lon": 121.742
},
"regions": {
"mpa": [],
"eez": ["8486"],
"rfmo": ["WCPFC", "ACAP", "APFIC", "IWC"],
"fao": ["61"],
"major_fao": ["61"],
"eez12nm": []
},
"boundingBox": [
121.7405466667, 27.1961733333, 121.7431733333, 27.2491533333
],
"distances": {
"startDistanceFromShoreKm": 68,
"endDistanceFromShoreKm": 66,
"startDistanceFromPortKm": 46.575801,
"endDistanceFromPortKm": 41.298395
},
"vessel": {
"id": "4d8d5aded-d958-b88b-4ccb-3e8542670060",
"flag": "CHN",
"name": "ZHERUIYU02109",
"type": "fishing",
"ssvid": "412431417"
},
"fishing": {
"totalDistanceKm": 17.691522682956926,
"averageSpeedKnots": 3.3749999999999996,
"averageDurationHours": 0.3111111111111111
}
}
]
}
EXAMPLE 2 - GET ENCOUNTER EVENTS
curl --location --request POST 'https://gateway.api.globalfishingwatch.org/v2/events?offset=0&limit=1' \
--header 'Authorization: Bearer [TOKEN]' \
--header 'Content-Type: application/json' \
--data-raw '{
"datasets": [ "public-global-encounters-events:latest"],
"startDate": "2017-01-01",
"endDate": "2017-01-31",
"vessels": ["55d38c0ee-e0d7-cb32-ac9c-8b3680d213b3"],
"flags": ["TWN"],
"duration": 60,
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
-130.9735107421875,
-17.691128657307427
],
[
-130.4901123046875,
-17.691128657307427
],
[
-130.4901123046875,
-17.209017141391765
],
[
-130.9735107421875,
-17.209017141391765
],
[
-130.9735107421875,
-17.691128657307427
]
]
]
}
}'
Make sure to replace [TOKEN] with your API Access Token. If the request is successful, the response will be:
{
"metadata": {
"datasets": ["public-global-encounters-events:v20201001"],
"vessels": ["55d38c0ee-e0d7-cb32-ac9c-8b3680d213b3"],
"dateRange": {
"from": "2017-01-01",
"to": "2017-01-31"
},
"encounterTypes": [
"fishing-carrier",
"fishing-support",
"carrier-fishing",
"support-fishing"
],
"flags": ["TWN"],
"geometry": {
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry": {
"type": "Polygon",
"coordinates": [
[
[-130.9735107421875, -17.691128657307427],
[-130.4901123046875, -17.691128657307427],
[-130.4901123046875, -17.209017141391765],
[-130.9735107421875, -17.209017141391765],
[-130.9735107421875, -17.691128657307427]
]
]
}
}
]
}
},
"total": 1,
"nextOffset": 1,
"offset": 0,
"limit": 1,
"entries": [
{
"id": "05e5fcf80f3542a33154214f0a586f19.2",
"type": "encounter",
"start": "2017-01-01T00:50:00.000Z",
"end": "2017-01-01T04:30:00.000Z",
"position": {
"lat": -17.4783,
"lon": -130.7285
},
"regions": {
"mpa": [],
"eez": [],
"rfmo": ["WCPFC", "SPRFMO", "IWC", "ACAP", "IATTC"],
"fao": ["77"],
"major_fao": ["77"],
"eez12nm": []
},
"boundingBox": [
-130.7285232872, -17.4782849293, -130.7285232872, -17.4782849293
],
"distances": {
"startDistanceFromShoreKm": 602,
"endDistanceFromShoreKm": 602,
"startDistanceFromPortKm": 760.023188,
"endDistanceFromPortKm": 760.023188
},
"vessel": {
"id": "55d38c0ee-e0d7-cb32-ac9c-8b3680d213b3",
"flag": "TWN",
"name": "JIN HSIANG FA",
"type": "fishing",
"ssvid": "416077500"
},
"encounter": {
"vessel": {
"id": "46ae0e5f9-9304-7ac9-dc78-462d84320bf5",
"flag": "TWN",
"name": "SHUN TIAN FA 168",
"type": "carrier",
"ssvid": "416602000"
},
"medianDistanceKilometers": 0.016,
"medianSpeedKnots": 1.067,
"type": "fishing-carrier"
}
}
]
}
EXAMPLE 3 - GET LOITERING EVENTS
curl --location --request POST 'https://gateway.api.globalfishingwatch.org/v2/events?offset=0&limit=1' \
--header 'Authorization: Bearer [TOKEN]' \
--header 'Content-Type: application/json' \
--data-raw '{
"datasets": [ "public-global-loitering-events-carriers:latest"],
"startDate": "2017-01-01",
"endDate": "2017-01-31",
"vessels": ["82be6f228-8ce4-26d1-bf81-3b7979d0c72f"],
"flags": ["KOR"],
"duration": 60,
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
43.835981972515576,
-6.785011952437713
],
[
43.83602857589722,
-6.785011952437713
],
[
43.83602857589722,
-6.784984652340707
],
[
43.835981972515576,
-6.784984652340707
],
[
43.835981972515576,
-6.785011952437713
]
]
]
}
}'
Make sure to replace [TOKEN] with your API Access Token. If the request is successful, the response will be:
{
"metadata": {
"datasets": ["public-global-loitering-events-carriers:v20201001"],
"vessels": ["82be6f228-8ce4-26d1-bf81-3b7979d0c72f"],
"dateRange": {
"from": "2017-01-01",
"to": "2017-01-31"
},
"encounterTypes": [],
"flags": ["KOR"],
"geometry": {
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry": {
"type": "Polygon",
"coordinates": [
[
[43.835981972515576, -6.785011952437713],
[43.83602857589722, -6.785011952437713],
[43.83602857589722, -6.784984652340707],
[43.835981972515576, -6.784984652340707],
[43.835981972515576, -6.785011952437713]
]
]
}
}
]
}
},
"total": 0,
"nextOffset": 1,
"offset": 0,
"limit": 1,
"entries": []
}
EXAMPLE 4 - GET PORT VISITS
curl --location --request POST 'https://gateway.api.globalfishingwatch.org/v2/events?offset=0&limit=1' \
--header 'Authorization: Bearer [TOKEN]' \
--header 'Content-Type: application/json' \
--data-raw '{
"datasets": [ "public-global-port-visits-c2-events:latest"],
"startDate": "2017-01-01",
"endDate": "2017-01-31",
"vessels": ["e0248aed9-99b4-bae7-6b87-ff0a3c464676"],
"flags": ["ATG"],
"duration": 60,
"geometry":{
"type": "Polygon",
"coordinates": [
[
[
30.552978515625,
46.255846818480315
],
[
31.22314453125,
46.255846818480315
],
[
31.22314453125,
46.59661864884465
],
[
30.552978515625,
46.59661864884465
],
[
30.552978515625,
46.255846818480315
]
]
]
}
}'
Make sure to replace [TOKEN] with your API Access Token. If the request is successful, the response will be:
{
"metadata": {
"datasets": ["public-global-port-visits-c2-events:v20201001"],
"vessels": ["e0248aed9-99b4-bae7-6b87-ff0a3c464676"],
"dateRange": {
"from": "2017-01-01",
"to": "2017-01-31"
},
"encounterTypes": [],
"flags": ["ATG"],
"geometry": {
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry": {
"type": "Polygon",
"coordinates": [
[
[30.552978515625, 46.255846818480315],
[31.22314453125, 46.255846818480315],
[31.22314453125, 46.59661864884465],
[30.552978515625, 46.59661864884465],
[30.552978515625, 46.255846818480315]
]
]
}
}
]
}
},
"total": 1,
"nextOffset": 1,
"offset": 0,
"limit": 1,
"entries": [
{
"id": "4f76e3bf40fcb9af92f6e7250154c86d",
"type": "port_visit",
"start": "2017-01-01T00:00:00.000Z",
"end": "2017-01-01T09:35:02.000Z",
"position": {
"lat": 46.3181,
"lon": 31.0484
},
"regions": {
"mpa": [],
"eez": ["5695"],
"rfmo": ["ACAP", "IWC", "ICCAT", "GFCM"],
"fao": ["37", "37.4.2", "37.4"],
"major_fao": ["37"],
"eez12nm": []
},
"boundingBox": [
31.0767735168, 46.2917746863, 31.0090529428, 46.3757554864
],
"distances": {
"startDistanceFromShoreKm": 28,
"endDistanceFromShoreKm": 20,
"startDistanceFromPortKm": 0,
"endDistanceFromPortKm": 0
},
"vessel": {
"id": "e0248aed9-99b4-bae7-6b87-ff0a3c464676",
"flag": "ATG",
"name": "JORK",
"type": "cargo",
"ssvid": "305656000"
},
"port_visit": {
"visitId": "ffe81fe2608c6de1799a701b736951ca",
"confidence": 4,
"durationHrs": 9.58388888888889,
"startAnchorage": {
"anchorage_id": "40c652c5",
"at_dock": false,
"distance_from_shore_km": 28,
"flag": "UKR",
"id": "ukr-nikolaev",
"lat": 46.291774686340844,
"lon": 31.076773516760372,
"name": null,
"top_destination": "NIKOLAEV"
},
"intermediateAnchorage": {
"anchorage_id": "40c65295",
"at_dock": false,
"distance_from_shore_km": 26,
"flag": "UKR",
"id": "ukr-nikolaev",
"lat": 46.30317322627217,
"lon": 31.073053845170914,
"name": null,
"top_destination": "NIKOLAEV"
},
"endAnchorage": {
"anchorage_id": "40c64c1b",
"at_dock": false,
"distance_from_shore_km": 20,
"flag": "UKR",
"id": "ukr-nikolaev",
"lat": 46.37575548639163,
"lon": 31.009052942845823,
"name": null,
"top_destination": "NIKOLAEV"
}
}
}
]
}
EXAMPLE 5 - GET FISHING EVENTS WITHIN SENEGAL EEZ
curl --location --request POST 'https://gateway.api.globalfishingwatch.org/v2/events?offset=0&limit=1' \
--header 'Authorization: Bearer [TOKEN]' \
--header 'Content-Type: application/json' \
--data-raw '{
"datasets": [ "public-global-fishing-events:latest"],
"startDate": "2020-10-01",
"endDate": "2020-12-31",
"flags": ["CHN"],
"region": {
"dataset": "public-eez-areas",
"id": 8371
}
}'
Make sure to replace [TOKEN] with your API Access Token. If the request is successful, the response will be:
{
"metadata": {
"datasets": ["public-global-fishing-events:v20201001"],
"dateRange": {
"from": "2020-10-01",
"to": "2020-12-31"
},
"encounterTypes": [],
"flags": ["CHN"],
"geometry": {
"type": "FeatureCollection",
"features": [
{
"id": 8371,
"type": "Feature",
"value": "Senegalese Exclusive Economic Zone",
"geometry": {
"type": "MultiPolygon",
"coordinates": [
[
[
[-19.663713889, 10.646065556],
[-19.770719167, 10.828273889],
[-19.847704722, 10.978088056],
[-19.900462777, 11.092828333],
[-19.975555556, 11.279166667],
[-20.056666667, 11.519444445],
[-20.121666667, 11.768888889],
[-20.166111111, 12.0125],
[-20.189332011, 12.205035051],
[-20.18920767, 12.202218501],
[-20.211145269, 12.686621676],
[-20.213729528, 12.771151138],
[-20.213406305, 12.903321288],
[-20.211200542, 12.970761536],
[-20.206279711, 13.0575],
[-16.756111111, 13.0575],
[-16.755277778, 13.055833333],
[-16.746944487, 13.064166624],
[-16.742762565, 13.056762457],
[-16.746835828, 13.067911268],
[-16.743340135, 13.073076725],
[-16.740498543, 13.074127436],
[-16.734648824, 13.073445559],
[-16.731267809, 13.075275421],
[-16.729505658, 13.07888031],
[-16.730089426, 13.085918426],
[-16.733118058, 13.089609146],
[-16.727655173, 13.092269778],
[-16.725892544, 13.097848773],
[-16.729770302, 13.098020554],
[-16.731532812, 13.100681305],
[-16.735234022, 13.102311969],
[-16.736291528, 13.104715347],
[-16.735145926, 13.11132431],
[-16.733824015, 13.113126755],
[-16.72985828, 13.11372745],
[-16.728536368, 13.107118606],
[-16.719371438, 13.108062744],
[-16.716022611, 13.110208511],
[-16.716287017, 13.11235416],
[-16.716992021, 13.113126755],
[-16.719283224, 13.111753344],
[-16.724042058, 13.11492908],
[-16.725628257, 13.118791461],
[-16.724570752, 13.121881366],
[-16.722984552, 13.122053146],
[-16.721398235, 13.119306445],
[-16.718666434, 13.118791461],
[-16.711880565, 13.120765566],
[-16.708179354, 13.126516342],
[-16.709061026, 13.132953644],
[-16.707298159, 13.133211136],
[-16.704301476, 13.130378723],
[-16.699277639, 13.133382678],
[-16.702186227, 13.135871768],
[-16.701833606, 13.143081546],
[-16.706945657, 13.14737308],
[-16.709061026, 13.153467059],
[-16.705888033, 13.155698657],
[-16.70271504, 13.152179718],
[-16.698484421, 13.154153824],
[-16.701481104, 13.161964417],
[-16.699807644, 13.162650943],
[-16.69592905, 13.159046054],
[-16.689406037, 13.15999031],
[-16.687026024, 13.166513443],
[-16.685392542, 13.167287138],
[-16.679596271, 13.152535204],
[-16.677008408, 13.131199718],
[-16.673902645, 13.128583901],
[-16.651596821, 13.085234849],
[-16.647403236, 13.040871141],
[-16.651147124, 12.997043557],
[-16.531465118, 12.997633952],
[-16.515311156, 12.907429484],
[-16.449018084, 12.912594692],
[-16.414338903, 12.772543411],
[-16.367193163, 12.771420893],
[-16.367193163, 12.70095725],
[-16.363098106, 12.703723209],
[-16.313200775, 12.713627925],
[-16.280765137, 12.707336882],
[-16.270339622, 12.711871647],
[-16.239052233, 12.719126695],
[-16.177077309, 12.719126695],
[-16.171945845, 12.717798551],
[-16.145849861, 12.728839159],
[-16.140013281, 12.729813856],
[-16.1283097, 12.746137273],
[-16.1283097, 12.828989976],
[-15.957487147, 12.828989976],
[-15.922269413, 12.750789967],
[-15.915867713, 12.740386804],
[-15.874589286, 12.710774021],
[-15.856139318, 12.714033516],
[-15.826947615, 12.706288779],
[-15.788934246, 12.730002952],
[-15.66812969, 12.710873831],
[-15.654843887, 12.704961114],
[-15.655409309, 12.799014761],
[-15.628303916, 12.866221282],
[-15.566481866, 12.898057787],
[-15.530804596, 12.902988793],
[-15.517853025, 12.912328458],
[-15.467347664, 12.934245876],
[-15.440409409, 12.930649585],
[-15.338080247, 13.033682835],
[-15.278439318, 13.00634732],
[-15.298059231, 12.75978187],
[-15.383535949, 12.689277191],
[-15.41565113, 12.698313931],
[-15.398853097, 12.680443686],
[-15.404087181, 12.654427206],
[-15.4016936, 12.648872103],
[-15.406021594, 12.644812032],
[-15.417976635, 12.585388444],
[-15.458644512, 12.546319872],
[-15.470500865, 12.54034427],
[-15.491990539, 12.512991189],
[-15.545913339, 12.490768433],
[-15.659264178, 12.437611423],
[-15.672329953, 12.437962182],
[-15.705846049, 12.447624481],
[-15.732542155, 12.463399454],
[-15.743488254, 12.473244056],
[-15.755084184, 12.478162175],
[-15.766838591, 12.471034503],
[-15.812617414, 12.459844124],
[-15.860809993, 12.453403641],
[-15.903204562, 12.478193685],
[-15.937430457, 12.478736953],
[-15.990489514, 12.488013011],
[-16.016221921, 12.516243714],
[-16.023522535, 12.521953168],
[-16.055983506, 12.512581234],
[-16.086384194, 12.510082978],
[-16.22398853, 12.45968557],
[-16.223870573, 12.456901439],
[-16.228834867, 12.453861237],
[-16.366114617, 12.383823275],
[-16.377712846, 12.375583649],
[-16.382984757, 12.363224029],
[-16.39341987, 12.36491071],
[-16.36363857, 12.449374249],
[-16.413956885, 12.45326302],
[-16.437216339, 12.464006944],
[-16.440103135, 12.390489802],
[-16.593740284, 12.485105054],
[-16.654444152, 12.447885164],
[-16.673221689, 12.449435603],
[-16.662500165, 12.437958075],
[-16.648994654, 12.437958075],
[-16.608213095, 12.417493148],
[-16.568080996, 12.386790995],
[-16.560039495, 12.388524078],
[-16.509774498, 12.359801221],
[-16.503960733, 12.354962018],
[-16.507224202, 12.35446918],
[-16.543774247, 12.362022281],
[-16.557129144, 12.360305667],
[-16.585244656, 12.351035952],
[-16.603519678, 12.348461151],
[-16.643408656, 12.361163974],
[-16.691908121, 12.359962344],
[-16.897455407, 12.240292728],
[-19.559839098, 10.704801666],
[-19.663145237, 10.645221352],
[-19.663713889, 10.646065556]
],
[
[-16.286841197, 12.480505218],
[-16.238164771, 12.473253967],
[-16.249482093, 12.487701612],
[-16.278407476, 12.490736991],
[-16.286841197, 12.480505218]
]
],
[
[
[-16.461880922, 13.167114258],
[-16.145252352, 13.166410997],
[-16.208591264, 13.147271805],
[-16.227017174, 13.152255175],
[-16.200217659, 13.105283714],
[-16.289656484, 13.025796282],
[-16.392446353, 13.101677033],
[-16.497569806, 13.0167554],
[-16.581530248, 13.079829993],
[-16.544594363, 13.167949667],
[-16.461880922, 13.167114258]
]
],
[
[
[-15.806064248, 13.348731875],
[-15.733041048, 13.351306915],
[-15.714695812, 13.354225158],
[-15.701289654, 13.359889865],
[-15.682067275, 13.371219635],
[-15.645897627, 13.357830048],
[-15.631621634, 13.354618038],
[-15.650685404, 13.354287453],
[-15.670264972, 13.360977138],
[-15.744575477, 13.338455657],
[-15.785545746, 13.334155808],
[-15.806045487, 13.336522655],
[-15.806064248, 13.348731875]
]
],
[
[
[-15.51848495, 13.390445709],
[-15.503517151, 13.394393921],
[-15.487105965, 13.392333865],
[-15.449695826, 13.376026154],
[-15.384754777, 13.357314944],
[-15.372403741, 13.357143402],
[-15.330057264, 13.360748171],
[-15.304120064, 13.367099642],
[-15.287184954, 13.372936249],
[-15.250304938, 13.401088714],
[-15.229482651, 13.419799805],
[-15.216601133, 13.454990268],
[-15.200529337, 13.525886536],
[-15.180191702, 13.543211254],
[-15.219900864, 13.381802342],
[-15.324043769, 13.339623873],
[-15.403078809, 13.344462753],
[-15.471487048, 13.366456893],
[-15.493827471, 13.387938069],
[-15.51359931, 13.384717657],
[-15.521798652, 13.388333114],
[-15.51848495, 13.390445709]
]
],
[
[
[-15.477269054, 13.592834354],
[-15.486561537, 13.591002464],
[-15.521773934, 13.592147828],
[-15.728268031, 13.591936644],
[-15.725005928, 13.593658142],
[-15.677347611, 13.604284658],
[-15.63973019, 13.599900344],
[-15.621340756, 13.614096986],
[-15.559231069, 13.631164319],
[-15.509380495, 13.620636869],
[-15.49753472, 13.61458615],
[-15.484501077, 13.611672747],
[-15.479488317, 13.609213658],
[-15.4743897, 13.610149184],
[-15.477269054, 13.592834354]
]
],
[
[
[-16.508076906, 13.59329164],
[-20.073055555, 13.593333334],
[-20.073611111, 14.85],
[-20, 14.916666667],
[-19.858333334, 15.166666666],
[-19.747222223, 15.416666667],
[-19.641666666, 15.666666666],
[-19.594444445, 15.916666667],
[-19.558333333, 16.068055555],
[-16.509283066, 16.067174434],
[-16.503430331, 16.067870404],
[-16.50073975, 16.073398461],
[-16.495021357, 16.075878819],
[-16.491560327, 16.071689185],
[-16.486605232, 16.071126692],
[-16.477420342, 16.063754279],
[-16.4699358, 16.068747547],
[-16.463301097, 16.077555006],
[-16.462824022, 16.080476224],
[-16.455960089, 16.08822684],
[-16.454737768, 16.099513638],
[-16.448192259, 16.117815694],
[-16.44434227, 16.122940725],
[-16.442616069, 16.139175394],
[-16.448963766, 16.147433462],
[-16.453557613, 16.158733121],
[-16.450748899, 16.163914361],
[-16.448032393, 16.176359356],
[-16.448361073, 16.180674142],
[-16.443623183, 16.198849374],
[-16.436175359, 16.208044122],
[-16.429340625, 16.069388661],
[-16.427234947, 15.974018986],
[-16.440427856, 15.825929481],
[-16.430589143, 15.770313032],
[-16.450672683, 15.726974867],
[-16.587354129, 15.504787753],
[-16.656082424, 15.416342325],
[-16.797348003, 15.173281216],
[-16.869711586, 15.095126856],
[-16.900533125, 15.050589337],
[-17.069307237, 14.855025685],
[-17.122034377, 14.813682103],
[-17.190908736, 14.785144145],
[-17.175354634, 14.778123867],
[-17.145410684, 14.758042972],
[-17.104022194, 14.720934029],
[-17.049418537, 14.647725496],
[-17.022306852, 14.576975714],
[-16.992299127, 14.533104973],
[-16.930270724, 14.504595901],
[-16.879398915, 14.454514845],
[-16.852986282, 14.415740742],
[-16.838064128, 14.365254128],
[-16.839958461, 14.346898694],
[-16.828758775, 14.335819434],
[-16.8091441, 14.305208657],
[-16.79524864, 14.26873307],
[-16.791777824, 14.246729095],
[-16.767576144, 14.235721476],
[-16.736882276, 14.19900096],
[-16.72803071, 14.181712745],
[-16.591091668, 14.220161941],
[-16.586061621, 14.230793632],
[-16.557391152, 14.241319988],
[-16.547351174, 14.266071323],
[-16.343464222, 14.369237504],
[-16.339338691, 14.366465221],
[-16.347410806, 14.266716634],
[-16.182953946, 14.25928851],
[-16.162130979, 14.186963463],
[-16.323015046, 14.075226236],
[-16.333622182, 14.070269132],
[-16.384133395, 14.031602321],
[-16.389820355, 13.969995972],
[-16.405109016, 13.9043666],
[-16.397038998, 13.86662966],
[-16.395703091, 13.846877326],
[-16.355913022, 13.726865339],
[-16.36650318, 13.724937158],
[-16.324718403, 13.702290452],
[-16.456512945, 13.601593497],
[-16.452962927, 13.593318635],
[-16.508076906, 13.59329164]
]
],
[
[
[-15.948641658, 12.442531466],
[-15.958660722, 12.443218231],
[-15.96882486, 12.446907684],
[-15.930983898, 12.445323455],
[-15.948641658, 12.442531466]
]
],
[
[
[-16.470849634, 12.359962344],
[-16.483751375, 12.358013967],
[-16.478191339, 12.394091202],
[-16.47626559, 12.394828107],
[-16.440415877, 12.365420097],
[-16.470849634, 12.359962344]
]
]
]
},
"properties": {
"Y_1": 14.0656,
"x_1": -16.26891,
"bbox": {
"type": "Polygon",
"coordinates": [
[
[-20.2137295277812, 10.6452213523326],
[-20.2137295277812, 16.2080441224395],
[-15.1801917021989, 16.2080441224395],
[-15.1801917021989, 10.6452213523326],
[-20.2137295277812, 10.6452213523326]
]
]
},
"UNION": "Senegal",
"value": "Senegalese Exclusive Economic Zone",
"gfw_id": 14,
"GEONAME": "Senegalese Exclusive Economic Zone",
"UN_SOV1": 686,
"UN_SOV2": null,
"UN_SOV3": null,
"UN_TER1": 686,
"UN_TER2": null,
"UN_TER3": null,
"AREA_KM2": 353555,
"ISO_SOV1": "SEN",
"ISO_SOV2": null,
"ISO_SOV3": null,
"ISO_TER1": "SEN",
"ISO_TER2": null,
"ISO_TER3": null,
"POL_TYPE": "Union EEZ and country",
"MRGID_EEZ": 8371,
"MRGID_SOV1": 2225,
"MRGID_SOV2": 0,
"MRGID_SOV3": 0,
"MRGID_TER1": 2225,
"MRGID_TER2": 0,
"MRGID_TER3": 0,
"SOVEREIGN1": "Senegal",
"SOVEREIGN2": null,
"SOVEREIGN3": null,
"TERRITORY1": "Senegal",
"TERRITORY2": null,
"TERRITORY3": null
}
}
]
},
"region": {
"dataset": "public-eez-areas",
"id": 8371
}
},
"total": 305,
"nextOffset": 1,
"offset": 0,
"limit": 1,
"entries": [
{
"id": "4960d7ec2478e22d22f5d29d7e10402a",
"type": "fishing",
"start": "2020-09-30T08:26:23.000Z",
"end": "2020-10-01T00:35:22.000Z",
"position": {
"lat": 14.6969,
"lon": -17.3969
},
"regions": {
"mpa": ["555705172"],
"eez": ["8371"],
"rfmo": ["IWC", "ACAP", "NAMMCO", "ICCAT", "SRFC"],
"fao": ["34", "34.3", "34.3.1", "34.3.12"],
"majorFao": ["34"],
"eez12Nm": [],
"highSeas": [],
"mpaNoTakePartial": [],
"mpaNoTake": []
},
"boundingBox": [-17.3972083333, 14.696845, -17.3964616667, 14.6971716667],
"distances": {
"startDistanceFromShoreKm": 3,
"endDistanceFromShoreKm": 3,
"startDistanceFromPortKm": 0,
"endDistanceFromPortKm": 0
},
"vessel": {
"id": "d6a882499-98cc-7b37-4463-88bde48b4dcb",
"flag": "CHN",
"name": "HAI SHANG 68",
"ssvid": "412371178",
"authorizations": [
{
"isAuthorized": "true",
"rfmo": "ICCAT"
}
]
},
"fishing": {
"totalDistanceKm": 3.5046170151699143,
"averageSpeedKnots": 0.003614457831325301,
"averageDurationHours": 0.08908754208754209,
"potentialRisk": false,
"vesselAuthorizationStatus": "authorized"
}
}
]
}
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 between carriers and fishing vessels, use
public-global-loitering-events-carriers:latest
- For port visits, use
public-global-port-visits-c2-events:latest
Events POST v2 - HTTP Request
GET https://gateway.api.globalfishingwatch.org/v2/events
Events POST v2 - URL Parameters
Parameter | Description | Required | Format | Param Type |
---|---|---|---|---|
limit | Amount of search results to return. Example: 10 | True | number | query |
offset | 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 OR you don’t send it, 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. Example: 5 | True | number | query |
sort | Property used to sort using a property. The list of possible values depends on the dataset. Before the property you can use ‘+’ or ‘-’ and based on that prefix, you can decide if it will be sort ascending + (ASC) or descending - (DESC).Example: -start | False | Enum: ['+start', '-start', '+end', '-end'] | query |
Events POST v2 - Body Parameters
Parameter | Description | Required | Format | Param Type |
---|---|---|---|---|
datasets | Specify the datasets that will be used to search the vessel. You can learn more about which are the possible datasets here. You can send several datasets in array format. Example: ['public-global-fishing-events:latest', 'public-global-encounter-events:latest'] | True | [string] | body |
vessels | List of vessel ids. You can get this information using the search endpoints Example: ['8c7304226-6c71-edbe-0b63-c246734b3c01', '6583c51e3-3626-5638-866a-f47c3bc7ef7c'] | False | [string] | body |
types | Event types. Possible values: port, encounter, loitering, gap, port_visit. Example: ['fishing'] | False | [string] | body |
startDate | Start date in format YYYY-MM-DD of the start date of the event (inclusive). Filter the events that their end date is greater or equal than the start date filter. Example: 2020-01-01 | False | string | body |
endDate | End date in format YYYY-MM-DD of the end date of the event (exclusive). Filter the events that their start date is less than the end date filter. Example: 2020-02-01 | False | string | body |
confidences | 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. Possible values: 2, 3, 4 Example: ['3','4'] | False | [string] | body |
encounterTypes | Possible values: carrier-fishing, fishing-carrier, fishing-support, support-fishing Example: ['carrier-fishing','fishing-carrier'] | False | [string] | body |
duration | Minimum duration (greater than or equal to), in minutes, of the event. Example: 30 | False | number | body |
vesselTypes | Vessel types of the vessels involved in the events. Possible values: fishing, carrier, support, passenger, other_non_fishing, seismic_vessel, bunker_or_tanker, cargo Example: ['fishing', 'carrier'] | False | [string] | body |
vesselGroups | Ids of the vessel groups. Example: ['my-vessel-group'] | False | [string] | body |
flags | Flags of the vessels involved in the events, in ISO3. Example: ['ESP', 'FRA'] | False | [string] | body |
geometry | Region where the events occur. | False | object | body |
region | Region where the events occur.You can send the region id, you can get it from Reference Data | False | object | body |
Get one by Event ID - V2
GET A PORT VISIT EVENT BY ITS ID
curl --location --request GET 'https://gateway.api.globalfishingwatch.org/v2/events/c2f0967e061f99a01793edac065de003?datasets=public-global-port-visits-c2-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:
{
"id": "c2f0967e061f99a01793edac065de003",
"type": "port_visit",
"start": "2020-01-26T05:52:47.000Z",
"end": "2020-01-29T14:39:33.000Z",
"position": {
"lat": 20.8374,
"lon": -17.0161
},
"regions": {
"mpa": [],
"eez": [8369],
"rfmo": ["ICCAT"]
},
"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": "FRIO FORWIN",
"ssvid": "210631000"
},
"port_visit": {
"visitId": "54a297966f51994d8bad91ba58945f8c",
"confidence": 4,
"durationHrs": 80.77944444444445,
"startAnchorage": {
"id": "mrt-nouadhibou",
"lat": 20.72879719687954,
"lon": -17.014774393446658,
"flag": "MRT",
"name": "NOUADHIBOU",
"at_dock": false,
"anchorage_id": "0ea1bbe7",
"top_destination": "NOUADHIBOU",
"distance_from_shore_km": 7
},
"intermediateAnchorage": {
"id": "mrt-nouadhibou",
"lat": 20.885489104200627,
"lon": -17.003218026679036,
"flag": "MRT",
"name": "NOUADHIBOU",
"at_dock": false,
"anchorage_id": "0ea1b6ad",
"top_destination": "NOUADHIBOU",
"distance_from_shore_km": 4
},
"endAnchorage": {
"id": "mrt-nouadhibou",
"lat": 20.828490761089796,
"lon": -17.030118535609358,
"flag": "MRT",
"name": "NOUADHIBOU",
"at_dock": true,
"anchorage_id": "0ea1b0c3",
"top_destination": "NOUADHIBOU",
"distance_from_shore_km": 2
}
}
}
Get by event id v2 - HTTP Request
GET https://gateway.api.globalfishingwatch.org/v2/events/{eventId}
Get by event id v2 - URL Parameters
Parameter | Description | Required | Format | Param Type |
---|---|---|---|---|
eventId | True | string | path | |
raw | If true, return all content of the event without parsing | False | boolean | query |
datasets | Specify the datasets that will be used to search the vessel. You can learn more about which are the possible datasets here. You can send several datasets separated by comma. Example: public-global-fishing-events:latest,public-global-encounter-events:latest | True | string | query |
Statistics on events (POST) - V2
Get events statistics worldwide or for a specific region. The available events to get stats are:
Fishing events
Encounter events
Loitering events
Port visits
EXAMPLE 1 - GET ENCOUNTERS STATS
curl --location --request POST 'https://gateway.api.globalfishingwatch.org/v2/events/stats' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer {access-token}'
--header 'Content-Type: application/json' \
--data-raw '{
"datasets": [ "public-global-encounters-events:latest"],
"encounterTypes": ["carrier-fishing", "fishing-carrier"],
"vesselTypes": ["carrier"],
"startDate": "2018-01-01",
"endDate": "2023-01-31",
"timeseriesInterval": "year",
"flags": ["RUS"],
"duration": 60
}
'
Make sure to replace [TOKEN] with your API Access Token. If the request is successful, the response will be:
{
"numFlags": 1,
"numVessels": 202,
"numEvents": 23230,
"flags": ["RUS"],
"timeseries": [
{
"date": "2018-01-01T00:00:00.000Z",
"value": 4494
},
{
"date": "2019-01-01T00:00:00.000Z",
"value": 4242
},
{
"date": "2020-01-01T00:00:00.000Z",
"value": 4664
},
{
"date": "2021-01-01T00:00:00.000Z",
"value": 4783
},
{
"date": "2022-01-01T00:00:00.000Z",
"value": 4643
},
{
"date": "2023-01-01T00:00:00.000Z",
"value": 404
}
]
}
EXAMPLE 2 - GET FISHING EVENTS STATS IN A CUSTOM REGION
curl --location --request POST 'https://gateway.api.globalfishingwatch.org//v2/events/stats' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer {access-token}'
--header 'Content-Type: application/json' \
--data-raw '{
"datasets": [ "public-global-fishing-events:latest"],
"startDate": "2018-01-01",
"endDate": "2023-01-31",
"timeseriesInterval": "year",
"duration": 90,
"geometry":{"type":"MultiPolygon","coordinates":[[[[-58.15342633,-32.356403276],[-58.16805183,-32.359000619],[-58.184795664,-32.379219766],[-58.192409931,-32.391977392],[-58.193236164,-32.395055309],[-58.191125697,-32.400694246],[-58.194202127,-32.416740918],[-58.193898065,-32.421293436],[-58.200104417,-32.439695043],[-58.203068501,-32.469794853],[-58.201773268,-32.482103825],[-58.199452453,-32.48651512],[-58.198189657,-32.494591443],[-58.1909169,-32.506733087],[-58.184742646,-32.529503992],[-58.173524528,-32.553211355],[-58.165369884,-32.559773049],[-58.161893615,-32.567770973],[-58.159343751,-32.608650802],[-58.151728474,-32.62249165],[-58.151480284,-32.635035765],[-58.153010794,-32.641369091],[-58.149292387,-32.653570867],[-58.145301188,-32.659776215],[-58.143623423,-32.665853784],[-58.142912012,-32.675649681],[-58.148653602,-32.690020187],[-58.146101053,-32.707362162],[-58.148179071,-32.73123023],[-58.14123188,-32.751686231],[-58.141575555,-32.757396873],[-58.146951161,-32.761720555],[-58.14325427,-32.768691322],[-58.138638482,-32.770629602],[-58.135694082,-32.785976586],[-58.130758029,-32.801498671],[-58.12284602,-32.814061796],[-58.121850748,-32.82451262],[-58.125803727,-32.833189037],[-58.118631373,-32.853729616],[-58.11323325,-32.886529032],[-58.114730058,-32.895617282],[-58.121359728,-32.902057784],[-58.114789226,-32.918915937],[-58.113440989,-32.925924348],[-58.114673138,-32.927592234],[-58.113667629,-32.93986786],[-58.114402803,-32.966621671],[-58.119544774,-32.98206643],[-58.117304543,-32.990437423],[-58.124303771,-32.999824842],[-58.126772533,-33.007898604],[-58.125627861,-33.017099642],[-58.126974786,-33.02044177],[-58.130380817,-33.021945453],[-58.130076688,-33.028447656],[-58.13639079,-33.036502418],[-58.145125702,-33.042909231],[-58.152890334,-33.056053578],[-58.157767888,-33.059454364],[-58.167855355,-33.070938913],[-58.171621097,-33.07757795],[-58.190545784,-33.082063935],[-58.20357497,-33.083064676],[-58.217409645,-33.089760457],[-58.226105363,-33.092454759],[-58.229059871,-33.094206846],[-58.23173247,-33.098114538],[-58.24229906,-33.097167419],[-58.26464951,-33.103257289],[-58.274157515,-33.108160081],[-58.296088631,-33.103355406],[-58.308711192,-33.104855771],[-58.316347337,-33.103650705],[-58.319896027,-33.104192307],[-58.326565333,-33.107984139],[-58.334930123,-33.109173568],[-58.351201872,-33.117847445],[-58.37674193,-33.11489371],[-58.381859593,-33.134746496],[-58.389796431,-33.152533877],[-58.392322222,-33.171894929],[-58.39592379,-33.182181078],[-58.39140114,-33.198990159],[-58.391069256,-33.20561281],[-58.391582845,-33.220615805],[-58.395984501,-33.247423443],[-58.387047693,-33.275469435],[-58.387268996,-33.304045888],[-58.404901857,-33.321471301],[-58.430538696,-33.337315138],[-58.434248957,-33.341044457],[-58.438287022,-33.349102535],[-58.441513198,-33.360251944],[-58.443260942,-33.380153055],[-58.454591357,-33.393804471],[-58.456374996,-33.397844667],[-58.460268366,-33.412833067],[-58.464415537,-33.454967867],[-58.468550176,-33.46031186],[-58.479401304,-33.483322774],[-58.480264012,-33.488111484],[-58.48077669,-33.517791379],[-58.478041927,-33.553805081],[-58.479856494,-33.586243485],[-58.478916634,-33.617127032],[-58.481100391,-33.637515218],[-58.487874996,-33.651897059],[-58.493461906,-33.670607619],[-58.494350582,-33.680173282],[-58.47943317,-33.714776411],[-58.468057168,-33.734126473],[-58.455313818,-33.76015984],[-58.452826355,-33.784736997],[-58.449108288,-33.79554959],[-58.439122338,-33.810083477],[-58.439000681,-33.830576292],[-58.431369825,-33.847419786],[-58.43127944,-33.852632918],[-58.432118254,-33.85690005],[-58.438362706,-33.867637254],[-58.441619598,-33.879114621],[-58.428425775,-33.893523576],[-58.425638696,-33.901883358],[-58.42532535,-33.907932313],[-58.405,-33.955],[-58.376666667,-34],[-58.345,-34.038333333],[-58.333333333,-34.103333333],[-58.323333333,-34.123333333],[-58.316666667,-34.15],[-58.293333333,-34.166666667],[-58.251666667,-34.2],[-58.208333333,-34.221666667],[-58.166666667,-34.253333333],[-58.091666667,-34.295],[-58.065,-34.333333333],[-58.02,-34.361666667],[-58.01,-34.38],[-57.94,-34.443333333],[-57.935,-34.55],[-57.951666667,-34.666666667],[-57.533333333,-34.783333333],[-57.333333333,-34.866666667],[-57,-35.183333333],[-56.716666667,-35.171666667],[-55.866666667,-35.633333334],[-54.277051457,-37.095171775],[-53.922631024,-37.249589551],[-53.349558934,-37.516174588],[-53.125984692,-37.62930317],[-52.999508183,-37.706596921],[-52.667141949,-37.859911042],[-52.694583731,-37.933319234],[-52.723742913,-38.005066515],[-52.781652076,-38.133212609],[-52.818230445,-38.206396929],[-52.852702656,-38.271079163],[-52.892380372,-38.341464162],[-52.93240984,-38.408702342],[-52.991277275,-38.501030558],[-53.047565098,-38.583554818],[-53.098741187,-38.653935419],[-53.160180737,-38.733344606],[-53.266857511,-38.880382604],[-53.300855412,-38.938100266],[-53.343162719,-39.0059623],[-53.420352922,-39.12047819],[-53.490878482,-39.215859706],[-53.579826859,-39.328213772],[-53.641305593,-39.447996003],[-53.697813609,-39.548030311],[-53.767108475,-39.659553473],[-53.837380873,-39.76258815],[-53.904023374,-39.852678791],[-53.978250462,-39.945689344],[-54.058772289,-40.039203987],[-54.140932398,-40.12792611],[-54.222923475,-40.210500517],[-54.308385881,-40.290929116],[-54.381247969,-40.355601372],[-54.522649834,-40.475286705],[-54.5896488,-40.529592468],[-54.656633327,-40.581421888],[-54.725185257,-40.632085711],[-54.799129295,-40.684219878],[-54.982622233,-40.806158763],[-55.059932704,-40.854269793],[-55.14474833,-40.904422269],[-55.272853929,-40.97519824],[-55.345894371,-41.013314313],[-55.431307029,-41.055941103],[-55.53293563,-41.104108399],[-55.631284789,-41.147863472],[-55.716757759,-41.190838995],[-55.809465128,-41.234946431],[-55.894350461,-41.273363007],[-55.964556955,-41.303501092],[-56.13147113,-41.371343049],[-56.343878744,-41.453779341],[-56.430510239,-41.486171388],[-56.602131463,-41.545753547],[-56.881434625,-41.636740043],[-56.968842286,-41.662845414],[-57.058930719,-41.688132286],[-57.232589165,-41.73156739],[-57.313056102,-41.75290048],[-57.458834918,-41.798025491],[-57.60636055,-41.838910956],[-57.689322414,-41.859900528],[-57.77520308,-41.880137525],[-57.964785723,-41.920478506],[-58.018397281,-42.008509338],[-58.077150872,-42.097624248],[-58.141760571,-42.188271294],[-58.204764026,-42.270445379],[-58.269734621,-42.349689806],[-58.335089398,-42.424491534],[-58.407529831,-42.502392183],[-58.483831894,-42.579380103],[-58.560267257,-42.67524804],[-58.640996392,-42.768868251],[-58.734760057,-42.86928214],[-58.794721063,-42.929420777],[-58.860523109,-42.992145996],[-58.921208859,-43.047275226],[-58.978059958,-43.096698751],[-59.043011588,-43.150770607],[-59.117667335,-43.20995537],[-59.172244336,-43.440205973],[-59.196633828,-43.531230245],[-59.236481833,-43.657059727],[-59.283260847,-43.782363315],[-59.310377766,-43.847302783],[-59.341297708,-43.915925313],[-59.37116949,-43.977725566],[-59.403682698,-44.040780895],[-59.471170767,-44.160362166],[-59.508977174,-44.221896377],[-59.550776059,-44.286131604],[-59.596124477,-44.351913036],[-59.646495794,-44.420812628],[-59.696772052,-44.485763638],[-59.758558403,-44.561017858],[-59.816355994,-44.627398619],[-59.873606461,-44.689744259],[-59.93733864,-44.755585983],[-59.997308382,-44.814448305],[-60.060678503,-44.87370552],[-60.130715766,-44.935961936],[-60.194956684,-44.990359294],[-60.265502365,-45.04733662],[-60.341124528,-45.105465567],[-60.410790852,-45.156524432],[-60.501840038,-45.219906266],[-60.569156876,-45.264549913],[-60.593001909,-45.332237491],[-60.620056503,-45.402408722],[-60.649296878,-45.47203445],[-60.680611542,-45.540878005],[-60.798487166,-46.252942691],[-60.892346482,-46.827400481],[-60.876141565,-46.892003775],[-60.860125752,-46.963867549],[-60.846673352,-47.034147016],[-60.835115986,-47.106411626],[-60.823861804,-47.197094417],[-60.816262363,-47.287515135],[-60.812178204,-47.380255259],[-60.81132071,-47.470464402],[-60.789357567,-47.57001835],[-60.771806104,-47.669766298],[-63.010277579,-49.136763174],[-63.216903298,-49.27356026],[-64.573338447,-50.36154789],[-64.61197803,-50.444077188],[-64.692970462,-50.623161323],[-64.79013278,-50.85254852],[-64.906905274,-51.142135709],[-65.015149355,-51.414864114],[-64.951999257,-51.541358402],[-64.943769184,-51.576673068],[-64.927231182,-51.654362447],[-64.895229135,-51.819863575],[-64.782348031,-52.43408733],[-64.696960756,-52.530644417],[-64.69081124,-52.535669033],[-64.527312376,-52.619264009],[-63.669138833,-52.928926212],[-63.503463349,-52.991130652],[-63.382281589,-53.039296868],[-63.289889857,-53.077671032],[-63.186481469,-53.122576509],[-63.014353379,-53.201204205],[-62.090246253,-53.574389554],[-62.017541046,-53.604329688],[-61.874168954,-53.666558527],[-61.620494975,-53.781988593],[-58.541962783,-56.227816107],[-58.598928057,-56.296476374],[-58.654927131,-56.360029108],[-58.740975646,-56.452477612],[-58.808303331,-56.521031303],[-58.880443073,-56.590216544],[-58.948844595,-56.652227825],[-59.01990807,-56.713362815],[-59.093607859,-56.77358818],[-59.171856516,-56.834340035],[-59.25779333,-56.897648328],[-59.355169571,-56.965465481],[-59.442012051,-57.022792975],[-59.53587506,-57.081696217],[-59.63482843,-57.140636466],[-59.729628223,-57.194307893],[-59.829290444,-57.248003524],[-59.921526326,-57.295386165],[-60.025215134,-57.346164751],[-60.127774885,-57.393968715],[-60.234255394,-57.441208292],[-60.361712251,-57.494753364],[-60.470158273,-57.537887357],[-60.583359099,-57.580671399],[-60.692912806,-57.619999848],[-60.781276617,-57.650308492],[-60.891010724,-57.686252031],[-60.993508065,-57.718198027],[-61.103274907,-57.750732886],[-61.223506916,-57.784459507],[-61.33360071,-57.813641041],[-61.450971666,-57.847987317],[-61.555058016,-57.876905199],[-61.669233364,-57.906955205],[-61.783112164,-57.935291548],[-61.89242823,-57.960984829],[-62.007595737,-57.986503544],[-62.118560476,-58.009613652],[-62.236928568,-58.032729184],[-62.363140753,-58.055667083],[-62.464203633,-58.072794974],[-62.585649106,-58.09194578],[-62.70129094,-58.108755488],[-62.78764548,-58.120403444],[-62.904448872,-58.134999131],[-62.998322387,-58.145733459],[-63.108174375,-58.157223391],[-63.305703869,-58.174907412],[-63.499557443,-58.188671454],[-63.628639994,-58.201220765],[-63.760971992,-58.212439077],[-63.951831707,-58.22570631],[-64.153774234,-58.236045771],[-64.352891792,-58.242555435],[-64.544580812,-58.245382666],[-64.728217396,-58.262856069],[-64.901445022,-58.276201878],[-65.037667254,-58.295087169],[-65.185224829,-58.313451793],[-65.336067798,-58.330034654],[-65.466023779,-58.342534366],[-65.59549255,-58.353411055],[-65.732283561,-58.363191894],[-65.852431789,-58.370348573],[-66.056526848,-58.380686846],[-66.221889676,-58.38690667],[-66.36336728,-58.390252948],[-66.517055734,-58.391837329],[-66.663875033,-58.391336126],[-66.805434229,-58.389010129],[-66.953719381,-58.384617011],[-67.118916269,-58.377362994],[-67.266666667,-58.368752742],[-67.266666667,-56.38],[-65.726666667,-56.38],[-65.726666667,-55.381666667],[-66.078333333,-55.183333333],[-66.416666667,-55.121666667],[-66.498636207,-55.116105147],[-66.524894791,-55.116441149],[-66.541629865,-55.118358262],[-66.575993898,-55.118139035],[-66.585575249,-55.118744105],[-66.605946275,-55.121919726],[-66.623743681,-55.120685602],[-66.643446364,-55.121258641],[-66.679219162,-55.118177489],[-66.71011652,-55.119827943],[-66.729553447,-55.095212908],[-66.742753318,-55.063917542],[-66.758391003,-55.038316007],[-66.770396071,-55.025395044],[-66.777062918,-55.02019201],[-66.791620391,-55.012102387],[-66.807592912,-55.006691247],[-66.822973116,-55.003609162],[-66.828313956,-54.999285257],[-66.833472284,-54.996730221],[-66.849952602,-54.99088032],[-66.875303374,-54.986517548],[-66.887786775,-54.985255862],[-66.896490093,-54.983015423],[-66.908760152,-54.978290778],[-66.921689079,-54.975092401],[-66.933041752,-54.974582257],[-66.94123952,-54.975301372],[-66.951846967,-54.972343926],[-66.962741597,-54.971864261],[-66.974861027,-54.969690097],[-66.97897598,-54.971914117],[-66.994077394,-54.975602248],[-67.00879098,-54.977635121],[-67.023474561,-54.975268423],[-67.030272873,-54.976252663],[-67.034741089,-54.975927891],[-67.058406193,-54.965357369],[-67.068872762,-54.947665804],[-67.073399406,-54.946241402],[-67.091902954,-54.945169133],[-67.105251153,-54.947747714],[-67.123389242,-54.934309084],[-67.13145724,-54.930822426],[-67.139683058,-54.928913911],[-67.156528039,-54.929030393],[-67.165420868,-54.930585254],[-67.174983352,-54.933794046],[-67.181509833,-54.931771593],[-67.192961652,-54.929930838],[-67.204481711,-54.923968164],[-67.212182684,-54.921727379],[-67.219782039,-54.920761374],[-67.225914595,-54.917703153],[-67.234554765,-54.915136916],[-67.259883492,-54.915350992],[-67.268940566,-54.910775127],[-67.277525114,-54.908580965],[-67.292051146,-54.908967294],[-67.298863504,-54.906847402],[-67.309410329,-54.90642649],[-67.342087721,-54.913570667],[-67.350178865,-54.914453246],[-67.355179529,-54.916804413],[-67.365766279,-54.917479258],[-67.371029444,-54.91981314],[-67.376570265,-54.920297189],[-67.383639747,-54.918812709],[-67.392049526,-54.920012293],[-67.399621155,-54.919925604],[-67.402458118,-54.921135108],[-67.407647134,-54.919635434],[-67.411559849,-54.920266542],[-67.424513694,-54.916594312],[-67.433077411,-54.919494509],[-67.435661111,-54.922024676],[-67.441353372,-54.918078352],[-67.4464889,-54.917481979],[-67.449582508,-54.91595985],[-67.45797678,-54.916318362],[-67.463148451,-54.918920109],[-67.46931989,-54.918026886],[-67.475805688,-54.921435849],[-67.477622644,-54.923930059],[-67.49442508,-54.926605944],[-67.499914018,-54.923135954],[-67.516282681,-54.919668692],[-67.52686246,-54.913787281],[-67.537001654,-54.915268254],[-67.541752618,-54.914125673],[-67.55729819,-54.908226455],[-67.564390845,-54.901954224],[-67.574215947,-54.901652544],[-67.582063987,-54.905248484],[-67.590966219,-54.905529321],[-67.595946717,-54.907255843],[-67.613508067,-54.904100669],[-67.630674539,-54.907284791],[-67.640642586,-54.903423533],[-67.656273746,-54.907954845],[-67.661544589,-54.907993001],[-67.66792575,-54.910296977],[-67.676879374,-54.909439394],[-67.688124616,-54.909901797],[-67.693631943,-54.911284875],[-67.701451968,-54.908080267],[-67.708922379,-54.907154395],[-67.720125536,-54.903245614],[-67.742576739,-54.903496822],[-67.746398191,-54.902301818],[-67.752822382,-54.902941231],[-67.759038669,-54.9000552],[-67.775813585,-54.89505063],[-67.788096457,-54.892582411],[-67.793627446,-54.889159851],[-67.813157816,-54.892201388],[-67.824054671,-54.885433036],[-67.83301966,-54.88378902],[-67.852787808,-54.886491804],[-67.856998184,-54.889808118],[-67.866719086,-54.894824058],[-67.876928358,-54.894396064],[-67.890822791,-54.891835393],[-67.900629574,-54.884623211],[-67.921823122,-54.881216177],[-67.928299055,-54.877920646],[-67.943819473,-54.87505823],[-67.955656026,-54.87516097],[-67.962489197,-54.872977811],[-67.970217509,-54.874410295],[-67.983030027,-54.874422505],[-67.997118224,-54.877016981],[-68.004777318,-54.876657207],[-68.012155091,-54.875066345],[-68.035605719,-54.875697386],[-68.040479245,-54.877210341],[-68.049234254,-54.87797937],[-68.057545196,-54.880437637],[-68.065850218,-54.881290503],[-68.079514591,-54.886104957],[-68.096006538,-54.887487045],[-68.102867065,-54.889842264],[-68.111979792,-54.889764266],[-68.120538627,-54.888559421],[-68.126311322,-54.889403349],[-68.136839504,-54.886635707],[-68.144989439,-54.885649257],[-68.153713213,-54.887292451],[-68.161332004,-54.885768176],[-68.165839896,-54.886316832],[-68.169495009,-54.885422107],[-68.176632316,-54.886457038],[-68.184153527,-54.885495498],[-68.192427213,-54.88724228],[-68.195851238,-54.889222724],[-68.200688968,-54.889060638],[-68.209000633,-54.890579535],[-68.21355292,-54.892283738],[-68.217488927,-54.891038652],[-68.233057663,-54.891946998],[-68.238960238,-54.891343665],[-68.249134364,-54.892707172],[-68.254395528,-54.890933571],[-68.26190351,-54.890095029],[-68.269995319,-54.891142368],[-68.277560121,-54.889290013],[-68.283609417,-54.886385223],[-68.291650136,-54.884825294],[-68.299804157,-54.884326509],[-68.307582775,-54.88138305],[-68.315506411,-54.879569452],[-68.336047154,-54.878130687],[-68.352337976,-54.879306059],[-68.370324735,-54.882294804],[-68.386200438,-54.881963284],[-68.389853176,-54.882815174],[-68.402914954,-54.887287228],[-68.410563466,-54.891123704],[-68.42116051,-54.898806948],[-68.442918467,-54.897916425],[-68.468003065,-54.899066666],[-68.486494611,-54.898503236],[-68.489583333,-54.897698128],[-68.50148669,-54.898361919],[-68.510840366,-54.900482553],[-68.518711174,-54.900944472],[-68.538270451,-54.905573869],[-68.546688318,-54.908695872],[-68.552541331,-54.912445784],[-68.559040008,-54.914225606],[-68.569932693,-54.909208309],[-68.578738462,-54.908066655],[-68.587318308,-54.909862003],[-68.595740621,-54.913705255],[-68.601725598,-54.918613188],[-68.605607742,-54.919247414],[-68.619225583,-54.91738518],[-68.614789104,-54.896864271],[-68.610190869,-54.894876837],[-68.611824036,-54.894218445],[-68.612859845,-54.80067122],[-68.620692527,-54.685155272],[-68.601029356,-54.690788384],[-68.58612197,-54.69782126],[-68.5361048,-54.730454984],[-68.511858148,-54.75166168],[-68.398337246,-54.745842561],[-68.388627045,-54.733506258],[-68.380998152,-54.726083344],[-68.350665684,-54.704769085],[-68.341279435,-54.700175218],[-68.326430609,-54.695180769],[-68.316176067,-54.693168395],[-68.300540964,-54.69218061],[-68.284943455,-54.693646859],[-68.243626665,-54.703151511],[-68.198407936,-54.719618061],[-68.11802173,-54.724146862],[-68.101404391,-54.726493496],[-68.085413488,-54.731586007],[-68.049587569,-54.748643934],[-67.922944945,-54.762864699],[-67.666732505,-54.780466478],[-67.536694649,-54.774689734],[-67.326378527,-54.792447982],[-67.021104841,-54.805696291],[-67.004543645,-54.808767859],[-66.928753452,-54.829556026],[-66.819286256,-54.837135248],[-66.772418952,-54.847287894],[-66.665907408,-54.892847749],[-66.635882697,-54.913209815],[-66.615033063,-54.930426455],[-66.602621277,-54.934760084],[-66.528972521,-54.951164736],[-66.461116608,-54.951897306],[-66.455184494,-54.950579059],[-66.44815863,-54.941105981],[-66.437134995,-54.92991724],[-66.424495358,-54.920592647],[-66.410551551,-54.913362248],[-66.390529259,-54.90727965],[-66.330285965,-54.895855332],[-66.318815704,-54.894993206],[-66.198155518,-54.89288434],[-66.125598897,-54.895187701],[-66.084625026,-54.88674081],[-66.079296722,-54.870883348],[-66.072021849,-54.857149178],[-66.06270674,-54.844708118],[-66.047508231,-54.830645536],[-66.029739349,-54.820014559],[-66.003649939,-54.809340492],[-65.993714982,-54.805926021],[-65.978278914,-54.802802462],[-65.967798063,-54.802085699],[-65.957299852,-54.80247242],[-65.916922346,-54.808102209],[-65.904978516,-54.803761732],[-65.89492911,-54.801400944],[-65.884689871,-54.80008875],[-65.869214027,-54.800114066],[-65.853927414,-54.802526919],[-65.810797465,-54.812807937],[-65.787471913,-54.807446594],[-65.776585527,-54.806106607],[-65.765617871,-54.805966963],[-65.718721785,-54.808420732],[-65.6957814,-54.81197489],[-65.67668229,-54.818605721],[-65.659307228,-54.828942602],[-65.647268874,-54.839482526],[-65.631883852,-54.835588686],[-65.591773893,-54.828940034],[-65.580475426,-54.828318098],[-65.561089935,-54.829287653],[-65.548791266,-54.817267799],[-65.535738483,-54.808207322],[-65.498883596,-54.791223161],[-65.484204951,-54.786789922],[-65.469021095,-54.784652924],[-65.424663557,-54.784123787],[-65.404472204,-54.786996124],[-65.386526535,-54.792903605],[-65.371687196,-54.776774724],[-65.354445869,-54.763291799],[-65.345940272,-54.75802674],[-65.335549815,-54.736652364],[-65.360367552,-54.742900948],[-65.372002048,-54.744491859],[-65.409963608,-54.745208229],[-65.457035707,-54.740977892],[-65.694267573,-54.762293617],[-65.704610914,-54.762155881],[-65.714884688,-54.760950372],[-65.77838911,-54.750144257],[-65.8586327,-54.746350524],[-65.879411363,-54.74163384],[-65.89051213,-54.738116455],[-65.920049156,-54.723443268],[-65.942694378,-54.72189642],[-65.972280036,-54.716015397],[-66.315582445,-54.615429459],[-66.404934627,-54.581784845],[-66.434007184,-54.575779628],[-66.470098557,-54.570990478],[-66.504067055,-54.563383212],[-66.519316407,-54.558662406],[-66.528980469,-54.554190587],[-66.542449619,-54.545622579],[-66.554383775,-54.535020472],[-66.564292068,-54.522909838],[-66.577684606,-54.516561988],[-66.590266674,-54.508077176],[-66.615028319,-54.484755223],[-66.712790513,-54.427452096],[-66.728051291,-54.413772001],[-66.767912291,-54.36528584],[-66.805539245,-54.342993669],[-66.941203431,-54.306881331],[-66.987027406,-54.289732913],[-67.001109984,-54.281342386],[-67.017190674,-54.267219212],[-67.05936714,-54.250712804],[-67.168344089,-54.219542799],[-67.181386287,-54.214811401],[-67.344774811,-54.142064772],[-67.627202144,-53.991037873],[-67.635298282,-53.984996685],[-67.646198237,-53.974482671],[-67.667715255,-53.946953119],[-67.677410015,-53.927231863],[-67.683157639,-53.903470909],[-67.709250596,-53.904567179],[-67.724735954,-53.903287028],[-67.744720375,-53.897886285],[-67.763164565,-53.888486446],[-67.775507986,-53.879048486],[-67.789413753,-53.863713078],[-67.797602603,-53.850507857],[-67.804814919,-53.832361555],[-67.836031415,-53.817811275],[-67.849034244,-53.810524985],[-68.038881807,-53.684683685],[-68.055773188,-53.670582878],[-68.072070309,-53.649158074],[-68.127362229,-53.583626275],[-68.13603419,-53.570039085],[-68.15040601,-53.53523319],[-68.159739865,-53.49671375],[-68.169400885,-53.48008523],[-68.178549808,-53.457642234],[-68.181672834,-53.442686984],[-68.182295098,-53.423635586],[-68.205030295,-53.414864585],[-68.290058913,-53.419988325],[-68.306681896,-53.419605149],[-68.380931036,-53.407644033],[-68.423077248,-53.399401285],[-68.456776642,-53.397570088],[-68.472433243,-53.395469778],[-68.492424521,-53.388892744],[-68.558556371,-53.354839298],[-68.607339458,-53.320994037],[-68.607083494,-53.069295691],[-68.594627696,-53.053274255],[-68.578849182,-53.039265111],[-68.51502252,-53.002529344],[-68.465957137,-52.965688231],[-68.436864472,-52.947995916],[-68.467471336,-52.930616558],[-68.494162559,-52.909747873],[-68.563550428,-52.833684752],[-68.606804302,-52.794756265],[-68.606665015,-52.657790542],[-68.438693661,-52.403950776],[-68.435040117,-52.39669323],[-68.432392955,-52.39808166],[-68.428578139,-52.397137523],[-68.419222713,-52.391910553],[-68.419606209,-52.329769134],[-68.564794779,-52.325134158],[-68.586119652,-52.304019928],[-68.71465075,-52.282390475],[-68.832111001,-52.276210665],[-68.927100777,-52.232265353],[-68.963793874,-52.213039279],[-69.05326283,-52.187290072],[-69.189816833,-52.150211334],[-69.445322329,-52.15141585],[-69.409985923,-52.146228458],[-69.36540171,-52.145014714],[-69.269529766,-52.109401654],[-69.25395306,-52.10501238],[-69.193928109,-52.099273737],[-69.173918927,-52.099565362],[-69.1137,-52.109459807],[-69.098783693,-52.113138576],[-69.044132585,-52.134401901],[-68.966073206,-52.176327507],[-68.938136049,-52.187202374],[-68.920092556,-52.190998892],[-68.882140526,-52.203559686],[-68.812040738,-52.204105733],[-68.802661435,-52.205461834],[-68.774486042,-52.212193264],[-68.716671147,-52.206984607],[-68.700737868,-52.207634106],[-68.595199599,-52.231428737],[-68.761713348,-52.069225614],[-68.832943438,-51.974893953],[-68.903987552,-51.868149046],[-68.946056857,-51.827418693],[-68.955420077,-51.815825276],[-69.009650607,-51.718828978],[-69.060301989,-51.745719071],[-69.15408801,-51.777980008],[-69.177539142,-51.784296666],[-69.187985965,-51.786014336],[-69.198555837,-51.786617915],[-69.228976057,-51.786191416],[-69.24445536,-51.783380185],[-69.259302191,-51.778176008],[-69.273149072,-51.770707694],[-69.289468373,-51.757554965],[-69.299707776,-51.745610658],[-69.307947143,-51.732208246],[-69.315477102,-51.712647735],[-69.31866991,-51.693144647],[-69.322492513,-51.692151092],[-69.353646934,-51.688857634],[-69.386719043,-51.6919173],[-69.607228954,-51.724716586],[-69.628113783,-51.724535836],[-69.64850556,-51.720020954],[-69.658236669,-51.716192553],[-69.671952031,-51.708599895],[-69.684312241,-51.698957032],[-69.695013535,-51.687500946],[-69.703792919,-51.674513182],[-69.710434631,-51.660312926],[-69.714775444,-51.645249163],[-69.716708679,-51.6296921],[-69.715467775,-51.608843385],[-69.707889169,-51.58388858],[-69.697326581,-51.565870798],[-69.690693157,-51.557786936],[-69.67925329,-51.547068305],[-69.66166717,-51.535801667],[-69.629424267,-51.523061131],[-69.615735418,-51.518990029],[-69.5816102,-51.511444754],[-69.544144751,-51.490571426],[-69.524132001,-51.483233179],[-69.487987087,-51.476235434],[-69.440134491,-51.472068324],[-69.417861963,-51.463986821],[-69.394925715,-51.458484644],[-69.36674871,-51.455980857],[-69.354840926,-51.45589759],[-69.279075952,-51.45988522],[-69.262088122,-51.462252299],[-69.147122266,-51.502070765],[-69.141740727,-51.502934691],[-69.127979775,-51.491784856],[-69.118609515,-51.48567418],[-69.092822169,-51.473784352],[-69.152402165,-51.365567165],[-69.174762977,-51.307232547],[-69.180546773,-51.279414515],[-69.19206437,-51.262563231],[-69.198325104,-51.248564179],[-69.202371751,-51.233772461],[-69.206386817,-51.20604257],[-69.236443314,-51.102943162],[-69.277244237,-51.121234227],[-69.329276445,-51.150660862],[-69.361588895,-51.171017995],[-69.375780706,-51.177616307],[-69.390828223,-51.181919497],[-69.406362864,-51.183822162],[-69.416802218,-51.1837315],[-69.432301471,-51.181559319],[-69.452080725,-51.17496033],[-69.470061553,-51.164403086],[-69.48546221,-51.150346582],[-69.497613129,-51.133401945],[-69.505986029,-51.11430587],[-69.510216887,-51.093888588],[-69.510121758,-51.073037773],[-69.503943706,-51.047744226],[-69.497157984,-51.033641064],[-69.473746889,-50.993675267],[-69.463871872,-50.980977197],[-69.452088631,-50.970026755],[-69.39738061,-50.931801879],[-69.312309805,-50.888384266],[-69.259197308,-50.850987167],[-69.249906963,-50.845800199],[-69.228486771,-50.836520328],[-69.230286562,-50.815234838],[-69.240839381,-50.794689342],[-69.245508659,-50.778734523],[-69.249885656,-50.746301354],[-69.248589389,-50.725542062],[-69.244807273,-50.710394954],[-69.233891686,-50.679121349],[-69.209634296,-50.630495982],[-69.17791377,-50.574618897],[-69.174843486,-50.5419452],[-69.166524288,-50.5165948],[-69.158399773,-50.502765833],[-69.140585929,-50.481524096],[-69.122192003,-50.453301832],[-69.086540472,-50.412974067],[-69.071149288,-50.393486915],[-69.050460983,-50.36319985],[-68.966703561,-50.287613341],[-68.958284207,-50.273128324],[-68.948484591,-50.261231998],[-68.936973265,-50.250982879],[-68.919439871,-50.240294154],[-68.894531983,-50.229819729],[-68.880020656,-50.225063066],[-68.864954264,-50.222571427],[-68.849639587,-50.222406979],[-68.815632362,-50.201114957],[-68.800882384,-50.194472424],[-68.790536384,-50.191405484],[-68.774549244,-50.188936387],[-68.76376004,-50.188739151],[-68.747957943,-50.190013902],[-68.645032749,-50.156842535],[-68.577200371,-50.137078619],[-68.58881533,-50.124191548],[-68.598230545,-50.110548129],[-68.611121385,-50.080406402],[-68.650101986,-50.092551281],[-68.671382571,-50.094724254],[-68.728687513,-50.088823652],[-68.772271233,-50.082534941],[-68.80237991,-50.08452542],[-68.833611817,-50.081619833],[-68.840433118,-50.084022304],[-68.87521907,-50.103007172],[-68.889946637,-50.108073365],[-68.905282225,-50.110791322],[-69.008396447,-50.115557547],[-69.030156964,-50.113834745],[-69.050151867,-50.108272508],[-69.068567983,-50.098702696],[-69.076932489,-50.092537457],[-69.088168779,-50.081747814],[-69.102754277,-50.060325339],[-69.111344829,-50.03587413],[-69.113498502,-50.00774505],[-69.110223534,-49.982362611],[-69.100613138,-49.958642705],[-69.085296788,-49.938138972],[-69.073771724,-49.927950697],[-69.060820427,-49.919650581],[-69.012969823,-49.899395982],[-69.003053993,-49.895913836],[-68.987632901,-49.892686741],[-68.962220111,-49.891567874],[-68.950393416,-49.887895915],[-68.914509565,-49.870469188],[-68.894012744,-49.864246705],[-68.872660939,-49.86253225],[-68.802957131,-49.868034971],[-68.7444023,-49.864163608],[-68.733537357,-49.864601176],[-68.719401434,-49.866574207],[-68.742687611,-49.835982857],[-68.790007792,-49.814160503],[-68.80297585,-49.805179653],[-68.814370322,-49.794271298],[-68.823907683,-49.781706867],[-68.83135062,-49.767798996],[-68.836513932,-49.752893748],[-68.839269143,-49.737362006],[-68.839547695,-49.721590241],[-68.836063459,-49.700865786],[-68.828324965,-49.681327141],[-68.816673979,-49.663837216],[-68.801625059,-49.649168442],[-68.78384283,-49.637968654],[-68.76411263,-49.630732483],[-68.743305831,-49.62777951],[-68.703279723,-49.630486471],[-68.660588934,-49.642010097],[-68.62186134,-49.659393862],[-68.598572102,-49.67470278],[-68.585687197,-49.684917369],[-68.574650327,-49.697105318],[-68.520389765,-49.767231328],[-68.496951467,-49.78954027],[-68.487695257,-49.800691186],[-68.462338649,-49.843676093],[-68.453609084,-49.863475724],[-68.433799337,-49.874569754],[-68.42524592,-49.880533116],[-68.389718724,-49.911762996],[-68.380170351,-49.923561062],[-68.359841486,-49.953259546],[-68.344569469,-49.987553583],[-68.342978827,-49.989262558],[-68.328288217,-49.995882487],[-68.319043045,-50.001665323],[-68.306491144,-50.012137933],[-68.297324303,-50.021974954],[-68.26119517,-50.024266748],[-68.189927905,-50.015696921],[-68.111490756,-49.993304745],[-68.026842234,-49.953694229],[-67.946822385,-49.911207371],[-67.902864407,-49.88105613],[-67.874996428,-49.844975892],[-67.860645653,-49.823380146],[-67.827662328,-49.749848464],[-67.815775218,-49.691399734],[-67.817832928,-49.6647996],[-67.812331203,-49.614098333],[-67.806262542,-49.590978381],[-67.804932946,-49.545699193],[-67.796488012,-49.507776968],[-67.791368598,-49.491763169],[-67.8223368,-49.490964863],[-67.83373764,-49.489378659],[-67.844880671,-49.486492828],[-67.8680901,-49.478886359],[-67.877739693,-49.47461679],[-67.891237726,-49.466368395],[-67.90326617,-49.45609467],[-67.910318311,-49.448245392],[-67.919250174,-49.435189561],[-67.926011486,-49.420888597],[-67.930433056,-49.405700357],[-67.932330112,-49.379453202],[-67.927233106,-49.352806838],[-67.916972529,-49.328695858],[-67.907916072,-49.315808804],[-67.896948417,-49.304503667],[-67.884341667,-49.295060923],[-67.870408589,-49.287714842],[-67.855494857,-49.282647677],[-67.841533175,-49.280169287],[-67.832093087,-49.267888788],[-67.829729661,-49.252016383],[-67.822834185,-49.232140132],[-67.815010216,-49.218423023],[-67.805124417,-49.206108618],[-67.797508227,-49.198831621],[-67.784756525,-49.189516704],[-67.77069744,-49.182325338],[-67.756989418,-49.177787632],[-67.734309165,-49.141785316],[-67.73034683,-49.109066522],[-67.727530731,-49.098671061],[-67.721254706,-49.083795342],[-67.715773546,-49.074524263],[-67.705764877,-49.061855323],[-67.693847878,-49.050962177],[-67.680319502,-49.041413741],[-67.663801123,-49.00199577],[-67.640597347,-48.961633614],[-67.631238443,-48.949322939],[-67.616026411,-48.9354278],[-67.455911306,-48.817733644],[-67.356101221,-48.773399684],[-67.286465444,-48.752769414],[-67.28341918,-48.751090632],[-67.274927154,-48.728593953],[-67.266874661,-48.714683817],[-67.252877204,-48.698480049],[-67.23715151,-48.685960139],[-67.231077458,-48.659594411],[-67.219155566,-48.63614732],[-67.205459516,-48.620142352],[-67.17912891,-48.5975694],[-67.166728059,-48.588565695],[-67.153097086,-48.581562527],[-67.088384035,-48.55436211],[-67.03636239,-48.524774022],[-67.022349781,-48.518183445],[-67.002406041,-48.51290377],[-66.94896085,-48.50720275],[-66.938339321,-48.489017398],[-66.924491081,-48.473783065],[-66.912213291,-48.464399751],[-66.894105237,-48.454993646],[-66.873034818,-48.435707602],[-66.864371389,-48.429279139],[-66.828142901,-48.409925229],[-66.808031883,-48.393970782],[-66.793747446,-48.385449306],[-66.735161346,-48.363833411],[-66.690893778,-48.339391287],[-66.676032967,-48.33427132],[-66.660553459,-48.331543208],[-66.585792209,-48.324360801],[-66.560732615,-48.323934451],[-66.552137021,-48.308533864],[-66.538633657,-48.292622931],[-66.526494621,-48.2827233],[-66.515765932,-48.276223048],[-66.499432906,-48.264159362],[-66.484954899,-48.257117703],[-66.469534525,-48.252490642],[-66.453571475,-48.250398111],[-66.430807427,-48.250344119],[-66.422990761,-48.235634634],[-66.414325673,-48.223167738],[-66.382598835,-48.188879412],[-66.361939562,-48.172713004],[-66.3491049,-48.164297666],[-66.335133659,-48.157945433],[-66.322449018,-48.154199848],[-66.30998445,-48.139213652],[-66.293585156,-48.125604176],[-66.284392295,-48.120186235],[-66.269653062,-48.113969947],[-66.225770939,-48.101668441],[-66.217994053,-48.085283066],[-66.208896486,-48.072398496],[-66.197886169,-48.061104658],[-66.185237014,-48.051682518],[-66.153019315,-48.033696],[-66.120770304,-48.021094428],[-66.078180918,-48.011531287],[-66.061164385,-48.00979361],[-66.051423399,-47.991416868],[-66.050828701,-47.965375163],[-66.039770362,-47.927186159],[-66.027388497,-47.904100729],[-66.009961691,-47.883750165],[-66.113183821,-47.923190838],[-66.126891714,-47.926649823],[-66.196480788,-47.939239667],[-66.274548051,-47.968902751],[-66.294321633,-47.972261409],[-66.338816041,-47.975159929],[-66.353625376,-47.974330915],[-66.411862174,-47.961251373],[-66.426953097,-47.95644395],[-66.445537031,-47.946450865],[-66.453935305,-47.940040987],[-66.465149747,-47.92885691],[-66.471582373,-47.920476047],[-66.479486485,-47.906751168],[-66.487551979,-47.881668231],[-66.488786317,-47.855349373],[-66.486192179,-47.839725105],[-66.481163752,-47.824706376],[-66.473827173,-47.810669927],[-66.46078048,-47.794086558],[-66.448865171,-47.78365235],[-66.430705177,-47.772908098],[-66.410695025,-47.766213461],[-66.379965045,-47.761473576],[-66.305265109,-47.763507399],[-66.249005382,-47.736282058],[-66.181220342,-47.712241837],[-66.156049188,-47.705272406],[-66.150585415,-47.702732102],[-66.12348817,-47.679351715],[-66.114864363,-47.673318317],[-66.080433617,-47.652001467],[-66.060951527,-47.643788496],[-66.045442385,-47.640424186],[-66.029596316,-47.639555758],[-65.966228938,-47.641207621],[-65.909883045,-47.64727292],[-65.881101552,-47.589892517],[-65.833805371,-47.484024428],[-65.825749644,-47.394412641],[-65.8165535,-47.348666123],[-65.831472488,-47.312439781],[-65.848821019,-47.259394218],[-65.864878161,-47.248759078],[-65.881061213,-47.235828336],[-65.910277609,-47.217430219],[-65.92128026,-47.207058345],[-65.931878635,-47.193108043],[-65.946550304,-47.190128909],[-65.956344596,-47.186797724],[-66.004435681,-47.16481143],[-66.059884118,-47.179197021],[-66.074718948,-47.18199846],[-66.205006997,-47.189484826],[-66.318059112,-47.172845826],[-66.375983264,-47.165400443],[-66.386316156,-47.162963227],[-66.397848276,-47.158771895],[-66.439178428,-47.161282203],[-66.453743426,-47.160434077],[-66.484841889,-47.154344443],[-66.516050467,-47.142139887],[-66.535072847,-47.145764931],[-66.565179709,-47.148001463],[-66.58081652,-47.147136868],[-66.591840998,-47.14500119],[-66.614660269,-47.15021403],[-66.636078177,-47.150952545],[-66.65716161,-47.147110534],[-66.68130939,-47.136922019],[-66.708724022,-47.137293962],[-66.718538184,-47.135865484],[-66.732873944,-47.131920187],[-66.82900557,-47.097097878],[-66.841629857,-47.09000196],[-66.884566718,-47.061383585],[-66.897687768,-47.04960123],[-66.951015651,-46.992450959],[-67.027747217,-46.931725611],[-67.04186086,-46.924680378],[-67.052525775,-46.917219279],[-67.062781643,-46.914627888],[-67.077227035,-46.908888581],[-67.086286808,-46.903846483],[-67.098777478,-46.89459488],[-67.11292001,-46.879467355],[-67.128047146,-46.855513791],[-67.147220415,-46.834224084],[-67.17777114,-46.814171249],[-67.189667552,-46.80296673],[-67.198636576,-46.791361764],[-67.21919848,-46.787682692],[-67.239808465,-46.779708371],[-67.287176982,-46.754450055],[-67.299425727,-46.744921593],[-67.310089562,-46.733564454],[-67.363388461,-46.721508664],[-67.382807912,-46.713822667],[-67.482801763,-46.647731251],[-67.494102756,-46.637957393],[-67.503821353,-46.626608841],[-67.603241668,-46.490674257],[-67.630792968,-46.445074015],[-67.668696544,-46.356152512],[-67.718201684,-46.192643708],[-67.721786355,-46.175395071],[-67.724252116,-46.135846888],[-67.723869544,-46.11958412],[-67.718887579,-46.078137386],[-67.708443269,-46.040430938],[-67.667558889,-45.947409563],[-67.658963062,-45.933501204],[-67.646549878,-45.918226587],[-67.644199844,-45.907104155],[-67.638780091,-45.892091526],[-67.633867316,-45.882645785],[-67.616587184,-45.856604142],[-67.606441577,-45.844923429],[-67.594561217,-45.834186719],[-67.586933841,-45.821387349],[-67.576782416,-45.808991814],[-67.56478167,-45.798376598],[-67.549535216,-45.788918973],[-67.537875133,-45.767768144],[-67.524332671,-45.752109717],[-67.507856176,-45.739575377],[-67.461074829,-45.71217119],[-67.455973456,-45.696705593],[-67.456150824,-45.653779832],[-67.451207947,-45.627505232],[-67.433534088,-45.587574933],[-67.409841722,-45.550810413],[-67.402624455,-45.542770004],[-67.390280052,-45.53228408],[-67.363709376,-45.517623541],[-67.343463842,-45.493191253],[-67.331184473,-45.4818789],[-67.291832367,-45.454470164],[-67.24035915,-45.393100118],[-67.204064243,-45.354451403],[-67.170478707,-45.323982808],[-67.13711422,-45.280883781],[-67.073111055,-45.226920737],[-67.058252856,-45.216707587],[-67.012611952,-45.191062141],[-66.972815935,-45.166514701],[-66.896802972,-45.139562778],[-66.876613007,-45.1358935],[-66.795847312,-45.129662926],[-66.684946966,-45.115742194],[-66.67861352,-45.09747211],[-66.670990321,-45.083846822],[-66.661339228,-45.071574168],[-66.649895498,-45.060953307],[-66.636938084,-45.052243137],[-66.622782838,-45.045655978],[-66.607774812,-45.041352398],[-66.595984191,-45.03970029],[-66.584112458,-45.02915244],[-66.556829574,-45.008562142],[-66.538217844,-44.997458159],[-66.499096077,-44.982065618],[-66.451771001,-44.971472495],[-66.434477162,-44.96144639],[-66.414111858,-44.95477655],[-66.399986463,-44.952850372],[-66.371161891,-44.945779024],[-66.356597756,-44.943688089],[-66.312381114,-44.944496645],[-66.298756259,-44.945870091],[-66.285477566,-44.937787143],[-66.270487079,-44.921623187],[-66.258528948,-44.911573371],[-66.245151681,-44.903508357],[-66.22567593,-44.896175004],[-66.215471999,-44.894066643],[-66.199893756,-44.892920315],[-66.169946001,-44.895650652],[-66.118621456,-44.888758163],[-66.097475695,-44.889238859],[-66.03464025,-44.903682457],[-66.009176533,-44.903365361],[-65.993384595,-44.905781648],[-65.973308414,-44.91284749],[-65.948736456,-44.927301758],[-65.935627336,-44.919200553],[-65.926093031,-44.914900927],[-65.898726131,-44.906857087],[-65.884202532,-44.904024058],[-65.835108048,-44.903426879],[-65.819607698,-44.905662899],[-65.808365182,-44.908924441],[-65.821605204,-44.883438479],[-65.826937537,-44.863758673],[-65.828250256,-44.848511372],[-65.826052782,-44.795167398],[-65.822475444,-44.779544663],[-65.816448237,-44.764694076],[-65.808125978,-44.750997098],[-65.795774467,-44.736963708],[-65.794412487,-44.718025973],[-65.790528903,-44.70268043],[-65.773885843,-44.665681042],[-65.765021098,-44.651845532],[-65.730248216,-44.611405889],[-65.704998307,-44.589374176],[-65.692406704,-44.580939458],[-65.638613118,-44.551134938],[-65.624215028,-44.54610248],[-65.60728799,-44.543159879],[-65.596031183,-44.534976225],[-65.586415732,-44.529635262],[-65.537911912,-44.511729029],[-65.520309111,-44.495452606],[-65.502439028,-44.485182737],[-65.482843071,-44.478794584],[-65.46477439,-44.476313643],[-65.458204823,-44.463671605],[-65.448668679,-44.450687864],[-65.437171456,-44.439403829],[-65.427439421,-44.432266304],[-65.420878832,-44.415101002],[-65.413547922,-44.400919733],[-65.398772747,-44.382526499],[-65.390062868,-44.368566645],[-65.375611579,-44.352973862],[-65.3578302,-44.340601941],[-65.363180304,-44.324660095],[-65.386103642,-44.298203316],[-65.39187309,-44.289129313],[-65.398620225,-44.274489751],[-65.402927543,-44.258956315],[-65.405904419,-44.238272721],[-65.408390118,-44.192118351],[-65.405943645,-44.176734688],[-65.39465687,-44.138108995],[-65.38636321,-44.118243581],[-65.37745064,-44.104764622],[-65.366483474,-44.092897123],[-65.336938681,-44.07061286],[-65.335493203,-44.062643855],[-65.339802526,-44.048008475],[-65.3415803,-44.035816422],[-65.349009907,-44.02779046],[-65.358078353,-44.014876753],[-65.368339839,-43.99071447],[-65.375007088,-43.961441253],[-65.375345225,-43.944821864],[-65.373278267,-43.926134377],[-65.37805507,-43.913628801],[-65.395746945,-43.895379219],[-65.404624831,-43.882560315],[-65.411402023,-43.868517137],[-65.416893599,-43.84848189],[-65.418127022,-43.82774431],[-65.41540614,-43.793430658],[-65.422227198,-43.777594734],[-65.430882835,-43.748005148],[-65.434027284,-43.670261079],[-65.430017159,-43.644491451],[-65.423312954,-43.625379008],[-65.416296917,-43.611476234],[-65.40349938,-43.594678669],[-65.393578002,-43.578319821],[-65.355410684,-43.527375811],[-65.344580902,-43.515145997],[-65.331904476,-43.504842561],[-65.312531519,-43.494315747],[-65.272726602,-43.468020377],[-65.268532931,-43.463956202],[-65.232695467,-43.414844016],[-65.224926371,-43.406380126],[-65.142208688,-43.341912072],[-65.14295128,-43.31245976],[-65.137090507,-43.28668259],[-65.11653463,-43.245458674],[-65.106759732,-43.232617939],[-65.095046645,-43.221516734],[-65.076947775,-43.209913283],[-65.053818914,-43.201373862],[-65.047567222,-43.198066354],[-65.039217978,-43.192129885],[-65.008677049,-43.163235287],[-64.994719213,-43.153299261],[-64.806316048,-43.056215476],[-64.786410212,-43.049658294],[-64.665164611,-43.023405685],[-64.685824582,-43.016896214],[-64.710915391,-43.004254302],[-64.755572856,-42.974375745],[-64.778036364,-42.96283387],[-64.889136882,-42.922333084],[-64.956782439,-42.905928384],[-64.970298532,-42.900172995],[-64.992237453,-42.887601572],[-65.025870562,-42.880628879],[-65.044707888,-42.872807144],[-65.053430591,-42.867497493],[-65.06538729,-42.857936757],[-65.083943038,-42.840413887],[-65.094132237,-42.827951514],[-65.099754882,-42.818803094],[-65.106271697,-42.804083664],[-65.116314386,-42.769477267],[-65.118903401,-42.748013566],[-65.116818802,-42.726495019],[-65.112238763,-42.710926382],[-65.101213532,-42.686303513],[-65.093127948,-42.673128699],[-65.083108485,-42.66135743],[-65.054901836,-42.6376227],[-65.039114006,-42.610380201],[-65.016113104,-42.582892461],[-65.00779815,-42.575583205],[-64.993940765,-42.566451458],[-64.96606039,-42.551369735],[-64.952522441,-42.545992446],[-64.889456976,-42.532298585],[-64.848372177,-42.528767943],[-64.810512766,-42.489961255],[-64.786474897,-42.47230349],[-64.754573637,-42.45769743],[-64.744197704,-42.454884286],[-64.724914946,-42.451681435],[-64.712864581,-42.444040594],[-64.700946034,-42.438228784],[-64.702138302,-42.416649839],[-64.698907803,-42.396285425],[-64.68752128,-42.355741503],[-64.67555494,-42.333292573],[-64.680682842,-42.330090641],[-64.722660438,-42.329754407],[-64.759019731,-42.324269264],[-64.795246937,-42.313936897],[-64.824290293,-42.302278887],[-64.837729628,-42.295542587],[-64.859688335,-42.294492427],[-64.888165408,-42.288731374],[-64.902585107,-42.282770573],[-64.990059245,-42.237679578],[-65.040207329,-42.200386485],[-65.084297787,-42.154111854],[-65.155269296,-42.037304317],[-65.163795639,-42.019260125],[-65.167740569,-42.0048101],[-65.174141985,-41.95978368],[-65.174284778,-41.943890844],[-65.171907831,-41.928176113],[-65.150503134,-41.86652913],[-65.107495704,-41.791851041],[-65.100913483,-41.77594526],[-65.121366919,-41.733348278],[-65.134563818,-41.688032911],[-65.137161311,-41.661684633],[-65.134187428,-41.640690984],[-65.122529945,-41.60297761],[-65.116161204,-41.589018424],[-65.102807284,-41.568880158],[-65.095606434,-41.549495036],[-65.132077083,-41.518950001],[-65.147520395,-41.4988827],[-65.154178485,-41.485197135],[-65.168348885,-41.448896626],[-65.175526439,-41.416960473],[-65.199898789,-41.360960129],[-65.204241957,-41.341119324],[-65.205811726,-41.318256429],[-65.244422006,-41.202271574],[-65.273766616,-41.026580516],[-65.275109951,-41.011575212],[-65.275372664,-40.96121983],[-65.270126215,-40.928674766],[-65.266094845,-40.913115761],[-65.254436849,-40.88102558],[-65.235121561,-40.845358663],[-65.231741187,-40.825127525],[-65.220554479,-40.796495178],[-65.209095166,-40.779052022],[-65.188489754,-40.759034893],[-65.174094936,-40.748352122],[-65.10038486,-40.703292473],[-65.083098144,-40.689861572],[-65.075783799,-40.67606717],[-65.066403852,-40.66357135],[-65.059116754,-40.65611998],[-65.046833105,-40.646463849],[-65.023633176,-40.632472643],[-64.978603294,-40.616643874],[-64.956058041,-40.611813993],[-64.888905483,-40.605999192],[-64.872361325,-40.607637144],[-64.778123043,-40.624971128],[-64.758298571,-40.630787607],[-64.724365803,-40.648382861],[-64.7111854,-40.656845154],[-64.699488065,-40.667261765],[-64.684048183,-40.688252535],[-64.677587999,-40.702521362],[-64.673702748,-40.71640479],[-64.665706842,-40.728794061],[-64.659548812,-40.742223421],[-64.627173415,-40.748008917],[-64.612808864,-40.751692844],[-64.523463526,-40.786703321],[-64.385260607,-40.815945217],[-64.145442429,-40.912769248],[-64.134781912,-40.914914352],[-64.110395416,-40.907278758],[-64.071102205,-40.8998482],[-64.04965005,-40.900225213],[-64.028772079,-40.905169647],[-64.009429383,-40.914453892],[-63.990809616,-40.928246949],[-63.97919653,-40.938878048],[-63.967379689,-40.954367811],[-63.929754933,-40.967377076],[-63.916157118,-40.97404687],[-63.817689237,-41.045645118],[-63.796489574,-41.054173717],[-63.769911104,-41.058905217],[-63.623487448,-41.060871142],[-63.478245066,-41.05423707],[-63.3862203,-41.060659797],[-63.377728396,-41.059696798],[-63.334958906,-41.049669264],[-63.31916195,-41.048067773],[-63.106310903,-41.054617554],[-63.080778579,-41.050320706],[-62.966697478,-41.004818153],[-62.909520278,-40.992405429],[-62.884240772,-40.975576544],[-62.865538441,-40.960259028],[-62.856026925,-40.954780025],[-62.840778781,-40.948595163],[-62.820811142,-40.943538369],[-62.804429998,-40.941719941],[-62.793439217,-40.942016206],[-62.772110183,-40.944803019],[-62.756602827,-40.943957373],[-62.739676002,-40.932666598],[-62.713528311,-40.918944105],[-62.643352343,-40.896507351],[-62.523771227,-40.839779332],[-62.39443984,-40.787735219],[-62.378213671,-40.756548357],[-62.393600946,-40.746076755],[-62.408466637,-40.730785851],[-62.426686509,-40.702389596],[-62.434838499,-40.683137512],[-62.438221347,-40.667813754],[-62.439123081,-40.651203496],[-62.44350211,-40.635691352],[-62.446795058,-40.61343491],[-62.444915063,-40.584486386],[-62.438823473,-40.562143691],[-62.452828956,-40.555912979],[-62.466832422,-40.547552359],[-62.475330343,-40.541771018],[-62.48685416,-40.531542296],[-62.496669755,-40.519664621],[-62.527820072,-40.47400874],[-62.536057691,-40.45497961],[-62.548430991,-40.40760934],[-62.571353813,-40.373411178],[-62.580677127,-40.352764068],[-62.588946506,-40.322763414],[-62.590054092,-40.306699671],[-62.588569151,-40.290666408],[-62.580295788,-40.259855087],[-62.574240256,-40.244021067],[-62.565597143,-40.229437436],[-62.543944829,-40.200249864],[-62.517857807,-40.174556279],[-62.492754444,-40.154763881],[-62.476001123,-40.145141062],[-62.447034183,-40.133726487],[-62.443759433,-40.124878613],[-62.459186099,-40.091230724],[-62.464959569,-40.070584971],[-62.466321517,-40.054550809],[-62.465093995,-40.038505796],[-62.46130879,-40.022865416],[-62.454058982,-40.00279817],[-62.445937783,-39.988337521],[-62.438910729,-39.979163101],[-62.431333274,-39.962961932],[-62.42423553,-39.930202481],[-62.411701298,-39.896429432],[-62.414541575,-39.867253716],[-62.413010114,-39.851835174],[-62.408005118,-39.833866586],[-62.40794014,-39.809203703],[-62.403286999,-39.789284617],[-62.393230975,-39.763982844],[-62.381334208,-39.746480126],[-62.374064872,-39.738770294],[-62.361735641,-39.728753556],[-62.352700588,-39.72321708],[-62.338178035,-39.716779654],[-62.328008214,-39.713803166],[-62.3123065,-39.711394601],[-62.296421498,-39.71150282],[-62.285927736,-39.712974454],[-62.26569954,-39.719195248],[-62.251637837,-39.726585342],[-62.212292938,-39.751185855],[-62.210045765,-39.71449196],[-62.184036981,-39.573210614],[-62.174036794,-39.545104981],[-62.173383663,-39.52826003],[-62.199729154,-39.516459522],[-62.21339987,-39.508020261],[-62.262041176,-39.471729144],[-62.289987765,-39.442070353],[-62.305068138,-39.436718017],[-62.318877429,-39.429167948],[-62.343698102,-39.40888898],[-62.354073325,-39.39652449],[-62.36548369,-39.378464225],[-62.372201236,-39.363765086],[-62.378983761,-39.343181551],[-62.391868685,-39.330835528],[-62.407459469,-39.31207779],[-62.415378319,-39.298679244],[-62.421122273,-39.284214245],[-62.425165252,-39.263876922],[-62.425110641,-39.245191579],[-62.439002326,-39.214982917],[-62.445190261,-39.194834492],[-62.447017666,-39.173836631],[-62.444789811,-39.151524229],[-62.450052853,-39.14086375],[-62.454868965,-39.126334357],[-62.457811087,-39.101037896],[-62.45549042,-39.080776827],[-62.448921206,-39.058571855],[-62.438666524,-39.039200929],[-62.427747195,-39.025782841],[-62.418572785,-39.004150315],[-62.427333033,-38.984505086],[-62.442008951,-38.973246907],[-62.452608128,-38.961722684],[-62.461278545,-38.94868527],[-62.467807645,-38.934454278],[-62.472913595,-38.91422909],[-62.473740793,-38.894089466],[-62.480380249,-38.879159065],[-62.484559137,-38.863945782],[-62.490195935,-38.81623111],[-62.487066653,-38.78984552],[-62.477099193,-38.765215426],[-62.457851428,-38.735983676],[-62.447263664,-38.724665766],[-62.435054252,-38.715119766],[-62.395248562,-38.69429532],[-62.38006871,-38.68964662],[-62.359050371,-38.687287755],[-62.338006035,-38.689402162],[-62.309821189,-38.696726517],[-62.295278988,-38.701803816],[-62.151197336,-38.710668143],[-62.129778671,-38.714351998],[-62.114515469,-38.720112234],[-62.090827619,-38.732939984],[-62.070939527,-38.748888498],[-62.045004053,-38.783974106],[-62.026104287,-38.822941739],[-62.020568932,-38.831009464],[-62.015778553,-38.834461749],[-61.997052697,-38.841813229],[-61.825983656,-38.881270732],[-61.797124777,-38.882239151],[-61.777332438,-38.878940428],[-61.760154175,-38.872668011],[-61.749470445,-38.870057162],[-61.733069582,-38.868376247],[-61.714883296,-38.8685088],[-61.700230416,-38.870776433],[-61.686073911,-38.875185788],[-61.670583397,-38.882232347],[-61.659701055,-38.8888404],[-61.639892418,-38.89723247],[-61.535926996,-38.908864964],[-61.517924188,-38.902337482],[-61.452901402,-38.885654539],[-61.429311011,-38.882525145],[-61.333341548,-38.881475433],[-61.148258936,-38.900065714],[-61.088069267,-38.888022497],[-61.071215713,-38.879541476],[-61.057523957,-38.874272918],[-61.025972089,-38.868646848],[-61.015605946,-38.868197992],[-60.991913866,-38.869629081],[-60.966976373,-38.874503024],[-60.872985082,-38.875590414],[-60.674687947,-38.844272118],[-60.515052513,-38.828314665],[-60.358840292,-38.807646587],[-59.904116976,-38.73957618],[-59.886063874,-38.738526992],[-59.817967247,-38.740107895],[-59.653393582,-38.686016277],[-59.087420496,-38.596364257],[-59.056058487,-38.585744402],[-59.030308849,-38.580484168],[-58.982010655,-38.55520702],[-58.966632349,-38.549621463],[-58.751406729,-38.490962565],[-58.597780672,-38.462817726],[-58.525452676,-38.429541213],[-58.445771289,-38.407675728],[-58.432266784,-38.404982062],[-58.353929187,-38.394901856],[-58.310414398,-38.374812105],[-58.191409679,-38.336552724],[-58.166672907,-38.325517139],[-58.122108923,-38.295364741],[-58.108271812,-38.287528964],[-58.080992158,-38.276895355],[-58.047741374,-38.271076546],[-57.908528406,-38.205551812],[-57.836357906,-38.163463556],[-57.731678826,-38.115514459],[-57.652364334,-38.071076089],[-57.636014251,-38.056239904],[-57.635065734,-38.054710037],[-57.635378336,-38.035430467],[-57.640366937,-38.016168936],[-57.641806992,-37.995715672],[-57.637364223,-37.942454413],[-57.626468828,-37.891845322],[-57.621358478,-37.87562202],[-57.602231875,-37.829492722],[-57.569419248,-37.774976035],[-57.52835359,-37.72407505],[-57.443510322,-37.639989638],[-57.430673998,-37.630275367],[-57.417276491,-37.623130807],[-57.389300067,-37.585637224],[-57.379288807,-37.574159648],[-57.367650672,-37.564335499],[-57.26382519,-37.489450103],[-57.236782265,-37.464979707],[-57.137711788,-37.354167545],[-57.101047759,-37.290026134],[-56.966923648,-37.099792435],[-56.86593025,-36.9729535],[-56.768640365,-36.869137278],[-56.766606496,-36.865267277],[-56.765004721,-36.847909272],[-56.772062398,-36.609162804],[-56.772828091,-36.603874175],[-56.793309585,-36.556255198],[-56.798545147,-36.535727092],[-56.799562191,-36.51985766],[-56.798357062,-36.442578793],[-56.833196192,-36.441616435],[-56.859905597,-36.450852397],[-56.889491522,-36.471632066],[-56.903639559,-36.478325211],[-56.913577879,-36.481523184],[-56.928974247,-36.484336898],[-56.939401271,-36.484860729],[-56.960135057,-36.482644651],[-56.979958514,-36.476176929],[-56.998009717,-36.465738779],[-57.020328104,-36.444961027],[-57.031245249,-36.430296717],[-57.050230429,-36.423122587],[-57.162184321,-36.366540565],[-57.314823754,-36.244770059],[-57.329664575,-36.228107907],[-57.346799827,-36.203666523],[-57.354534334,-36.188773474],[-57.369562023,-36.179311078],[-57.384677992,-36.165033918],[-57.3938936,-36.152438549],[-57.401037241,-36.138562702],[-57.408164479,-36.120373712],[-57.412571906,-36.099070207],[-57.427617254,-36.066957795],[-57.440510874,-36.05507583],[-57.450262878,-36.042427014],[-57.457876724,-36.028386947],[-57.465715654,-36.007838376],[-57.471265972,-35.98380644],[-57.473100842,-35.953578718],[-57.49110473,-35.883807651],[-57.493299909,-35.863040839],[-57.489918431,-35.837184664],[-57.476987615,-35.801855978],[-57.461731765,-35.736116179],[-57.444915657,-35.689020298],[-57.4323023,-35.667095245],[-57.399633139,-35.631295481],[-57.30243601,-35.507510797],[-57.238627406,-35.437927512],[-57.283502713,-35.367662718],[-57.32224564,-35.317286878],[-57.385047962,-35.25939558],[-57.418588286,-35.22263135],[-57.505512537,-35.151614059],[-57.54599873,-35.125478422],[-57.572797015,-35.102066658],[-57.643541095,-35.079368286],[-57.657878906,-35.071672682],[-57.730577981,-35.024657917],[-57.790699983,-35.004452112],[-57.80416408,-34.998802506],[-57.816661931,-34.991252429],[-57.861383736,-34.956318628],[-57.90685732,-34.931354868],[-57.934869276,-34.933614494],[-57.945208484,-34.933426263],[-57.955472973,-34.932171298],[-57.970490008,-34.92832117],[-58.002362033,-34.917301115],[-58.016836584,-34.910065231],[-58.033965105,-34.8969744],[-58.053412179,-34.876570567],[-58.092779238,-34.868558161],[-58.103222422,-34.864718057],[-58.125334563,-34.853833882],[-58.168894046,-34.849412319],[-58.179380128,-34.847350502],[-58.194547834,-34.842192495],[-58.229796579,-34.826956597],[-58.245169746,-34.818648381],[-58.290503335,-34.785017561],[-58.363412458,-34.744711634],[-58.376668447,-34.735939884],[-58.384659713,-34.728970889],[-58.395153135,-34.717031336],[-58.417427776,-34.683721065],[-58.427947738,-34.664608149],[-58.435441946,-34.655867977],[-58.462489303,-34.64195164],[-58.481063375,-34.630191881],[-58.49916578,-34.621767547],[-58.526318745,-34.606918937],[-58.542916965,-34.594221684],[-58.556513815,-34.578352002],[-58.568399223,-34.555120301],[-58.573357729,-34.534390074],[-58.583753258,-34.522415368],[-58.592382502,-34.508413248],[-58.604021459,-34.484140886],[-58.608548603,-34.468144035],[-58.611419888,-34.43895717],[-58.61069367,-34.423546181],[-58.606062435,-34.403519825],[-58.597950138,-34.385784534],[-58.622450959,-34.37358143],[-58.631139164,-34.367639814],[-58.642882183,-34.35710008],[-58.655688978,-34.340429464],[-58.666347883,-34.316440768],[-58.670136133,-34.295762939],[-58.668673688,-34.269553569],[-58.660441151,-34.244627777],[-58.6460058,-34.222703122],[-58.634765119,-34.211629208],[-58.618626807,-34.200597646],[-58.601389223,-34.18643269],[-58.579189476,-34.174420442],[-58.564667589,-34.170031308],[-58.549648869,-34.167889405],[-58.499052788,-34.16929088],[-58.492108229,-34.158742347],[-58.490508984,-34.129104846],[-58.485740321,-34.102774069],[-58.503694486,-34.093006784],[-58.519330094,-34.079746687],[-58.529097932,-34.067856629],[-58.539070741,-34.049944469],[-58.544032556,-34.0353786],[-58.546700905,-34.020223929],[-58.546472099,-33.995525207],[-58.543065948,-33.974963337],[-58.551256364,-33.937198895],[-58.554488096,-33.89674009],[-58.600551477,-33.842487663],[-58.611434666,-33.826870543],[-58.634133755,-33.780797616],[-58.647004654,-33.726289105],[-58.649054821,-33.711157674],[-58.649242548,-33.67766174],[-58.639504234,-33.592678249],[-58.636062004,-33.578433727],[-58.63171729,-33.567318723],[-58.635633251,-33.534314674],[-58.631406081,-33.484501128],[-58.617820139,-33.421666993],[-58.599266587,-33.368516381],[-58.574413029,-33.319469342],[-58.565897226,-33.307025272],[-58.528679571,-33.262107751],[-58.533134485,-33.236414149],[-58.531742353,-33.206541175],[-58.529323932,-33.19027708],[-58.521383911,-33.156354345],[-58.526847357,-33.143260513],[-58.530636793,-33.128019026],[-58.531526615,-33.101906265],[-58.526944421,-33.07745946],[-58.521770834,-33.062529486],[-58.514310127,-33.048600811],[-58.501307233,-33.030549481],[-58.485403111,-33.013599005],[-58.467648437,-33.00097892],[-58.452764942,-32.994207712],[-58.41699834,-32.981349639],[-58.401469308,-32.977142317],[-58.390828001,-32.975747185],[-58.374739231,-32.975809245],[-58.258761754,-32.991780085],[-58.259010875,-32.969926307],[-58.254956602,-32.942585641],[-58.251208776,-32.926832255],[-58.246105674,-32.913217555],[-58.259617936,-32.891930239],[-58.27150261,-32.867136575],[-58.276511373,-32.851964594],[-58.291232609,-32.745620229],[-58.310469779,-32.672167817],[-58.322726799,-32.538313946],[-58.318784346,-32.473457279],[-58.31359464,-32.454084028],[-58.28737902,-32.395201031],[-58.275279464,-32.378281234],[-58.25994128,-32.364230649],[-58.251260369,-32.358476904],[-58.237236331,-32.351614394],[-58.222315045,-32.347018427],[-58.206860245,-32.344801037],[-58.191248667,-32.345016277],[-58.180941905,-32.346511087],[-58.165912406,-32.350739782],[-58.15342633,-32.356403276]],[[-64.073310706,-42.523136468],[-64.107589456,-42.53069955],[-64.122603687,-42.532589951],[-64.182404745,-42.530019398],[-64.172749975,-42.535134056],[-64.146911946,-42.552225567],[-64.130069798,-42.56635853],[-64.110303066,-42.592135004],[-64.101354847,-42.610977958],[-64.097322127,-42.626106958],[-64.095700353,-42.64167999],[-64.096529283,-42.657315282],[-64.099788596,-42.672629536],[-64.10539839,-42.687247322],[-64.113221141,-42.700810288],[-64.123065075,-42.712985938],[-64.13483337,-42.723581072],[-64.136032465,-42.727468335],[-64.122892721,-42.739521548],[-64.088007632,-42.778661392],[-64.054815569,-42.766592786],[-64.043720657,-42.763888285],[-64.011110029,-42.759827813],[-63.950387105,-42.759633071],[-63.761580509,-42.727604049],[-63.733234817,-42.717760073],[-63.731688859,-42.696789465],[-63.725874933,-42.676823842],[-63.707516627,-42.6322014],[-63.683895193,-42.592024944],[-63.681193722,-42.583455946],[-63.697475719,-42.444117005],[-63.691114905,-42.346764789],[-63.694097635,-42.334670565],[-63.713330454,-42.321429674],[-63.733141117,-42.304760698],[-63.740728371,-42.29758671],[-63.750605531,-42.285442325],[-63.758466438,-42.271905319],[-63.767195666,-42.251352255],[-63.77383685,-42.228624672],[-63.794423357,-42.188216144],[-63.803111476,-42.177027846],[-63.809182496,-42.172438613],[-63.843791131,-42.18012533],[-63.917527341,-42.205375188],[-63.971481413,-42.234676041],[-63.952121329,-42.281460296],[-63.945790063,-42.314829467],[-63.946409688,-42.336283889],[-63.952062246,-42.358390886],[-63.952766203,-42.387575284],[-63.959296839,-42.412944832],[-63.970664015,-42.435037754],[-63.980418978,-42.449033775],[-63.991562867,-42.461289021],[-64.020704676,-42.48371936],[-64.03274266,-42.498407058],[-64.044883628,-42.508786374],[-64.058522299,-42.517100215],[-64.073310706,-42.523136468]]],[[[-58.251505018,-34.191333532],[-58.257094741,-34.190234303],[-58.259853959,-34.175694108],[-58.265737652,-34.167930961],[-58.265803814,-34.164608478],[-58.247214437,-34.168048858],[-58.244910359,-34.174237728],[-58.243333459,-34.175335169],[-58.242628812,-34.185976029],[-58.245695234,-34.189400673],[-58.251505018,-34.191333532]]]]}
}'
Make sure to replace [TOKEN] with your API Access Token. If the request is successful, the response will be:
{
"numFlags": 19,
"numVessels": 1256,
"numEvents": 295713,
"flags": [
"KIR",
"ARE",
"CHN",
"GBR",
"KOR",
"VUT",
"UKR",
"ESP",
"CHL",
"RUS",
"unknown",
"LKA",
"BLZ",
"URY",
"TWN",
"FLK",
"AFG",
"JPN",
"PRT",
"ARG"
],
"timeseries": [
{
"date": "2018-01-01T00:00:00.000Z",
"value": 54140
},
{
"date": "2019-01-01T00:00:00.000Z",
"value": 54359
},
{
"date": "2020-01-01T00:00:00.000Z",
"value": 52382
},
{
"date": "2021-01-01T00:00:00.000Z",
"value": 68233
},
{
"date": "2022-01-01T00:00:00.000Z",
"value": 60836
},
{
"date": "2023-01-01T00:00:00.000Z",
"value": 5763
}
]
}
EXAMPLE 3 - GET PORT VISITS STATS IN A REGION ID (SENEGAL)
curl --location --request POST 'https://gateway.api.globalfishingwatch.org/v2/events/stats' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer {access-token}'
--header 'Content-Type: application/json' \
--data-raw '{
"confidences": [ "3","4"],
"datasets": [ "public-global-port-visits-c2-events:latest"],
"startDate": "2018-01-01",
"endDate": "2019-01-31",
"timeseriesInterval": "year",
"region": {
"dataset": "public-eez-areas",
"id": 8371
}
}
'
Make sure to replace [TOKEN] with your API Access Token. If the request is successful, the response will be:
{
"numFlags": 0,
"numVessels": 762476,
"numEvents": 18081901,
"flags": ["unknown"],
"timeseries": [
{
"date": "2018-01-01T00:00:00.000Z",
"value": 16691646
},
{
"date": "2019-01-01T00:00:00.000Z",
"value": 1390255
}
]
}
Events Stats POST v2 - HTTP Request
POST /v2/events/stats
Events Stats POST v2 - URL Parameters
It has no query param. All parameters should be sent in the body.
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | EventsStatsBodyDto | true | none |
Events Stats POST v2 - Responses
Status | Meaning | Description | Schema |
---|---|---|---|
201 | Created | Event Stats Response | EventsStatsV2 |
401 | Unauthorized. | No Unauthorized. | Error Codes |
403 | Forbidden | You do not have permissions to do the action. | Error Codes |
422 | Unprocessable Entity | Unprocessable Entity. Validation error. | Error Codes |
500 | Internal Server Error | Server side issue. Please contact us at [email protected] | Error Codes |
Schema - V2
Stats Response - V2
[
{
"activityHours": 0,
"flags": 0,
"maxLat": 0,
"maxLon": 0,
"minLat": 0,
"minLon": 0,
"vesselIds": 0
}
]
4Wings Stats response
Stats response Properties - V2
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
activityHours | number | false | none | Total activity hours (if field is requested). For AIS, total fishing effort in hours. |
flags | number | false | none | Total different flags (if field is requested). |
maxLat | number | false | none | Maximum latitude with data |
maxLon | number | false | none | Maximun longitude with data |
minLat | number | false | none | Minimum latitude with data |
minLon | number | false | none | Minimum longitude with data |
vesselIds | number | false | none | Total different vessel ids (if field is requested). Please refer to Key Concept section to understand what a "vessel id" means. |
Events Stats Body Dto - V2
{
"confidences": ["3", "4"],
"datasets": [
"public-global-fishing-events:latest",
"public-global-encounter-events:latest"
],
"duration": 30,
"encounterTypes": ["carrier-fishing", "fishing-carrier"],
"endDate": "2020-02-01",
"flags": ["ESP"],
"gapIntentionalDisabling": true,
"geometry": {},
"region": {},
"startDate": "2020-01-01",
"timeseriesInterval": "day",
"types": ["fishing"],
"vesselGroups": ["1", "2"],
"vesselTypes": ["carrier"],
"vessels": [
"8c7304226-6c71-edbe-0b63-c246734b3c01",
"6583c51e3-3626-5638-866a-f47c3bc7ef7c"
]
}
Events Stats Body Properties - V2
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
confidences | [string] | false | none | 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. Possible values: 2, 3, 4 |
datasets | [string] | true | none | Specify the datasets that will be used to search the vessel. You can learn more about which are the possible datasets here. You can send several datasets. |
duration | number | false | none | Min duration, in minutes, of the event |
encounterTypes | [string] | false | none | This param applies only to encounter events. Possible values: carrier-fishing, fishing-carrier, fishing-support, support-fishing |
flags | [string] | false | none | Flags in format ISO3. |
gapIntentionalDisabling | boolean | false | none | 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 | object | false | none | Geojson of the region to filter |
region | object | false | none | Geojson of the region to filter. You can send the region id, you can get it from Reference Data |
startDate | string | false | none | Start date in format YYYY-MM-DD of the start date of the event (inclusive). If it is not specified, by default it returns all available data. For AIS it is from 2012 until 3 days ago. |
endDate | string | false | none | End date in format YYYY-MM-DD of the end date of the event (exclusive) |
timeseriesInterval | string | true | none | Time series granularity. Options hour,day,month,year |
types | [string] | false | none | Event types. Possible values: port, encounter, loitering, gap_start, gap, port_visit |
vesselGroups | [string] | false | none | Ids of vessel-groups |
vesselTypes | [string] | false | none | Vessel types. Possible values: fishing, carrier, support, passenger, other_non_fishing, seismic_vessel, bunker_or_tanker, cargo |
vessels | string | false | none | List of vessel ids. You can get this information using the search endpoints |
Enumerated Values - V2
Property | Value |
---|---|
timeseriesInterval | hour |
timeseriesInterval | day |
timeseriesInterval | month |
timeseriesInterval | year |
Events Stats V2
{
"flags": ["ESP"],
"numEvents": 20,
"numFlags": 2,
"numVessels": 10,
"timeseries": [
{
"date": "",
"value": 2
}
]
}
Event Stats V2 - Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
flags | [string] | true | none | Distinct flags |
numEvents | number | true | none | Number of events |
numFlags | number | true | none | Number of distinct vessel flags |
numVessels | number | true | none | Number of distinct vessels |
timeseries | [Timeseries] | true | none | Timeseries |
Timeseries v2
{
"date": "",
"value": 2
}
Time series v2 Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
date | string(date-time) | true | none | Date |
value | number | true | none | Number of distinct vessel flags |
Event Stats
{
"end": "2020-11-01T00:00:00.000Z",
"interval": "month",
"series": {
"counts": [
[10, 20, 38, 26],
[58, 12, 34, 7]
],
"labels": ["encounter", "loitering", "port_visit"]
},
"start": "2012-01-01T00:00:00.000Z"
}
Event Stats v2 Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
end | string | true | none | none |
interval | string | true | none | none |
series | Series | true | none | none |
start | string | true | none | none |
Series
{
"counts": [
[10, 20, 38, 26],
[58, 12, 34, 7]
],
"labels": ["encounter", "loitering", "port_visit"]
}
Series v2 Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
counts | [number] | true | none | none |
labels | [string] | true | none | none |
UnauthorizedStandardException
{
"error": "Unauthorized",
"messages": [
{
"detail": "No authorized",
"title": "Unauthorized"
}
],
"statusCode": 401
}
UnauthorizedStandardException v2 Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
error | string | true | none | none |
messages | string | true | none | none |
statusCode | number | true | none | none |
UnprocessableEntityStandardException
{
"error": "Unprocessable Entity",
"messages": [
{
"detail": "Validation error",
"title": "Unprocessable Entity"
}
],
"statusCode": 422
}
UnprocessableEntityStandardException v2 Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
error | string | true | none | none |
messages | string | true | none | none |
statusCode | number | true | none | none |
ForbiddenStandardException
{
"error": "Forbidden",
"messages": [
{
"detail": "You do not have permissions to do the action",
"title": "Forbidden"
}
],
"statusCode": 403
}
ForbiddenStandardException v2 Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
error | string | true | none | none |
messages | string | true | none | none |
statusCode | number | true | none | none |
ServerUnavailableStandardException
{
"error": "Service Unavailable",
"messages": [
{
"detail": "Service unavailable",
"title": "Service Unavailable"
}
],
"statusCode": 503
}
ServerUnavailableStandardException v2 Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
error | string | true | none | none |
messages | string | true | none | none |
statusCode | number | true | none | none |
General API Documentation - V2
API DATASET and VESSEL ID - V2
API DATASET - V2
API dataset is a key parameter to identify which data you are requesting.
Global Fishing Watch is harnessing innovative technology to turn transparent data into actionable information and drive tangible change in the way that our ocean is governed. Data accessed through the Global Fishing Watch APIs is as accurate as possible, but should be used with the data caveats described in each dataset in mind.
API Dataset for 4Wings API | Description |
---|---|
public-global-fishing-effort:latest |
AIS apparent fishing effort, check more detail about data caveats here |
API Dataset for Events API | Description |
---|---|
public-global-encounters-events:latest |
AIS Encounters events between carrier and fishing vessels. Check more detail about data caveats here |
public-global-loitering-events-carriers:latest |
AIS Loitering events for carriers. Check more detail about data caveats here |
public-global-fishing-events:latest |
AIS apparent fishing events. Check more detail about data caveats here |
public-global-port-visits-c2-events:latest |
AIS port visits. Check more detail about data caveats here |
API Dataset for Vessels API | Description |
---|---|
public-global-fishing-vessels:latest |
Fishing vessels based on AIS. You can use these fields to search in the Vessels API: vessel_id , flag and geartype . Check more detail about data caveats here |
public-global-carrier-vessels:latest |
Carriers vessels based on AIS data. You can use these fields to search in the Vessels API: id , lastTransmissionDate , firstTransmissionDate , shipname and imo .. Check more detail about data caveats here |
public-global-support-vessels:latest |
Support vessels based on AIS. You can use these fields to search in the Vessels API: id , flag , lastTransmissionDate , firstTransmissionDate , shipname , mmsi , callsign and imo . Check more detail about data caveats here |
API DATASETS SPECIFIC VERSIONS - V2
When you are sending latest
alias, you still get the detail of the specific API Dataset in the header of the response, for example:
- If you send this API dataset
public-global-fishing-effort:latest
- In the response, in a custom header named x-datasets you will get
public-global-fishing-effort:v20201001
In case you want to request an specific version of the API Dataset, this is the list of available versions:
4Wings API | Description |
---|---|
public-global-fishing-effort:v20201001 |
AIS apparent fishing effort generated using GFW (Global Fishing Watch) Data Pipeline version 20201001 |
Events API | Description |
---|---|
public-global-encounters-events:v20201001 |
AIS Encounters events generated using GFW Data Pipeline version 20201001 |
public-global-loitering-events-carriers:v20201001 |
AIS Loitering events for carriers generated using GFW Data Pipeline version 20201001 |
public-global-fishing-events:v20201001 |
AIS apparent fishing events generated using GFW Data Pipeline version 20201001 |
public-global-port-visits-c2-events:v20201001 |
AIS port visits generated using GFW Data Pipeline version 20201001 |
Vessels API | Description |
---|---|
public-global-carrier-vessels:v20201001 |
Carriers vessels generated using GFW Data Pipeline version 20201001 |
public-global-support-vessels:v20201001 |
Support vessels generated using GFW Data Pipeline version 20201001 |
public-global-fishing-vessels:v20201001 |
Fishing vessels generated using GFW Data Pipeline version 20201001 |
API DATASETS VERSIONING - V2
In case a new API Dataset version is active and you are requesting an specific version, you will see a notification in the header response clarifying that there is a newest API Dataset version.
Old API datasets will remain available for 3 months until they are deprecated. If you request an API dataset that is deprecated, you will receive a 404 error explaining that the dataset is deprecated and that you need to use the newest one.
VESSEL ID - V2
A unique vessel identity developed for internal use by Global Fishing Watch and API users, that combines available vessel identifiers such as name, callsign, and Maritime Mobile Service Identity (MMSI) in order to identify vessels that may not consistently transmit AIS, or the same identifiers on AIS, over time.
Errors Codes - V2
The GFW API uses the following error codes:
Range | Description |
---|---|
2XX |
Successful execution |
4XX |
Error on the client side |
5XX |
Errors on the server side |
Code | Meaning |
---|---|
200 | OKAY - The request has succeeded. |
202 | Accepted - The request has been accepted for processing, but the processing has not been completed. |
204 | No content - The server has successfully fulfilled the request and that there is no additional content to send in the response payload body.For example when you ask for an empty tile in /4wings/tile/heatmap/ |
401 | Unauthorized - Your API Access Token is wrong or your don't have permissions to access that dataset. |
403 | Forbidden - The server understood the request but refuses to authorize it. |
404 | Not Found - The specified data could not be found. |
422 | Unprocessable Entity -The server understands the content type of the request entity, and the syntax of the request entity is correct but was unable to process the contained instructions. For example, this error condition may occur if a a user requests in /4wings/tile/heatmap/ a zoom greater than 12 since it is semantically erroneous, we only support up to zoom level 12. |
429 | Too Many Requests - The server received more request that the user can do. For example, this error condition may occur if a user tries to do several reports at the same time. |
503 | Service Unavailable - We're temporarily offline for maintenance. Please try again later or contact us in [email protected] |
Error Code Examples
If you are asking for a wrong API dataset, you get this error:
{
"statusCode": 404,
"error": "Not Found",
"messages": [
{
"title": "Not Found",
"detail": "Dataset with id public-global-fishing-effort:latest not found"
}
]
}
If you are missing one mandatory field, for a example 'Query', you get this error:
{
"statusCode": 422,
"error": "Unprocessable Entity",
"messages": [
{
"title": "Query",
"detail": "Query param dataset is required"
}
]
}
If you have insufficient permissions, you get this error:
{
"statusCode": 403,
"error": "Forbidden",
"messages": [
{
"title": "Forbidden",
"detail": "Insufficient permissions for public-global-fishing-effort:latest datasets"
}
]
}
If you send zoom > 12 in
/4wings/tile/heatmap/
, you get this error:
{
"statusCode": 422,
"error": "Unprocessable Entity",
"messages": [
{
"title": "z",
"detail": "The tiler does not support zoom levels greater than 12"
}
]
}
If you send a report at the same time that you doing other report, you get this error:
{
"statusCode": 429,
"error": "Too Many Requests",
"messages": [
{
"title": "Too Many Requests",
"detail": "You can only generate one report at the same time. If you need this feature, contact us"
}
]
}
If you try to generate a style url (
/v2/4wings/generate-png
) and it doesn't exist data for the filters.`, you get this error:
{
"statusCode": 204
}
In 4Wings Report API, if you are sending a custom polygon that is too large, you get this error in html. In this case, we recommend sending a region id, see more details here
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<title>413 Request Entity Too Large</title>
</head>
<body text="#000000" bgcolor="#ffffff">
<h1>Error: Request Entity Too Large</h1>
<h2>Your client issued a request that was too large.</h2>
<h2>
<script>
(function () {
/*
Copyright The Closure Library Authors.
SPDX-License-Identifier: Apache-2.0
*/
var c = function (a, d, b) {
a = a + "=deleted; path=" + d;
null != b && (a += "; domain=" + b);
document.cookie = a + "; expires=Thu, 01 Jan 1970 00:00:00 GMT";
};
var g = function (a) {
var d = e,
b = location.hostname;
c(d, a, null);
c(d, a, b);
for (var f = 0; ; ) {
f = b.indexOf(".", f + 1);
if (0 > f) break;
c(d, a, b.substring(f + 1));
}
};
var h;
if (4e3 < unescape(encodeURI(document.cookie)).length) {
for (
var k = document.cookie.split(";"), l = [], m = 0;
m < k.length;
m++
) {
var n = k[m].match(/^\s*([^=]+)/);
n && l.push(n[1]);
}
for (var p = 0; p < l.length; p++) {
var e = l[p];
g("/");
for (var q = location.pathname, r = 0; ; ) {
r = q.indexOf("/", r + 1);
if (0 > r) break;
var t = q.substring(0, r);
g(t);
g(t + "/");
}
"/" != q.charAt(q.length - 1) && (g(q), g(q + "/"));
}
h = !0;
} else h = !1;
h &&
setTimeout(function () {
if (history.replaceState) {
var a = location.href;
history.replaceState(null, "", "/");
location.replace(a);
}
}, 1e3);
})();
</script>
</h2>
</body>
</html>
Most error responses have this format, except when the request entity is too large (see example on the right):
{
"statusCode": 4XXX or 5XXX,
"messages": [{
"title": "[Title]",
"detail": "[Detail]"
}],
"error": "[Generic error]"
}
Response - V2
Example of a single resource in Vessel API:
{
"callsign": "",
"firstTransmissionDate": "2018-11-06T13:05:41Z",
"flag": "ESP",
"geartype": "trawlers",
"id": "ec6fa45c2-2b0e-0c0d-a194-13d12f30b2c6",
"imo": null,
"lastTransmissionDate": "2022-01-03T07:01:35Z",
"mmsi": "224334460",
"msgCount": 26199,
"normalizedShipname": "CARLOS",
"posCount": 7275,
"shipname": "CARLOS",
"source": "AIS",
"vesselType": "Fishing",
"dataset": "public-global-fishing-vessels:v20201001",
}
Example of a collection of resource in Vessel Search API:
{
"total": 23,
"limit": 10,
"offset": 0,
"nextOffset": 10,
"metadata": {
"suggestion": null,
"query": "Don Carlos"
},
"entries": [
{
"callsign": "",
"firstTransmissionDate": "2018-11-06T13:05:41Z",
"flag": "ESP",
"geartype": "trawlers",
"id": "ec6fa45c2-2b0e-0c0d-a194-13d12f30b2c6",
"imo": null,
"lastTransmissionDate": "2022-01-03T07:01:35Z",
"mmsi": "224334460",
"msgCount": 26199,
"normalizedShipname": "CARLOS",
"posCount": 7275,
"shipname": "CARLOS",
"source": "AIS",
"vesselType": "Fishing",
"dataset": "public-global-fishing-vessels:v20201001",
"score": 11.524361
},
{...},
]
}
Responses varies in case of:
a single resource, the API returns the result directly.
a collection of resources, the API returns the next response format (except in the case that the response is not a JSON)
Total: It is the counter of total resources available
Limit: The number of resources that the API returns in the response
Offset: It is the number of resources that the API skips in the response.
NextOffset: It is the next number of resources that a user should exclude in the response to paginate correctly.
Metadata: In this property, the API should return any other valuable information. For instance, in the case of the search, the API could add information related to the query executed, terms suggestions, etc.
Entries: The list of resources.
Data caveat - V2
These data caveats are applicable to the API datasets specified in the section titled Specific API Datasets in v2, and this is why they bear "v2" (Version 2) in their titles.
How are the events estimated? (v2)
The automatic identification system (AIS) data is obtained from a combination of commercial and government sources. Learn more. The data is then used to estimate vessel identity and activity, including apparent fishing,encounters, loitering events, and port visits.
Any and all references to activity events, including fishing, encounters, loitering, and port visits should be understood in the context of Global Fishing Watch's algorithms, which are best efforts to determine apparent vessel activity events based on AIS data collected via satellites and terrestrial receivers. As AIS data varies in completeness, accuracy and quality, it is possible that some events are not identified. It is also possible that some events are identified but are incorrect or do not indicate actual fishing, transshipment, or port access. For these reasons, Global Fishing Watch qualifies all designations of events, including synonyms of event terms such as "fishing effort," "fishing" or "fishing activity," as apparent rather than certain. Any/all Global Fishing Watch information about apparent events should be considered an estimate and must be relied upon solely at your own risk. Global Fishing Watch is constantly improving processes to make sure event algorithms and designations are as accurate as possible.
Encounter event (v2)
Encounters may indicate potential transshipment activity between two vessels. Encounters can occur in the vessel viewer between a carrier and fishing vessel or a fishing support vessel and a fishing vessel. AIS data is used to calculate encounters based on the distance between the two vessels, vessel speeds, and duration in a given area. An encounter is defined as a period when two vessels are detected within 500 meters of each other for at least two hours and traveling at a median speed of less than 2 knots, while at least 10 km from a coastal anchorage. Check more details here
You can read more about transshipment behavior from our report or scientific publication.
Loitering event (v2)
Loitering is when a single vessel exhibits behavior indicative of a potential encounter event. It is possible that loitering events do not indicate a potential transshipment. For example, other events in which a vessel may remain fairly stationary include maintenance or waiting outside of port for permission to dock. AIS data is used to calculate loitering events based on vessel speed and distance from shore. Loitering occurs when a carrier vessel travels at an average speed of less than 2 knots, while at least an average of 20 nautical miles from shore. Loitering events are not displayed for fishing vessels, due to the challenge in distinguishing loitering from other low speed operations related to fishing activity. Due to the individual definitions of loitering events and encounter events, it is possible for a loitering event to overlap with an encounter event, representing the same activity, or the loitering event may encompass one or more encounter events.
Check more details here
Port visit events (v2)
Movements in and out of a port are automatically detected by Global Fishing Watch and categorized according to four distinct types of events: port entry, port stop, port gap (i.e. a gap in AIS transmission while in port) and port exit. When at least two of these events occur, then a port visit is detected. Therefore, a port visit occurs when a vessel has a port entry, a port stop or port gap, and potentially followed by a port exit event, depending on the confidence of the port visit (see next question on how port visit confidence is determined). This means the vessel is within 3 km of an anchorage (port entry), and is moving between 0.5 and 0.2 knots (port stop), or is within an anchorage but has a gap in AIS transmission for at least 4 hours (port gap), and then the vessel transits more than 4 km outside of the anchorage point (port exit). Ports are based upon the Global Fishing Watch anchorages dataset, a global database of anchorage locations where vessels congregate. More information on anchorages can be found here.
Confidence levels of a port visit (v2)
- A port visit with low confidence (level = 2) indicates that only a port stop or gap event was detected using AIS within the port.Only a port stop OR gap was identified based on AIS transmission.
- Medium confidence (level = 3) indicates that a port entry or exit was detected using AIS, along with a stop or gap within the port.
- High confidence (level = 4) indicates that the vessel was identified using AIS with an entry, stop or gap, and exit within port. A port visit with a lower confidence may sometimes be a false port visit caused by noisy AIS transmission and requires a further inspection of the vessel tracks.
Definition of each por event:
PORT ENTRY: vessel that was not in port gets within 3km of anchorage point
PORT STOP: begin: speed < 0.2 knots; end: speed > 0.5 knots
PORT GAP: AIS gap > 4 hours; start is recorded 4 hours after the last message before the gap; end at next message after gap.
PORT_EXIT: vessel that was in port moves more than 4km from anchorage point
Apparent fishing events (v2)
Global Fishing Watch analyzes AIS data collected from vessels that our research has identified as known or possible commercial fishing vessels, and applies a fishing detection algorithm to determine “apparent fishing activity” based on changes in vessel speed and direction. The algorithm classifies each AIS broadcast data point for these vessels as either apparently fishing or not fishing and shows the apparent fishing effort on the Global Fishing Watch map. Fishing events use those data points as input and summarize them into one event for easier analysis. Fishing events are defined using the following restrictions:
Consecutive positions identified as fishing are grouped together into a single event
Fishing positions which appear consecutively, but are 10 km apart or more than 2 hours apart are separated into distinct events.
Fishing events within 1 hour and 2 km of another fishing event but possibly having intermittent transit points are grouped together into a single event.
Finally, the dataset is restricted by removing fishing events that are brief and fast, as these are less likely to indicate a realistic fishing event. The following short fishing events are removed:
Events less than 20 minutes
Events comprised of five or fewer positions;
Events that cover distance of less than 0.5 km (for all gears except estimated squid gear)
Events that cover distance of less than 50m (for estimated squid gear)
Abnormally fast moving vessel events with an average vessel speed of 10 knots or greater
Check more details about difference between fishing effort and fishing events here
Vessel Types (v2)
For vessel type a research and analysis is conducted in addition to using the original AIS data to identify the most likely value. Global Fishing Watch developed a carrier database that is curated using a combination of sources, including: major RFMO vessel registry lists, publicly available national registries, the IMO number, and a convolutional neural network—machine learning algorithm—used to estimate vessel class, as well as web and search images. The fishing vessels identified from Global Fishing Watch come from its fishing database, which is collated using vessel registry databases, reported AIS identity information, and estimated classification using a machine learning algorithm. All support vessels in Vessel Viewer are considered purse seine support vessels based on internal review. Learn more about Global Fishing Watch vessel classes here.
Why am I seeing multiple outputs when I search for a vessel? (v2)
When processing AIS positions Global Fishing Watch algorithms try to match AIS position messages with AIS self-reported identity messages to assign vessel tracks throughout time to the correct vessel identity. When there is a new identity reported, Global Fishing Watch creates a new record.Often times, a new identity is reported when a vessel does have a real identity change (e.g, the vessel went to port where it changed its flag State and name). However, there are instances when the vessel simply changes the way it is transmitting on AIS. For example, a vessel will often transmit its name, IMO, MMSI, and callsign, but for a period of time it only transmits its MMSI and not the other identity values, which results in multiple identities for a single vessel.
- Search by Name = GABU REEFER and IMO = 8300949
- Vessel Viewer will return two results:
Result order | Name | IMO | MMSI | CALL SIGN | AIS TRANSMISSIONS |
---|---|---|---|---|---|
First | GABU REEFER | 8300949 | 214182732 | ER2732 | Feb 22 2019 to Sept 19 2021 |
Second | GABU REEFER | 8300949 | 616852000 | D6FJ2 | Jan 02 2012 to Feb 23 2019 |
- In this example even though they are the same physical vessel, the identity reported is different.
- The two records show the vessel under the same IMO, however the vessel did not consistently transmit the same identity values. In the second example, the vessel was likely transmitting under a different MMSI, different call sign and possibly a different owner.
Exclusive economic zone boundaries definition (v2)
Exclusive economic zones (EEZs) extend up to 200 nautical miles from a country's coast. EEZ boundaries are shown as solid lines for “200 NM”, “Treaty”, “Median line”, “Joint regime”, “Connection Line”, “Unilateral claim (undisputed)” and dashed lines for “Joint regime”, “Unsettled”, “Unsettled median line” based on the “LINE_TYPE” field. For more detail on the methodology to create these boundaries, check https://marineregions.org/eezmethodology.php Source: marineregions.org. Flanders Marine Institute (2019). Maritime Boundaries Geodatabase: Maritime Boundaries and Exclusive Economic Zones (200NM), version 11.
Marine protected area boundaries definition (v2)
Marine protected areas (MPAs) are areas of the ocean set aside for long-term conservation. These can have different levels of protection, and the range of activities allowed or prohibited within their boundaries varies considerably. Source: World Database on Protected Areas.
What does it mean if an event is within a specific geographic area, such as an EEZ,MPA or RFMO? (v2)
An event is considered to occur within a specific geographic area if the bounding box created for the event location— based on the minimum and maximum coordinates—overlaps with the bounding box of the geographic area (the area is based on external sources specified under the Map section of the FAQ). For example, if you select Argentina EEZ and Chile EEZ under the Fishing Events activity highlights, you will see all fishing events where the bounding box created by minimum and maximum coordinates of the events occurred within the minimum and maximum coordinates of the Argentina EEZ or within the Chile EEZ. Because a bounding box method is used, it is possible the actual track coordinates do not overlap with the EEZ. Please investigate the highlighted events further on the map.
Exclusive economic zone boundaries definitions (v2)
Exclusive economic zones (EEZs) extend up to 200 nautical miles from a country's coast. For more detail on the methodology to create these boundaries, check https://marineregions.org/eezmethodology.php Source: marineregions.org. Flanders Marine Institute (2019). Maritime Boundaries Geodatabase: Maritime Boundaries and Exclusive Economic Zones (200NM), version 11.
Marine protected area boundaries definition (v2)
Marine protected areas (MPAs) are areas of the ocean set aside for long-term conservation. These can have different levels of protection, and the range of activities allowed or prohibited within their boundaries varies considerably. Source: World Database on Protected Areas. Last updated: May 2021.
Reference Data - V2
GEAR TYPES SUPPORTED (v2)
You can use the following list to filter fishing effort or other data by gear type. For more details, check our data caveats here.
- tuna_purse_seines
- driftnets
- trollers
- set_longlines
- purse_seines
- pots_and_traps
- other_fishing
- dredge_fishing
- set_gillnets
- fixed_gear
- trawlers
- fishing
- seiners
- other_purse_seines
- other_seines
- squid_jigger
- pole_and_line
- drifting_longlines
REGIONS (v2)
GET LIST OF EEZs
curl --location --request GET 'https://gateway.api.globalfishingwatch.org/v2/datasets/public-eez-areas/user-context-layers' \
-H "Authorization: Bearer [TOKEN]"
Make sure to replace [TOKEN] with your API Access Token. If the request is successful, the response returns:
[
{
"id": 5670,
"iso3": "ALB",
"label": "Albanian Exclusive Economic Zone"
},
{
"id": 8378,
"iso3": "DZA",
"label": "Algerian Exclusive Economic Zone"
},
{
"id": 5690,
"iso3": "RUS",
"label": "Russian Exclusive economic Zone"
},
{
...
},
]
GET LIST OF MPAs
curl --location --request GET 'https://gateway.api.globalfishingwatch.org/v2/datasets/public-mpa-all/user-context-layers' \
-H "Authorization: Bearer [TOKEN]"
Make sure to replace [TOKEN] with your API Access Token. If the request is successful, the response returns:
[
{
"id": "555512344",
"label": "100_Daeseom"
},
{
"id": "555512376",
"label": "101_Hogamseom"
},
{
"id": "555512360",
"label": "102_Galmaeseom"
},
{
...
},
]
GET LIST OF RFMOs
curl --location --request GET 'https://gateway.api.globalfishingwatch.org/v2/datasets/public-rfmo/user-context-layers' \
-H "Authorization: Bearer [TOKEN]"
Make sure to replace [TOKEN] with your API Access Token. If the request is successful, the response returns:
[
{
"id": "APFIC",
"label": "APFIC"
},
{
"id": "BOBP-IGO",
"label": "BOBP-IGO"
},
{
"id": "CCAMLR",
"label": "CCAMLR"
},
{
"id": "CCBSP",
"label": "CCBSP"
},
{
"id": "CCSBT",
"label": "CCSBT"
},
{
"id": "CCSBT Primary Area",
"label": "CCSBT Primary Area"
},
{
"id": "COREP",
"label": "COREP"
},
{
"id": "CPPS",
"label": "CPPS"
},
{
"id": "CRFM",
"label": "CRFM"
},
{
"id": "CTMFM",
"label": "CTMFM"
},
{
"id": "FCWC",
"label": "FCWC"
},
{
"id": "FFA",
"label": "FFA"
},
{
"id": "GFCM",
"label": "GFCM"
},
{
"id": "IATTC",
"label": "IATTC"
},
{
"id": "ICCAT",
"label": "ICCAT"
},
{
"id": "ICES",
"label": "ICES"
},
{
"id": "IOTC",
"label": "IOTC"
},
{
"id": "IPHC",
"label": "IPHC"
},
{
"id": "LTA",
"label": "LTA"
},
{
"id": "NAFO",
"label": "NAFO"
},
{
"id": "NAMMCO",
"label": "NAMMCO"
},
{
"id": "NASCO",
"label": "NASCO"
},
{
"id": "NEAFC",
"label": "NEAFC"
},
{
"id": "NPAFC",
"label": "NPAFC"
},
{
"id": "NPFC",
"label": "NPFC"
},
{
"id": "OSPESCA",
"label": "OSPESCA"
},
{
"id": "PERSGA",
"label": "PERSGA"
},
{
"id": "PICES",
"label": "PICES"
},
{
"id": "RECOFI",
"label": "RECOFI"
},
{
"id": "SEAFDEC",
"label": "SEAFDEC"
},
{
"id": "SIOFA",
"label": "SIOFA"
},
{
"id": "SPC",
"label": "SPC"
},
{
"id": "SPRFMO",
"label": "SPRFMO"
},
{
"id": "SRFC",
"label": "SRFC"
},
{
"id": "SWIOFC",
"label": "SWIOFC"
},
{
"id": "WCPFC",
"label": "WCPFC"
}
]
There are two endpoints that uses regions ids:
In Events API, an event can potentially be within a specific geographic area, such as an Exclusive economic zones (EEZs), Marine protected areas (MPAs) or Regional fisheries management organization (RFMO). In the response
regions
field you can get the list of those regions. Check more detail about the source of those areas on how we calculate if the event is within a region in our data caveats.For MPAs and EEZs, the API returns an id.In 4Wings API - Report, you can send in the body a custom polygon or you can directly send the
region id
.
In order to get the details of those regions, call the endpoints described on the right.
You can check the source we use for those regions in our data caveats.
SDK - V2
gfwr using API Version 2
Global Fishing Watch enables the research community to access data from its application programming interfaces, or APIs, directly through R—a specialized programming language for data processing, statistical analysis and data visualizations.
The package, called gfwr, allows R users to request data from Global Fishing Watch’s APIs and receive data in a tidy format suitable for incorporation into new or existing R workflows.
Installing gfwr gives academics, researchers, students and journalists the ability to easily pull data for analysis without any prior API experience.
To install the previous version that communicated with API version 2, please refer to branch APIv2
in this repository.
remotes::install_github("GlobalFishingWatch/gfwr", ref = "APIv2")
To learn more about gfwr, visit: Github gfwR official page
Version 3 API
We release a new version of our API (version 3) that includes several enhancements and features to improve your experience and enable even greater integration possibilities.
Expanded Functionality: We have introduced new endpoints and extended existing functionalities to provide you with additional capabilities:
- Get information about all vessel types and get extra information from public registries: Introducing an enhanced Vessel API! Now, besides the AIS self reported data, you can also access identity and authorization data from both public regional and national registries for vessels of all types.
- A new Insights API with indicators related to vessels including AIS off events: that fuses historical AIS activity and authorizations into "vessel insights," designed to support risk assessment, streamline planning, and facilitate IUU fishing detection.
- Other improvements: Elevate your experience with the newly empowered 4Wings Report API, offering advanced functionality for detailed region-specific analysis and a variety of additional encounter events, reinforcing our commitment to innovation.
Improved Documentation: We updated the API documentation to make it more comprehensive and user-friendly, making it easier for you to understand and implement the new features effectively. We have also provided a Migration Guide and code samples to assist you during the transition.
For more details, check the release notes
Get your GFW Postman collection for Version 3
You can download our Postman collection for Version 3 here to test some of the endpoints.
Remember to:
Add your API Access TOKEN, you can get one from here
Update variable
base_url
withhttps://gateway.api.globalfishingwatch.org/
Map Visualization - 4Wings API
4Wings introduction
4Wings API (aka Map Visualization) allows you to get fast visualisation, navigation and analysis for gridded spatiotemporal datasets.You can:
- visualize apparent fishing effort or SAR vessel detections in png or mvt format
- generate a report and download in csv, json or tiff format for apparent fishing effort data and for SAR (Synthetic-aperture radar) vessel detections.
Create a style for generate PNG tiles
A Style is a document that defines the visual appearance of a map, in this case the map will be in PNG format, it includes what data to draw, the order to draw it in, and how to style the data when drawing it.
You can find on the right, two examples using AIS apparent fishing effort:
- EXAMPLE 1 - Filtering by time period
- EXAMPLE 2 - Filtering by time period and gear type. Check Gear Types supported here.
You can find on the right, two examples using SAR (Synthetic-aperture radar) vessel detections:
- EXAMPLE 3 - Filtering any SAR vessel detections by time period
- EXAMPLE 4 - Filtering SAR vessel detections that didn't match with AIS vessels
Generate PNG - HTTP Request
POST https://gateway.api.globalfishingwatch.org/v3/4wings/generate-png
Generate PNG - URL Parameters
Parameter | Description | Required | Format | Param Type |
---|---|---|---|---|
color | Color in hexadecimal used to generate the color ramp. If you don't send this information, by default the color will be #002457.Default value: #002457 | False | string | query |
interval | Tiles are available at several time resolutions (hourly, daily, monthly and 10 days), it means one frame every one hour, one day or 10 days. For each resolution, the the max displayable length items: 1 hour: 20 days, 1 day: 1 year and 10 days: several years depending on the dataset for AIS Fishing effort it starts in 2012. Default value: DAY | False | Enum: ['10DAYS', 'DAY', 'HOUR', 'MONTH', 'YEAR'] | query |
datasets[0] | Specify the datasets that will be used to create the style. You can learn more about which are the possible datasets here. The parameters should be defined using an index, in case only one dataset is going to be sent: ?dataset[0]=xxxxx, in case of multiple datasets: ?dataset[0]=xxxxx&dataset[1]=yyyyy Example: public-global-fishing-effort:latest or public-global-sar-presence:latest | True | string | query |
filters[0] | Filters are applied to the dataset parameter with the corresponding index. For example if we want to apply a filter to dataset[0], we should apply the filter attributes to filter[0]. For AIS apparent fishing effort, the possible filters are: flag , geartype and vessel_id . Example: flag in ('ESP') . Check Gear Types supported here.. For SAR vessel detections, the available filters are: matched , flag , vessel_id , geartype , neural_vessel_type , and shiptype . Examples include matched='false' , which indicates all SAR vessel detections that didn't match with an AIS vessel, and neural_vessel_type='Likely Fishing' , which signifies all SAR vessel detections identified by the neural model (which only considers the thumbnails of the SAR images) as "Likely Fishing". This filter is useful for analyzing detections that did not match with AIS vessels. The neural_vessel_type filter accepts the following values: "Likely non-fishing", "Likely Fishing", or "Unknown". Check Vessel Types supported here. |
False | string | query |
date-range | Start date and end date to filter the data Example: 2021-01-01,2021-03-01 | False | string | query |
EXAMPLE 1: AIS APPARENT FISHING EFFORT - GENERATE PNG TILES WITH TEMPORAL FILTER
# Make sure to replace [TOKEN] with your API Access Token.
curl --location --request POST 'https://gateway.api.globalfishingwatch.org/v3/4wings/generate-png?interval=10DAYS&datasets%5B0%5D=public-global-fishing-effort:latest&color=%23361c0c&date-range=2020-01-01,2020-01-31' \
-H "Authorization: Bearer [TOKEN]"
If the request is successful, the response will be:
{
"colorRamp": {
"stepsByZoom": {
"0": [
{
"color": "rgba(54,28,12,102)",
"value": 9170
},
{
"color": "rgba(54,28,12,127)",
"value": 14857
},
{
"color": "rgba(54,28,12,153)",
"value": 24449
},
{
"color": "rgba(54,28,12,178)",
"value": 37594
},
{
"color": "rgba(54,28,12,255)",
"value": 55844
},
{
"color": "rgba(54,28,12,0)",
"value": 0
},
{
"color": "rgba(54,28,12,25)",
"value": 649
},
{
"color": "rgba(54,28,12,51)",
"value": 2313
},
{
"color": "rgba(54,28,12,76)",
"value": 5164
}
],
"1": [
{
"color": "rgba(54,28,12,25)",
"value": 162
},
{
"color": "rgba(54,28,12,51)",
"value": 578
},
{
"color": "rgba(54,28,12,76)",
"value": 1291
},
{
"color": "rgba(54,28,12,127)",
"value": 3714
},
{
"color": "rgba(54,28,12,153)",
"value": 6112
},
{
"color": "rgba(54,28,12,255)",
"value": 13961
},
{
"color": "rgba(54,28,12,0)",
"value": 0
},
{
"color": "rgba(54,28,12,102)",
"value": 2292
},
{
"color": "rgba(54,28,12,178)",
"value": 9398
}
],
"10": [
{
"color": "rgba(54,28,12,255)",
"value": 0
}
],
"11": [
{
"color": "rgba(54,28,12,255)",
"value": 0
}
],
"12": [
{
"color": "rgba(54,28,12,255)",
"value": 0
}
],
"2": [
{
"color": "rgba(54,28,12,127)",
"value": 928
},
{
"color": "rgba(54,28,12,0)",
"value": 0
},
{
"color": "rgba(54,28,12,25)",
"value": 40
},
{
"color": "rgba(54,28,12,51)",
"value": 144
},
{
"color": "rgba(54,28,12,76)",
"value": 322
},
{
"color": "rgba(54,28,12,102)",
"value": 573
},
{
"color": "rgba(54,28,12,153)",
"value": 1528
},
{
"color": "rgba(54,28,12,178)",
"value": 2349
},
{
"color": "rgba(54,28,12,255)",
"value": 3490
}
],
"3": [
{
"color": "rgba(54,28,12,127)",
"value": 232
},
{
"color": "rgba(54,28,12,153)",
"value": 382
},
{
"color": "rgba(54,28,12,178)",
"value": 587
},
{
"color": "rgba(54,28,12,255)",
"value": 872
},
{
"color": "rgba(54,28,12,76)",
"value": 80
},
{
"color": "rgba(54,28,12,25)",
"value": 10
},
{
"color": "rgba(54,28,12,51)",
"value": 36
},
{
"color": "rgba(54,28,12,102)",
"value": 143
},
{
"color": "rgba(54,28,12,0)",
"value": 0
}
],
"4": [
{
"color": "rgba(54,28,12,51)",
"value": 9
},
{
"color": "rgba(54,28,12,76)",
"value": 20
},
{
"color": "rgba(54,28,12,102)",
"value": 35
},
{
"color": "rgba(54,28,12,127)",
"value": 58
},
{
"color": "rgba(54,28,12,0)",
"value": 0
},
{
"color": "rgba(54,28,12,25)",
"value": 2
},
{
"color": "rgba(54,28,12,153)",
"value": 95
},
{
"color": "rgba(54,28,12,178)",
"value": 146
},
{
"color": "rgba(54,28,12,255)",
"value": 218
}
],
"5": [
{
"color": "rgba(54,28,12,178)",
"value": 36
},
{
"color": "rgba(54,28,12,255)",
"value": 54
},
{
"color": "rgba(54,28,12,25)",
"value": 0
},
{
"color": "rgba(54,28,12,51)",
"value": 2
},
{
"color": "rgba(54,28,12,76)",
"value": 5
},
{
"color": "rgba(54,28,12,102)",
"value": 8
},
{
"color": "rgba(54,28,12,127)",
"value": 14
},
{
"color": "rgba(54,28,12,153)",
"value": 23
}
],
"6": [
{
"color": "rgba(54,28,12,51)",
"value": 0
},
{
"color": "rgba(54,28,12,76)",
"value": 1
},
{
"color": "rgba(54,28,12,102)",
"value": 2
},
{
"color": "rgba(54,28,12,127)",
"value": 3
},
{
"color": "rgba(54,28,12,153)",
"value": 5
},
{
"color": "rgba(54,28,12,178)",
"value": 9
},
{
"color": "rgba(54,28,12,255)",
"value": 13
}
],
"7": [
{
"color": "rgba(54,28,12,127)",
"value": 0
},
{
"color": "rgba(54,28,12,153)",
"value": 1
},
{
"color": "rgba(54,28,12,178)",
"value": 2
},
{
"color": "rgba(54,28,12,255)",
"value": 3
}
],
"8": [
{
"color": "rgba(54,28,12,255)",
"value": 0
}
],
"9": [
{
"color": "rgba(54,28,12,255)",
"value": 0
}
]
}
},
"url": "https://gateway.api.globalfishingwatch.org/v3/4wings/tile/heatmap/{z}/{x}/{y}?format=PNG&interval=10DAYS&datasets[0]=public-global-fishing-effort:latest&date-range=2020-01-01,2020-01-31&style=eyJjb2xvciI6WzU0LDI4LDEyXSwicmFtcCI6WzAsNjQ5LjY1NTI3Nzc3Nzc3ODMsMjMxMy40NTYzODg4ODg4OTE1LDUxNjQuMDg2MTExMTExMTIsOTE3MC43MjU1NTU1NTU1NiwxNDg1Ny42MDAyNzc3Nzc4MTgsMjQ0NDkuMTM5MTY2NjY2NjU3LDM3NTk0LjQ1MzMzMzMzMzM5LDU1ODQ0Ljc2NDE2NjY2NjUyXX0="
}
EXAMPLE 2: AIS APPARENT FISHING EFFORT - GENERATE PNG TILES WITH GEAR TYPE AND TEMPORAL FILTER
# Make sure to replace [TOKEN] with your API Access Token.
curl --location --request POST 'https://gateway.api.globalfishingwatch.org/
/v3/4wings/generate-png?interval=10DAYS&datasets[0]=public-global-fishing-effort:latest&filters[0]=geartype in ("tuna_purse_seines","driftnets")&date-range=2020-01-01,2020-01-31' \
-H "Authorization: Bearer [TOKEN]"
If the request is successful, the response will be:
{
"colorRamp": {
"stepsByZoom": {
"0": [
{
"color": "rgba(22,63,137,25)",
"value": 26
},
{
"color": "rgba(22,63,137,102)",
"value": 384
},
{
"color": "rgba(22,63,137,255)",
"value": 1936
},
{
"color": "rgba(22,63,137,0)",
"value": 0
},
{
"color": "rgba(22,63,137,76)",
"value": 186
},
{
"color": "rgba(22,63,137,127)",
"value": 822
},
{
"color": "rgba(22,63,137,153)",
"value": 1114
},
{
"color": "rgba(22,63,137,178)",
"value": 1502
},
{
"color": "rgba(22,63,137,51)",
"value": 88
}
],
"1": [
{
"color": "rgba(22,63,137,127)",
"value": 205
},
{
"color": "rgba(22,63,137,178)",
"value": 375
},
{
"color": "rgba(22,63,137,51)",
"value": 22
},
{
"color": "rgba(22,63,137,76)",
"value": 46
},
{
"color": "rgba(22,63,137,102)",
"value": 96
},
{
"color": "rgba(22,63,137,255)",
"value": 484
},
{
"color": "rgba(22,63,137,0)",
"value": 0
},
{
"color": "rgba(22,63,137,25)",
"value": 6
},
{
"color": "rgba(22,63,137,153)",
"value": 278
}
],
"10": [
{
"color": "rgba(22,63,137,255)",
"value": 0
}
],
"11": [
{
"color": "rgba(22,63,137,255)",
"value": 0
}
],
"12": [
{
"color": "rgba(22,63,137,255)",
"value": 0
}
],
"2": [
{
"color": "rgba(22,63,137,25)",
"value": 1
},
{
"color": "rgba(22,63,137,51)",
"value": 5
},
{
"color": "rgba(22,63,137,76)",
"value": 11
},
{
"color": "rgba(22,63,137,153)",
"value": 69
},
{
"color": "rgba(22,63,137,178)",
"value": 93
},
{
"color": "rgba(22,63,137,255)",
"value": 121
},
{
"color": "rgba(22,63,137,0)",
"value": 0
},
{
"color": "rgba(22,63,137,102)",
"value": 24
},
{
"color": "rgba(22,63,137,127)",
"value": 51
}
],
"3": [
{
"color": "rgba(22,63,137,178)",
"value": 23
},
{
"color": "rgba(22,63,137,255)",
"value": 30
},
{
"color": "rgba(22,63,137,25)",
"value": 0
},
{
"color": "rgba(22,63,137,51)",
"value": 1
},
{
"color": "rgba(22,63,137,76)",
"value": 2
},
{
"color": "rgba(22,63,137,102)",
"value": 6
},
{
"color": "rgba(22,63,137,127)",
"value": 12
},
{
"color": "rgba(22,63,137,153)",
"value": 17
}
],
"4": [
{
"color": "rgba(22,63,137,102)",
"value": 1
},
{
"color": "rgba(22,63,137,127)",
"value": 3
},
{
"color": "rgba(22,63,137,153)",
"value": 4
},
{
"color": "rgba(22,63,137,178)",
"value": 5
},
{
"color": "rgba(22,63,137,255)",
"value": 7
},
{
"color": "rgba(22,63,137,76)",
"value": 0
}
],
"5": [
{
"color": "rgba(22,63,137,127)",
"value": 0
},
{
"color": "rgba(22,63,137,255)",
"value": 1
}
],
"6": [
{
"color": "rgba(22,63,137,255)",
"value": 0
}
],
"7": [
{
"color": "rgba(22,63,137,255)",
"value": 0
}
],
"8": [
{
"color": "rgba(22,63,137,255)",
"value": 0
}
],
"9": [
{
"color": "rgba(22,63,137,255)",
"value": 0
}
]
}
},
"url": "https://gateway.api.globalfishingwatch.org/v3/4wings/tile/heatmap/{z}/{x}/{y}?format=PNG&interval=10DAYS&datasets[0]=public-global-fishing-effort:latest&filters[0]=geartype in (\"tuna_purse_seines\",\"driftnets\")&date-range=2020-01-01,2020-01-31&style=eyJjb2xvciI6WzIyLDYzLDEzN10sInJhbXAiOlswLDI2LjE2NjM4ODg4ODg4ODg5Myw4OC4yMjgwNTU1NTU1NTU2MSwxODYuMzI1ODMzMzMzMzMzMywzODQuODIwNTU1NTU1NTU1Niw4MjIuOTk1NTU1NTU1NTU0OCwxMTE0LjMyNDcyMjIyMjIyMjEsMTUwMi4wNjA4MzMzMzMzMzMyLDE5MzYuNzA0MTY2NjY2NjY1XX0="
}
EXAMPLE 3: SAR VESSEL DETECTIONS - GENERATE PNG TILES WITH TEMPORAL FILTER AND DAY RESOLUTION
# Make sure to replace [TOKEN] with your API Access Token.
curl --location --globoff --request POST 'https://gateway.api.globalfishingwatch.org/v3/4wings/generate-png?interval=DAY&color=%23361c0c&date-range=2020-01-01%2C2020-01-31&datasets[0]=public-global-sar-presence%3Alatest' \
-H "Authorization: Bearer [TOKEN]"
If the request is successful, the response will be:
{
"colorRamp": {
"stepsByZoom": {
"0": [
{
"color": "rgba(54,28,12,127)",
"value": 1711
},
{
"color": "rgba(54,28,12,153)",
"value": 2662
},
{
"color": "rgba(54,28,12,178)",
"value": 3925
},
{
"color": "rgba(54,28,12,25)",
"value": 93
},
{
"color": "rgba(54,28,12,51)",
"value": 319
},
{
"color": "rgba(54,28,12,76)",
"value": 660
},
{
"color": "rgba(54,28,12,102)",
"value": 1108
},
{
"color": "rgba(54,28,12,255)",
"value": 6584
},
{
"color": "rgba(54,28,12,0)",
"value": 0
}
],
"1": [
{
"color": "rgba(54,28,12,25)",
"value": 23
},
{
"color": "rgba(54,28,12,51)",
"value": 79
},
{
"color": "rgba(54,28,12,76)",
"value": 165
},
{
"color": "rgba(54,28,12,102)",
"value": 277
},
{
"color": "rgba(54,28,12,127)",
"value": 427
},
{
"color": "rgba(54,28,12,0)",
"value": 0
},
{
"color": "rgba(54,28,12,153)",
"value": 665
},
{
"color": "rgba(54,28,12,178)",
"value": 981
},
{
"color": "rgba(54,28,12,255)",
"value": 1646
}
],
"10": [
{
"color": "rgba(54,28,12,255)",
"value": 0
}
],
"11": [
{
"color": "rgba(54,28,12,255)",
"value": 0
}
],
"12": [
{
"color": "rgba(54,28,12,255)",
"value": 0
}
],
"2": [
{
"color": "rgba(54,28,12,255)",
"value": 411
},
{
"color": "rgba(54,28,12,51)",
"value": 19
},
{
"color": "rgba(54,28,12,153)",
"value": 166
},
{
"color": "rgba(54,28,12,178)",
"value": 245
},
{
"color": "rgba(54,28,12,102)",
"value": 69
},
{
"color": "rgba(54,28,12,127)",
"value": 106
},
{
"color": "rgba(54,28,12,0)",
"value": 0
},
{
"color": "rgba(54,28,12,25)",
"value": 5
},
{
"color": "rgba(54,28,12,76)",
"value": 41
}
],
"3": [
{
"color": "rgba(54,28,12,102)",
"value": 17
},
{
"color": "rgba(54,28,12,153)",
"value": 41
},
{
"color": "rgba(54,28,12,178)",
"value": 61
},
{
"color": "rgba(54,28,12,255)",
"value": 102
},
{
"color": "rgba(54,28,12,25)",
"value": 1
},
{
"color": "rgba(54,28,12,76)",
"value": 10
},
{
"color": "rgba(54,28,12,127)",
"value": 26
},
{
"color": "rgba(54,28,12,0)",
"value": 0
},
{
"color": "rgba(54,28,12,51)",
"value": 4
}
],
"4": [
{
"color": "rgba(54,28,12,178)",
"value": 15
},
{
"color": "rgba(54,28,12,255)",
"value": 25
},
{
"color": "rgba(54,28,12,25)",
"value": 0
},
{
"color": "rgba(54,28,12,51)",
"value": 1
},
{
"color": "rgba(54,28,12,76)",
"value": 2
},
{
"color": "rgba(54,28,12,102)",
"value": 4
},
{
"color": "rgba(54,28,12,127)",
"value": 6
},
{
"color": "rgba(54,28,12,153)",
"value": 10
}
],
"5": [
{
"color": "rgba(54,28,12,76)",
"value": 0
},
{
"color": "rgba(54,28,12,127)",
"value": 1
},
{
"color": "rgba(54,28,12,153)",
"value": 2
},
{
"color": "rgba(54,28,12,178)",
"value": 3
},
{
"color": "rgba(54,28,12,255)",
"value": 6
}
],
"6": [
{
"color": "rgba(54,28,12,178)",
"value": 0
},
{
"color": "rgba(54,28,12,255)",
"value": 1
}
],
"7": [
{
"color": "rgba(54,28,12,255)",
"value": 0
}
],
"8": [
{
"color": "rgba(54,28,12,255)",
"value": 0
}
],
"9": [
{
"color": "rgba(54,28,12,255)",
"value": 0
}
]
}
},
"url": "https://gateway.api.globalfishingwatch.org/v3/4wings/tile/heatmap/{z}/{x}/{y}?format=PNG&interval=DAY&datasets[0]=public-global-sar-presence:latest&date-range=2020-01-01,2020-01-31&style=eyJjb2xvciI6WzU0LDI4LDEyXSwicmFtcCI6WzAsOTMsMzE5LDY2MCwxMTA4LDE3MTEsMjY2MiwzOTI1LDY1ODRdfQ=="
}
EXAMPLE 4: SAR VESSEL DETECTIONS - GENERATE PNG TILES FILTERING UNMATCHED DETECTIONS
# Make sure to replace [TOKEN] with your API Access Token.
curl --location --globoff --request POST 'https://gateway.api.globalfishingwatch.org//v3/4wings/generate-png?interval=DAY&filters[0]=matched%3D%27false%27&color=%23361c0c&date-range=2020-01-01%2C2020-01-31&datasets[0]=public-global-sar-presence%3Alatest' \
-H "Authorization: Bearer [TOKEN]"
If the request is successful, the response will be:
{
"colorRamp": {
"stepsByZoom": {
"0": [
{
"color": "rgba(54,28,12,76)",
"value": 489
},
{
"color": "rgba(54,28,12,102)",
"value": 850
},
{
"color": "rgba(54,28,12,127)",
"value": 1315
},
{
"color": "rgba(54,28,12,178)",
"value": 3011
},
{
"color": "rgba(54,28,12,25)",
"value": 63
},
{
"color": "rgba(54,28,12,51)",
"value": 218
},
{
"color": "rgba(54,28,12,255)",
"value": 4027
},
{
"color": "rgba(54,28,12,0)",
"value": 0
},
{
"color": "rgba(54,28,12,153)",
"value": 2024
}
],
"1": [
{
"color": "rgba(54,28,12,153)",
"value": 506
},
{
"color": "rgba(54,28,12,178)",
"value": 752
},
{
"color": "rgba(54,28,12,25)",
"value": 15
},
{
"color": "rgba(54,28,12,51)",
"value": 54
},
{
"color": "rgba(54,28,12,102)",
"value": 212
},
{
"color": "rgba(54,28,12,255)",
"value": 1006
},
{
"color": "rgba(54,28,12,0)",
"value": 0
},
{
"color": "rgba(54,28,12,76)",
"value": 122
},
{
"color": "rgba(54,28,12,127)",
"value": 328
}
],
"10": [
{
"color": "rgba(54,28,12,255)",
"value": 0
}
],
"11": [
{
"color": "rgba(54,28,12,255)",
"value": 0
}
],
"12": [
{
"color": "rgba(54,28,12,255)",
"value": 0
}
],
"2": [
{
"color": "rgba(54,28,12,76)",
"value": 30
},
{
"color": "rgba(54,28,12,127)",
"value": 82
},
{
"color": "rgba(54,28,12,178)",
"value": 188
},
{
"color": "rgba(54,28,12,0)",
"value": 0
},
{
"color": "rgba(54,28,12,51)",
"value": 13
},
{
"color": "rgba(54,28,12,102)",
"value": 53
},
{
"color": "rgba(54,28,12,153)",
"value": 126
},
{
"color": "rgba(54,28,12,255)",
"value": 251
},
{
"color": "rgba(54,28,12,25)",
"value": 3
}
],
"3": [
{
"color": "rgba(54,28,12,153)",
"value": 31
},
{
"color": "rgba(54,28,12,178)",
"value": 47
},
{
"color": "rgba(54,28,12,255)",
"value": 62
},
{
"color": "rgba(54,28,12,25)",
"value": 0
},
{
"color": "rgba(54,28,12,51)",
"value": 3
},
{
"color": "rgba(54,28,12,76)",
"value": 7
},
{
"color": "rgba(54,28,12,102)",
"value": 13
},
{
"color": "rgba(54,28,12,127)",
"value": 20
}
],
"4": [
{
"color": "rgba(54,28,12,51)",
"value": 0
},
{
"color": "rgba(54,28,12,76)",
"value": 1
},
{
"color": "rgba(54,28,12,102)",
"value": 3
},
{
"color": "rgba(54,28,12,127)",
"value": 5
},
{
"color": "rgba(54,28,12,153)",
"value": 7
},
{
"color": "rgba(54,28,12,178)",
"value": 11
},
{
"color": "rgba(54,28,12,255)",
"value": 15
}
],
"5": [
{
"color": "rgba(54,28,12,102)",
"value": 0
},
{
"color": "rgba(54,28,12,153)",
"value": 1
},
{
"color": "rgba(54,28,12,178)",
"value": 2
},
{
"color": "rgba(54,28,12,255)",
"value": 3
}
],
"6": [
{
"color": "rgba(54,28,12,255)",
"value": 0
}
],
"7": [
{
"color": "rgba(54,28,12,255)",
"value": 0
}
],
"8": [
{
"color": "rgba(54,28,12,255)",
"value": 0
}
],
"9": [
{
"color": "rgba(54,28,12,255)",
"value": 0
}
]
}
},
"url": "https://gateway.api.globalfishingwatch.org/v3/4wings/tile/heatmap/{z}/{x}/{y}?format=PNG&interval=DAY&datasets[0]=public-global-sar-presence:latest&filters[0]=matched='false'&date-range=2020-01-01,2020-01-31&style=eyJjb2xvciI6WzU0LDI4LDEyXSwicmFtcCI6WzAsNjMsMjE4LDQ4OSw4NTAsMTMxNSwyMDI0LDMwMTEsNDAyN119"
}
Get raster by tile coordinates
EXAMPLE 1: AIS APPARENT FISHING EFFORT HEATMAP - GET PNG TILE BY COORDINATES
Make sure to replace [STYLE] with the style obtained in the previous endpoint "Create a style for generate PNG tiles" in the 'url' field
# Make sure to replace [TOKEN] with your API Access Token
curl --location --request GET 'https://gateway.api.globalfishingwatch.org/v3/4wings/tile/heatmap/2/3/1?format=PNG&interval=10DAYS&datasets[0]=public-global-fishing-effort:latest&date-range=2020-01-01,2020-01-31&style=[STYLE]' \
-H "Authorization: Bearer [TOKEN]" \
-o "tile-by-coordinates.PNG"
If the request is successful, in this example the response will be a PNG file similar to this.
EXAMPLE 2: AIS APPARENT FISHING EFFORT HEATMAP - GET MVT TILE BY COORDINATES
# Make sure to replace [TOKEN] with your API Access Token
curl --location --globoff 'https://gateway.api.globalfishingwatch.org//v3/4wings/tile/heatmap/0/0/0?date-range=2023-05-01%2C2023-10-20&datasets[0]=public-global-fishing-effort%3Alatest&format=MVT&interval=HOUR&temporal-aggregation=true' \
-H "Authorization: Bearer [TOKEN]" \
If the request is successful, in this example the response will be an MVT file similar to this.
EXAMPLE 3: SAR VESSEL DETECTION HEATMAP - GET PNG TILE BY COORDINATES
# Make sure to replace [TOKEN] with your API Access Token
curl --location --globoff 'https://gateway.api.globalfishingwatch.org/v3/4wings/tile/heatmap/5/13/13?format=PNG&datasets[0]=public-global-sar-presence%3Alatest&date-range=2020-01-01%2C2020-01-31&style=eyJjb2xvciI6WzU0LDI4LDEyXSwicmFtcCI6WzAsOTIsMzIzLDY0MCwxMTE2LDE3NTMsMjg1MCw0MTMxLDU4MDZdfQ%3D%3D&interval=DAY' \
-H "Authorization: Bearer [TOKEN]" \
Make sure to replace [STYLE] with the style obtained in the previous endpoint "Create a style for generate PNG tiles" in the 'url' field
If the request is successful, in this example the response will be an PNG file similar to this.
EXAMPLE 4: SAR VESSEL DETECTION HEATMAP - GET MVT TILE BY COORDINATES
# Make sure to replace [TOKEN] with your API Access Token
curl --location --globoff 'https://gateway.api.globalfishingwatch.org//v3/4wings/tile/heatmap/0/0/0?date-range=2023-05-01%2C2023-10-20&datasets[0]=public-global-sar-presence%3Alatest&format=MVT&interval=DAY&temporal-aggregation=true' \
-H "Authorization: Bearer [TOKEN]" \
If the request is successful, in this example the response will be an MVT file similar to this.
This endpoint allows you to get details of the cell of the tile (in PNG or MVT format depending on the parameter).
⚠️ Before using this endpoint, for PNG format, remember to create your STYLE that specifies how the fishing effort will be visualized. Check more detail about how to generate your style here.
You can find on the right, two examples using AIS apparent fishing effort:
- EXAMPLE 1 - Get AIS apparent fishing effort heatmap in PNG format
- EXAMPLE 2 - Get AIS apparent fishing effort heatmap in MVT format
You can find on the right, two examples using SAR (Synthetic-aperture radar) vessel detections:
- EXAMPLE 3 - Get SAR vessel detections heatmap in PNG format
- EXAMPLE 4 - Get SAR vessel detections heatmap in MVT format
Get raster - HTTP Request
GET https://gateway.api.globalfishingwatch.org/v3/4wings/tile/heatmap/{z}/{x}/{y}
Get raster - URL Parameters
Parameter | Description | Required | Format | Param Type |
---|---|---|---|---|
z | Zoom level (from 0 to 12) Example: 1 | True | number | path |
x | X index (lat) of the tile | True | number | path |
y | Y index (lon) of the tile | True | number | path |
temporal-aggregation | Aggregates temporarily the data in the tile Example: True | False | boolean | query |
interval | Tiles are available at several time resolutions (hourly, daily, monthly and 10 days), it means one frame every one hour, one day or 10 days. For each resolution, the max displayable length items: 1 hour: 20 days, 1 day: 1 year and 10 days: several years depending on the dataset for AIS Fishing effort it starts in 2012. Example: DAY | False | Enum: ['10DAYS', 'DAY', 'HOUR', 'MONTH', 'YEAR'] | query |
datasets[0] | Specify the datasets that will be used to create the style. You can learn more about which are the possible datasets here. The parameters should be defined using an index, in case only one dataset is going to be sent: ?dataset[0]=xxxxx, in case of multiple datasets: ?dataset[0]=xxxxx&dataset[1]=yyyyy. Example: public-global-fishing-effort:latest or public-global-sar-presence:latest | True | string | query |
filters[0] | Filters are applied to the dataset parameter with the corresponding index. For example if we want to apply a filter to dataset[0], we should apply the filter attributes to filter[0]. For AIS apparent fishing effort, the possible filters are: flag , geartype and vessel_id . Example: flag in ('ESP') . Check Gear Types supported here.. For SAR vessel detections, the available filters are: matched , flag , vessel_id , geartype , neural_vessel_type , and shiptype . Examples include matched='false' , which indicates all SAR vessel detections that didn't match with an AIS vessel, and neural_vessel_type='Likely Fishing' , which signifies all SAR vessel detections identified by the neural model (which only considers the thumbnails of the SAR images) as "Likely Fishing". This filter is useful for analyzing detections that did not match with AIS vessels. The neural_vessel_type filter accepts the following values: "Likely non-fishing", "Likely Fishing", or "Unknown". Check Vessel Types supported here. |
False | string | query |
date-range | Start date and end date to filter the data Example: 2021-01-01,2021-03-01 | False | string | query |
format | Format of response Example: MVT | False | Enum: ['MVT', 'PNG'] | query |
style | Id of the style obtained with endpoint /v3/4wings/generate-png. | False | string | query |
Generate bins of inputs to know the data
You can use this endpoint for example to create a color ramp of the data.
You can find on the right, one example using AIS apparent fishing effort:
- EXAMPLE 1 - Get AIS apparent fishing effort bins for zoom 1 in a daily interval
You can find on the right, two examples using SAR (Synthetic-aperture radar) vessel detections:
- EXAMPLE 2 - Get SAR vessel detections bins for zoom 2 in a hourly interval
Get bins - HTTP Request
GET https://gateway.api.globalfishingwatch.org/v3/4wings/bins/{z}
Get bins - URL Parameters
Parameter | Description | Required | Format | Param Type |
---|---|---|---|---|
z | Zoom level (from 0 to 12) | True | number | path |
temporal-aggregation | Aggregates temporarily the data in the tile Example: True | False | boolean | query |
num-bins | Number of bins or buckets that you would like Example: 10 | False | number | query |
interval | Tiles are available at several time resolutions (hourly, daily, monthly and 10 days), it means one frame every one hour, one day or 10 days. For each resolution, the the max displayable length items: 1 hour: 20 days, 1 day: 1 year and 10 days: several years depending on the dataset for AIS Fishing effort it starts in 2012. Example: 10DAYS | False | Enum: ['10DAYS', 'DAY', 'HOUR', 'MONTH', 'YEAR'] | query |
datasets[0] | Specify the datasets that will be used to create the style. You can learn more about which are the possible datasets here. The parameters should be defined using an index, in case only one dataset is going to be sent: ?dataset[0]=xxxxx, in case of multiple datasets: ?dataset[0]=xxxxx&dataset[1]=yyyyy. Example: public-global-fishing-effort:latest or public-global-sar-presence:latest | True | string | query |
filters[0] | Filters are applied to the dataset parameter with the corresponding index. For example if we want to apply a filter to dataset[0], we should apply the filter attributes to filter[0]. For AIS apparent fishing effort, the possible filters are: flag, geartype and vessel_id. Example: flag in ('ESP'). For SAR vessel detections, the possible filters are: matched , flag , vessel_id , geartype , neural_vessel_type and shiptype . Examples: matched='false' which means all SAR vessel detections that didn't match with an AIS vessel. or neural_vessel_type='Likely Fishing' which means all SAR vessel detections that the neural model that it only has in account the thumbnails of the sar images identify as Likely Fishing (this is useful to analyze detections that had no matching with AIS vessels) . The filter neural_vessel_type accepts as possible values: "Likely non-fishing", "Likely Fishing" or "Unknown". Check Gear Types supported here. Check Vessel Types supported here. |
False | string | query |
date-range | Start date and end date to filter the data Example: 2021-01-01,2021-03-01 | False | string | query |
EXAMPLE 1: APPARENT FISHING EFFORT BINS FOR ZOOM 1 IN A DAILY INTERVAL
# Make sure to replace [TOKEN] with your API Access Token
curl --location --globoff 'https://gateway.api.globalfishingwatch.org//v3/4wings/bins/1?datasets[0]=public-global-fishing-effort%3Alatest&temporal-aggregation=false&num-bins=9&interval=DAY' \
-H "Authorization: Bearer [TOKEN]" \
If the request is successful, in this example the response will be:
{
"total": 1,
"limit": null,
"offset": null,
"nextOffset": null,
"metadata": {},
"entries": [
[
0,
9.614632153181205,
46.89072615583312,
135.94034024094597,
257.06961050684566,
568.6451974803559,
913.1298155603789,
1173.3012226127767,
1554.9284184570513
]
]
}
EXAMPLE 2: SAR VESSEL DETECTIONS FOR ZOOM 2 IN A HOURLY INTERVAL
# Make sure to replace [TOKEN] with your API Access Token
curl --location --globoff 'https://gateway.api.globalfishingwatch.org//v3/4wings/bins/2?datasets[0]=public-global-sar-presence%3Alatest&temporal-aggregation=false&num-bins=9&interval=HOUR' \
-H "Authorization: Bearer [TOKEN]" \
If the request is successful, in this example the response will be:
{
"total": 1,
"limit": null,
"offset": null,
"nextOffset": null,
"metadata": {},
"entries": [
[
0,
0.6141656839622642,
2.13199378330373,
4.751082251082251,
8.484912146676853,
13.063675088131609,
28.508133561643834,
45.34335191082803,
58.447841726618705
]
]
}
Return info in the cells of the tile specified - Interaction API
Interaction API allows you to get details of an MVT cell.
You can find on the right, one example using AIS apparent fishing effort:
- EXAMPLE 1 - Get AIS apparent fishing effort cell details
You can find on the right, two examples using SAR (Synthetic-aperture radar) vessel detections:
- EXAMPLE 2 - Get SAR vessel detections cell details
Interaction - HTTP Request
GET https://gateway.api.globalfishingwatch.org/v3/4wings/interaction/{z}/{x}/{y}/{cells}
Interaction - URL Parameters
Parameter | Description | Required | Format | Param Type |
---|---|---|---|---|
z | Zoom level (from 0 to 12) | True | number | path |
x | X index (lat) of the tile | True | number | path |
y | Y index (lon) of the tile | True | number | path |
cells | Indexes of cells separated by comma Example: 107,1,2 | True | string | path |
limit | Number maximun of results Example: 10 | False | number | query |
datasets[0] | Specify the datasets that will be used to create the style. You can learn more about which are the possible datasets here. The parameters should be defined using an index, in case only one dataset is going to be sent: ?dataset[0]=xxxxx, in case of multiple datasets: ?dataset[0]=xxxxx&dataset[1]=yyyyy. Example: public-global-fishing-effort:latest or public-global-sar-presence:latest | True | string | query |
filters[0] | Filters are applied to the dataset parameter with the corresponding index. For example if we want to apply a filter to dataset[0], we should apply the filter attributes to filter[0]. For AIS apparent fishing effort, the possible filters are: flag , geartype and vessel_id . Example: flag in ('ESP') . Check Gear Types supported here.. For SAR vessel detections, the available filters are: matched , flag , vessel_id , geartype , neural_vessel_type , and shiptype . Examples include matched='false' , which indicates all SAR vessel detections that didn't match with an AIS vessel, and neural_vessel_type='Likely Fishing' , which signifies all SAR vessel detections identified by the neural model (which only considers the thumbnails of the SAR images) as "Likely Fishing". This filter is useful for analyzing detections that did not match with AIS vessels. The neural_vessel_type filter accepts the following values: "Likely non-fishing", "Likely Fishing", or "Unknown". Check Vessel Types supported here. |
False | string | query |
date-range | Start date and end date to filter the data Example: 2021-01-01,2021-03-01 | False | string | query |
EXAMPLE 1: GET DETAIL OF AN APPARENT FISHING EFFORT CELL TO ALLOW FURTHER INTERACTION
# Make sure to replace [TOKEN] with your API Access Token.
curl --location -g --request GET 'https://gateway.api.globalfishingwatch.org/v3/4wings/interaction/1/0/0/107?date-range=2021-01-01,2021-12-31&datasets[0]=public-global-fishing-effort:latest' \
-H "Authorization: Bearer [TOKEN]"
If the request is successful, the response will be: fishing hours and vessel id that allow you to get more detail of a vessel by using the Vessel API
{
"total": 1,
"limit": null,
"offset": null,
"nextOffset": null,
"metadata": {},
"entries": [
[
{
"hours": 11.455833333333334,
"id": "f2134364c-c3d5-8ee9-ddd4-5511c0500a50"
},
{
"hours": 9.895,
"id": "f042d0bcf-fe96-cad5-5833-36b4aff2e87a"
},
{
"hours": 12.617222222222221,
"id": "e2d464a53-35ed-f059-c7e2-1ac76e12c9cc"
},
{
"hours": 1.6769444444444446,
"id": "daa9e5914-4d3c-6242-6648-b1adbc93305b"
},
{
"hours": 1.238611111111111,
"id": "c88e21112-2a09-4d56-196e-ff9cb26f76c9"
},
{
"hours": 0.053055555555555564,
"id": "b8de3c8e8-84f0-ba2f-528c-ff877e2d0e9e"
},
{
"hours": 3.5319444444444446,
"id": "b5d3439b6-6d19-5385-9d6b-08a0dfd60fa7"
},
{
"hours": 18.993333333333332,
"id": "ab75d8a33-3f93-62eb-0c86-38d8c742eff3"
},
{
"hours": 9.597777777777777,
"id": "a812d4320-0608-5ad0-1929-d5206eda123a"
},
{
"hours": 34.2575,
"id": "9eab37595-5bf1-471e-2e38-c070ebb00a7a"
},
{
"hours": 47.11222222222222,
"id": "9cf14ce31-144f-dda7-ded3-743bec9e41db"
},
{
"hours": 9.228888888888891,
"id": "9aed1677e-ef23-f541-58eb-8d755d410df4"
},
{
"hours": 5.095000000000001,
"id": "70a3ff9ca-ab64-12b2-6446-34cdf14000c6"
},
{
"hours": 5.3925,
"id": "6b3129a20-009f-1741-5877-a714ea11cf2b"
},
{
"hours": 16.631666666666664,
"id": "68ab5e789-96a1-fd61-016c-92bd413a9682"
},
{
"hours": 10.718055555555555,
"id": "65aaba596-62eb-49af-910d-f7d9d47a2d06"
},
{
"hours": 9.872222222222222,
"id": "3f7c46fe4-45f8-0685-a7e5-60d531c7c352"
},
{
"hours": 8.126666666666667,
"id": "2ab8c04ff-f0e3-a3f1-7ef4-2428604174e0"
},
{
"hours": 38.58861111111111,
"id": "1abad9a58-8758-383e-8c58-6c8029ecaa44"
},
{
"hours": 10.016388888888889,
"id": "184b291b6-619c-748c-1f32-5fe46616d0dc"
},
{
"hours": 0.11166666666666666,
"id": "1738bc096-6373-5ae6-8bd0-dd31ecf6c0eb"
},
{
"hours": 2.338888888888889,
"id": "098ac6ed6-65a9-260b-fb84-8c932eb977ae"
},
{
"hours": 47.81805555555555,
"id": "050743514-4618-79b3-8643-96ada9281517"
},
{
"hours": 17.753055555555555,
"id": "04b95cb83-31d8-06e7-0845-8691696643f5"
}
]
]
}
EXAMPLE 2: GET DETAIL OF A SAR VESSEL DETECTION CELL TO ALLOW FURTHER INTERACTION
# Make sure to replace [TOKEN] with your API Access Token.
curl --location --globoff 'https://gateway.api.globalfishingwatch.org/v3/4wings/interaction/0/0/0/1049?datasets[0]=public-global-sar-presence%3Alatest&date-range=2017-01-01%2C2021-12-31' \
-H "Authorization: Bearer [TOKEN]"
If the request is successful, the response will be: detections and vessel id (in the case there is matching) that allow you to get more detail of a vessel by using the Vessel API
{
"total": 1,
"limit": null,
"offset": null,
"nextOffset": null,
"metadata": {},
"entries": [
[
{
"detections": 1,
"timestamp": "2019-01-02T00:11:17Z",
"vessel_id": "f9cceefc5-5c63-e34a-c660-14060bc5ebe6"
},
{
"detections": 1,
"timestamp": "2020-04-14T09:44:30Z",
"vessel_id": "f7e478e4d-de52-230b-9f67-9e3c47030786"
},
{
"detections": 1,
"timestamp": "2018-08-23T00:11:17Z",
"vessel_id": "f67b7ac6c-c819-e6aa-6ecc-62faf34106c8"
},
{
"detections": 1,
"timestamp": "2018-06-24T00:11:13Z",
"vessel_id": "f6574e4ed-d56c-c281-97d7-965a47dbeda0"
},
{
"detections": 1,
"timestamp": "2021-05-27T00:11:30Z",
"vessel_id": "ed3ebc54b-bc1b-a4ec-96d2-c6f3d3544a04"
},
{
"detections": 2,
"timestamp": "2019-03-03T00:11:15Z,2020-02-09T09:36:46Z",
"vessel_id": "c78c0051a-a0a2-37c4-c760-b30e7007230f"
},
{
"detections": 1,
"timestamp": "2017-10-15T09:44:26Z",
"vessel_id": "c242baee6-6c28-d945-3462-0755a0b1499c"
},
{
"detections": 1,
"timestamp": "2017-08-28T09:44:25Z",
"vessel_id": "b802fb0bf-f7f6-8f21-b043-8c2da6278484"
},
{
"detections": 1,
"timestamp": "2020-06-25T00:11:26Z",
"vessel_id": "a2713db20-0601-b0a6-a091-61bdc47a5944"
},
{
"detections": 1,
"timestamp": "2018-07-18T00:11:15Z",
"vessel_id": "8a2774ca5-5a68-f4d1-e2d8-c61e371a8a4b"
},
{
"detections": 1,
"timestamp": "2019-02-26T09:36:40Z",
"vessel_id": "79f1bf2b5-5e18-b97a-1aa4-ab9f97f9e10a"
},
{
"detections": 1,
"timestamp": "2021-02-20T00:11:27Z",
"vessel_id": "766208f70-0759-9f75-911a-85e2f9205201"
},
{
"detections": 1,
"timestamp": "2020-07-14T09:36:51Z",
"vessel_id": "724e0c2fb-bc6b-5c3b-89f7-0b44b374a2e1"
},
{
"detections": 1,
"timestamp": "2021-10-06T00:11:37Z",
"vessel_id": "5c2329bfe-e430-9ed7-842a-1cc14f1ed651"
},
{
"detections": 2,
"timestamp": "2018-02-12T09:44:17Z,2018-03-15T09:36:27Z",
"vessel_id": "4e324aedb-b3ab-7c6a-504a-1246f5e6faa9"
},
{
"detections": 1,
"timestamp": "2020-12-10T09:44:38Z",
"vessel_id": "4d7ffb590-08bc-4b48-71b3-acb119cac029"
},
{
"detections": 1,
"timestamp": "2020-11-28T00:11:31Z",
"vessel_id": "4d3917b59-9a9d-0f92-dfdf-800225c1887b"
},
{
"detections": 1,
"timestamp": "2017-01-31T09:36:21Z",
"vessel_id": "4bcc70a54-40f5-e912-e25f-d8cff26c5ff5"
},
{
"detections": 1,
"timestamp": "2018-12-09T09:44:29Z",
"vessel_id": "4489c5a49-993b-4159-e020-ed27b84e1484"
},
{
"detections": 1,
"timestamp": "2021-02-08T00:11:28Z",
"vessel_id": "428d3868d-d961-c8ed-2677-fd10e8e0a2d5"
},
{
"detections": 1,
"timestamp": "2021-10-06T00:11:37Z",
"vessel_id": "3be72b270-0846-1c1d-70c2-fe3d6adb0edf"
},
{
"detections": 1,
"timestamp": "2021-10-18T09:44:45Z",
"vessel_id": "39a3b0460-0cb1-80da-ce74-e1ded9309b52"
},
{
"detections": 1,
"timestamp": "2019-04-08T00:11:16Z",
"vessel_id": "354db802c-c309-002c-140d-0933d13b15d2"
},
{
"detections": 1,
"timestamp": "2021-06-15T09:36:56Z",
"vessel_id": "3427df3e6-6468-8d6b-d6db-96b35b6747bf"
},
{
"detections": 1,
"timestamp": "2017-04-06T09:44:17Z",
"vessel_id": "28e7adf49-943a-2be6-7c1f-7ea730ea44e6"
},
{
"detections": 1,
"timestamp": "2021-12-17T00:11:35Z",
"vessel_id": "117064035-5205-1331-a8b6-3d9c54655912"
},
{
"detections": 1,
"timestamp": "2021-12-17T09:44:43Z",
"vessel_id": "05cb894ca-afc6-1c59-47bf-8fd3dacd6678"
},
{
"detections": 1,
"timestamp": "2018-05-07T00:11:10Z",
"vessel_id": "033998426-6dd0-d8d2-aedf-0756991c6027"
},
{
"detections": 7,
"timestamp": "2019-03-03T00:11:15Z,2021-10-25T09:37:01Z,2021-05-03T00:11:29Z,2020-11-28T00:11:31Z,2020-08-12T00:11:29Z,2020-08-12T00:11:29Z,2020-02-02T09:44:30Z",
"vessel_id": null
}
]
]
}
Create a report of a specified region
Report - HTTP Request
It is possible to call this endpoint using one of these two verbs:
POST https://gateway.api.globalfishingwatch.org/v3/4wings/report
GET https://gateway.api.globalfishingwatch.org/v3/4wings/report
Verb Usage Notes:
POST
: Use this method to send a custom polygon. This functionality is not available with theGET
method.GET
: This method supports caching, which is highly beneficial for frontend/UI applications to prevent redundant requests. Cached requests can be stored and reused, significantly improving response times. Additionally, Global Fishing Watch caches GET requests at the gateway level. If a user is expected to call the same URL multiple times, this can result in a substantial performance improvement.
EXAMPLE 429 ERROR RESPONSE
{
"statusCode": 429,
"error": "Too Many Requests",
"messages": [
{
"title": "Too Many Requests",
"detail": "Your application token is not currently enabled to perform more than one concurrent report. If you need to generate more than one report concurrently, contact us at [email protected]",
"metadata": {
"currentReportBody": {
"geojson": null,
"region": {
"dataset": "public-mpa-all",
"id": "555635930"
}
},
"currentReportUrl": "/v3/4wings/report?format=csv&datasets%5B0%5D=public-global-fishing-effort%3Av20201001&date-range=2023-05-01T00%3A00%3A00.000Z%2C2023-06-01T00%3A00%3A00.000Z&spatial-aggregation=true&temporal-resolution=entire&group-by=vessel_id"
}
}
]
}
Report - AIS Apparent Fishing Effort examples
On the right side, you can find these examples:
- Example 1 (POST) - Generate fishing effort report grouped By Year and by Custom Polygon In JSON Format
- Example 2 (POST) - Generate fishing effort report grouped By Gear Type, Using existing Regions (Russian Eez) In CSV Format.
- Example 3 (GET) - same as Example 2 but using GET.
- Example 4 (POST) - Generate report with total fishing hours per Lat/Lon grid cell (no grouping) using existing Regions (MPA Dorsal De Nasca) In JSON Format
- Example 5 (GET) - same as Example 4 but using GET.
- Example 6 (POST) - Generate report with total fishing hours per Lat/Lon grid cell (no grouping) using existing Regions (MPA Dorsal De Nasca) In JSON Format and buffer of 4 NAUTICAL MILES
- Example 7 (GET) - same as Example 6 but using GET.
Report - SAR vessel detection examples
On the right side, you can find these examples:
- Example 8 (POST) - Report REGION ID (Chile) DAILY grided data and filter by unmatched detections (JSON)
- Example 9 (POST) - Report Indonesia Filter by matched detections - Example of Noisy Vessel
Report - URL Parameters for both POST and GET requests
Parameter | Description | Required | Format | Param Type |
---|---|---|---|---|
spatial-resolution | Low means at 10th degree resolution and High means at 100th degree resolution. Only required if spatial-aggregation is false or it's not sent. Example: low | False | Enum: ['LOW', 'HIGH'] | query |
format | As result you get a zip file that contains caveat information and also the actual file including the results that could be in different results. Example: csv | True | Enum: ['CSV', 'TIF', 'JSON'] | query |
group-by | The report data can be grouped by different criteria, for example a csv by vessel_id means that you get on row for each vessel id. Only required when spatial-aggregation is True. Example: vessel_id | False | Enum: ['VESSEL_ID', 'FLAG', 'GEARTYPE', 'FLAGANDGEARTYPE', 'MMSI'] | query |
temporal-resolution | You can decide the level of detail regarding time. For example if you request csv, group by vessel_id and daily, you get one row per vessel id per day, or if you request csv, group by vessel_id and entire, you get one row per vessel id. Example: yearly | True | Enum: ['HOURLY', 'DAILY', 'MONTHLY', 'YEARLY','ENTIRE'] | query |
datasets[0] | Specify the datasets that will be used to create the style. You can learn more about which are the possible datasets here. The parameters should be defined using an index, in case only one dataset is going to be sent: ?dataset[0]=xxxxx, in case of multiple datasets: ?dataset[0]=xxxxx&dataset[1]=yyyyy. Example: public-global-fishing-effort:latest or public-global-sar-presence:latest | True | string | query |
filters[0] | Filters are applied to the dataset parameter with the corresponding index. For example if we want to apply a filter to dataset[0], we should apply the filter attributes to filter[0].For AIS apparent fishing effort, the possible filters are: flag , geartype and vessel_id . Example: flag in ('ESP') . Check Gear Types supported here.. For SAR vessel detections, the available filters are: matched , flag , vessel_id , geartype , neural_vessel_type , and shiptype . Examples include matched='false' , which indicates all SAR vessel detections that didn't match with an AIS vessel, and neural_vessel_type='Likely Fishing' , which signifies all SAR vessel detections identified by the neural model (which only considers the thumbnails of the SAR images) as "Likely Fishing". This filter is useful for analyzing detections that did not match with AIS vessels. The neural_vessel_type filter accepts the following values: "Likely non-fishing", "Likely Fishing", or "Unknown". Check Vessel Types supported here. |
False | string | query |
date-range | Start date and end date to filter the data. Maximum 366 days. Example: 2021-01-01,2021-03-01 | False | string | query |
spatial-aggregation | Aggregates spatially the data in the report. With value true, the formats supported are only csv and json. Example: True | False | boolean | query |
Report - URL Parameters only for GET request
Parameter | Description | Required | Format | Param Type |
---|---|---|---|---|
region-dataset | (Only allowed in GET request) Id of the dataset to obtain the region (example: public-eez-areas) | False | string | query |
region-id | (Only allowed in GET request) Id of the region (example: 5690) | |||
buffer-operation | (Only allowed in GET request) 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 . Possible values (DIFFERENCE, DISSOLVE) | False | string | query |
buffer-unit | (Only allowed in GET request) Unit of the buffer value. Possible values (MILES, NAUTICALMILES, KILOMETERS, RADIANS, DEGREES) | False | string | query |
buffer-value | (Only allowed in GET request) Distance to draw the buffer (negative values are allowed) | False | string | query |
Report - Body only for POST request
Key | Description | Required | Format | Param Type |
---|---|---|---|---|
geojson | Geometry to filter the data in GeoJSON format | False | object | body |
region | Object with region information (To get details of existing regions, check Regions in the Reference data section) | False | object | body |
region.dataset | Id of the dataset to obtain the region (example: public-eez-areas) | False | string | body |
region.id | Id of the region (example: 5690) | False | string | body |
region.bufferOperation | 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 . Possible values (DIFFERENCE, DISSOLVE) | False | string | body |
region.bufferUnit | Unit of the buffer value. Possible values (MILES, NAUTICALMILES, KILOMETERS, RADIANS, DEGREES) | False | string | body |
region.bufferValue | Distance to draw the buffer (negative values are allowed) | False | string | body |
EXAMPLE 1 (POST) - GENERATE FISHING EFFORT REPORT GROUPED BY YEAR AND BY CUSTOM POLYGON IN JSON FORMAT
# Make sure to replace [TOKEN] with your API Access Token.
curl --location --globoff 'https://gateway.api.globalfishingwatch.org//v3/4wings/report?spatial-resolution=LOW&temporal-resolution=YEARLY&group-by=FLAG&datasets[0]=public-global-fishing-effort%3Alatest&date-range=2021-01-01%2C2022-01-01&format=JSON' \
-H "Authorization: Bearer [TOKEN]"
-H 'Content-Type: application/json' \
--data-raw '{"geojson":{"type":"Polygon","coordinates":[[[-76.11328125,-26.273714024406416],[-76.201171875,-26.980828590472093],[-76.376953125,-27.527758206861883],[-76.81640625,-28.30438068296276],[-77.255859375,-28.767659105691244],[-77.87109375,-29.152161283318918],[-78.486328125,-29.45873118535532],[-79.189453125,-29.61167011519739],[-79.892578125,-29.6880527498568],[-80.595703125,-29.61167011519739],[-81.5625,-29.382175075145277],[-82.177734375,-29.07537517955835],[-82.705078125,-28.6905876542507],[-83.232421875,-28.071980301779845],[-83.49609375,-27.683528083787756],[-83.759765625,-26.980828590472093],[-83.84765625,-26.35249785815401],[-83.759765625,-25.64152637306576],[-83.583984375,-25.16517336866393],[-83.232421875,-24.447149589730827],[-82.705078125,-23.966175871265037],[-82.177734375,-23.483400654325635],[-81.5625,-23.241346102386117],[-80.859375,-22.998851594142906],[-80.15625,-22.917922936146027],[-79.453125,-22.998851594142906],[-78.662109375,-23.1605633090483],[-78.134765625,-23.40276490540795],[-77.431640625,-23.885837699861995],[-76.9921875,-24.28702686537642],[-76.552734375,-24.846565348219727],[-76.2890625,-25.48295117535531],[-76.11328125,-26.273714024406416]]]}}'
If the request is successful, the response will be:
{
"total": 1,
"limit": null,
"offset": null,
"nextOffset": null,
"metadata": {},
"entries": [
{
"public-global-fishing-effort:v3": [
{
"date": "2021",
"flag": "ESP",
"hours": 0.4283333333333333,
"lat": -27.3,
"lon": -82,
"vesselIDs": 1
},
{
"date": "2021",
"flag": "ESP",
"hours": 0.9591666666666667,
"lat": -24.7,
"lon": -78.6,
"vesselIDs": 2
},
{
"date": "2021",
"flag": "ESP",
"hours": 0.27555555555555555,
"lat": -24.6,
"lon": -78.4,
"vesselIDs": 2
},
{
"date": "2021",
"flag": "ESP",
"hours": 0.41805555555555557,
"lat": -24.2,
"lon": -77.8,
"vesselIDs": 1
},
{
"date": "2021",
"flag": "ESP",
"hours": 0.034444444444444444,
"lat": -24.7,
"lon": -78.5,
"vesselIDs": 1
}
]
}
]
}
EXAMPLE 2 (POST) - GENERATE FISHING EFFORT REPORT GROUPED BY GEAR TYPE, USING EXISTING REGIONS (Russian EEZ) IN CSV FORMAT
To get details of existing regions, check Regions in the Reference data section
# Make sure to replace [TOKEN] with your API Access Token.
curl --location -g --request POST 'https://gateway.api.globalfishingwatch.org/v3/4wings/report?spatial-resolution=LOW&temporal-resolution=MONTHLY&group-by=GEARTYPE&datasets[0]=public-global-fishing-effort:latest&date-range=2022-01-01,2022-05-01&format=CSV' \
--header 'Authorization: Bearer [TOKEN]' \
--header 'Content-Type: application/json' \
--output 'report-grouped.json' \
--data-raw '{
"region": {
"dataset": "public-eez-areas",
"id": 5690
}
}'
If the request is successful, the response will be a ZIP file including the CSV file and a pdf with data considerations, similar to this.
EXAMPLE 3 (GET) - SAME AS EXAMPLE 2 BUT USING THE GET VERB
To get details of existing regions, check Regions in the Reference data section
# Make sure to replace [TOKEN] with your API Access Token.
curl --location -g --request GET 'https://gateway.api.globalfishingwatch.org/v3/4wings/report?spatial-resolution=LOW&temporal-resolution=MONTHLY&group-by=GEARTYPE&datasets[0]=public-global-fishing-effort:latest&date-range=2022-01-01,2022-05-01&format=CSV®ion-id=5690®ion-dataset=public-eez-areas' \
--header 'Authorization: Bearer [TOKEN]' \
--header 'Content-Type: application/json'
If the request is successful, the response will be a ZIP file including the CSV file and a pdf with data considerations, the same as EXAMPLE 2.
EXAMPLE 4 (POST) - GENERATE REPORT WITH TOTAL FISHING HOURS PER LAT/LON GRID CELL USING EXISTING REGIONS (MPA Dorsal de Nasca) IN JSON FORMAT.
To get details of existing regions, check Regions in the Reference data section
# Make sure to replace [TOKEN] with your API Access Token.
curl --location -g --request POST 'https://gateway.api.globalfishingwatch.org/v3/4wings/report?spatial-resolution=LOW&temporal-resolution=ENTIRE&spatial-aggregation=false&datasets[0]=public-global-fishing-effort:latest&date-range=2022-05-01,2022-12-01&format=JSON'\
--header 'Authorization: Bearer [TOKEN]' \
--header 'Content-Type: application/json' \
--output 'report-grouped.json' \
--data-raw '{
"region": {
"dataset": "public-mpa-all",
"id": 555745302
}
}'
If the request is successful, the response will be:
{
"total": 1,
"limit": null,
"offset": null,
"nextOffset": null,
"metadata": {},
"entries": [
{
"public-global-fishing-effort:v3.0": [
{
"date": "2022-05-01,2022-12-01",
"hours": 0.5788888888888889,
"lat": -16,
"lon": -77
},
{
"date": "2022-05-01,2022-12-01",
"hours": 1.2480555555555557,
"lat": -15.3,
"lon": -77.8
},
{
"date": "2022-05-01,2022-12-01",
"hours": 0.24166666666666664,
"lat": -16.2,
"lon": -76.5
},
{
"date": "2022-05-01,2022-12-01",
"hours": 1.0566666666666669,
"lat": -15.9,
"lon": -76.2
},
{
"date": "2022-05-01,2022-12-01",
"hours": 4.950277777777778,
"lat": -15.1,
"lon": -76.9
},
{
"date": "2022-05-01,2022-12-01",
"hours": 4.2636111111111115,
"lat": -15.9,
"lon": -77.3
},
{
"date": "2022-05-01,2022-12-01",
"hours": 6.2619444444444445,
"lat": -16.2,
"lon": -76
},
{
"date": "2022-05-01,2022-12-01",
"hours": 2.3333333333333335,
"lat": -16,
"lon": -75.9
},
{
"date": "2022-05-01,2022-12-01",
"hours": 2.0277777777777777,
"lat": -15.7,
"lon": -76.6
},
{
"date": "2022-05-01,2022-12-01",
"hours": 0.9891666666666667,
"lat": -15.4,
"lon": -76.8
},
{
"date": "2022-05-01,2022-12-01",
"hours": 1.7366666666666668,
"lat": -17.5,
"lon": -77.9
},
{
"date": "2022-05-01,2022-12-01",
"hours": 2.3325,
"lat": -15.8,
"lon": -76.1
},
{
"date": "2022-05-01,2022-12-01",
"hours": 2.058611111111111,
"lat": -15.3,
"lon": -77.3
},
{
"date": "2022-05-01,2022-12-01",
"hours": 0.20166666666666666,
"lat": -15.5,
"lon": -76.6
},
{
"date": "2022-05-01,2022-12-01",
"hours": 3.750277777777778,
"lat": -15,
"lon": -77
},
{
"date": "2022-05-01,2022-12-01",
"hours": 1.17,
"lat": -15.9,
"lon": -76.3
},
{
"date": "2022-05-01,2022-12-01",
"hours": 6.835277777777778,
"lat": -16.1,
"lon": -76.2
},
{
"date": "2022-05-01,2022-12-01",
"hours": 0.8758333333333332,
"lat": -15.8,
"lon": -76.6
},
{
"date": "2022-05-01,2022-12-01",
"hours": 2.269722222222222,
"lat": -16.1,
"lon": -76.3
},
{
"date": "2022-05-01,2022-12-01",
"hours": 0.8836111111111112,
"lat": -17.6,
"lon": -77.8
},
{
"date": "2022-05-01,2022-12-01",
"hours": 1.3144444444444443,
"lat": -15.1,
"lon": -77
},
{
"date": "2022-05-01,2022-12-01",
"hours": 1.6336111111111113,
"lat": -15.4,
"lon": -76.9
},
{
"date": "2022-05-01,2022-12-01",
"hours": 6.915277777777777,
"lat": -15.9,
"lon": -77.2
},
{
"date": "2022-05-01,2022-12-01",
"hours": 2.069166666666667,
"lat": -15.7,
"lon": -76.8
},
{
"date": "2022-05-01,2022-12-01",
"hours": 3.7730555555555556,
"lat": -15.9,
"lon": -77.4
},
{
"date": "2022-05-01,2022-12-01",
"hours": 9.885555555555557,
"lat": -15.1,
"lon": -77.6
},
{
"date": "2022-05-01,2022-12-01",
"hours": 1.3966666666666665,
"lat": -15,
"lon": -77.2
},
{
"date": "2022-05-01,2022-12-01",
"hours": 3.3041666666666667,
"lat": -16,
"lon": -76.4
},
{
"date": "2022-05-01,2022-12-01",
"hours": 1.0766666666666667,
"lat": -16.5,
"lon": -76.1
},
{
"date": "2022-05-01,2022-12-01",
"hours": 4.8341666666666665,
"lat": -16.2,
"lon": -75.9
},
{
"date": "2022-05-01,2022-12-01",
"hours": 5.3325,
"lat": -15.6,
"lon": -76.3
},
{
"date": "2022-05-01,2022-12-01",
"hours": 1.395,
"lat": -15.5,
"lon": -77.6
},
{
"date": "2022-05-01,2022-12-01",
"hours": 0.9936111111111111,
"lat": -15.8,
"lon": -77.5
},
{
"date": "2022-05-01,2022-12-01",
"hours": 0.6669444444444445,
"lat": -15.8,
"lon": -76.2
},
{
"date": "2022-05-01,2022-12-01",
"hours": 1.0811111111111111,
"lat": -15.5,
"lon": -77.3
},
{
"date": "2022-05-01,2022-12-01",
"hours": 1.1025000000000003,
"lat": -15.5,
"lon": -76.8
},
{
"date": "2022-05-01,2022-12-01",
"hours": 0.9577777777777777,
"lat": -17.7,
"lon": -77.7
},
{
"date": "2022-05-01,2022-12-01",
"hours": 11.073611111111111,
"lat": -15.5,
"lon": -76.7
},
{
"date": "2022-05-01,2022-12-01",
"hours": 0.10583333333333333,
"lat": -15.6,
"lon": -76.8
},
{
"date": "2022-05-01,2022-12-01",
"hours": 3.9888888888888885,
"lat": -16,
"lon": -76.3
},
{
"date": "2022-05-01,2022-12-01",
"hours": 0.6916666666666667,
"lat": -14.9,
"lon": -76.9
},
{
"date": "2022-05-01,2022-12-01",
"hours": 2.9250000000000003,
"lat": -15.7,
"lon": -76.7
},
{
"date": "2022-05-01,2022-12-01",
"hours": 2.401111111111111,
"lat": -15.6,
"lon": -76.7
},
{
"date": "2022-05-01,2022-12-01",
"hours": 2.056944444444444,
"lat": -17.5,
"lon": -77.8
},
{
"date": "2022-05-01,2022-12-01",
"hours": 2.3311111111111114,
"lat": -15.6,
"lon": -77.2
},
{
"date": "2022-05-01,2022-12-01",
"hours": 0.7,
"lat": -15.8,
"lon": -77.6
},
{
"date": "2022-05-01,2022-12-01",
"hours": 1.2999999999999998,
"lat": -15.2,
"lon": -77.5
},
{
"date": "2022-05-01,2022-12-01",
"hours": 1.2666666666666666,
"lat": -15.7,
"lon": -77.5
}
]
}
]
}
EXAMPLE 5 (GET) - SAME AS EXAMPLE 4 BUT USING GET VERB
To get details of existing regions, check Regions in the Reference data section
# Make sure to replace [TOKEN] with your API Access Token.
curl --location -g --request GET 'https://gateway.api.globalfishingwatch.org/v3/4wings/report?spatial-resolution=LOW&temporal-resolution=ENTIRE&spatial-aggregation=false&datasets[0]=public-global-fishing-effort:latest&date-range=2022-05-01,2022-12-01&format=JSON®ion-id=555745302®ion-dataset=public-mpa-all'\
--header 'Authorization: Bearer [TOKEN]' \
--header 'Content-Type: application/json' \
--output 'report-grouped.json'
If the request is successful, the response will be the same as in EXAMPLE 4
EXAMPLE 6 (POST) - GENERATE REPORT WITH TOTAL FISHING HOURS PER LAT/LON GRID CELL USING EXISTING REGIONS (MPA Dorsal de Nasca) IN JSON FORMAT and buffer of 4 NAUTICAL MILES
To get details of existing regions, check Regions in the Reference data section
# Make sure to replace [TOKEN] with your API Access Token.
curl --location -g --request POST 'https://gateway.api.globalfishingwatch.org/v3/4wings/report?spatial-resolution=LOW&temporal-resolution=ENTIRE&spatial-aggregation=false&datasets[0]=public-global-fishing-effort:latest&date-range=2022-05-01,2022-12-01&format=JSON'\
--header 'Authorization: Bearer [TOKEN]' \
--header 'Content-Type: application/json' \
--output 'report-grouped.json' \
--data-raw '{
"region": {
"dataset": "public-mpa-all",
"id": 555745302,
"bufferUnit": "NAUTICALMILES",
"bufferValue": 4
}
}'
{
"total": 1,
"limit": null,
"offset": null,
"nextOffset": null,
"metadata": {},
"entries": [
{
"public-global-fishing-effort:v3.0": [
{
"date": "2022-05-01,2022-12-01",
"hours": 0.9830555555555555,
"lat": -16.8,
"lon": -78.6
},
{
"date": "2022-05-01,2022-12-01",
"hours": 15.889444444444445,
"lat": -17.6,
"lon": -77.8
},
{
"date": "2022-05-01,2022-12-01",
"hours": 2.5683333333333334,
"lat": -16.5,
"lon": -78.8
},
{
"date": "2022-05-01,2022-12-01",
"hours": 1.9202694444444446,
"lat": -17.2,
"lon": -78.2
},
{
"date": "2022-05-01,2022-12-01",
"hours": 1.9163888888888891,
"lat": -17.4,
"lon": -78.1
},
{
"date": "2022-05-01,2022-12-01",
"hours": 7.533611111111111,
"lat": -17.5,
"lon": -77.9
},
{
"date": "2022-05-01,2022-12-01",
"hours": 1.1566666666666667,
"lat": -17.8,
"lon": -77.6
},
{
"date": "2022-05-01,2022-12-01",
"hours": 0.35277777777777775,
"lat": -16.2,
"lon": -75.9
},
{
"date": "2022-05-01,2022-12-01",
"hours": 11.49388888888889,
"lat": -17.4,
"lon": -78
},
{
"date": "2022-05-01,2022-12-01",
"hours": 2.8391666666666664,
"lat": -17.7,
"lon": -77.8
},
{
"date": "2022-05-01,2022-12-01",
"hours": 0.716111111111111,
"lat": -16.9,
"lon": -78.4
},
{
"date": "2022-05-01,2022-12-01",
"hours": 8.26388888888889,
"lat": -16.7,
"lon": -78.7
},
{
"date": "2022-05-01,2022-12-01",
"hours": 2.1325000000000003,
"lat": -17.5,
"lon": -77.8
},
{
"date": "2022-05-01,2022-12-01",
"hours": 5.818888888888889,
"lat": -17.3,
"lon": -78.1
},
{
"date": "2022-05-01,2022-12-01",
"hours": 0.9325,
"lat": -17.1,
"lon": -78.2
},
{
"date": "2022-05-01,2022-12-01",
"hours": 9.506111111111112,
"lat": -17.7,
"lon": -77.7
},
{
"date": "2022-05-01,2022-12-01",
"hours": 1.106388888888889,
"lat": -16.6,
"lon": -78.9
},
{
"date": "2022-05-01,2022-12-01",
"hours": 1.0611111111111111,
"lat": -17.3,
"lon": -78
},
{
"date": "2022-05-01,2022-12-01",
"hours": 9.64361111111111,
"lat": -17.8,
"lon": -77.7
},
{
"date": "2022-05-01,2022-12-01",
"hours": 1.004722222222222,
"lat": -17.6,
"lon": -77.9
},
{
"date": "2022-05-01,2022-12-01",
"hours": 1.0069444444444444,
"lat": -16.5,
"lon": -78.9
},
{
"date": "2022-05-01,2022-12-01",
"hours": 1.02,
"lat": -17.5,
"lon": -78
},
{
"date": "2022-05-01,2022-12-01",
"hours": 9.575,
"lat": -16.6,
"lon": -78.8
},
{
"date": "2022-05-01,2022-12-01",
"hours": 0.3675,
"lat": -17.1,
"lon": -78.3
},
{
"date": "2022-05-01,2022-12-01",
"hours": 1.6669444444444446,
"lat": -15.7,
"lon": -76
}
]
}
]
}
EXAMPLE 7 (GET) - SAME AS EXAMPLE 6 BUT USING GET VERB
To get details of existing regions, check Regions in the Reference data section
# Make sure to replace [TOKEN] with your API Access Token.
curl --location -g --request GET 'https://gateway.api.globalfishingwatch.org/v3/4wings/report?spatial-resolution=LOW&temporal-resolution=ENTIRE&spatial-aggregation=false&datasets[0]=public-global-fishing-effort:latest&date-range=2022-05-01,2022-12-01&format=JSON®ion-id=555745302®ion-dataset=public-mpa-all&buffer-value=4&buffer-unit=NAUTICALMILES'\
--header 'Authorization: Bearer [TOKEN]' \
--header 'Content-Type: application/json' \
--output 'report-grouped.json'
If the request is successful, the response will be the same as EXAMPLE 6.
EXAMPLE 8 (POST) - REPORT REGION ID (CHILE) DAILY GRIDED DATA AND FILTER BY UNMATCHED DETECTIONS (JSON)
To get details of existing regions, check Regions in the Reference data section
# Make sure to replace [TOKEN] with your API Access Token.
curl --location --globoff 'https://gateway.api.globalfishingwatch.org//v3/4wings/report?spatial-resolution=HIGH&temporal-resolution=HOURLY&datasets[0]=public-global-sar-presence%3Alatest&date-range=2022-01-01%2C2022-01-06&format=JSON&filters[0]=matched%3D%27false%27' \
--header 'Authorization: Bearer [TOKEN]' \
--header 'Content-Type: application/json' \
--data '{
"region": {
"dataset": "public-eez-areas",
"id": 8465
}
}'
If the request is successful, the response will be:
{
"total": 1,
"limit": null,
"offset": null,
"nextOffset": null,
"metadata": {},
"entries": [
{
"public-global-sar-presence:v3.0": [
{
"date": "2022-01-05 23:00",
"detections": 1,
"lat": -52.66,
"lon": -72.19
},
{
"date": "2022-01-05 23:00",
"detections": 1,
"lat": -52.57,
"lon": -72.03
},
{
"date": "2022-01-05 23:00",
"detections": 1,
"lat": -45.42,
"lon": -73
},
{
"date": "2022-01-05 23:00",
"detections": 1,
"lat": -45.39,
"lon": -73.04
},
{
"date": "2022-01-05 23:00",
"detections": 1,
"lat": -45.29,
"lon": -73.26
},
{
"date": "2022-01-05 23:00",
"detections": 1,
"lat": -45.34,
"lon": -73.11
},
{
"date": "2022-01-05 23:00",
"detections": 1,
"lat": -45.84,
"lon": -75.1
},
{
"date": "2022-01-05 23:00",
"detections": 1,
"lat": -44.12,
"lon": -73.79
},
{
"date": "2022-01-05 23:00",
"detections": 1,
"lat": -44.44,
"lon": -73.46
},
{
"date": "2022-01-05 23:00",
"detections": 1,
"lat": -44.25,
"lon": -73.77
},
{
"date": "2022-01-05 23:00",
"detections": 1,
"lat": -44.18,
"lon": -73.79
},
{
"date": "2022-01-05 23:00",
"detections": 1,
"lat": -43.97,
"lon": -73.59
},
{
"date": "2022-01-05 23:00",
"detections": 1,
"lat": -45.32,
"lon": -73.68
},
{
"date": "2022-01-05 23:00",
"detections": 1,
"lat": -44.59,
"lon": -74.27
},
{
"date": "2022-01-05 23:00",
"detections": 1,
"lat": -44.43,
"lon": -74.21
},
{
"date": "2022-01-05 23:00",
"detections": 1,
"lat": -44.51,
"lon": -73.49
},
{
"date": "2022-01-05 23:00",
"detections": 1,
"lat": -44.43,
"lon": -73.3
},
{
"date": "2022-01-05 23:00",
"detections": 1,
"lat": -45.4,
"lon": -73.52
},
{
"date": "2022-01-05 23:00",
"detections": 1,
"lat": -45.33,
"lon": -73.12
},
{
"date": "2022-01-05 23:00",
"detections": 1,
"lat": -45.03,
"lon": -73.62
}
]
}
]
}
EXAMPLE 9 - REPORT INDONESIA FILTER BY MATCHED DETECTIONS - EXAMPLE OF NOISY VESSEL
In this case there is a matching with SAR image and AIS positions but the AIS positions are linked to a noisy vessel that is why there is a vessel id but no vessel details since Global Fishing Watch couldn't determine those values as this refers to a noisy vessel.
To get details of existing regions, check Regions in the Reference data section
# Make sure to replace [TOKEN] with your API Access Token.
curl --location --globoff 'https://gateway.api.globalfishingwatch.org//v3/4wings/report?spatial-resolution=HIGH&temporal-resolution=HOURLY&group-by=VESSEL_ID&datasets[0]=public-global-sar-presence%3Alatest&date-range=2017-01-01%2C2017-01-02&format=JSON&filters[0]=matched%3D%27true%27' \
--header 'Authorization: Bearer [TOKEN]' \
--header 'Content-Type: application/json'\
--data '{
"region": {
"dataset": "public-eez-areas",
"id": 8492
}
}'
If the request is successful, the response will be this below. See that the first result is the noisy vessel.
{
"total": 1,
"limit": null,
"offset": null,
"nextOffset": null,
"metadata": {},
"entries": [
{
"public-global-sar-presence:v3.0": [
{
"callsign": "",
"dataset": "",
"date": "2017-01-01 22:00",
"detections": 1,
"entryTimestamp": "2017-01-01T22:33:41Z",
"exitTimestamp": "2017-01-01T22:33:41Z",
"firstTransmissionDate": "",
"flag": "",
"geartype": "",
"imo": "",
"lastTransmissionDate": "",
"lat": -6.09,
"lon": 106.89,
"mmsi": "",
"shipName": "",
"vesselId": "74934b786-6f6f-d027-c06f-bf814d7da7f3",
"vesselType": ""
},
{
"callsign": "D7MR",
"dataset": "public-global-vessel-identity:v3.0",
"date": "2017-01-01 22:00",
"detections": 1,
"entryTimestamp": "2017-01-01T22:33:41Z",
"exitTimestamp": "2017-01-01T22:33:41Z",
"firstTransmissionDate": "2014-03-12T07:22:25Z",
"flag": "KOR",
"geartype": "CARGO",
"imo": "9260976",
"lastTransmissionDate": "2024-05-26T23:59:32Z",
"lat": -5.92,
"lon": 106.12,
"mmsi": "440199000",
"shipName": "OCEAN LEADER",
"vesselId": "ffe9f7ec6-66b8-b8c9-b5d6-71bd2d362414",
"vesselType": "CARGO"
},
and more results
Get last report generated
Get last report generated. It endpoints let you to download the last report requested without generate it again. The endpoint only saves the last report during 30 min after the generation
Get last report - HTTP Request
GET https://gateway.api.globalfishingwatch.org/v3/4wings/last-report
Report - Responses
The endpoint can return 4 different responses depending of the last report status:
- Report running.htt The report continue executing. It returns a json response with the info of the report running. Example:
{
"uri": "/v3/4wings/report?format=JSON&datasets%5B0%5D=public-global-fishing-effort%3Av3.0&date-range=2023-12-31T00%3A00%3A00.000Z%2C2024-01-10T00%3A00%3A00.000Z&spatial-aggregation=true&temporal-resolution=ENTIRE®ion-dataset=public-eez-areas&group-by=VESSEL_ID",
"status": "running",
"lastUpdate": "2024-02-05T13:34:06+0000"
}
- Report finished correctly. In this case the response will be the same that the original request sent (See possibles responses of the report endpoint).
- Report finished with error. In this case the response will be a json with the info of the error. Example:
{
"message": {
"statusCode": 422,
"error": "Unprocessable Entity",
"messages": [
{
"title": "region-id",
"detail": "region-id query param is required"
}
]
},
"status": 422
}
- Report not found. In this case the endpoint return a 404 error. This can occurr because the last report response is only saved during 30 min after the report finished.
Statistics on fishing activity worldwide
Get apparent fishing effort statistics worldwide.
Stats - HTTP Request
GET /v3/4wings/stats
Stats - Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
fields | query | string | false | Statitics fields (separated by comma). For AIS fishing effort, available fields are: FLAGS, VESSEL-IDS, ACTIVITY-HOURS |
vessel-groups[0] | query | string | false | Vessel group ids to filter (separated by comma). Vessel groups applied at dataset with index 0. At the same as datasets, this query param could be send with different index to apply filters to other datasets. |
datasets[0] | query | string | true | Specify the datasets that will be used to create the style. You can learn more about which are the possible datasets here. The parameters should be defined using an index, in case only one dataset is going to be sent: ?dataset[0]=xxxxx, in case of multiple datasets: ?dataset[0]=xxxxx&dataset[1]=yyyyy |
filters[0] | query | string | false | Filters are applied to the dataset parameter with the corresponding index. For example if we want to apply a filter to dataset[0], we should apply the filter attributes to filter[0].For AIS fishing effort, the possible filters are: flag, geartype |
date-range | query | string | false | Start date and end date to filter the data |
Example responses
200 Response
[
{
"activityHours": 0,
"flags": 0,
"maxLat": 0,
"maxLon": 0,
"minLat": 0,
"minLon": 0,
"vesselIds": 0
}
]
Stats - Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK. | Stats response | Check 4Wings Stats response below |
401 | Unauthorized. | No Unauthorized. | Error Codes |
403 | Forbidden | You do not have permissions to do the action. | Error Codes |
422 | Unprocessable Entity | Unprocessable Entity. Validation error. | Error Codes |
429 | Too Many Requests | Too Many Request. | Error Codes |
503 | Service Unavailable | Service Unavailable. | Error Codes |
4Wings Stats response
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
activityHours | number | false | none | Total activity hours (if field is requested). For AIS, total fishing effort in hours. |
flags | number | false | none | Total different flags (if field is requested). |
maxLat | number | false | none | Maximum latitude with data |
maxLon | number | false | none | Maximun longitude with data |
minLat | number | false | none | Minimum latitude with data |
minLon | number | false | none | Minimum longitude with data |
vesselIds | number | false | none | Total different vessel ids (if field is requested). Please refer to Key Concept section to understand what a "vessel id" means. |
EXAMPLE 1 - GET WORLDWIDE STATS RELATED TO FISHING EFFORT FOR A TIME PERIOD WITH NO FILTER
curl --location -g --request GET 'https://gateway.api.globalfishingwatch.org/v3/4wings/stats/?datasets[0]=public-global-fishing-effort:latest&fields=FLAGS,VESSEL-IDS,ACTIVITY-HOURS&date-range=2022-10-22,2023-01-22' \
-H 'Authorization: Bearer {access-token}'
Make sure to replace [TOKEN] with your API Access Token. If the request is successful, the response will be:
[
{
"activityHours": 28570704.16737109,
"flags": 214,
"maxLat": 81.58017,
"maxLon": 179.99969333333334,
"minLat": -76.05226666666667,
"minLon": -179.99952333333334,
"vesselIds": 87731
}
]
EXAMPLE 2 - GET WORLDWIDE STATS RELATED TO FISHING EFFORT FOR A TIME PERIOD WITH GEAR TYPE FILTER
curl --location -g --request GET 'https://gateway.api.globalfishingwatch.org/v3/4wings/stats/?datasets[0]=public-global-fishing-effort:latest&fields=FLAGS,VESSEL-IDS,ACTIVITY-HOURS&date-range=2022-10-22,2023-01-22&filters[0]=geartype in ("tuna_purse_seines","driftnets")' \
-H 'Authorization: Bearer {access-token}'
Make sure to replace [TOKEN] with your API Access Token. If the request is successful, the response will be:
[
{
"activityHours": 90972.49606000002,
"flags": 62,
"maxLat": 68.37451,
"maxLon": 179.993765,
"minLat": -43.90320833333333,
"minLon": -179.98104999999998,
"vesselIds": 592
}
]
Vessels API
Introduction Vessels API
Vessels API allows you to search for vessels and get vessel identity details. This API combines Global Fishing Watch (GFW) core AIS identity data with GFW registry database to enable an improved understanding of vessel identity over time. The GFW registry database includes vessel identity information from over 40 public regional and national registries and a static version was released on our Data Download Portal here which was used in the recently published paper Tracking elusive and shifting identities of the global fishing fleet by Park et al. (2023).
You can:
- Search for AIS and across over 40 public international, regional and national vessel registries. Check list of sources in the reference data section
- Get identity details based on AIS self reported data or public registries. Check more detail about data caveats here.
If you want to learn which APIs are used in Vessel Viewer, you can review this document showing the exact API requests done behind each page.
Search
Search vessels - HTTP Request
GET https://gateway.api.globalfishingwatch.org/v3/vessels/search
Search vessels - URL Parameters
Parameter | Required | Format | Param Type | |
---|---|---|---|---|
since | The token to send to get more results. | False | string | query |
limit | Amount of search results to return. Maximum 25. Default: 20 Example: 20 | False | number | query |
datasets | Specify the datasets that will be used to search the vessel. You can learn more about which are the possible datasets here. Example: datasets[0]=['public-global-fishing-vessels:latest', 'public-global-carrier-vessels:latest'] | True | array | query |
query | Free form query that allows you to search a vessel by sending some identifier, for example: MMSI, IMO, CALL SIGN,Shipname, etc. Identifier depends on the dataset. This property and where are incompatible together, you just can use one at once. Minimum 3 characters. Example: Don tito | False | string | query |
where | Advanced query that allows you to search a vessel by sending several identifiers. The list of identifiers depends on the dataset. You can combine logic operators like AND, OR, =, >= , <. Some SCALAR operators are not supported yet. This property and query are incompatible together, you just can use one at once. Example: (shipname = 'SEIN PHOENIX' OR mmsi = '441618000' OR imo = '9047271' OR callsign='D8SP') AND transmissionDateTo >= '2021-05-29' AND transmissionDateFrom <= '2021-08-29' AND flag = 'KOR' | False | string | query |
match-fields | This query param allows to filter by matchFields levels. Possible values: SEVERAL_FIELDS, NO_MATCH, ALL. It is allow to use with query query-param but not with where query-param. | False | array | query |
includes | This query param allows to add extra information to the response. Values: OWNERSHIP, AUTHORIZATIONS, MATCH_CRITERIA | False | array | query |
binary | If the response should be in binary format (proto buffer) or not. It is useful if you want to improve the performance of your platform. A decoder is needed totransform the response. Default is False Example: True | False | boolean | query |
BASIC SEARCH - SEARCH ANY VESSEL BY A KEYWORD. Example MMSI = 368045130
curl --location --request GET 'https://gateway.api.globalfishingwatch.org/v3/vessels/search?query=368045130&datasets[0]=public-global-vessel-identity:latest&includes[0]=MATCH_CRITERIA&includes[1]=OWNERSHIP&includes[2]=AUTHORIZATIONS' \
-H "Authorization: Bearer [TOKEN]"
Make sure to replace [TOKEN] with your API Access Token. If the request is successful, the response will be:
{
"limit": 20,
"since": null,
"total": 1,
"entries": [
{
"dataset": "public-global-vessel-identity:v3.0",
"registryInfoTotalRecords": 1,
"registryInfo": [
{
"id": "db2d2e9437254280b9ccc8c59e8c8ccb",
"sourceCode": ["IMO", "USA"],
"ssvid": "368045130",
"flag": "USA",
"shipname": "MISS FREYA",
"nShipname": "MISSFREYA",
"callsign": "WDK3424",
"imo": "8969513",
"latestVesselInfo": true,
"transmissionDateFrom": "2019-02-01T19:28:14Z",
"transmissionDateTo": "2023-07-31T08:10:29Z",
"geartype": ["FISHING"],
"lengthM": null,
"tonnageGt": 171,
"vesselInfoReference": "4e4b5501-c2cf-4384-8051-c3affacb0229"
}
],
"registryOwners": [],
"registryAuthorizations": [],
"combinedSourcesInfo": [
{
"vesselId": "126221ace-e3b5-f4ed-6150-394809737c55",
"geartypes": [
{
"name": "SET_LONGLINES",
"source": "COMBINATION_OF_REGISTRY_AND_AIS_INFERRED_NN_INFO",
"yearFrom": 2019,
"yearTo": 2022
}
],
"shiptypes": [
{
"name": "FISHING",
"source": "COMBINATION_OF_REGISTRY_AND_AIS_INFERRED_NN_INFO",
"yearFrom": 2019,
"yearTo": 2022
}
]
},
{
"vesselId": "3312b30d6-65b6-1bdb-6a78-3f5eb3977e58",
"geartypes": [
{
"name": "SET_LONGLINES",
"source": "COMBINATION_OF_REGISTRY_AND_AIS_INFERRED_NN_INFO",
"yearFrom": 2019,
"yearTo": 2023
}
],
"shiptypes": [
{
"name": "FISHING",
"source": "COMBINATION_OF_REGISTRY_AND_AIS_INFERRED_NN_INFO",
"yearFrom": 2019,
"yearTo": 2023
}
]
}
],
"selfReportedInfo": [
{
"id": "3312b30d6-65b6-1bdb-6a78-3f5eb3977e58",
"ssvid": "368045130",
"shipname": "MISS FREYA",
"nShipname": "MISSFREYA",
"flag": "USA",
"callsign": "WDK3424",
"imo": null,
"messagesCounter": 90158,
"positionsCounter": 15799,
"sourceCode": ["AIS"],
"matchFields": "SEVERAL_FIELDS",
"transmissionDateFrom": "2019-04-06T13:12:43Z",
"transmissionDateTo": "2023-10-21T09:32:55Z"
},
{
"id": "126221ace-e3b5-f4ed-6150-394809737c55",
"ssvid": "368045130",
"shipname": "MISS FREYA",
"nShipname": "MISSFREYA",
"flag": "USA",
"callsign": null,
"imo": null,
"messagesCounter": 12483,
"positionsCounter": 2066,
"sourceCode": ["AIS"],
"matchFields": "SEVERAL_FIELDS",
"transmissionDateFrom": "2019-02-01T19:24:59Z",
"transmissionDateTo": "2022-07-17T11:48:43.52Z"
}
],
"matchCriteria": [
{
"reference": "3312b30d6-65b6-1bdb-6a78-3f5eb3977e58",
"property": "selfReportedInfo.id",
"source": "selfReportedInfo",
"matches": [
{
"property": "selfReportedInfo.ssvid",
"value": "368045130"
}
],
"period": {
"dateFrom": "2019-04-06T13:12:43Z",
"dateTo": "2023-10-21T09:32:55Z"
},
"latestVesselInfo": true
},
{
"reference": "126221ace-e3b5-f4ed-6150-394809737c55",
"property": "selfReportedInfo.id",
"source": "selfReportedInfo",
"matches": [
{
"property": "selfReportedInfo.ssvid",
"value": "368045130"
}
],
"period": {
"dateFrom": "2019-02-01T19:24:59Z",
"dateTo": "2022-07-17T11:48:43.52Z"
},
"latestVesselInfo": true
},
{
"reference": "4e4b5501-c2cf-4384-8051-c3affacb0229",
"property": "registryInfo.vesselInfoReference",
"source": "registryInfo",
"matches": [
{
"property": "registryInfo.ssvid",
"value": "368045130"
}
],
"period": {
"dateFrom": "2019-02-01T19:28:14Z",
"dateTo": "2023-07-31T08:10:29Z"
},
"latestVesselInfo": true
}
]
}
],
"metadata": {
"query": "368045130",
"normalizedQuery": "368045130",
"didYouMean": {
"shipname": {}
}
}
}
This endpoint searches for a vessel given a free form query. The query will be matched against any identifiers for the vessel, and a paginated, ranked results list will be returned. It allows you to perform a basic search of a vessel by sending some identifier, for example: MMSI, IMO, CALL SIGN,Shipname, etc.
ADVANCED SEARCH - SEARCH ANY VESSEL BY A KEYWORD. Example MMSI = 775998121 AND SHIPNAME
curl --location --request GET 'https://gateway.api.globalfishingwatch.org/v3/vessels/search?where=ssvid="775998121" AND shipname="DON TITO"&datasets[0]=public-global-vessel-identity:latest&includes[0]=MATCH_CRITERIA&includes[1]=OWNERSHIP' \
-H "Authorization: Bearer [TOKEN]"
Make sure to replace [TOKEN] with your API Access Token. If the request is successful, the response will be:
{
"total": 2,
"limit": 20,
"since": null,
"metadata": {
"query": "(selfReportedInfo.ssvid='775998121' OR registryInfo.ssvid='775998121') AND (selfReportedInfo.shipname LIKE '%DON TITO%' OR registryInfo.shipname LIKE '%DON TITO%')",
"normalizedQuery": null,
"didYouMean": {}
},
"entries": [
{
"dataset": "public-global-vessel-identity:v20230623",
"registryInfoTotalRecords": 0,
"registryInfo": [],
"registryOwners": [],
"registryAuthorizations": [],
"selfReportedInfo": [
{
"id": "c54923e64-46f3-9338-9dcb-ff09724077a3",
"ssvid": "775998121",
"shipname": "DON TITO",
"nShipname": "DONTITO",
"flag": "VEN",
"callsign": "YD23136",
"imo": null,
"geartype": null,
"shiptype": "OTHER_NON_FISHING",
"messagesCounter": 1103,
"positionsCounter": 430,
"shiptypesByYear": [
{
"shiptype": "OTHER_NON_FISHING",
"years": [2021, 2022, 2023]
}
],
"sourceCode": ["AIS"],
"matchFields": "NO_MATCH",
"transmissionDateFrom": "2021-08-06T10:49:26Z",
"transmissionDateTo": "2023-09-21T14:52:16Z"
}
],
"matchCriteria": [
{
"reference": "c54923e64-46f3-9338-9dcb-ff09724077a3",
"property": "selfReportedInfo.id",
"source": "selfReportedInfo",
"matches": [],
"period": {
"dateFrom": "2021-08-06T10:49:26Z",
"dateTo": "2023-09-21T14:52:16Z"
},
"latestVesselInfo": true
}
]
},
{
"dataset": "public-global-vessel-identity:v20230623",
"registryInfoTotalRecords": 0,
"registryInfo": [],
"registryOwners": [],
"registryAuthorizations": [],
"selfReportedInfo": [
{
"id": "bae8f325c-cf0a-01fe-6d1a-9a275588d4ff",
"ssvid": "775998121",
"shipname": "DON TITO",
"nShipname": "DONTITO",
"flag": "VEN",
"callsign": "",
"imo": null,
"geartype": null,
"shiptype": "OTHER_NON_FISHING",
"messagesCounter": 74,
"positionsCounter": 37,
"shiptypesByYear": [
{
"shiptype": "OTHER_NON_FISHING",
"years": [2021, 2022]
}
],
"sourceCode": ["AIS"],
"matchFields": "NO_MATCH",
"transmissionDateFrom": "2021-08-03T13:41:41Z",
"transmissionDateTo": "2022-07-23T13:39:10.01Z"
}
],
"matchCriteria": [
{
"reference": "bae8f325c-cf0a-01fe-6d1a-9a275588d4ff",
"property": "selfReportedInfo.id",
"source": "selfReportedInfo",
"matches": [],
"period": {
"dateFrom": "2021-08-03T13:41:41Z",
"dateTo": "2022-07-23T13:39:10.01Z"
},
"latestVesselInfo": true
}
]
}
]
}
This endpoint allows you to also perform an advanced search by creating a query like shipname LIKE '%GABU REEFE%' OR imo = '8300949
. Where you can combine several fields, for example: id (vessel id), callsign, flag, imo, mmsi, shipname, normalized_shipname, lastTransmissionDate and firstTransmissionDate.
Get list of vessels filtered by ids
Get vessels by ids - HTTP Request
GET https://gateway.api.globalfishingwatch.org/v3/vessels
Get vessels by ids - URL Parameters
Parameter | Description | Required | Format | Param Type |
---|---|---|---|---|
datasets | Specify the datasets that will be used to search the vessel. You can learn more about which are the possible datasets here. Example: ['public-global-fishing-vessels:latest', 'public-global-carrier-vessels:latest'] | True | array | query |
registries-info-data | The response doesn't include all registry info data by default. It means, the default value is NONE. You can use DELTA to get only the data that changes in the time or ALL to get all data from the registries Example: NONE | False | Enum: ['NONE', 'DELTA', 'ALL'] | query |
includes | This query param allows to add extra information to the response. Example: [['POTENTIAL_RELATED_SELF_REPORTED_INFO']] | False | array | query |
binary | If the response should be in binary format (proto buffer) or not. It is useful if you want to improve the performance of your platform. A decoder is needed to transform the response. Default is False Example: True | False | boolean | query |
match-fields | This query param allows to filter by matchFields levels. Possible values: SEVERAL_FIELDS, NO_MATCH, ALL. It is allow to use with query query-param but not with where query-param Example: [['SEVERAL_FIELDS', 'NO_MATCH']] | False | array | query |
ids | List of vessel ids. You can get this information using the search endpoints Example: ['6583c51e3-3626-5638-866a-f47c3bc7ef7c'] | True | array | query |
vessel-groups | List of vessel-groups. Example: ['my-vessel-group'] | False | array | query |
GET DETAILS OF TWO FISHING VESSELS AND ONE CARRIER
curl --location --request GET 'https://gateway.api.globalfishingwatch.org/v3/vessels?datasets[0]=public-global-vessel-identity:latest&ids[0]=8c7304226-6c71-edbe-0b63-c246734b3c01&ids[1]=6583c51e3-3626-5638-866a-f47c3bc7ef7c&ids[2]=71e7da672-2451-17da-b239-857831602eca' \
-H "Authorization: Bearer [TOKEN]"
Make sure to replace [TOKEN] with your API Access Token. If the request is successful, the response will be:
{
"limit": null,
"since": null,
"total": 1,
"metadata": {
"idsFound": ["c54923e64-46f3-9338-9dcb-ff09724077a3"],
"idsNotFound": [
"73f5e35b6-6b92-0b9a-f8f4-cc7b29ef6c72",
"16c4ef8cc-c2bb-c587-7126-843ee54274ce",
"e486710c3-3baa-8532-4ddf-e6665e99d5a4",
"91666fdf5-5b79-3645-64da-8d199b76cd7e",
"8837304ea-ace9-a723-50cc-be1eb5797362"
]
},
"entries": [
{
"dataset": "public-global-vessel-identity:v20230623",
"registryInfoTotalRecords": 0,
"registryInfo": [],
"registryOwners": [],
"registryAuthorizations": [],
"selfReportedInfo": [
{
"id": "c54923e64-46f3-9338-9dcb-ff09724077a3",
"ssvid": "775998121",
"shipname": "DON TITO",
"nShipname": "DONTITO",
"flag": "VEN",
"callsign": "YD23136",
"imo": null,
"geartype": null,
"shiptype": "OTHER_NON_FISHING",
"messagesCounter": 1103,
"positionsCounter": 430,
"shiptypesByYear": [
{
"shiptype": "OTHER_NON_FISHING",
"years": [2021, 2022, 2023]
}
],
"sourceCode": ["AIS"],
"matchFields": "NO_MATCH",
"transmissionDateFrom": "2021-08-06T10:49:26Z",
"transmissionDateTo": "2023-09-21T14:52:16Z"
}
]
}
]
}
After you perform a Basic, you get the vessel id, for example c54923e64-46f3-9338-9dcb-ff09724077a3
. You can use this endpoint to get the details of a list of specific vessel ids.
Get vessel by id
Get vessel by id - HTTP Request
GET https://gateway.api.globalfishingwatch.org/v3/vessels/{vesselId}
Get vessel by id - URL Parameters
Parameter | Description | Required | Format | Param Type |
---|---|---|---|---|
vesselId | True | string | path | |
registries-info-data | The response doesn't include all registry info data by default. It means, the default value is NONE. You can use DELTA to get only the data that changes in the time or ALL to get all data from the registries Example: NONE | False | Enum: ['NONE', 'DELTA', 'ALL'] | query |
includes | This query param allows to add extra information to the response. Example: [['POTENTIAL_RELATED_SELF_REPORTED_INFO']] | False | array | query |
binary | If the response should be in binary format (proto buffer) or not. It is useful if you want to improve the performance of your platform. A decoder is needed to transform the response. Default is False Example: True | False | boolean | query |
match-fields | This query param allows to filter by matchFields levels. Possible values: SEVERAL_FIELDS, NO_MATCH, ALL. It is allow to use with query query-param but not with where query-param Example: [['SEVERAL_FIELDS', 'NO_MATCH']] | False | array | query |
dataset | Specify the dataset that will be used to search the vessel. You can learn more about which are the possible datasets here. Example: public-global-fishing-vessels:latest | True | string | query |
GET DETAILS OF ONE VESSEL
curl --location --request GET 'https://gateway.globalfishingwatch.org/v3/vessels/c54923e64-46f3-9338-9dcb-ff09724077a3?dataset=public-global-vessel-identity:latest' \\
-H "Authorization: Bearer [TOKEN]"
Make sure to replace [TOKEN] with your API Access Token. If the request is successful, the response will be:
{
"dataset": "public-global-vessel-identity:v20230623",
"registryInfoTotalRecords": 0,
"registryInfo": [],
"registryOwners": [],
"registryAuthorizations": [],
"selfReportedInfo": [
{
"id": "c54923e64-46f3-9338-9dcb-ff09724077a3",
"ssvid": "775998121",
"shipname": "DON TITO",
"nShipname": "DONTITO",
"flag": "VEN",
"callsign": "YD23136",
"imo": null,
"geartype": null,
"shiptype": "OTHER_NON_FISHING",
"messagesCounter": 1103,
"positionsCounter": 430,
"shiptypesByYear": [
{
"shiptype": "OTHER_NON_FISHING",
"years": [2021, 2022, 2023]
}
],
"sourceCode": ["AIS"],
"matchFields": "NO_MATCH",
"transmissionDateFrom": "2021-08-06T10:49:26Z",
"transmissionDateTo": "2023-09-21T14:52:16Z"
}
]
}
After you perform a Basic , you get the vessel id, for example c54923e64-46f3-9338-9dcb-ff09724077a3
. You can use this endpoint to get the details of ONE vessel id.
Events API
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.
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)
Events GET - HTTP Request
GET https://gateway.api.globalfishingwatch.org/v3/events
Events GET - URL Parameters
Parameter | Description | Required | Format | Param Type |
---|---|---|---|---|
limit | Amount of search results to return. Example: 10 | True | number | query |
offset | 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 OR you don’t send it, 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. Example: 5 | True | number | query |
sort | Property used to sort using a property. The list of possible values depends on the dataset. Before the property you can use ‘+’ or ‘-’ and based on that prefix, you can decide if it will be sort ascending + (ASC) or descending - (DESC).Example: -start. Enum: +start, -start, +end, -end | False | string | query |
datasets | Specify the datasets that will be used to search the vessel. You can learn more about which are the possible datasets here. You can send several datasets and must be an array. Example: public-global-fishing-events:latest | True | string | query |
vessels | List of vessel ids (Must be an array). You can get this information using the search endpoints Example: 8c7304226-6c71-edbe-0b63-c246734b3c01,6583c51e3-3626-5638-866a-f47c3bc7ef7c | False | string | query |
types | Event types (Must be an array). Possible values: ENCOUNTER,FISHING,LOITERING,GAP,PORT_VISIT Example: FISHING | False | string | query |
start-date | Start date in format YYYY-MM-DD of the start date of the event (inclusive). Filter the events that their end date is greater or equal than the start date filter. Example: 2020-01-01 | False | string | query |
end-date | End date in format YYYY-MM-DD of the end date of the event (exclusive). Filter the events that their start date is less than the end date filter. Example: 2020-02-01 | False | string | query |
include-regions | 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. Example: True | False | boolean | query |
confidences | 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. You can send several values and must be an array. Possible values: 2, 3, 4 Example: 3,4 | False | string | query |
encounter-types | Possible values: 'FISHING-CARRIER','FISHING-SUPPORT','FISHING-BUNKER', 'FISHING-FISHING', 'FISHING-TANKER', 'CARRIER-BUNKER' and 'BUNKER-SUPPORT'. You can send several values and must be an array. Example: FISHING-CARRIER, FISHING-BUNKER. When using encounterType parameters like FISHING-CARRIER or CARRIER-FISHING , it is essential to note that you may encounter duplicate events for each vessel ID involved. This approach is designed to give you the possibility to decide which vessel type appears first in the event, so for example: FISHING-CARRIER, the first vessel in the response is the fishing one and the 2nd is the carrier. It is important to be mindful of this, particularly when tallying events. |
False | string | query |
vessel-types | Vessel types. Possible values: BUNKER, CARGO, DISCREPANCY, CARRIER,FISHING, GEAR, OTHER, PASSENGER, SEISMIC_VESSEL, SUPPORT. You can send several values and must be an array. Example: BUNKER, CARGO | False | string | query |
gap-intentional-disabling | Flag to specify if you want to get those AIS off events (aka gaps) that were potentially intentional or not."True" means that the gap was potentially intentional and "False" means that the gap was potentially not intentional. If this flag is not present, then the response contains all gaps events. | False | string | query |
GET FISHING EVENTS
curl --location --request GET 'https://gateway.api.globalfishingwatch.org/v3/events?vessels[0]=9b3e9019d-d67f-005a-9593-b66b997559e5&datasets[0]=public-global-fishing-events:latest&start-date=2017-01-01&end-date=2017-01-31&limit=1&offset=0' \
-H "Authorization: Bearer [TOKEN]"
Make sure to replace [TOKEN] with your API Access Token. If the request is successful, the response will be:
{
"metadata": {
"datasets": ["public-global-fishing-events:v3.0"],
"vessels": ["9b3e9019d-d67f-005a-9593-b66b997559e5"],
"dateRange": {
"from": "2017-01-01",
"to": "2017-01-31"
}
},
"limit": 1,
"offset": 0,
"nextOffset": 1,
"total": 10,
"entries": [
{
"start": "2017-01-18T23:56:16.000Z",
"end": "2017-01-19T03:42:27.000Z",
"id": "718a4d93c16f78d9a54e9bc56d20c7e0",
"type": "fishing",
"position": {
"lat": -46.1538,
"lon": -63.2245
},
"regions": {
"mpa": [],
"eez": ["8466"],
"rfmo": ["ACAP", "CCSBT", "IWC", "ICCAT"],
"fao": ["41.3", "41.3.1", "41"],
"majorFao": ["41"],
"eez12Nm": [],
"highSeas": [],
"mpaNoTakePartial": [],
"mpaNoTake": []
},
"boundingBox": [
-63.21452500000001, -46.1618533333, -63.23098, -46.1495283333
],
"distances": {
"startDistanceFromShoreKm": 221,
"endDistanceFromShoreKm": 220,
"startDistanceFromPortKm": 242.616953,
"endDistanceFromPortKm": 240.71707800000001
},
"vessel": {
"id": "9b3e9019d-d67f-005a-9593-b66b997559e5",
"name": "CLAUDINA",
"ssvid": "701000948"
},
"fishing": {
"totalDistanceKm": 2.136563188884008,
"averageSpeedKnots": 0.49600001273999994,
"averageDurationHours": 0.15707175925925926,
"potentialRisk": false
}
}
]
}
GET ENCOUNTER EVENTS
curl --location --request GET 'https://gateway.api.globalfishingwatch.org/v3/events?datasets[0]=public-global-encounters-events:latest&vessels[0]=8c7304226-6c71-edbe-0b63-c246734b3c01&limit=1&offset=0' \
-H "Authorization: Bearer [TOKEN]"
Make sure to replace [TOKEN] with your API Access Token. If the request is successful, the response will be:
{
"metadata": {
"datasets": ["public-global-encounters-events:v3.0"],
"vessels": ["8c7304226-6c71-edbe-0b63-c246734b3c01"],
"dateRange": {
"from": null,
"to": null
},
"encounterTypes": [
"FISHING-FISHING",
"FISHING-CARRIER",
"FISHING-SUPPORT",
"CARRIER-FISHING",
"SUPPORT-FISHING"
]
},
"limit": 1,
"offset": 0,
"nextOffset": 1,
"total": 2,
"entries": [
{
"start": "2016-07-23T00:00:00.000Z",
"end": "2016-07-23T11:50:00.000Z",
"id": "da55e5723374f99f91887d4f51256d5a.2",
"type": "encounter",
"position": {
"lat": 72.0866,
"lon": 8.0857
},
"regions": {
"mpa": [],
"eez": [],
"rfmo": ["NEAFC", "IWC", "NASCO", "NAMMCO", "ACAP", "ICES"],
"fao": ["27", "27.2.a.1", "27.2", "27.2.a"],
"majorFao": ["27"],
"eez12Nm": [],
"highSeas": ["63203"],
"mpaNoTakePartial": [],
"mpaNoTake": []
},
"boundingBox": [
8.085723348900002, 72.0865557573, 8.085723348900002, 72.0865557573
],
"distances": {
"startDistanceFromShoreKm": 426,
"endDistanceFromShoreKm": 426,
"startDistanceFromPortKm": 425.01421899999997,
"endDistanceFromPortKm": 425.01421899999997
},
"vessel": {
"id": "8c7304226-6c71-edbe-0b63-c246734b3c01",
"name": "FRIOFORWIN",
"ssvid": "210631000"
},
"encounter": {
"vessel": {
"id": "208659960-0142-40c1-339a-c816edcab44b",
"flag": "RUS",
"name": "FORPOST",
"type": "fishing",
"ssvid": "273355780"
},
"medianDistanceKilometers": 0.065,
"medianSpeedKnots": 0.5,
"type": "carrier-fishing",
"potentialRisk": false
}
}
]
}
GET LOITERING EVENTS
curl --location --request GET 'https://gateway.api.globalfishingwatch.org/v3/events?datasets[0]=public-global-loitering-events-carriers:latest&vessels[0]=8c7304226-6c71-edbe-0b63-c246734b3c01&limit=1&offset=0' \
-H "Authorization: Bearer [TOKEN]"
Make sure to replace [TOKEN] with your API Access Token. If the request is successful, the response will be:
{
"metadata": {
"datasets": ["public-global-loitering-events-carriers:v20201001"],
"vessels": ["8c7304226-6c71-edbe-0b63-c246734b3c01"],
"dateRange": {
"from": null,
"to": null
}
},
"limit": 1,
"offset": 0,
"nextOffset": 1,
"total": 113,
"entries": [
{
"start": "2013-06-12T11:40:09.000Z",
"end": "2013-06-12T12:01:09.000Z",
"id": "9991a9e4b2ee7313c33f5263308d045c",
"type": "loitering",
"position": {
"lat": 32.2075,
"lon": -13.9346
},
"regions": {
"mpa": [],
"eez": ["8363"],
"rfmo": ["ACAP", "NAMMCO", "ICCAT", "IWC"],
"fao": ["34.1.2", "34", "34.1"],
"majorFao": ["34"],
"eez12Nm": [],
"highSeas": [],
"mpaNoTakePartial": [],
"mpaNoTake": []
},
"boundingBox": [-13.9335216667, 32.2104016667, -13.9357016667, 32.20455],
"distances": {
"startDistanceFromShoreKm": 239,
"endDistanceFromShoreKm": 239,
"startDistanceFromPortKm": 242.068016,
"endDistanceFromPortKm": 241.65545300000002
},
"vessel": {
"id": "8c7304226-6c71-edbe-0b63-c246734b3c01",
"name": "FRIO FORWIN",
"ssvid": "210631000"
},
"loitering": {
"totalTimeHours": 0.35,
"totalDistanceKm": 0.6822365329451406,
"averageSpeedKnots": 1.0525093072279246,
"averageDistanceFromShoreKm": 239.00000000000003
}
}
]
}
GET PORT VISITS
curl --location --request GET 'https://gateway.api.globalfishingwatch.org/v3/events?datasets[0]=public-global-port-visits-events:latest&vessels[0]=914f83946-6af4-04c6-4974-44a203a87952&limit=1&offset=0' \
-H "Authorization: Bearer [TOKEN]"
Make sure to replace [TOKEN] with your API Access Token. If the request is successful, the response will be:
{
"metadata": {
"datasets": ["public-global-port-visits-events:v3.0"],
"vessels": ["914f83946-6af4-04c6-4974-44a203a87952"],
"dateRange": {
"from": null,
"to": null
}
},
"limit": 1,
"offset": 0,
"nextOffset": 1,
"total": 74,
"entries": [
{
"start": "2014-04-15T20:09:21.000Z",
"end": "2014-04-28T12:15:34.000Z",
"id": "a7b8b2f40b75ea6bec8bc8dbcb56741e",
"type": "port_visit",
"position": {
"lat": 42.2182,
"lon": -8.7915
},
"regions": {
"mpa": [],
"eez": ["5693"],
"rfmo": ["NEAFC", "ICES", "NASCO", "ICCAT", "NAMMCO", "IWC", "ACAP"],
"fao": ["27.9", "27.9.a", "27"],
"majorFao": ["27"],
"eez12Nm": [],
"highSeas": [],
"mpaNoTakePartial": [],
"mpaNoTake": []
},
"boundingBox": [
-8.7508320328, 42.2291383982, -8.8819075644, 42.2035438605
],
"distances": {
"startDistanceFromShoreKm": 0,
"endDistanceFromShoreKm": 2,
"startDistanceFromPortKm": 0,
"endDistanceFromPortKm": 0
},
"vessel": {
"id": "914f83946-6af4-04c6-4974-44a203a87952",
"name": "IRENE",
"ssvid": "355794000"
},
"port_visit": {
"visitId": "f5fafee33631a3948c8e2042b5810cdc",
"confidence": 3,
"durationHrs": 304.1036111111111,
"startAnchorage": {
"anchorageId": "0d2f61f7",
"atDock": true,
"distanceFromShoreKm": 0,
"flag": "ESP",
"id": "esp-vigo",
"lat": 42.229138398208576,
"lon": -8.750832032773074,
"name": "VIGO",
"topDestination": "VIGO"
},
"intermediateAnchorage": {
"anchorageId": "0d2f61f7",
"atDock": true,
"distanceFromShoreKm": 0,
"flag": "ESP",
"id": "esp-vigo",
"lat": 42.229138398208576,
"lon": -8.750832032773074,
"name": "VIGO",
"topDestination": "VIGO"
},
"endAnchorage": {
"anchorageId": "0d25f581",
"atDock": false,
"distanceFromShoreKm": 2,
"flag": "ESP",
"id": "esp-vigo",
"lat": 42.20354386049306,
"lon": -8.881907564441319,
"name": "VIGO",
"topDestination": "VIGO"
}
}
}
]
}
Get All Events (POST endpoint)
Events POST - HTTP Request
POST https://gateway.api.globalfishingwatch.org/v3/events
Events POST - URL Parameters
Parameter | Description | Required | Format | Param Type |
---|---|---|---|---|
limit | Amount of search results to return. Example: 10 | True | number | query |
offset | 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 OR you don’t send it, 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. Example: 5 | True | number | query |
sort | Property used to sort using a property. The list of possible values depends on the dataset. Before the property you can use ‘+’ or ‘-’ and based on that prefix, you can decide if it will be sort ascending + (ASC) or descending - (DESC).Example: -start. Enum: +start, -start, +end, -end | False | string | query |
Events POST - Body Parameters
Parameter | Description | Required | Format | Param Type |
---|---|---|---|---|
datasets | Specify the datasets that will be used to search the vessel. You can learn more about which are the possible datasets here. You can send several datasets in array format. Example: ['public-global-fishing-events:latest', 'public-global-encounter-events:latest'] | True | [string] | body |
vessels | List of vessel ids. You can get this information using the search endpoints Example: ['8c7304226-6c71-edbe-0b63-c246734b3c01', '6583c51e3-3626-5638-866a-f47c3bc7ef7c'] | False | [string] | body |
types | Event types. Possible values: PORT, ENCOUNTER, LOITERING, GAP, PORT_VISIT. Example: ['FISHING'] | False | [string] | body |
startDate | Start date in format YYYY-MM-DD of the start date of the event (inclusive). Filter the events that their end date is greater or equal than the start date filter. Example: 2020-01-01 | False | string | body |
endDate | End date in format YYYY-MM-DD of the end date of the event (exclusive). Filter the events that their start date is less than the end date filter. Example: 2020-02-01 | False | string | body |
confidences | 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. Possible values: 2, 3, 4 Example: ['3','4'] | False | [string] | body |
encounterTypes | Possible values: 'CARRIER-FISHING', 'FISHING-CARRIER','FISHING-SUPPORT','SUPPORT-FISHING','FISHING-BUNKER', 'BUNKER-FISHING', 'FISHING-FISHING', 'FISHING-TANKER', 'TANKER-FISHING', 'CARRIER-BUNKER', 'BUNKER-CARRIER', 'SUPPORT-BUNKER' and 'BUNKER-SUPPORT'. You can send several values and must be an array. Example: ['CARRIER-FISHING','FISHING-CARRIER']. When using encounterType parameters like FISHING-CARRIER or CARRIER-FISHING , it is essential to note that you may encounter duplicate events for each vessel ID involved. This approach is designed to give you the possibility to decide which vessel type appears first in the event, so for example: FISHING-CARRIER, the first vessel in the response is the fishing one and the 2nd is the carrier. It is important to be mindful of this, particularly when tallying events. |
False | [string] | body |
duration | Minimum duration (greater than or equal to), in minutes, of the event. Example: 30 | False | number | body |
vesselTypes | Vessel types of the vessels involved in the events. Possible values: FISHING, CARRIER, SUPPORT, PASSENGER, OTHER_NON_FISHING, SEISMIC_VESSEL, BUNKER_OR_TANKER, CARGO Example: ['FISHING', 'CARRIER'] | False | [string] | body |
vesselGroups | Ids of the vessel groups. Must be an array Example: ['my-vessel-group'] | False | [string] | body |
flags | Flags of the vessels involved in the events, in ISO3. Must be an array. Example: ['ESP', 'FRA'] | False | [string] | body |
geometry | Region where the events happen. | False | object | body |
region | Region where the events happen.(#reference-data) | False | object | body |
region.id | Id of the region(#reference-data) | False | object | body |
region.dataset | Id of the dataset to obtain the region. You can get it from Reference Data | False | object | body |
vesselTypes | Vessel types. Possible values: BUNKER, CARGO,DISCREPANCY, CARRIER, FISHING, GEAR, OTHER, PASSENGER, SEISMIC_VESSEL, SUPPORT. You can send several values and must be an array. Example: BUNKER, CARGO | False | [string] | body |
gapIntentionalDisabling | Flag to specify if you want to get those AIS off events (aka gaps) that were potentially intentional or not."True" means that the gap was potentially intentional and "False" means that the gap was potentially not intentional. If this flag is not present, then the response contains all gaps events. | False | [string] | body |
EXAMPLE 1 - GET FISHING EVENTS
curl --location --request POST 'https://gateway.api.globalfishingwatch.org/v3/events?offset=0&limit=1' \
--header 'Authorization: Bearer [TOKEN]' \
--header 'Content-Type: application/json' \
--data-raw '{
"datasets": [ "public-global-fishing-events:latest"],
"startDate": "2017-01-01",
"endDate": "2017-01-31",
"flags": ["CHN"],
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
120.36621093749999,
26.725986812271756
],
[
122.36572265625,
26.725986812271756
],
[
122.36572265625,
28.323724553546015
],
[
120.36621093749999,
28.323724553546015
],
[
120.36621093749999,
26.725986812271756
]
]
]
}
}'
Make sure to replace [TOKEN] with your API Access Token. If the request is successful, the response will be:
{
"metadata": {
"datasets": ["public-global-fishing-events:v3.0"],
"dateRange": {
"from": "2017-01-01",
"to": "2017-01-31"
},
"encounterTypes": [],
"flags": ["CHN"],
"geometry": {
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"properties": {},
"geometry": {
"type": "Polygon",
"coordinates": [
[
[120.36621093749999, 26.725986812271756],
[122.36572265625, 26.725986812271756],
[122.36572265625, 28.323724553546015],
[120.36621093749999, 28.323724553546015],
[120.36621093749999, 26.725986812271756]
]
]
}
}
]
}
},
"limit": 1,
"offset": 0,
"nextOffset": 1,
"total": 2480,
"entries": [
{
"start": "2016-12-30T07:28:06.000Z",
"end": "2017-01-02T03:49:40.000Z",
"id": "8326eb5fb66215de739f0c889a9b6a8e",
"type": "fishing",
"position": {
"lat": 27.0865,
"lon": 121.2232
},
"regions": {
"mpa": [],
"eez": ["8486"],
"rfmo": ["ACAP", "WCPFC", "APFIC", "IWC"],
"fao": ["61"],
"majorFao": ["61"],
"eez12Nm": ["8486"],
"highSeas": [],
"mpaNoTakePartial": [],
"mpaNoTake": []
},
"boundingBox": [
121.1017333333, 26.9795383333, 121.3309066667, 27.1756633333
],
"distances": {
"startDistanceFromShoreKm": 38,
"endDistanceFromShoreKm": 37,
"startDistanceFromPortKm": 26.906598000000002,
"endDistanceFromPortKm": 36.957859
},
"vessel": {
"id": "3cedf7bd9-9800-1fc2-11d7-7985205d926e",
"name": "ZHELINGYU52036",
"ssvid": "412416212"
},
"fishing": {
"totalDistanceKm": 235.36357126254234,
"averageSpeedKnots": 2.0328767029525117,
"averageDurationHours": 0.3135754332313966,
"potentialRisk": false
}
}
]
}
EXAMPLE 2 - GET ENCOUNTER EVENTS
curl --location --request POST 'https://gateway.api.globalfishingwatch.org/v3/events?offset=0&limit=1' \
--header 'Authorization: Bearer [TOKEN]' \
--header 'Content-Type: application/json' \
--data-raw '{
"datasets": [ "public-global-encounters-events:latest"],
"startDate": "2017-01-01",
"endDate": "2017-01-31",
"vessels": ["55d38c0ee-e0d7-cb32-ac9c-8b3680d213b3"],
"flags": ["TWN"],
"duration": 60,
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
-130.9735107421875,
-17.691128657307427
],
[
-130.4901123046875,
-17.691128657307427
],
[
-130.4901123046875,
-17.209017141391765
],
[
-130.9735107421875,
-17.209017141391765
],
[
-130.9735107421875,
-17.691128657307427
]
]
]
}
}'
Make sure to replace [TOKEN] with your API Access Token. If the request is successful, the response will be:
{
"metadata": {
"datasets": ["public-global-encounters-events:v3.0"],
"vessels": ["55d38c0ee-e0d7-cb32-ac9c-8b3680d213b3"],
"dateRange": {
"from": "2017-01-01",
"to": "2017-01-31"
},
"encounterTypes": [
"FISHING-FISHING",
"FISHING-CARRIER",
"FISHING-SUPPORT",
"CARRIER-FISHING",
"SUPPORT-FISHING"
],
"flags": ["TWN"],
"geometry": {
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"properties": {},
"geometry": {
"type": "Polygon",
"coordinates": [
[
[-130.9735107421875, -17.691128657307427],
[-130.4901123046875, -17.691128657307427],
[-130.4901123046875, -17.209017141391765],
[-130.9735107421875, -17.209017141391765],
[-130.9735107421875, -17.691128657307427]
]
]
}
}
]
}
},
"limit": 1,
"offset": 0,
"nextOffset": 1,
"total": 1,
"entries": [
{
"start": "2017-01-01T00:50:00.000Z",
"end": "2017-01-01T04:30:00.000Z",
"id": "05e5fcf80f3542a33154214f0a586f19.2",
"type": "encounter",
"position": {
"lat": -17.4783,
"lon": -130.7285
},
"regions": {
"mpa": [],
"eez": [],
"rfmo": ["WCPFC", "ACAP", "IWC", "IATTC", "SPRFMO"],
"fao": ["77"],
"majorFao": ["77"],
"eez12Nm": [],
"highSeas": ["63203"],
"mpaNoTakePartial": [],
"mpaNoTake": []
},
"boundingBox": [
-130.7285232872, -17.4782849293, -130.7285232872, -17.4782849293
],
"distances": {
"startDistanceFromShoreKm": 602,
"endDistanceFromShoreKm": 602,
"startDistanceFromPortKm": 760.023188,
"endDistanceFromPortKm": 760.023188
},
"vessel": {
"id": "55d38c0ee-e0d7-cb32-ac9c-8b3680d213b3",
"name": "JINHSIANGFA",
"ssvid": "416077500"
},
"encounter": {
"vessel": {
"id": "46ae0e5f9-9304-7ac9-dc78-462d84320bf5",
"flag": "TWN",
"name": "SHUNTIANFA168",
"type": "carrier",
"ssvid": "416602000"
},
"medianDistanceKilometers": 0.016,
"medianSpeedKnots": 1.067,
"type": "fishing-carrier",
"potentialRisk": false
}
}
]
}
EXAMPLE 3 - GET LOITERING EVENTS
curl --location --request POST 'https://gateway.api.globalfishingwatch.org/v3/events?offset=0&limit=1' \
--header 'Authorization: Bearer [TOKEN]' \
--header 'Content-Type: application/json' \
--data-raw '{
"datasets": [ "public-global-loitering-events-carriers:latest"],
"startDate": "2017-01-01",
"endDate": "2017-01-31",
"vessels": ["82be6f228-8ce4-26d1-bf81-3b7979d0c72f"],
"flags": ["KOR"],
"duration": 60,
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
43.835981972515576,
-6.785011952437713
],
[
43.83602857589722,
-6.785011952437713
],
[
43.83602857589722,
-6.784984652340707
],
[
43.835981972515576,
-6.784984652340707
],
[
43.835981972515576,
-6.785011952437713
]
]
]
}
}'
Make sure to replace [TOKEN] with your API Access Token. If the request is successful, the response will be:
{
"metadata": {
"datasets": ["public-global-loitering-events-carriers:v20201001"],
"vessels": ["82be6f228-8ce4-26d1-bf81-3b7979d0c72f"],
"dateRange": {
"from": "2017-01-01",
"to": "2017-01-31"
},
"encounterTypes": [],
"flags": ["KOR"],
"geometry": {
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"properties": {},
"geometry": {
"type": "Polygon",
"coordinates": [
[
[43.835981972515576, -6.785011952437713],
[43.83602857589722, -6.785011952437713],
[43.83602857589722, -6.784984652340707],
[43.835981972515576, -6.784984652340707],
[43.835981972515576, -6.785011952437713]
]
]
}
}
]
}
},
"limit": 1,
"offset": 0,
"nextOffset": null,
"total": 0,
"entries": []
}
EXAMPLE 4 - GET PORT VISITS
curl --location --request POST 'https://gateway.api.globalfishingwatch.org/v3/events?offset=0&limit=1' \
--header 'Authorization: Bearer [TOKEN]' \
--header 'Content-Type: application/json' \
--data-raw '{
"datasets": [ "public-global-port-visits-events:latest"],
"startDate": "2017-01-01",
"endDate": "2017-01-31",
"vessels": ["e0248aed9-99b4-bae7-6b87-ff0a3c464676"],
"flags": ["ATG"],
"duration": 60,
"geometry":{
"type": "Polygon",
"coordinates": [
[
[
30.552978515625,
46.255846818480315
],
[
31.22314453125,
46.255846818480315
],
[
31.22314453125,
46.59661864884465
],
[
30.552978515625,
46.59661864884465
],
[
30.552978515625,
46.255846818480315
]
]
]
}
}'
Make sure to replace [TOKEN] with your API Access Token. If the request is successful, the response will be:
{
"metadata": {
"datasets": ["public-global-port-visits-events:v3.0"],
"vessels": ["e0248aed9-99b4-bae7-6b87-ff0a3c464676"],
"dateRange": {
"from": "2017-01-01",
"to": "2017-01-31"
},
"encounterTypes": [],
"flags": ["ATG"],
"geometry": {
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"properties": {},
"geometry": {
"type": "Polygon",
"coordinates": [
[
[30.552978515625, 46.255846818480315],
[31.22314453125, 46.255846818480315],
[31.22314453125, 46.59661864884465],
[30.552978515625, 46.59661864884465],
[30.552978515625, 46.255846818480315]
]
]
}
}
]
}
},
"limit": 1,
"offset": 0,
"nextOffset": 1,
"total": 1,
"entries": [
{
"start": "2017-01-01T00:00:00.000Z",
"end": "2017-01-01T09:35:02.000Z",
"id": "4f76e3bf40fcb9af92f6e7250154c86d",
"type": "port_visit",
"position": {
"lat": 46.3181,
"lon": 31.0484
},
"regions": {
"mpa": [],
"eez": ["5695"],
"rfmo": ["IWC", "ICCAT", "GFCM", "ACAP"],
"fao": ["37", "37.4.2", "37.4"],
"majorFao": ["37"],
"eez12Nm": [],
"highSeas": [],
"mpaNoTakePartial": [],
"mpaNoTake": []
},
"boundingBox": [
31.0767735168, 46.2917746863, 31.0090529428, 46.3757554864
],
"distances": {
"startDistanceFromShoreKm": 28,
"endDistanceFromShoreKm": 20,
"startDistanceFromPortKm": 0,
"endDistanceFromPortKm": 0
},
"vessel": {
"id": "e0248aed9-99b4-bae7-6b87-ff0a3c464676",
"name": "ONEGOOTRA",
"ssvid": "305656000"
},
"port_visit": {
"visitId": "ffe81fe2608c6de1799a701b736951ca",
"confidence": 4,
"durationHrs": 9.58388888888889,
"startAnchorage": {
"anchorageId": "40c652c5",
"atDock": false,
"distanceFromShoreKm": 28,
"flag": "UKR",
"id": "ukr-mykolayiv",
"lat": 46.291774686340844,
"lon": 31.076773516760372,
"name": null,
"topDestination": "NIKOLAEV"
},
"intermediateAnchorage": {
"anchorageId": "40c65295",
"atDock": false,
"distanceFromShoreKm": 26,
"flag": "UKR",
"id": "ukr-mykolayiv",
"lat": 46.30317322627217,
"lon": 31.073053845170914,
"name": null,
"topDestination": "NIKOLAEV"
},
"endAnchorage": {
"anchorageId": "40c64c1b",
"atDock": false,
"distanceFromShoreKm": 20,
"flag": "UKR",
"id": "ukr-mykolayiv",
"lat": 46.37575548639163,
"lon": 31.009052942845823,
"name": null,
"topDestination": "NIKOLAEV"
}
}
}
]
}
EXAMPLE 5 - GET FISHING EVENTS WITHIN SENEGAL EEZ
curl --location --request POST 'https://gateway.api.globalfishingwatch.org/v3/events?offset=0&limit=1' \
--header 'Authorization: Bearer [TOKEN]' \
--header 'Content-Type: application/json' \
--data-raw '{
"datasets": [ "public-global-fishing-events:latest"],
"startDate": "2020-10-01",
"endDate": "2020-12-31",
"flags": ["CHN"],
"region": {
"dataset": "public-eez-areas",
"id": 8371
}
}'
Make sure to replace [TOKEN] with your API Access Token. If the request is successful, the response will be:
{
"metadata": {
"datasets": ["public-global-fishing-events:v3.0"],
"dateRange": {
"from": "2020-10-01",
"to": "2020-12-31"
},
"encounterTypes": [],
"flags": ["CHN"],
"region": {
"dataset": "public-eez-areas",
"id": 8371
}
},
"limit": 1,
"offset": 0,
"nextOffset": 1,
"total": 627572,
"entries": [
{
"start": "2020-09-26T01:43:25.000Z",
"end": "2020-10-07T06:33:31.000Z",
"id": "d2a6b63ea4b654c038194a3fc88ba7ac",
"type": "fishing",
"position": {
"lat": 39.6907,
"lon": 124.0237
},
"regions": {
"mpa": [],
"eez": ["8486"],
"rfmo": ["ACAP", "IWC", "PICES", "WCPFC"],
"fao": ["61"],
"majorFao": ["61"],
"eez12Nm": ["8486"],
"highSeas": [],
"mpaNoTakePartial": [],
"mpaNoTake": []
},
"boundingBox": [124.0155016667, 39.6785533333, 124.035055, 39.6993483333],
"distances": {
"startDistanceFromShoreKm": 16,
"endDistanceFromShoreKm": 14,
"startDistanceFromPortKm": 2.382918,
"endDistanceFromPortKm": 4.529377
},
"vessel": {
"id": "d320fba36-69f1-1feb-849b-a03829f8860c",
"name": "LIAODANYU23523",
"ssvid": "412223961"
},
"fishing": {
"totalDistanceKm": 9.705851662418958,
"averageSpeedKnots": 0.21297844288636178,
"averageDurationHours": 0.11517397789514866,
"potentialRisk": false
}
}
]
}
Get one by Event ID
Get by event id - HTTP Request
GET https://gateway.api.globalfishingwatch.org/v3/events/{eventId}
Get by event id - URL Parameters
Parameter | Description | Required | Format | Param Type |
---|---|---|---|---|
eventId | True | string | path | |
raw | If true, return all content of the event without parsing | False | boolean | query |
dataset | Specify the dataset that will be used to search the vessel. You can learn more about which are the possible datasets here. Example: public-global-fishing-events:latest | True | string | query |
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 - HTTP Request
POST /v3/events/stats
Events Stats POST - URL Parameters
It has no query param. All parameters should be sent in the body, see body parameters below.
Events Stats POST - Body Parameters
Parameter | Description | Required | Format | Param Type |
---|---|---|---|---|
datasets | Specify the datasets that will be used to search the vessel. You can learn more about which are the possible datasets here. You can send several datasets in array format. Example: ['public-global-fishing-events:latest', 'public-global-encounter-events:latest'] | True | [string] | body |
vessels | List of vessel ids. You can get this information using the search endpoints Example: ['8c7304226-6c71-edbe-0b63-c246734b3c01', '6583c51e3-3626-5638-866a-f47c3bc7ef7c'] | False | [string] | body |
types | Event types. Possible values: PORT, ENCOUNTER, LOITERING, GAP, PORT_VISIT. Example: ['FISHING'] | False | [string] | body |
startDate | Start date in format YYYY-MM-DD of the start date of the event (inclusive). Filter the events that their end date is greater or equal than the start date filter. Example: 2020-01-01 | False | string | body |
endDate | End date in format YYYY-MM-DD of the end date of the event (exclusive). Filter the events that their start date is less than the end date filter. Example: 2020-02-01 | False | string | body |
confidences | 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. Possible values: 2, 3, 4 Example: ['3','4'] | False | [string] | body |
encounterTypes | Possible values: CARRIER-FISHING, FISHING-CARRIER, FISHING-SUPPORT, SUPPORT-FISHING Example: ['CARRIER-FISHING','FISHING-CARRIER']. When using encounterType parameters like FISHING-CARRIER or CARRIER-FISHING , it is essential to note that you may encounter duplicate events for each vessel ID involved. This approach is designed to give you the possibility to decide which vessel type appears first in the event, so for example: FISHING-CARRIER, the first vessel in the response is the fishing one and the 2nd is the carrier. It is important to be mindful of this, particularly when tallying events. |
False | [string] | body |
vesselGroups | Ids of the vessel groups. Must be an array Example: ['my-vessel-group'] | False | [string] | body |
geometry | Region where the events happen. | False | object | body |
region | Region where the events happen.You can send the region id, you can get it from Reference Data | False | object | body |
timeseriesInterval | Time series granularity. Must be a string. Possible values: HOUR, DAY, MONTH, YEAR. | False | STRING | body |
includes | Allows to include additional information. Possible options are: TOTAL_COUNT,TIME_SERIES. TOTAL_COUNT returns the total count of vessel ids, flags and events. TIME_SERIES should be used in combination with the param timeseriesInterval since it returns values based on what time series is selected. |
False | [string] | body |
vesselTypes | Vessel types. Possible values: BUNKER, CARGO, DISCREPANCY, CARRIER, FISHING, GEAR, OTHER, PASSENGER, SEISMIC_VESSEL,SUPPORT | False | [string] | body |
Events Stats POST - Responses
Status | Meaning | Description | Schema |
---|---|---|---|
201 | Created | Event Stats Response | Events Stats Response properties |
401 | Unauthorized. | No Unauthorized. | Error Codes |
403 | Forbidden | You do not have permissions to do the action. | Error Codes |
422 | Unprocessable Entity | Unprocessable Entity. Validation error. | Error Codes |
500 | Internal Server Error | Server side issue. Please contact us at [email protected] | Error Codes |
Properties Events Stats Response
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
flags | [string] | true | none | Distinct flags |
numEvents | number | true | none | Number of events |
numFlags | number | true | none | Number of distinct vessel flags |
numVessels | number | true | none | Number of distinct vessels |
timeseries | [See Timeseries definition below] | true | none | Timeseries |
Properties Events Stats Response Timeseries
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
date | string(date-time) | true | none | Date |
value | number | true | none | Number of events |
EXAMPLE 1 - GET ENCOUNTERS STATS
curl --location --request POST 'https://gateway.api.globalfishingwatch.org/v3/events/stats' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer {access-token}'
--header 'Content-Type: application/json' \
--data-raw '{
"datasets": [ "public-global-encounters-events:latest"],
"encounterTypes": ["CARRIER-FISHING", "FISHING-CARRIER"],
"vesselTypes": ["CARRIER"],
"startDate": "2018-01-01",
"endDate": "2023-01-31",
"timeseriesInterval": "YEAR",
"flags": ["RUS"],
"duration": 60
}
'
Make sure to replace [TOKEN] with your API Access Token. If the request is successful, the response will be:
{
"numEvents": 23300,
"numFlags": 1,
"numVessels": 202,
"flags": ["RUS"],
"timeseries": [
{
"date": "2018-01-01T00:00:00.000Z",
"value": 4486
},
{
"date": "2019-01-01T00:00:00.000Z",
"value": 4234
},
{
"date": "2020-01-01T00:00:00.000Z",
"value": 4656
},
{
"date": "2021-01-01T00:00:00.000Z",
"value": 4807
},
{
"date": "2022-01-01T00:00:00.000Z",
"value": 4701
},
{
"date": "2023-01-01T00:00:00.000Z",
"value": 416
}
]
}
EXAMPLE 2 - GET FISHING EVENTS STATS IN A CUSTOM REGION
curl --location --request POST 'https://gateway.api.globalfishingwatch.org/v3/events/stats' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer {access-token}'
--header 'Content-Type: application/json' \
--data-raw '{
"datasets": [ "public-global-fishing-events:latest"],
"startDate": "2018-01-01",
"endDate": "2023-01-31",
"timeseriesInterval": "YEAR",
"duration": 90,
"geometry":{"type":"MultiPolygon","coordinates":[[[[-58.15342633,-32.356403276],[-58.16805183,-32.359000619],[-58.184795664,-32.379219766],[-58.192409931,-32.391977392],[-58.193236164,-32.395055309],[-58.191125697,-32.400694246],[-58.194202127,-32.416740918],[-58.193898065,-32.421293436],[-58.200104417,-32.439695043],[-58.203068501,-32.469794853],[-58.201773268,-32.482103825],[-58.199452453,-32.48651512],[-58.198189657,-32.494591443],[-58.1909169,-32.506733087],[-58.184742646,-32.529503992],[-58.173524528,-32.553211355],[-58.165369884,-32.559773049],[-58.161893615,-32.567770973],[-58.159343751,-32.608650802],[-58.151728474,-32.62249165],[-58.151480284,-32.635035765],[-58.153010794,-32.641369091],[-58.149292387,-32.653570867],[-58.145301188,-32.659776215],[-58.143623423,-32.665853784],[-58.142912012,-32.675649681],[-58.148653602,-32.690020187],[-58.146101053,-32.707362162],[-58.148179071,-32.73123023],[-58.14123188,-32.751686231],[-58.141575555,-32.757396873],[-58.146951161,-32.761720555],[-58.14325427,-32.768691322],[-58.138638482,-32.770629602],[-58.135694082,-32.785976586],[-58.130758029,-32.801498671],[-58.12284602,-32.814061796],[-58.121850748,-32.82451262],[-58.125803727,-32.833189037],[-58.118631373,-32.853729616],[-58.11323325,-32.886529032],[-58.114730058,-32.895617282],[-58.121359728,-32.902057784],[-58.114789226,-32.918915937],[-58.113440989,-32.925924348],[-58.114673138,-32.927592234],[-58.113667629,-32.93986786],[-58.114402803,-32.966621671],[-58.119544774,-32.98206643],[-58.117304543,-32.990437423],[-58.124303771,-32.999824842],[-58.126772533,-33.007898604],[-58.125627861,-33.017099642],[-58.126974786,-33.02044177],[-58.130380817,-33.021945453],[-58.130076688,-33.028447656],[-58.13639079,-33.036502418],[-58.145125702,-33.042909231],[-58.152890334,-33.056053578],[-58.157767888,-33.059454364],[-58.167855355,-33.070938913],[-58.171621097,-33.07757795],[-58.190545784,-33.082063935],[-58.20357497,-33.083064676],[-58.217409645,-33.089760457],[-58.226105363,-33.092454759],[-58.229059871,-33.094206846],[-58.23173247,-33.098114538],[-58.24229906,-33.097167419],[-58.26464951,-33.103257289],[-58.274157515,-33.108160081],[-58.296088631,-33.103355406],[-58.308711192,-33.104855771],[-58.316347337,-33.103650705],[-58.319896027,-33.104192307],[-58.326565333,-33.107984139],[-58.334930123,-33.109173568],[-58.351201872,-33.117847445],[-58.37674193,-33.11489371],[-58.381859593,-33.134746496],[-58.389796431,-33.152533877],[-58.392322222,-33.171894929],[-58.39592379,-33.182181078],[-58.39140114,-33.198990159],[-58.391069256,-33.20561281],[-58.391582845,-33.220615805],[-58.395984501,-33.247423443],[-58.387047693,-33.275469435],[-58.387268996,-33.304045888],[-58.404901857,-33.321471301],[-58.430538696,-33.337315138],[-58.434248957,-33.341044457],[-58.438287022,-33.349102535],[-58.441513198,-33.360251944],[-58.443260942,-33.380153055],[-58.454591357,-33.393804471],[-58.456374996,-33.397844667],[-58.460268366,-33.412833067],[-58.464415537,-33.454967867],[-58.468550176,-33.46031186],[-58.479401304,-33.483322774],[-58.480264012,-33.488111484],[-58.48077669,-33.517791379],[-58.478041927,-33.553805081],[-58.479856494,-33.586243485],[-58.478916634,-33.617127032],[-58.481100391,-33.637515218],[-58.487874996,-33.651897059],[-58.493461906,-33.670607619],[-58.494350582,-33.680173282],[-58.47943317,-33.714776411],[-58.468057168,-33.734126473],[-58.455313818,-33.76015984],[-58.452826355,-33.784736997],[-58.449108288,-33.79554959],[-58.439122338,-33.810083477],[-58.439000681,-33.830576292],[-58.431369825,-33.847419786],[-58.43127944,-33.852632918],[-58.432118254,-33.85690005],[-58.438362706,-33.867637254],[-58.441619598,-33.879114621],[-58.428425775,-33.893523576],[-58.425638696,-33.901883358],[-58.42532535,-33.907932313],[-58.405,-33.955],[-58.376666667,-34],[-58.345,-34.038333333],[-58.333333333,-34.103333333],[-58.323333333,-34.123333333],[-58.316666667,-34.15],[-58.293333333,-34.166666667],[-58.251666667,-34.2],[-58.208333333,-34.221666667],[-58.166666667,-34.253333333],[-58.091666667,-34.295],[-58.065,-34.333333333],[-58.02,-34.361666667],[-58.01,-34.38],[-57.94,-34.443333333],[-57.935,-34.55],[-57.951666667,-34.666666667],[-57.533333333,-34.783333333],[-57.333333333,-34.866666667],[-57,-35.183333333],[-56.716666667,-35.171666667],[-55.866666667,-35.633333334],[-54.277051457,-37.095171775],[-53.922631024,-37.249589551],[-53.349558934,-37.516174588],[-53.125984692,-37.62930317],[-52.999508183,-37.706596921],[-52.667141949,-37.859911042],[-52.694583731,-37.933319234],[-52.723742913,-38.005066515],[-52.781652076,-38.133212609],[-52.818230445,-38.206396929],[-52.852702656,-38.271079163],[-52.892380372,-38.341464162],[-52.93240984,-38.408702342],[-52.991277275,-38.501030558],[-53.047565098,-38.583554818],[-53.098741187,-38.653935419],[-53.160180737,-38.733344606],[-53.266857511,-38.880382604],[-53.300855412,-38.938100266],[-53.343162719,-39.0059623],[-53.420352922,-39.12047819],[-53.490878482,-39.215859706],[-53.579826859,-39.328213772],[-53.641305593,-39.447996003],[-53.697813609,-39.548030311],[-53.767108475,-39.659553473],[-53.837380873,-39.76258815],[-53.904023374,-39.852678791],[-53.978250462,-39.945689344],[-54.058772289,-40.039203987],[-54.140932398,-40.12792611],[-54.222923475,-40.210500517],[-54.308385881,-40.290929116],[-54.381247969,-40.355601372],[-54.522649834,-40.475286705],[-54.5896488,-40.529592468],[-54.656633327,-40.581421888],[-54.725185257,-40.632085711],[-54.799129295,-40.684219878],[-54.982622233,-40.806158763],[-55.059932704,-40.854269793],[-55.14474833,-40.904422269],[-55.272853929,-40.97519824],[-55.345894371,-41.013314313],[-55.431307029,-41.055941103],[-55.53293563,-41.104108399],[-55.631284789,-41.147863472],[-55.716757759,-41.190838995],[-55.809465128,-41.234946431],[-55.894350461,-41.273363007],[-55.964556955,-41.303501092],[-56.13147113,-41.371343049],[-56.343878744,-41.453779341],[-56.430510239,-41.486171388],[-56.602131463,-41.545753547],[-56.881434625,-41.636740043],[-56.968842286,-41.662845414],[-57.058930719,-41.688132286],[-57.232589165,-41.73156739],[-57.313056102,-41.75290048],[-57.458834918,-41.798025491],[-57.60636055,-41.838910956],[-57.689322414,-41.859900528],[-57.77520308,-41.880137525],[-57.964785723,-41.920478506],[-58.018397281,-42.008509338],[-58.077150872,-42.097624248],[-58.141760571,-42.188271294],[-58.204764026,-42.270445379],[-58.269734621,-42.349689806],[-58.335089398,-42.424491534],[-58.407529831,-42.502392183],[-58.483831894,-42.579380103],[-58.560267257,-42.67524804],[-58.640996392,-42.768868251],[-58.734760057,-42.86928214],[-58.794721063,-42.929420777],[-58.860523109,-42.992145996],[-58.921208859,-43.047275226],[-58.978059958,-43.096698751],[-59.043011588,-43.150770607],[-59.117667335,-43.20995537],[-59.172244336,-43.440205973],[-59.196633828,-43.531230245],[-59.236481833,-43.657059727],[-59.283260847,-43.782363315],[-59.310377766,-43.847302783],[-59.341297708,-43.915925313],[-59.37116949,-43.977725566],[-59.403682698,-44.040780895],[-59.471170767,-44.160362166],[-59.508977174,-44.221896377],[-59.550776059,-44.286131604],[-59.596124477,-44.351913036],[-59.646495794,-44.420812628],[-59.696772052,-44.485763638],[-59.758558403,-44.561017858],[-59.816355994,-44.627398619],[-59.873606461,-44.689744259],[-59.93733864,-44.755585983],[-59.997308382,-44.814448305],[-60.060678503,-44.87370552],[-60.130715766,-44.935961936],[-60.194956684,-44.990359294],[-60.265502365,-45.04733662],[-60.341124528,-45.105465567],[-60.410790852,-45.156524432],[-60.501840038,-45.219906266],[-60.569156876,-45.264549913],[-60.593001909,-45.332237491],[-60.620056503,-45.402408722],[-60.649296878,-45.47203445],[-60.680611542,-45.540878005],[-60.798487166,-46.252942691],[-60.892346482,-46.827400481],[-60.876141565,-46.892003775],[-60.860125752,-46.963867549],[-60.846673352,-47.034147016],[-60.835115986,-47.106411626],[-60.823861804,-47.197094417],[-60.816262363,-47.287515135],[-60.812178204,-47.380255259],[-60.81132071,-47.470464402],[-60.789357567,-47.57001835],[-60.771806104,-47.669766298],[-63.010277579,-49.136763174],[-63.216903298,-49.27356026],[-64.573338447,-50.36154789],[-64.61197803,-50.444077188],[-64.692970462,-50.623161323],[-64.79013278,-50.85254852],[-64.906905274,-51.142135709],[-65.015149355,-51.414864114],[-64.951999257,-51.541358402],[-64.943769184,-51.576673068],[-64.927231182,-51.654362447],[-64.895229135,-51.819863575],[-64.782348031,-52.43408733],[-64.696960756,-52.530644417],[-64.69081124,-52.535669033],[-64.527312376,-52.619264009],[-63.669138833,-52.928926212],[-63.503463349,-52.991130652],[-63.382281589,-53.039296868],[-63.289889857,-53.077671032],[-63.186481469,-53.122576509],[-63.014353379,-53.201204205],[-62.090246253,-53.574389554],[-62.017541046,-53.604329688],[-61.874168954,-53.666558527],[-61.620494975,-53.781988593],[-58.541962783,-56.227816107],[-58.598928057,-56.296476374],[-58.654927131,-56.360029108],[-58.740975646,-56.452477612],[-58.808303331,-56.521031303],[-58.880443073,-56.590216544],[-58.948844595,-56.652227825],[-59.01990807,-56.713362815],[-59.093607859,-56.77358818],[-59.171856516,-56.834340035],[-59.25779333,-56.897648328],[-59.355169571,-56.965465481],[-59.442012051,-57.022792975],[-59.53587506,-57.081696217],[-59.63482843,-57.140636466],[-59.729628223,-57.194307893],[-59.829290444,-57.248003524],[-59.921526326,-57.295386165],[-60.025215134,-57.346164751],[-60.127774885,-57.393968715],[-60.234255394,-57.441208292],[-60.361712251,-57.494753364],[-60.470158273,-57.537887357],[-60.583359099,-57.580671399],[-60.692912806,-57.619999848],[-60.781276617,-57.650308492],[-60.891010724,-57.686252031],[-60.993508065,-57.718198027],[-61.103274907,-57.750732886],[-61.223506916,-57.784459507],[-61.33360071,-57.813641041],[-61.450971666,-57.847987317],[-61.555058016,-57.876905199],[-61.669233364,-57.906955205],[-61.783112164,-57.935291548],[-61.89242823,-57.960984829],[-62.007595737,-57.986503544],[-62.118560476,-58.009613652],[-62.236928568,-58.032729184],[-62.363140753,-58.055667083],[-62.464203633,-58.072794974],[-62.585649106,-58.09194578],[-62.70129094,-58.108755488],[-62.78764548,-58.120403444],[-62.904448872,-58.134999131],[-62.998322387,-58.145733459],[-63.108174375,-58.157223391],[-63.305703869,-58.174907412],[-63.499557443,-58.188671454],[-63.628639994,-58.201220765],[-63.760971992,-58.212439077],[-63.951831707,-58.22570631],[-64.153774234,-58.236045771],[-64.352891792,-58.242555435],[-64.544580812,-58.245382666],[-64.728217396,-58.262856069],[-64.901445022,-58.276201878],[-65.037667254,-58.295087169],[-65.185224829,-58.313451793],[-65.336067798,-58.330034654],[-65.466023779,-58.342534366],[-65.59549255,-58.353411055],[-65.732283561,-58.363191894],[-65.852431789,-58.370348573],[-66.056526848,-58.380686846],[-66.221889676,-58.38690667],[-66.36336728,-58.390252948],[-66.517055734,-58.391837329],[-66.663875033,-58.391336126],[-66.805434229,-58.389010129],[-66.953719381,-58.384617011],[-67.118916269,-58.377362994],[-67.266666667,-58.368752742],[-67.266666667,-56.38],[-65.726666667,-56.38],[-65.726666667,-55.381666667],[-66.078333333,-55.183333333],[-66.416666667,-55.121666667],[-66.498636207,-55.116105147],[-66.524894791,-55.116441149],[-66.541629865,-55.118358262],[-66.575993898,-55.118139035],[-66.585575249,-55.118744105],[-66.605946275,-55.121919726],[-66.623743681,-55.120685602],[-66.643446364,-55.121258641],[-66.679219162,-55.118177489],[-66.71011652,-55.119827943],[-66.729553447,-55.095212908],[-66.742753318,-55.063917542],[-66.758391003,-55.038316007],[-66.770396071,-55.025395044],[-66.777062918,-55.02019201],[-66.791620391,-55.012102387],[-66.807592912,-55.006691247],[-66.822973116,-55.003609162],[-66.828313956,-54.999285257],[-66.833472284,-54.996730221],[-66.849952602,-54.99088032],[-66.875303374,-54.986517548],[-66.887786775,-54.985255862],[-66.896490093,-54.983015423],[-66.908760152,-54.978290778],[-66.921689079,-54.975092401],[-66.933041752,-54.974582257],[-66.94123952,-54.975301372],[-66.951846967,-54.972343926],[-66.962741597,-54.971864261],[-66.974861027,-54.969690097],[-66.97897598,-54.971914117],[-66.994077394,-54.975602248],[-67.00879098,-54.977635121],[-67.023474561,-54.975268423],[-67.030272873,-54.976252663],[-67.034741089,-54.975927891],[-67.058406193,-54.965357369],[-67.068872762,-54.947665804],[-67.073399406,-54.946241402],[-67.091902954,-54.945169133],[-67.105251153,-54.947747714],[-67.123389242,-54.934309084],[-67.13145724,-54.930822426],[-67.139683058,-54.928913911],[-67.156528039,-54.929030393],[-67.165420868,-54.930585254],[-67.174983352,-54.933794046],[-67.181509833,-54.931771593],[-67.192961652,-54.929930838],[-67.204481711,-54.923968164],[-67.212182684,-54.921727379],[-67.219782039,-54.920761374],[-67.225914595,-54.917703153],[-67.234554765,-54.915136916],[-67.259883492,-54.915350992],[-67.268940566,-54.910775127],[-67.277525114,-54.908580965],[-67.292051146,-54.908967294],[-67.298863504,-54.906847402],[-67.309410329,-54.90642649],[-67.342087721,-54.913570667],[-67.350178865,-54.914453246],[-67.355179529,-54.916804413],[-67.365766279,-54.917479258],[-67.371029444,-54.91981314],[-67.376570265,-54.920297189],[-67.383639747,-54.918812709],[-67.392049526,-54.920012293],[-67.399621155,-54.919925604],[-67.402458118,-54.921135108],[-67.407647134,-54.919635434],[-67.411559849,-54.920266542],[-67.424513694,-54.916594312],[-67.433077411,-54.919494509],[-67.435661111,-54.922024676],[-67.441353372,-54.918078352],[-67.4464889,-54.917481979],[-67.449582508,-54.91595985],[-67.45797678,-54.916318362],[-67.463148451,-54.918920109],[-67.46931989,-54.918026886],[-67.475805688,-54.921435849],[-67.477622644,-54.923930059],[-67.49442508,-54.926605944],[-67.499914018,-54.923135954],[-67.516282681,-54.919668692],[-67.52686246,-54.913787281],[-67.537001654,-54.915268254],[-67.541752618,-54.914125673],[-67.55729819,-54.908226455],[-67.564390845,-54.901954224],[-67.574215947,-54.901652544],[-67.582063987,-54.905248484],[-67.590966219,-54.905529321],[-67.595946717,-54.907255843],[-67.613508067,-54.904100669],[-67.630674539,-54.907284791],[-67.640642586,-54.903423533],[-67.656273746,-54.907954845],[-67.661544589,-54.907993001],[-67.66792575,-54.910296977],[-67.676879374,-54.909439394],[-67.688124616,-54.909901797],[-67.693631943,-54.911284875],[-67.701451968,-54.908080267],[-67.708922379,-54.907154395],[-67.720125536,-54.903245614],[-67.742576739,-54.903496822],[-67.746398191,-54.902301818],[-67.752822382,-54.902941231],[-67.759038669,-54.9000552],[-67.775813585,-54.89505063],[-67.788096457,-54.892582411],[-67.793627446,-54.889159851],[-67.813157816,-54.892201388],[-67.824054671,-54.885433036],[-67.83301966,-54.88378902],[-67.852787808,-54.886491804],[-67.856998184,-54.889808118],[-67.866719086,-54.894824058],[-67.876928358,-54.894396064],[-67.890822791,-54.891835393],[-67.900629574,-54.884623211],[-67.921823122,-54.881216177],[-67.928299055,-54.877920646],[-67.943819473,-54.87505823],[-67.955656026,-54.87516097],[-67.962489197,-54.872977811],[-67.970217509,-54.874410295],[-67.983030027,-54.874422505],[-67.997118224,-54.877016981],[-68.004777318,-54.876657207],[-68.012155091,-54.875066345],[-68.035605719,-54.875697386],[-68.040479245,-54.877210341],[-68.049234254,-54.87797937],[-68.057545196,-54.880437637],[-68.065850218,-54.881290503],[-68.079514591,-54.886104957],[-68.096006538,-54.887487045],[-68.102867065,-54.889842264],[-68.111979792,-54.889764266],[-68.120538627,-54.888559421],[-68.126311322,-54.889403349],[-68.136839504,-54.886635707],[-68.144989439,-54.885649257],[-68.153713213,-54.887292451],[-68.161332004,-54.885768176],[-68.165839896,-54.886316832],[-68.169495009,-54.885422107],[-68.176632316,-54.886457038],[-68.184153527,-54.885495498],[-68.192427213,-54.88724228],[-68.195851238,-54.889222724],[-68.200688968,-54.889060638],[-68.209000633,-54.890579535],[-68.21355292,-54.892283738],[-68.217488927,-54.891038652],[-68.233057663,-54.891946998],[-68.238960238,-54.891343665],[-68.249134364,-54.892707172],[-68.254395528,-54.890933571],[-68.26190351,-54.890095029],[-68.269995319,-54.891142368],[-68.277560121,-54.889290013],[-68.283609417,-54.886385223],[-68.291650136,-54.884825294],[-68.299804157,-54.884326509],[-68.307582775,-54.88138305],[-68.315506411,-54.879569452],[-68.336047154,-54.878130687],[-68.352337976,-54.879306059],[-68.370324735,-54.882294804],[-68.386200438,-54.881963284],[-68.389853176,-54.882815174],[-68.402914954,-54.887287228],[-68.410563466,-54.891123704],[-68.42116051,-54.898806948],[-68.442918467,-54.897916425],[-68.468003065,-54.899066666],[-68.486494611,-54.898503236],[-68.489583333,-54.897698128],[-68.50148669,-54.898361919],[-68.510840366,-54.900482553],[-68.518711174,-54.900944472],[-68.538270451,-54.905573869],[-68.546688318,-54.908695872],[-68.552541331,-54.912445784],[-68.559040008,-54.914225606],[-68.569932693,-54.909208309],[-68.578738462,-54.908066655],[-68.587318308,-54.909862003],[-68.595740621,-54.913705255],[-68.601725598,-54.918613188],[-68.605607742,-54.919247414],[-68.619225583,-54.91738518],[-68.614789104,-54.896864271],[-68.610190869,-54.894876837],[-68.611824036,-54.894218445],[-68.612859845,-54.80067122],[-68.620692527,-54.685155272],[-68.601029356,-54.690788384],[-68.58612197,-54.69782126],[-68.5361048,-54.730454984],[-68.511858148,-54.75166168],[-68.398337246,-54.745842561],[-68.388627045,-54.733506258],[-68.380998152,-54.726083344],[-68.350665684,-54.704769085],[-68.341279435,-54.700175218],[-68.326430609,-54.695180769],[-68.316176067,-54.693168395],[-68.300540964,-54.69218061],[-68.284943455,-54.693646859],[-68.243626665,-54.703151511],[-68.198407936,-54.719618061],[-68.11802173,-54.724146862],[-68.101404391,-54.726493496],[-68.085413488,-54.731586007],[-68.049587569,-54.748643934],[-67.922944945,-54.762864699],[-67.666732505,-54.780466478],[-67.536694649,-54.774689734],[-67.326378527,-54.792447982],[-67.021104841,-54.805696291],[-67.004543645,-54.808767859],[-66.928753452,-54.829556026],[-66.819286256,-54.837135248],[-66.772418952,-54.847287894],[-66.665907408,-54.892847749],[-66.635882697,-54.913209815],[-66.615033063,-54.930426455],[-66.602621277,-54.934760084],[-66.528972521,-54.951164736],[-66.461116608,-54.951897306],[-66.455184494,-54.950579059],[-66.44815863,-54.941105981],[-66.437134995,-54.92991724],[-66.424495358,-54.920592647],[-66.410551551,-54.913362248],[-66.390529259,-54.90727965],[-66.330285965,-54.895855332],[-66.318815704,-54.894993206],[-66.198155518,-54.89288434],[-66.125598897,-54.895187701],[-66.084625026,-54.88674081],[-66.079296722,-54.870883348],[-66.072021849,-54.857149178],[-66.06270674,-54.844708118],[-66.047508231,-54.830645536],[-66.029739349,-54.820014559],[-66.003649939,-54.809340492],[-65.993714982,-54.805926021],[-65.978278914,-54.802802462],[-65.967798063,-54.802085699],[-65.957299852,-54.80247242],[-65.916922346,-54.808102209],[-65.904978516,-54.803761732],[-65.89492911,-54.801400944],[-65.884689871,-54.80008875],[-65.869214027,-54.800114066],[-65.853927414,-54.802526919],[-65.810797465,-54.812807937],[-65.787471913,-54.807446594],[-65.776585527,-54.806106607],[-65.765617871,-54.805966963],[-65.718721785,-54.808420732],[-65.6957814,-54.81197489],[-65.67668229,-54.818605721],[-65.659307228,-54.828942602],[-65.647268874,-54.839482526],[-65.631883852,-54.835588686],[-65.591773893,-54.828940034],[-65.580475426,-54.828318098],[-65.561089935,-54.829287653],[-65.548791266,-54.817267799],[-65.535738483,-54.808207322],[-65.498883596,-54.791223161],[-65.484204951,-54.786789922],[-65.469021095,-54.784652924],[-65.424663557,-54.784123787],[-65.404472204,-54.786996124],[-65.386526535,-54.792903605],[-65.371687196,-54.776774724],[-65.354445869,-54.763291799],[-65.345940272,-54.75802674],[-65.335549815,-54.736652364],[-65.360367552,-54.742900948],[-65.372002048,-54.744491859],[-65.409963608,-54.745208229],[-65.457035707,-54.740977892],[-65.694267573,-54.762293617],[-65.704610914,-54.762155881],[-65.714884688,-54.760950372],[-65.77838911,-54.750144257],[-65.8586327,-54.746350524],[-65.879411363,-54.74163384],[-65.89051213,-54.738116455],[-65.920049156,-54.723443268],[-65.942694378,-54.72189642],[-65.972280036,-54.716015397],[-66.315582445,-54.615429459],[-66.404934627,-54.581784845],[-66.434007184,-54.575779628],[-66.470098557,-54.570990478],[-66.504067055,-54.563383212],[-66.519316407,-54.558662406],[-66.528980469,-54.554190587],[-66.542449619,-54.545622579],[-66.554383775,-54.535020472],[-66.564292068,-54.522909838],[-66.577684606,-54.516561988],[-66.590266674,-54.508077176],[-66.615028319,-54.484755223],[-66.712790513,-54.427452096],[-66.728051291,-54.413772001],[-66.767912291,-54.36528584],[-66.805539245,-54.342993669],[-66.941203431,-54.306881331],[-66.987027406,-54.289732913],[-67.001109984,-54.281342386],[-67.017190674,-54.267219212],[-67.05936714,-54.250712804],[-67.168344089,-54.219542799],[-67.181386287,-54.214811401],[-67.344774811,-54.142064772],[-67.627202144,-53.991037873],[-67.635298282,-53.984996685],[-67.646198237,-53.974482671],[-67.667715255,-53.946953119],[-67.677410015,-53.927231863],[-67.683157639,-53.903470909],[-67.709250596,-53.904567179],[-67.724735954,-53.903287028],[-67.744720375,-53.897886285],[-67.763164565,-53.888486446],[-67.775507986,-53.879048486],[-67.789413753,-53.863713078],[-67.797602603,-53.850507857],[-67.804814919,-53.832361555],[-67.836031415,-53.817811275],[-67.849034244,-53.810524985],[-68.038881807,-53.684683685],[-68.055773188,-53.670582878],[-68.072070309,-53.649158074],[-68.127362229,-53.583626275],[-68.13603419,-53.570039085],[-68.15040601,-53.53523319],[-68.159739865,-53.49671375],[-68.169400885,-53.48008523],[-68.178549808,-53.457642234],[-68.181672834,-53.442686984],[-68.182295098,-53.423635586],[-68.205030295,-53.414864585],[-68.290058913,-53.419988325],[-68.306681896,-53.419605149],[-68.380931036,-53.407644033],[-68.423077248,-53.399401285],[-68.456776642,-53.397570088],[-68.472433243,-53.395469778],[-68.492424521,-53.388892744],[-68.558556371,-53.354839298],[-68.607339458,-53.320994037],[-68.607083494,-53.069295691],[-68.594627696,-53.053274255],[-68.578849182,-53.039265111],[-68.51502252,-53.002529344],[-68.465957137,-52.965688231],[-68.436864472,-52.947995916],[-68.467471336,-52.930616558],[-68.494162559,-52.909747873],[-68.563550428,-52.833684752],[-68.606804302,-52.794756265],[-68.606665015,-52.657790542],[-68.438693661,-52.403950776],[-68.435040117,-52.39669323],[-68.432392955,-52.39808166],[-68.428578139,-52.397137523],[-68.419222713,-52.391910553],[-68.419606209,-52.329769134],[-68.564794779,-52.325134158],[-68.586119652,-52.304019928],[-68.71465075,-52.282390475],[-68.832111001,-52.276210665],[-68.927100777,-52.232265353],[-68.963793874,-52.213039279],[-69.05326283,-52.187290072],[-69.189816833,-52.150211334],[-69.445322329,-52.15141585],[-69.409985923,-52.146228458],[-69.36540171,-52.145014714],[-69.269529766,-52.109401654],[-69.25395306,-52.10501238],[-69.193928109,-52.099273737],[-69.173918927,-52.099565362],[-69.1137,-52.109459807],[-69.098783693,-52.113138576],[-69.044132585,-52.134401901],[-68.966073206,-52.176327507],[-68.938136049,-52.187202374],[-68.920092556,-52.190998892],[-68.882140526,-52.203559686],[-68.812040738,-52.204105733],[-68.802661435,-52.205461834],[-68.774486042,-52.212193264],[-68.716671147,-52.206984607],[-68.700737868,-52.207634106],[-68.595199599,-52.231428737],[-68.761713348,-52.069225614],[-68.832943438,-51.974893953],[-68.903987552,-51.868149046],[-68.946056857,-51.827418693],[-68.955420077,-51.815825276],[-69.009650607,-51.718828978],[-69.060301989,-51.745719071],[-69.15408801,-51.777980008],[-69.177539142,-51.784296666],[-69.187985965,-51.786014336],[-69.198555837,-51.786617915],[-69.228976057,-51.786191416],[-69.24445536,-51.783380185],[-69.259302191,-51.778176008],[-69.273149072,-51.770707694],[-69.289468373,-51.757554965],[-69.299707776,-51.745610658],[-69.307947143,-51.732208246],[-69.315477102,-51.712647735],[-69.31866991,-51.693144647],[-69.322492513,-51.692151092],[-69.353646934,-51.688857634],[-69.386719043,-51.6919173],[-69.607228954,-51.724716586],[-69.628113783,-51.724535836],[-69.64850556,-51.720020954],[-69.658236669,-51.716192553],[-69.671952031,-51.708599895],[-69.684312241,-51.698957032],[-69.695013535,-51.687500946],[-69.703792919,-51.674513182],[-69.710434631,-51.660312926],[-69.714775444,-51.645249163],[-69.716708679,-51.6296921],[-69.715467775,-51.608843385],[-69.707889169,-51.58388858],[-69.697326581,-51.565870798],[-69.690693157,-51.557786936],[-69.67925329,-51.547068305],[-69.66166717,-51.535801667],[-69.629424267,-51.523061131],[-69.615735418,-51.518990029],[-69.5816102,-51.511444754],[-69.544144751,-51.490571426],[-69.524132001,-51.483233179],[-69.487987087,-51.476235434],[-69.440134491,-51.472068324],[-69.417861963,-51.463986821],[-69.394925715,-51.458484644],[-69.36674871,-51.455980857],[-69.354840926,-51.45589759],[-69.279075952,-51.45988522],[-69.262088122,-51.462252299],[-69.147122266,-51.502070765],[-69.141740727,-51.502934691],[-69.127979775,-51.491784856],[-69.118609515,-51.48567418],[-69.092822169,-51.473784352],[-69.152402165,-51.365567165],[-69.174762977,-51.307232547],[-69.180546773,-51.279414515],[-69.19206437,-51.262563231],[-69.198325104,-51.248564179],[-69.202371751,-51.233772461],[-69.206386817,-51.20604257],[-69.236443314,-51.102943162],[-69.277244237,-51.121234227],[-69.329276445,-51.150660862],[-69.361588895,-51.171017995],[-69.375780706,-51.177616307],[-69.390828223,-51.181919497],[-69.406362864,-51.183822162],[-69.416802218,-51.1837315],[-69.432301471,-51.181559319],[-69.452080725,-51.17496033],[-69.470061553,-51.164403086],[-69.48546221,-51.150346582],[-69.497613129,-51.133401945],[-69.505986029,-51.11430587],[-69.510216887,-51.093888588],[-69.510121758,-51.073037773],[-69.503943706,-51.047744226],[-69.497157984,-51.033641064],[-69.473746889,-50.993675267],[-69.463871872,-50.980977197],[-69.452088631,-50.970026755],[-69.39738061,-50.931801879],[-69.312309805,-50.888384266],[-69.259197308,-50.850987167],[-69.249906963,-50.845800199],[-69.228486771,-50.836520328],[-69.230286562,-50.815234838],[-69.240839381,-50.794689342],[-69.245508659,-50.778734523],[-69.249885656,-50.746301354],[-69.248589389,-50.725542062],[-69.244807273,-50.710394954],[-69.233891686,-50.679121349],[-69.209634296,-50.630495982],[-69.17791377,-50.574618897],[-69.174843486,-50.5419452],[-69.166524288,-50.5165948],[-69.158399773,-50.502765833],[-69.140585929,-50.481524096],[-69.122192003,-50.453301832],[-69.086540472,-50.412974067],[-69.071149288,-50.393486915],[-69.050460983,-50.36319985],[-68.966703561,-50.287613341],[-68.958284207,-50.273128324],[-68.948484591,-50.261231998],[-68.936973265,-50.250982879],[-68.919439871,-50.240294154],[-68.894531983,-50.229819729],[-68.880020656,-50.225063066],[-68.864954264,-50.222571427],[-68.849639587,-50.222406979],[-68.815632362,-50.201114957],[-68.800882384,-50.194472424],[-68.790536384,-50.191405484],[-68.774549244,-50.188936387],[-68.76376004,-50.188739151],[-68.747957943,-50.190013902],[-68.645032749,-50.156842535],[-68.577200371,-50.137078619],[-68.58881533,-50.124191548],[-68.598230545,-50.110548129],[-68.611121385,-50.080406402],[-68.650101986,-50.092551281],[-68.671382571,-50.094724254],[-68.728687513,-50.088823652],[-68.772271233,-50.082534941],[-68.80237991,-50.08452542],[-68.833611817,-50.081619833],[-68.840433118,-50.084022304],[-68.87521907,-50.103007172],[-68.889946637,-50.108073365],[-68.905282225,-50.110791322],[-69.008396447,-50.115557547],[-69.030156964,-50.113834745],[-69.050151867,-50.108272508],[-69.068567983,-50.098702696],[-69.076932489,-50.092537457],[-69.088168779,-50.081747814],[-69.102754277,-50.060325339],[-69.111344829,-50.03587413],[-69.113498502,-50.00774505],[-69.110223534,-49.982362611],[-69.100613138,-49.958642705],[-69.085296788,-49.938138972],[-69.073771724,-49.927950697],[-69.060820427,-49.919650581],[-69.012969823,-49.899395982],[-69.003053993,-49.895913836],[-68.987632901,-49.892686741],[-68.962220111,-49.891567874],[-68.950393416,-49.887895915],[-68.914509565,-49.870469188],[-68.894012744,-49.864246705],[-68.872660939,-49.86253225],[-68.802957131,-49.868034971],[-68.7444023,-49.864163608],[-68.733537357,-49.864601176],[-68.719401434,-49.866574207],[-68.742687611,-49.835982857],[-68.790007792,-49.814160503],[-68.80297585,-49.805179653],[-68.814370322,-49.794271298],[-68.823907683,-49.781706867],[-68.83135062,-49.767798996],[-68.836513932,-49.752893748],[-68.839269143,-49.737362006],[-68.839547695,-49.721590241],[-68.836063459,-49.700865786],[-68.828324965,-49.681327141],[-68.816673979,-49.663837216],[-68.801625059,-49.649168442],[-68.78384283,-49.637968654],[-68.76411263,-49.630732483],[-68.743305831,-49.62777951],[-68.703279723,-49.630486471],[-68.660588934,-49.642010097],[-68.62186134,-49.659393862],[-68.598572102,-49.67470278],[-68.585687197,-49.684917369],[-68.574650327,-49.697105318],[-68.520389765,-49.767231328],[-68.496951467,-49.78954027],[-68.487695257,-49.800691186],[-68.462338649,-49.843676093],[-68.453609084,-49.863475724],[-68.433799337,-49.874569754],[-68.42524592,-49.880533116],[-68.389718724,-49.911762996],[-68.380170351,-49.923561062],[-68.359841486,-49.953259546],[-68.344569469,-49.987553583],[-68.342978827,-49.989262558],[-68.328288217,-49.995882487],[-68.319043045,-50.001665323],[-68.306491144,-50.012137933],[-68.297324303,-50.021974954],[-68.26119517,-50.024266748],[-68.189927905,-50.015696921],[-68.111490756,-49.993304745],[-68.026842234,-49.953694229],[-67.946822385,-49.911207371],[-67.902864407,-49.88105613],[-67.874996428,-49.844975892],[-67.860645653,-49.823380146],[-67.827662328,-49.749848464],[-67.815775218,-49.691399734],[-67.817832928,-49.6647996],[-67.812331203,-49.614098333],[-67.806262542,-49.590978381],[-67.804932946,-49.545699193],[-67.796488012,-49.507776968],[-67.791368598,-49.491763169],[-67.8223368,-49.490964863],[-67.83373764,-49.489378659],[-67.844880671,-49.486492828],[-67.8680901,-49.478886359],[-67.877739693,-49.47461679],[-67.891237726,-49.466368395],[-67.90326617,-49.45609467],[-67.910318311,-49.448245392],[-67.919250174,-49.435189561],[-67.926011486,-49.420888597],[-67.930433056,-49.405700357],[-67.932330112,-49.379453202],[-67.927233106,-49.352806838],[-67.916972529,-49.328695858],[-67.907916072,-49.315808804],[-67.896948417,-49.304503667],[-67.884341667,-49.295060923],[-67.870408589,-49.287714842],[-67.855494857,-49.282647677],[-67.841533175,-49.280169287],[-67.832093087,-49.267888788],[-67.829729661,-49.252016383],[-67.822834185,-49.232140132],[-67.815010216,-49.218423023],[-67.805124417,-49.206108618],[-67.797508227,-49.198831621],[-67.784756525,-49.189516704],[-67.77069744,-49.182325338],[-67.756989418,-49.177787632],[-67.734309165,-49.141785316],[-67.73034683,-49.109066522],[-67.727530731,-49.098671061],[-67.721254706,-49.083795342],[-67.715773546,-49.074524263],[-67.705764877,-49.061855323],[-67.693847878,-49.050962177],[-67.680319502,-49.041413741],[-67.663801123,-49.00199577],[-67.640597347,-48.961633614],[-67.631238443,-48.949322939],[-67.616026411,-48.9354278],[-67.455911306,-48.817733644],[-67.356101221,-48.773399684],[-67.286465444,-48.752769414],[-67.28341918,-48.751090632],[-67.274927154,-48.728593953],[-67.266874661,-48.714683817],[-67.252877204,-48.698480049],[-67.23715151,-48.685960139],[-67.231077458,-48.659594411],[-67.219155566,-48.63614732],[-67.205459516,-48.620142352],[-67.17912891,-48.5975694],[-67.166728059,-48.588565695],[-67.153097086,-48.581562527],[-67.088384035,-48.55436211],[-67.03636239,-48.524774022],[-67.022349781,-48.518183445],[-67.002406041,-48.51290377],[-66.94896085,-48.50720275],[-66.938339321,-48.489017398],[-66.924491081,-48.473783065],[-66.912213291,-48.464399751],[-66.894105237,-48.454993646],[-66.873034818,-48.435707602],[-66.864371389,-48.429279139],[-66.828142901,-48.409925229],[-66.808031883,-48.393970782],[-66.793747446,-48.385449306],[-66.735161346,-48.363833411],[-66.690893778,-48.339391287],[-66.676032967,-48.33427132],[-66.660553459,-48.331543208],[-66.585792209,-48.324360801],[-66.560732615,-48.323934451],[-66.552137021,-48.308533864],[-66.538633657,-48.292622931],[-66.526494621,-48.2827233],[-66.515765932,-48.276223048],[-66.499432906,-48.264159362],[-66.484954899,-48.257117703],[-66.469534525,-48.252490642],[-66.453571475,-48.250398111],[-66.430807427,-48.250344119],[-66.422990761,-48.235634634],[-66.414325673,-48.223167738],[-66.382598835,-48.188879412],[-66.361939562,-48.172713004],[-66.3491049,-48.164297666],[-66.335133659,-48.157945433],[-66.322449018,-48.154199848],[-66.30998445,-48.139213652],[-66.293585156,-48.125604176],[-66.284392295,-48.120186235],[-66.269653062,-48.113969947],[-66.225770939,-48.101668441],[-66.217994053,-48.085283066],[-66.208896486,-48.072398496],[-66.197886169,-48.061104658],[-66.185237014,-48.051682518],[-66.153019315,-48.033696],[-66.120770304,-48.021094428],[-66.078180918,-48.011531287],[-66.061164385,-48.00979361],[-66.051423399,-47.991416868],[-66.050828701,-47.965375163],[-66.039770362,-47.927186159],[-66.027388497,-47.904100729],[-66.009961691,-47.883750165],[-66.113183821,-47.923190838],[-66.126891714,-47.926649823],[-66.196480788,-47.939239667],[-66.274548051,-47.968902751],[-66.294321633,-47.972261409],[-66.338816041,-47.975159929],[-66.353625376,-47.974330915],[-66.411862174,-47.961251373],[-66.426953097,-47.95644395],[-66.445537031,-47.946450865],[-66.453935305,-47.940040987],[-66.465149747,-47.92885691],[-66.471582373,-47.920476047],[-66.479486485,-47.906751168],[-66.487551979,-47.881668231],[-66.488786317,-47.855349373],[-66.486192179,-47.839725105],[-66.481163752,-47.824706376],[-66.473827173,-47.810669927],[-66.46078048,-47.794086558],[-66.448865171,-47.78365235],[-66.430705177,-47.772908098],[-66.410695025,-47.766213461],[-66.379965045,-47.761473576],[-66.305265109,-47.763507399],[-66.249005382,-47.736282058],[-66.181220342,-47.712241837],[-66.156049188,-47.705272406],[-66.150585415,-47.702732102],[-66.12348817,-47.679351715],[-66.114864363,-47.673318317],[-66.080433617,-47.652001467],[-66.060951527,-47.643788496],[-66.045442385,-47.640424186],[-66.029596316,-47.639555758],[-65.966228938,-47.641207621],[-65.909883045,-47.64727292],[-65.881101552,-47.589892517],[-65.833805371,-47.484024428],[-65.825749644,-47.394412641],[-65.8165535,-47.348666123],[-65.831472488,-47.312439781],[-65.848821019,-47.259394218],[-65.864878161,-47.248759078],[-65.881061213,-47.235828336],[-65.910277609,-47.217430219],[-65.92128026,-47.207058345],[-65.931878635,-47.193108043],[-65.946550304,-47.190128909],[-65.956344596,-47.186797724],[-66.004435681,-47.16481143],[-66.059884118,-47.179197021],[-66.074718948,-47.18199846],[-66.205006997,-47.189484826],[-66.318059112,-47.172845826],[-66.375983264,-47.165400443],[-66.386316156,-47.162963227],[-66.397848276,-47.158771895],[-66.439178428,-47.161282203],[-66.453743426,-47.160434077],[-66.484841889,-47.154344443],[-66.516050467,-47.142139887],[-66.535072847,-47.145764931],[-66.565179709,-47.148001463],[-66.58081652,-47.147136868],[-66.591840998,-47.14500119],[-66.614660269,-47.15021403],[-66.636078177,-47.150952545],[-66.65716161,-47.147110534],[-66.68130939,-47.136922019],[-66.708724022,-47.137293962],[-66.718538184,-47.135865484],[-66.732873944,-47.131920187],[-66.82900557,-47.097097878],[-66.841629857,-47.09000196],[-66.884566718,-47.061383585],[-66.897687768,-47.04960123],[-66.951015651,-46.992450959],[-67.027747217,-46.931725611],[-67.04186086,-46.924680378],[-67.052525775,-46.917219279],[-67.062781643,-46.914627888],[-67.077227035,-46.908888581],[-67.086286808,-46.903846483],[-67.098777478,-46.89459488],[-67.11292001,-46.879467355],[-67.128047146,-46.855513791],[-67.147220415,-46.834224084],[-67.17777114,-46.814171249],[-67.189667552,-46.80296673],[-67.198636576,-46.791361764],[-67.21919848,-46.787682692],[-67.239808465,-46.779708371],[-67.287176982,-46.754450055],[-67.299425727,-46.744921593],[-67.310089562,-46.733564454],[-67.363388461,-46.721508664],[-67.382807912,-46.713822667],[-67.482801763,-46.647731251],[-67.494102756,-46.637957393],[-67.503821353,-46.626608841],[-67.603241668,-46.490674257],[-67.630792968,-46.445074015],[-67.668696544,-46.356152512],[-67.718201684,-46.192643708],[-67.721786355,-46.175395071],[-67.724252116,-46.135846888],[-67.723869544,-46.11958412],[-67.718887579,-46.078137386],[-67.708443269,-46.040430938],[-67.667558889,-45.947409563],[-67.658963062,-45.933501204],[-67.646549878,-45.918226587],[-67.644199844,-45.907104155],[-67.638780091,-45.892091526],[-67.633867316,-45.882645785],[-67.616587184,-45.856604142],[-67.606441577,-45.844923429],[-67.594561217,-45.834186719],[-67.586933841,-45.821387349],[-67.576782416,-45.808991814],[-67.56478167,-45.798376598],[-67.549535216,-45.788918973],[-67.537875133,-45.767768144],[-67.524332671,-45.752109717],[-67.507856176,-45.739575377],[-67.461074829,-45.71217119],[-67.455973456,-45.696705593],[-67.456150824,-45.653779832],[-67.451207947,-45.627505232],[-67.433534088,-45.587574933],[-67.409841722,-45.550810413],[-67.402624455,-45.542770004],[-67.390280052,-45.53228408],[-67.363709376,-45.517623541],[-67.343463842,-45.493191253],[-67.331184473,-45.4818789],[-67.291832367,-45.454470164],[-67.24035915,-45.393100118],[-67.204064243,-45.354451403],[-67.170478707,-45.323982808],[-67.13711422,-45.280883781],[-67.073111055,-45.226920737],[-67.058252856,-45.216707587],[-67.012611952,-45.191062141],[-66.972815935,-45.166514701],[-66.896802972,-45.139562778],[-66.876613007,-45.1358935],[-66.795847312,-45.129662926],[-66.684946966,-45.115742194],[-66.67861352,-45.09747211],[-66.670990321,-45.083846822],[-66.661339228,-45.071574168],[-66.649895498,-45.060953307],[-66.636938084,-45.052243137],[-66.622782838,-45.045655978],[-66.607774812,-45.041352398],[-66.595984191,-45.03970029],[-66.584112458,-45.02915244],[-66.556829574,-45.008562142],[-66.538217844,-44.997458159],[-66.499096077,-44.982065618],[-66.451771001,-44.971472495],[-66.434477162,-44.96144639],[-66.414111858,-44.95477655],[-66.399986463,-44.952850372],[-66.371161891,-44.945779024],[-66.356597756,-44.943688089],[-66.312381114,-44.944496645],[-66.298756259,-44.945870091],[-66.285477566,-44.937787143],[-66.270487079,-44.921623187],[-66.258528948,-44.911573371],[-66.245151681,-44.903508357],[-66.22567593,-44.896175004],[-66.215471999,-44.894066643],[-66.199893756,-44.892920315],[-66.169946001,-44.895650652],[-66.118621456,-44.888758163],[-66.097475695,-44.889238859],[-66.03464025,-44.903682457],[-66.009176533,-44.903365361],[-65.993384595,-44.905781648],[-65.973308414,-44.91284749],[-65.948736456,-44.927301758],[-65.935627336,-44.919200553],[-65.926093031,-44.914900927],[-65.898726131,-44.906857087],[-65.884202532,-44.904024058],[-65.835108048,-44.903426879],[-65.819607698,-44.905662899],[-65.808365182,-44.908924441],[-65.821605204,-44.883438479],[-65.826937537,-44.863758673],[-65.828250256,-44.848511372],[-65.826052782,-44.795167398],[-65.822475444,-44.779544663],[-65.816448237,-44.764694076],[-65.808125978,-44.750997098],[-65.795774467,-44.736963708],[-65.794412487,-44.718025973],[-65.790528903,-44.70268043],[-65.773885843,-44.665681042],[-65.765021098,-44.651845532],[-65.730248216,-44.611405889],[-65.704998307,-44.589374176],[-65.692406704,-44.580939458],[-65.638613118,-44.551134938],[-65.624215028,-44.54610248],[-65.60728799,-44.543159879],[-65.596031183,-44.534976225],[-65.586415732,-44.529635262],[-65.537911912,-44.511729029],[-65.520309111,-44.495452606],[-65.502439028,-44.485182737],[-65.482843071,-44.478794584],[-65.46477439,-44.476313643],[-65.458204823,-44.463671605],[-65.448668679,-44.450687864],[-65.437171456,-44.439403829],[-65.427439421,-44.432266304],[-65.420878832,-44.415101002],[-65.413547922,-44.400919733],[-65.398772747,-44.382526499],[-65.390062868,-44.368566645],[-65.375611579,-44.352973862],[-65.3578302,-44.340601941],[-65.363180304,-44.324660095],[-65.386103642,-44.298203316],[-65.39187309,-44.289129313],[-65.398620225,-44.274489751],[-65.402927543,-44.258956315],[-65.405904419,-44.238272721],[-65.408390118,-44.192118351],[-65.405943645,-44.176734688],[-65.39465687,-44.138108995],[-65.38636321,-44.118243581],[-65.37745064,-44.104764622],[-65.366483474,-44.092897123],[-65.336938681,-44.07061286],[-65.335493203,-44.062643855],[-65.339802526,-44.048008475],[-65.3415803,-44.035816422],[-65.349009907,-44.02779046],[-65.358078353,-44.014876753],[-65.368339839,-43.99071447],[-65.375007088,-43.961441253],[-65.375345225,-43.944821864],[-65.373278267,-43.926134377],[-65.37805507,-43.913628801],[-65.395746945,-43.895379219],[-65.404624831,-43.882560315],[-65.411402023,-43.868517137],[-65.416893599,-43.84848189],[-65.418127022,-43.82774431],[-65.41540614,-43.793430658],[-65.422227198,-43.777594734],[-65.430882835,-43.748005148],[-65.434027284,-43.670261079],[-65.430017159,-43.644491451],[-65.423312954,-43.625379008],[-65.416296917,-43.611476234],[-65.40349938,-43.594678669],[-65.393578002,-43.578319821],[-65.355410684,-43.527375811],[-65.344580902,-43.515145997],[-65.331904476,-43.504842561],[-65.312531519,-43.494315747],[-65.272726602,-43.468020377],[-65.268532931,-43.463956202],[-65.232695467,-43.414844016],[-65.224926371,-43.406380126],[-65.142208688,-43.341912072],[-65.14295128,-43.31245976],[-65.137090507,-43.28668259],[-65.11653463,-43.245458674],[-65.106759732,-43.232617939],[-65.095046645,-43.221516734],[-65.076947775,-43.209913283],[-65.053818914,-43.201373862],[-65.047567222,-43.198066354],[-65.039217978,-43.192129885],[-65.008677049,-43.163235287],[-64.994719213,-43.153299261],[-64.806316048,-43.056215476],[-64.786410212,-43.049658294],[-64.665164611,-43.023405685],[-64.685824582,-43.016896214],[-64.710915391,-43.004254302],[-64.755572856,-42.974375745],[-64.778036364,-42.96283387],[-64.889136882,-42.922333084],[-64.956782439,-42.905928384],[-64.970298532,-42.900172995],[-64.992237453,-42.887601572],[-65.025870562,-42.880628879],[-65.044707888,-42.872807144],[-65.053430591,-42.867497493],[-65.06538729,-42.857936757],[-65.083943038,-42.840413887],[-65.094132237,-42.827951514],[-65.099754882,-42.818803094],[-65.106271697,-42.804083664],[-65.116314386,-42.769477267],[-65.118903401,-42.748013566],[-65.116818802,-42.726495019],[-65.112238763,-42.710926382],[-65.101213532,-42.686303513],[-65.093127948,-42.673128699],[-65.083108485,-42.66135743],[-65.054901836,-42.6376227],[-65.039114006,-42.610380201],[-65.016113104,-42.582892461],[-65.00779815,-42.575583205],[-64.993940765,-42.566451458],[-64.96606039,-42.551369735],[-64.952522441,-42.545992446],[-64.889456976,-42.532298585],[-64.848372177,-42.528767943],[-64.810512766,-42.489961255],[-64.786474897,-42.47230349],[-64.754573637,-42.45769743],[-64.744197704,-42.454884286],[-64.724914946,-42.451681435],[-64.712864581,-42.444040594],[-64.700946034,-42.438228784],[-64.702138302,-42.416649839],[-64.698907803,-42.396285425],[-64.68752128,-42.355741503],[-64.67555494,-42.333292573],[-64.680682842,-42.330090641],[-64.722660438,-42.329754407],[-64.759019731,-42.324269264],[-64.795246937,-42.313936897],[-64.824290293,-42.302278887],[-64.837729628,-42.295542587],[-64.859688335,-42.294492427],[-64.888165408,-42.288731374],[-64.902585107,-42.282770573],[-64.990059245,-42.237679578],[-65.040207329,-42.200386485],[-65.084297787,-42.154111854],[-65.155269296,-42.037304317],[-65.163795639,-42.019260125],[-65.167740569,-42.0048101],[-65.174141985,-41.95978368],[-65.174284778,-41.943890844],[-65.171907831,-41.928176113],[-65.150503134,-41.86652913],[-65.107495704,-41.791851041],[-65.100913483,-41.77594526],[-65.121366919,-41.733348278],[-65.134563818,-41.688032911],[-65.137161311,-41.661684633],[-65.134187428,-41.640690984],[-65.122529945,-41.60297761],[-65.116161204,-41.589018424],[-65.102807284,-41.568880158],[-65.095606434,-41.549495036],[-65.132077083,-41.518950001],[-65.147520395,-41.4988827],[-65.154178485,-41.485197135],[-65.168348885,-41.448896626],[-65.175526439,-41.416960473],[-65.199898789,-41.360960129],[-65.204241957,-41.341119324],[-65.205811726,-41.318256429],[-65.244422006,-41.202271574],[-65.273766616,-41.026580516],[-65.275109951,-41.011575212],[-65.275372664,-40.96121983],[-65.270126215,-40.928674766],[-65.266094845,-40.913115761],[-65.254436849,-40.88102558],[-65.235121561,-40.845358663],[-65.231741187,-40.825127525],[-65.220554479,-40.796495178],[-65.209095166,-40.779052022],[-65.188489754,-40.759034893],[-65.174094936,-40.748352122],[-65.10038486,-40.703292473],[-65.083098144,-40.689861572],[-65.075783799,-40.67606717],[-65.066403852,-40.66357135],[-65.059116754,-40.65611998],[-65.046833105,-40.646463849],[-65.023633176,-40.632472643],[-64.978603294,-40.616643874],[-64.956058041,-40.611813993],[-64.888905483,-40.605999192],[-64.872361325,-40.607637144],[-64.778123043,-40.624971128],[-64.758298571,-40.630787607],[-64.724365803,-40.648382861],[-64.7111854,-40.656845154],[-64.699488065,-40.667261765],[-64.684048183,-40.688252535],[-64.677587999,-40.702521362],[-64.673702748,-40.71640479],[-64.665706842,-40.728794061],[-64.659548812,-40.742223421],[-64.627173415,-40.748008917],[-64.612808864,-40.751692844],[-64.523463526,-40.786703321],[-64.385260607,-40.815945217],[-64.145442429,-40.912769248],[-64.134781912,-40.914914352],[-64.110395416,-40.907278758],[-64.071102205,-40.8998482],[-64.04965005,-40.900225213],[-64.028772079,-40.905169647],[-64.009429383,-40.914453892],[-63.990809616,-40.928246949],[-63.97919653,-40.938878048],[-63.967379689,-40.954367811],[-63.929754933,-40.967377076],[-63.916157118,-40.97404687],[-63.817689237,-41.045645118],[-63.796489574,-41.054173717],[-63.769911104,-41.058905217],[-63.623487448,-41.060871142],[-63.478245066,-41.05423707],[-63.3862203,-41.060659797],[-63.377728396,-41.059696798],[-63.334958906,-41.049669264],[-63.31916195,-41.048067773],[-63.106310903,-41.054617554],[-63.080778579,-41.050320706],[-62.966697478,-41.004818153],[-62.909520278,-40.992405429],[-62.884240772,-40.975576544],[-62.865538441,-40.960259028],[-62.856026925,-40.954780025],[-62.840778781,-40.948595163],[-62.820811142,-40.943538369],[-62.804429998,-40.941719941],[-62.793439217,-40.942016206],[-62.772110183,-40.944803019],[-62.756602827,-40.943957373],[-62.739676002,-40.932666598],[-62.713528311,-40.918944105],[-62.643352343,-40.896507351],[-62.523771227,-40.839779332],[-62.39443984,-40.787735219],[-62.378213671,-40.756548357],[-62.393600946,-40.746076755],[-62.408466637,-40.730785851],[-62.426686509,-40.702389596],[-62.434838499,-40.683137512],[-62.438221347,-40.667813754],[-62.439123081,-40.651203496],[-62.44350211,-40.635691352],[-62.446795058,-40.61343491],[-62.444915063,-40.584486386],[-62.438823473,-40.562143691],[-62.452828956,-40.555912979],[-62.466832422,-40.547552359],[-62.475330343,-40.541771018],[-62.48685416,-40.531542296],[-62.496669755,-40.519664621],[-62.527820072,-40.47400874],[-62.536057691,-40.45497961],[-62.548430991,-40.40760934],[-62.571353813,-40.373411178],[-62.580677127,-40.352764068],[-62.588946506,-40.322763414],[-62.590054092,-40.306699671],[-62.588569151,-40.290666408],[-62.580295788,-40.259855087],[-62.574240256,-40.244021067],[-62.565597143,-40.229437436],[-62.543944829,-40.200249864],[-62.517857807,-40.174556279],[-62.492754444,-40.154763881],[-62.476001123,-40.145141062],[-62.447034183,-40.133726487],[-62.443759433,-40.124878613],[-62.459186099,-40.091230724],[-62.464959569,-40.070584971],[-62.466321517,-40.054550809],[-62.465093995,-40.038505796],[-62.46130879,-40.022865416],[-62.454058982,-40.00279817],[-62.445937783,-39.988337521],[-62.438910729,-39.979163101],[-62.431333274,-39.962961932],[-62.42423553,-39.930202481],[-62.411701298,-39.896429432],[-62.414541575,-39.867253716],[-62.413010114,-39.851835174],[-62.408005118,-39.833866586],[-62.40794014,-39.809203703],[-62.403286999,-39.789284617],[-62.393230975,-39.763982844],[-62.381334208,-39.746480126],[-62.374064872,-39.738770294],[-62.361735641,-39.728753556],[-62.352700588,-39.72321708],[-62.338178035,-39.716779654],[-62.328008214,-39.713803166],[-62.3123065,-39.711394601],[-62.296421498,-39.71150282],[-62.285927736,-39.712974454],[-62.26569954,-39.719195248],[-62.251637837,-39.726585342],[-62.212292938,-39.751185855],[-62.210045765,-39.71449196],[-62.184036981,-39.573210614],[-62.174036794,-39.545104981],[-62.173383663,-39.52826003],[-62.199729154,-39.516459522],[-62.21339987,-39.508020261],[-62.262041176,-39.471729144],[-62.289987765,-39.442070353],[-62.305068138,-39.436718017],[-62.318877429,-39.429167948],[-62.343698102,-39.40888898],[-62.354073325,-39.39652449],[-62.36548369,-39.378464225],[-62.372201236,-39.363765086],[-62.378983761,-39.343181551],[-62.391868685,-39.330835528],[-62.407459469,-39.31207779],[-62.415378319,-39.298679244],[-62.421122273,-39.284214245],[-62.425165252,-39.263876922],[-62.425110641,-39.245191579],[-62.439002326,-39.214982917],[-62.445190261,-39.194834492],[-62.447017666,-39.173836631],[-62.444789811,-39.151524229],[-62.450052853,-39.14086375],[-62.454868965,-39.126334357],[-62.457811087,-39.101037896],[-62.45549042,-39.080776827],[-62.448921206,-39.058571855],[-62.438666524,-39.039200929],[-62.427747195,-39.025782841],[-62.418572785,-39.004150315],[-62.427333033,-38.984505086],[-62.442008951,-38.973246907],[-62.452608128,-38.961722684],[-62.461278545,-38.94868527],[-62.467807645,-38.934454278],[-62.472913595,-38.91422909],[-62.473740793,-38.894089466],[-62.480380249,-38.879159065],[-62.484559137,-38.863945782],[-62.490195935,-38.81623111],[-62.487066653,-38.78984552],[-62.477099193,-38.765215426],[-62.457851428,-38.735983676],[-62.447263664,-38.724665766],[-62.435054252,-38.715119766],[-62.395248562,-38.69429532],[-62.38006871,-38.68964662],[-62.359050371,-38.687287755],[-62.338006035,-38.689402162],[-62.309821189,-38.696726517],[-62.295278988,-38.701803816],[-62.151197336,-38.710668143],[-62.129778671,-38.714351998],[-62.114515469,-38.720112234],[-62.090827619,-38.732939984],[-62.070939527,-38.748888498],[-62.045004053,-38.783974106],[-62.026104287,-38.822941739],[-62.020568932,-38.831009464],[-62.015778553,-38.834461749],[-61.997052697,-38.841813229],[-61.825983656,-38.881270732],[-61.797124777,-38.882239151],[-61.777332438,-38.878940428],[-61.760154175,-38.872668011],[-61.749470445,-38.870057162],[-61.733069582,-38.868376247],[-61.714883296,-38.8685088],[-61.700230416,-38.870776433],[-61.686073911,-38.875185788],[-61.670583397,-38.882232347],[-61.659701055,-38.8888404],[-61.639892418,-38.89723247],[-61.535926996,-38.908864964],[-61.517924188,-38.902337482],[-61.452901402,-38.885654539],[-61.429311011,-38.882525145],[-61.333341548,-38.881475433],[-61.148258936,-38.900065714],[-61.088069267,-38.888022497],[-61.071215713,-38.879541476],[-61.057523957,-38.874272918],[-61.025972089,-38.868646848],[-61.015605946,-38.868197992],[-60.991913866,-38.869629081],[-60.966976373,-38.874503024],[-60.872985082,-38.875590414],[-60.674687947,-38.844272118],[-60.515052513,-38.828314665],[-60.358840292,-38.807646587],[-59.904116976,-38.73957618],[-59.886063874,-38.738526992],[-59.817967247,-38.740107895],[-59.653393582,-38.686016277],[-59.087420496,-38.596364257],[-59.056058487,-38.585744402],[-59.030308849,-38.580484168],[-58.982010655,-38.55520702],[-58.966632349,-38.549621463],[-58.751406729,-38.490962565],[-58.597780672,-38.462817726],[-58.525452676,-38.429541213],[-58.445771289,-38.407675728],[-58.432266784,-38.404982062],[-58.353929187,-38.394901856],[-58.310414398,-38.374812105],[-58.191409679,-38.336552724],[-58.166672907,-38.325517139],[-58.122108923,-38.295364741],[-58.108271812,-38.287528964],[-58.080992158,-38.276895355],[-58.047741374,-38.271076546],[-57.908528406,-38.205551812],[-57.836357906,-38.163463556],[-57.731678826,-38.115514459],[-57.652364334,-38.071076089],[-57.636014251,-38.056239904],[-57.635065734,-38.054710037],[-57.635378336,-38.035430467],[-57.640366937,-38.016168936],[-57.641806992,-37.995715672],[-57.637364223,-37.942454413],[-57.626468828,-37.891845322],[-57.621358478,-37.87562202],[-57.602231875,-37.829492722],[-57.569419248,-37.774976035],[-57.52835359,-37.72407505],[-57.443510322,-37.639989638],[-57.430673998,-37.630275367],[-57.417276491,-37.623130807],[-57.389300067,-37.585637224],[-57.379288807,-37.574159648],[-57.367650672,-37.564335499],[-57.26382519,-37.489450103],[-57.236782265,-37.464979707],[-57.137711788,-37.354167545],[-57.101047759,-37.290026134],[-56.966923648,-37.099792435],[-56.86593025,-36.9729535],[-56.768640365,-36.869137278],[-56.766606496,-36.865267277],[-56.765004721,-36.847909272],[-56.772062398,-36.609162804],[-56.772828091,-36.603874175],[-56.793309585,-36.556255198],[-56.798545147,-36.535727092],[-56.799562191,-36.51985766],[-56.798357062,-36.442578793],[-56.833196192,-36.441616435],[-56.859905597,-36.450852397],[-56.889491522,-36.471632066],[-56.903639559,-36.478325211],[-56.913577879,-36.481523184],[-56.928974247,-36.484336898],[-56.939401271,-36.484860729],[-56.960135057,-36.482644651],[-56.979958514,-36.476176929],[-56.998009717,-36.465738779],[-57.020328104,-36.444961027],[-57.031245249,-36.430296717],[-57.050230429,-36.423122587],[-57.162184321,-36.366540565],[-57.314823754,-36.244770059],[-57.329664575,-36.228107907],[-57.346799827,-36.203666523],[-57.354534334,-36.188773474],[-57.369562023,-36.179311078],[-57.384677992,-36.165033918],[-57.3938936,-36.152438549],[-57.401037241,-36.138562702],[-57.408164479,-36.120373712],[-57.412571906,-36.099070207],[-57.427617254,-36.066957795],[-57.440510874,-36.05507583],[-57.450262878,-36.042427014],[-57.457876724,-36.028386947],[-57.465715654,-36.007838376],[-57.471265972,-35.98380644],[-57.473100842,-35.953578718],[-57.49110473,-35.883807651],[-57.493299909,-35.863040839],[-57.489918431,-35.837184664],[-57.476987615,-35.801855978],[-57.461731765,-35.736116179],[-57.444915657,-35.689020298],[-57.4323023,-35.667095245],[-57.399633139,-35.631295481],[-57.30243601,-35.507510797],[-57.238627406,-35.437927512],[-57.283502713,-35.367662718],[-57.32224564,-35.317286878],[-57.385047962,-35.25939558],[-57.418588286,-35.22263135],[-57.505512537,-35.151614059],[-57.54599873,-35.125478422],[-57.572797015,-35.102066658],[-57.643541095,-35.079368286],[-57.657878906,-35.071672682],[-57.730577981,-35.024657917],[-57.790699983,-35.004452112],[-57.80416408,-34.998802506],[-57.816661931,-34.991252429],[-57.861383736,-34.956318628],[-57.90685732,-34.931354868],[-57.934869276,-34.933614494],[-57.945208484,-34.933426263],[-57.955472973,-34.932171298],[-57.970490008,-34.92832117],[-58.002362033,-34.917301115],[-58.016836584,-34.910065231],[-58.033965105,-34.8969744],[-58.053412179,-34.876570567],[-58.092779238,-34.868558161],[-58.103222422,-34.864718057],[-58.125334563,-34.853833882],[-58.168894046,-34.849412319],[-58.179380128,-34.847350502],[-58.194547834,-34.842192495],[-58.229796579,-34.826956597],[-58.245169746,-34.818648381],[-58.290503335,-34.785017561],[-58.363412458,-34.744711634],[-58.376668447,-34.735939884],[-58.384659713,-34.728970889],[-58.395153135,-34.717031336],[-58.417427776,-34.683721065],[-58.427947738,-34.664608149],[-58.435441946,-34.655867977],[-58.462489303,-34.64195164],[-58.481063375,-34.630191881],[-58.49916578,-34.621767547],[-58.526318745,-34.606918937],[-58.542916965,-34.594221684],[-58.556513815,-34.578352002],[-58.568399223,-34.555120301],[-58.573357729,-34.534390074],[-58.583753258,-34.522415368],[-58.592382502,-34.508413248],[-58.604021459,-34.484140886],[-58.608548603,-34.468144035],[-58.611419888,-34.43895717],[-58.61069367,-34.423546181],[-58.606062435,-34.403519825],[-58.597950138,-34.385784534],[-58.622450959,-34.37358143],[-58.631139164,-34.367639814],[-58.642882183,-34.35710008],[-58.655688978,-34.340429464],[-58.666347883,-34.316440768],[-58.670136133,-34.295762939],[-58.668673688,-34.269553569],[-58.660441151,-34.244627777],[-58.6460058,-34.222703122],[-58.634765119,-34.211629208],[-58.618626807,-34.200597646],[-58.601389223,-34.18643269],[-58.579189476,-34.174420442],[-58.564667589,-34.170031308],[-58.549648869,-34.167889405],[-58.499052788,-34.16929088],[-58.492108229,-34.158742347],[-58.490508984,-34.129104846],[-58.485740321,-34.102774069],[-58.503694486,-34.093006784],[-58.519330094,-34.079746687],[-58.529097932,-34.067856629],[-58.539070741,-34.049944469],[-58.544032556,-34.0353786],[-58.546700905,-34.020223929],[-58.546472099,-33.995525207],[-58.543065948,-33.974963337],[-58.551256364,-33.937198895],[-58.554488096,-33.89674009],[-58.600551477,-33.842487663],[-58.611434666,-33.826870543],[-58.634133755,-33.780797616],[-58.647004654,-33.726289105],[-58.649054821,-33.711157674],[-58.649242548,-33.67766174],[-58.639504234,-33.592678249],[-58.636062004,-33.578433727],[-58.63171729,-33.567318723],[-58.635633251,-33.534314674],[-58.631406081,-33.484501128],[-58.617820139,-33.421666993],[-58.599266587,-33.368516381],[-58.574413029,-33.319469342],[-58.565897226,-33.307025272],[-58.528679571,-33.262107751],[-58.533134485,-33.236414149],[-58.531742353,-33.206541175],[-58.529323932,-33.19027708],[-58.521383911,-33.156354345],[-58.526847357,-33.143260513],[-58.530636793,-33.128019026],[-58.531526615,-33.101906265],[-58.526944421,-33.07745946],[-58.521770834,-33.062529486],[-58.514310127,-33.048600811],[-58.501307233,-33.030549481],[-58.485403111,-33.013599005],[-58.467648437,-33.00097892],[-58.452764942,-32.994207712],[-58.41699834,-32.981349639],[-58.401469308,-32.977142317],[-58.390828001,-32.975747185],[-58.374739231,-32.975809245],[-58.258761754,-32.991780085],[-58.259010875,-32.969926307],[-58.254956602,-32.942585641],[-58.251208776,-32.926832255],[-58.246105674,-32.913217555],[-58.259617936,-32.891930239],[-58.27150261,-32.867136575],[-58.276511373,-32.851964594],[-58.291232609,-32.745620229],[-58.310469779,-32.672167817],[-58.322726799,-32.538313946],[-58.318784346,-32.473457279],[-58.31359464,-32.454084028],[-58.28737902,-32.395201031],[-58.275279464,-32.378281234],[-58.25994128,-32.364230649],[-58.251260369,-32.358476904],[-58.237236331,-32.351614394],[-58.222315045,-32.347018427],[-58.206860245,-32.344801037],[-58.191248667,-32.345016277],[-58.180941905,-32.346511087],[-58.165912406,-32.350739782],[-58.15342633,-32.356403276]],[[-64.073310706,-42.523136468],[-64.107589456,-42.53069955],[-64.122603687,-42.532589951],[-64.182404745,-42.530019398],[-64.172749975,-42.535134056],[-64.146911946,-42.552225567],[-64.130069798,-42.56635853],[-64.110303066,-42.592135004],[-64.101354847,-42.610977958],[-64.097322127,-42.626106958],[-64.095700353,-42.64167999],[-64.096529283,-42.657315282],[-64.099788596,-42.672629536],[-64.10539839,-42.687247322],[-64.113221141,-42.700810288],[-64.123065075,-42.712985938],[-64.13483337,-42.723581072],[-64.136032465,-42.727468335],[-64.122892721,-42.739521548],[-64.088007632,-42.778661392],[-64.054815569,-42.766592786],[-64.043720657,-42.763888285],[-64.011110029,-42.759827813],[-63.950387105,-42.759633071],[-63.761580509,-42.727604049],[-63.733234817,-42.717760073],[-63.731688859,-42.696789465],[-63.725874933,-42.676823842],[-63.707516627,-42.6322014],[-63.683895193,-42.592024944],[-63.681193722,-42.583455946],[-63.697475719,-42.444117005],[-63.691114905,-42.346764789],[-63.694097635,-42.334670565],[-63.713330454,-42.321429674],[-63.733141117,-42.304760698],[-63.740728371,-42.29758671],[-63.750605531,-42.285442325],[-63.758466438,-42.271905319],[-63.767195666,-42.251352255],[-63.77383685,-42.228624672],[-63.794423357,-42.188216144],[-63.803111476,-42.177027846],[-63.809182496,-42.172438613],[-63.843791131,-42.18012533],[-63.917527341,-42.205375188],[-63.971481413,-42.234676041],[-63.952121329,-42.281460296],[-63.945790063,-42.314829467],[-63.946409688,-42.336283889],[-63.952062246,-42.358390886],[-63.952766203,-42.387575284],[-63.959296839,-42.412944832],[-63.970664015,-42.435037754],[-63.980418978,-42.449033775],[-63.991562867,-42.461289021],[-64.020704676,-42.48371936],[-64.03274266,-42.498407058],[-64.044883628,-42.508786374],[-64.058522299,-42.517100215],[-64.073310706,-42.523136468]]],[[[-58.251505018,-34.191333532],[-58.257094741,-34.190234303],[-58.259853959,-34.175694108],[-58.265737652,-34.167930961],[-58.265803814,-34.164608478],[-58.247214437,-34.168048858],[-58.244910359,-34.174237728],[-58.243333459,-34.175335169],[-58.242628812,-34.185976029],[-58.245695234,-34.189400673],[-58.251505018,-34.191333532]]]]}
}'
Make sure to replace [TOKEN] with your API Access Token. If the request is successful, the response will be:
{
"numEvents": 296288,
"numFlags": 19,
"numVessels": 1260,
"flags": [
"TWN",
"unknown",
"URY",
"GBR",
"BLZ",
"KOR",
"PRT",
"LKA",
"AFG",
"ARE",
"ARG",
"UKR",
"RUS",
"KIR",
"VUT",
"CHN",
"FLK",
"CHL",
"ESP",
"JPN"
],
"timeseries": [
{
"date": "2018-01-01T00:00:00.000Z",
"value": 54144
},
{
"date": "2019-01-01T00:00:00.000Z",
"value": 54403
},
{
"date": "2020-01-01T00:00:00.000Z",
"value": 52402
},
{
"date": "2021-01-01T00:00:00.000Z",
"value": 68412
},
{
"date": "2022-01-01T00:00:00.000Z",
"value": 61037
},
{
"date": "2023-01-01T00:00:00.000Z",
"value": 5890
}
]
}
EXAMPLE 3 - GET PORT VISITS STATS IN A REGION ID (SENEGAL)
curl --location --request POST 'https://gateway.api.globalfishingwatch.org/v3/events/stats' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer {access-token}'
--header 'Content-Type: application/json' \
--data-raw '{
"confidences": [ "3","4"],
"datasets": [ "public-global-port-visits-events:latest"],
"startDate": "2018-01-01",
"endDate": "2019-01-31",
"timeseriesInterval": "YEAR",
"region": {
"dataset": "public-eez-areas",
"id": 8371
}
}
'
Make sure to replace [TOKEN] with your API Access Token. If the request is successful, the response will be:
{
"numEvents": 4366,
"numFlags": 72,
"numVessels": 1368,
"flags": [
"SWE",
"FRA",
"unknown",
"GIB",
"TZA",
"ATG",
"PRT",
"GRC",
"TUV",
"CAN",
"THA",
"NLD",
"ESP",
"NGA",
"COK",
"HRV",
"MNE",
"KNA",
"COM",
"BRB",
"HKG",
"GNB",
"GHA",
"CIV",
"SOM",
"CHN",
"TGO",
"LUX",
"UKR",
"SEN",
"KIR",
"CHE",
"VNM",
"VCT",
"KOR",
"SLV",
"DNK",
"BEL",
"MLT",
"TWN",
"DEU",
"AUS",
"USA",
"VUT",
"NOR",
"CYM",
"TUR",
"NIU",
"PHL",
"GBR",
"POL",
"BHS",
"SLE",
"SYC",
"CYP",
"BMU",
"AGO",
"PCN",
"BLZ",
"CPV",
"PLW",
"WLF",
"SGP",
"GIN",
"MHL",
"BES",
"WSM",
"RUS",
"ITA",
"GMB",
"MAR",
"LBR",
"PAN"
],
"timeseries": [
{
"date": "2018-01-01T00:00:00.000Z",
"value": 4003
},
{
"date": "2019-01-01T00:00:00.000Z",
"value": 363
}
]
}
Insights API
Introduction Vessels Insights API
The Insights API is a set of indicators or 'vessel insights' that bring together important information on a vessel's known activity (based on AIS), vessel identity information and public authorizations. The objective of the insights is to support risk-based decision-making, operational planning, and other due diligence activities by making it easier for a user to identify vessel characteristics that can indicate an increased potential or opportunity for a vessel to engage in IUU (Illegal, Unreported, or Unregulated) fishing. The vessel insights were originally developed in collaboration with TMT, the Ocean Risk & Resilience Action Alliance (ORRAA) and representatives from the insurance industry. The project aimed to strengthen an insurance underwriter's ability to assess the potential that a vessel they insure may engage in or support IUU fishing. The collaboration included a pilot whereby insurance underwriters were asked to provide feedback on Vessel Viewer and the utility of the insights. The insights were then expanded for testing by port inspectors, MCS officers, the seafood industry, and others, with feedback from all pilot groups informing improvements and future efforts.
Insights by vessels
This endpoint allow to get vessel insights for one or several vessel_ids. You can define what insight you want to get. It will return a list of events, you can use Events API to get the details of the event.
These are the available insights:
Any apparent fishing events in no-take MPAs
Any apparent fishing events detected in areas with no known RFMO authorization
The vessel’s AIS coverage metric
Any AIS off events
If the vessel is present on an RFMO IUU vessel list
In order to avoid any misinterpreation of these insights, please refer to our Data Caveats here.
Insights by vessels - HTTP Request
POST https://gateway.api.globalfishingwatch.org/v3/insights/vessels
Insights by vessels - URL Parameters
No query params
Insights by vessels - Body
All parameters should be sent in the body
Key | Description | Required | Format | Param Type |
---|---|---|---|---|
includes | This query param allows the user to request one or multiple insights in one request. You can use it to avoid calculating all insights in case you just need one. Possible values: FISHING, GAP, COVERAGE, VESSEL-IDENTITY-IUU-VESSEL-LIST | True | string ENUM Possible values: FISHING, GAP, COVERAGE, VESSEL-IDENTITY-IUU-VESSEL-LIST | body |
startDate | string example: 2021-01-01 | True | string format YYYY-MM-DD | body |
endDate | string example: 2021-01-01 | True | string format YYYY-MM-DD | body |
vessels | Array including API Dataset ID and Vessel ID which will allow you to get the details in Events API. See example on the right. | True | object | body |
GET INSIGHTS FOR A VESSEL RELATED TO FISHING EVENTS
curl --location --request POST 'https://gateway.api.globalfishingwatch.org/v3/insights/vessels' \
--header 'Authorization: Bearer [TOKEN]' \
--header 'Content-Type: application/json' \
--data-raw '{
"includes": [ "FISHING"],
"startDate": "2020-01-01",
"endDate": "2020-12-31",
"vessels": [
{"datasetId":"public-global-vessel-identity:latest","vesselId":"785101812-2127-e5d2-e8bf-7152c5259f5f"}
]
}
Make sure to replace [TOKEN] with your API Access Token. If the request is successful, the response will be:
{
"period": {
"startDate": "2020-01-01",
"endDate": "2020-12-31"
},
"apparentFishing": {
"datasets": [
"public-global-fishing-events:v3.0"
],
"historicalCounters": {
"events": 2546,
"eventsInRFMOWithoutKnownAuthorization": 0,
"eventsInNoTakeMPAs": 18
},
"periodSelectedCounters": {
"events": 523,
"eventsInRFMOWithoutKnownAuthorization": 0,
"eventsInNoTakeMPAs": 18
},
"eventsInRfmoWithoutKnownAuthorization": [],
"eventsInNoTakeMpas": [
"9864ab75303cfc44fe4542fa755987e8",
"77d84fa537395a6c29fc8509e337e82b",
"9f053082b086a5c66fd87d54fb456bb9",
"20db28e5e09ce91c347a54637460fb19",
"2a937121e418ef38889fc9395461ee68",
"b920508f737e8b9c678e3fef74a6799a",
"e62a86cc34b5eba3826a02ee1fa6f846",
"1ce80b9f862d28c2f470561021eac8bb",
"a530632e0c5221a931520c60593b33bf",
"031c029d9ab3ab2b4f7151df2b0a13c7",
"d24003cbd7bf9b4cddb174a967136635",
"9f7972a6b56d99f60d0586cf4545cabf",
"8ed2cc511fb59e96e5549d902a65e176",
"97bbac02d35fa9e2a3dc196502ef47b8",
"29a91f15fd844bd0fc344d47d3490a9d",
"877f42def050b3784e4a9d1387503220",
"11d484a2d0e397fcf5a8a5a9cb9124a8",
"af534af9aec9149add9f66265296de7d"
]
}
}
GET INSIGHTS FOR A VESSEL RELATED TO AIS OFF EVENTS
curl --location --request POST 'https://gateway.api.globalfishingwatch.org/v3/insights/vessels' \
--header 'Authorization: Bearer [TOKEN]' \
--header 'Content-Type: application/json' \
--data-raw '{
"includes": [ "GAP"],
"confidences": [],
"startDate": "2022-07-11",
"endDate": "2023-07-11",
"vessels": [
{"datasetId":"public-global-vessel-identity:latest","vesselId":"2339c52c3-3a84-1603-f968-d8890f23e1ed"}
]
}'
Make sure to replace [TOKEN] with your API Access Token. If the request is successful, the response will be:
{
"period": {
"startDate": "2022-07-11",
"endDate": "2023-07-11"
},
"gap": {
"datasets": [
"public-global-gaps-events:v3.0"
],
"historicalCounters": {
"events": 1,
"eventsGapOff": 1
},
"periodSelectedCounters": {
"events": 1,
"eventsGapOff": 1
},
"aisOff": [
"9ce75aa2a483a06f41155132b83dc744"
]
}
}
GET INSIGHTS FOR A VESSEL RELATED TO BEING LISTED IN IUU LIST
curl --location --request POST 'https://gateway.api.globalfishingwatch.org/v3/insights/vessels' \
--header 'Authorization: Bearer [TOKEN]' \
--header 'Content-Type: application/json' \
--data-raw '{
"includes": [ "VESSEL-IDENTITY-IUU-VESSEL-LIST"],
"confidences": [],
"startDate": "2020-01-01",
"endDate": "2024-04-10",
"vessels": [
{"datasetId":"public-global-vessel-identity:latest","vesselId":"2d26aa452-2d4f-4cae-2ec4-377f85e88dcb"}
]
} ]
}
Make sure to replace [TOKEN] with your API Access Token. If the request is successful, the response will be:
{
"period": {
"startDate": "2020-01-01",
"endDate": "2024-04-10"
},
"vesselIdentity": {
"datasets": [
"public-global-vessel-identity:v3.0"
],
"iuuVesselList": {
"valuesInThePeriod": [
{
"from": "2020-01-01T00:00:00Z",
"to": "2024-03-01T00:00:00Z"
}
],
"totalTimesListed": 1,
"totalTimesListedInThePeriod": 1
}
}
}
Datasets API
Datasets API introduction
Datasets API allow you to get SAR fixed infrastructure data in MVT format
Get SAR fixed infrastructure context layer in MVT format
EXAMPLE : GET SAR FIXED INFRASTRUCTURE DATA IN MVT FORMAT BY COORDINATES
# Make sure to replace [TOKEN] with your API Access Token
curl --location 'https://gateway.api.globalfishingwatch.org/v3/datasets/public-fixed-infrastructure-filtered:latest/context-layers/1/0/1' \
-H "Authorization: Bearer [TOKEN]" \
-o "sar_fixed_infrastructure.mvt"
If the request is successful, in this example the response will be a MVT file similar to this.
Get SAR (Synthetic-aperture radar) offshore infrastructure data between 2017 to 3 months ago that were detected with satellite imagery and classified with deep learning. Refer to the Paper Paolo et al. 2024, Nature for more details.
This is the same API used in our Public Map, which means that we are filtering the data compared to the Data Download Portal. In the Map and API we exclude data labeled as noise, lake_maracaibo is relabeled oil, only structures that have been detected for at least 3 months and have a predicted noise probability of < .3 are included, and data from certain regions, such as Chile, Canada, and Norway are filtered to remove additional noisy detections. Specifically, we are removing these coordinates:
- (lat BETWEEN -50.6 AND -41.51 AND lon BETWEEN -80.44 AND -75.71) -- chile
- (lat BETWEEN 50.6 AND 74.02 AND lon BETWEEN -115.8 AND -60.53) -- canada
- (lat BETWEEN 64.2 AND 67.43 AND lon BETWEEN 10.58 AND 16.06) -- norway_s
- (lat BETWEEN 67.63 AND 71.19 AND lon BETWEEN 12.44 AND 31.08) -- norway_n
You can find on the right, this example:
- EXAMPLE - All SAR fixed infrastructure in zoom level 1 and x index (lat) of the tile 0 and y index (lon) 1
Use Cases using this data
Maritime domain awareness
Infrastructure locations can support maritime domain awareness, and understanding of other activities occurring at sea.
Infrastructure data supports assessments of ocean industrialization, facilitating monitoring of areas experiencing build-up or new development
Monitoring vessels
Infrastructure locations can be used to analyse the behaviour of vessels associated with infrastructure, including grouping vessels based on their interaction with oil and wind structures.
Interactions between vessels and infrastructure can help quantify the resources required to support offshore industrial activity
The impacts of infrastructure on fishing, including attracting or deterring fishing, can be analysed.
Marine protected areas (MPAs) and marine spatial planning During the planning stage in the designation of new protected areas, knowing the location of existing infrastructure will be vital to understand which stakeholders shall be included in the consultation process, to understand potential conflicts, and identify easy wins.
Environmental impacts Infrastructure locations can be used to help detect marine pollution events, and to differentiate between types of pollution events (e.g. pollution from vessels versus pollution from platforms)
Get fixed infrastructure in MVT - HTTP Request
GET https://gateway.api.globalfishingwatch.org/v3/datasets/public-fixed-infrastructure-filtered:latest/user-context-layers/{z}/{x}/{y}
Get fixed infrastructure in MVT - URL Parameters
Parameter | Description | Required | Format | Param Type |
---|---|---|---|---|
z | Zoom level (from 0 to 9 for SAR fixed infrastructure dataset) Example: 1 | True | number | path |
x | X index (lat) of the tile | True | number | path |
y | Y index (lon) of the tile | True | number | path |
Get fixed infrastructure in MVT - Response
Field | Description |
---|---|
structure_id | unique identifier for all detections of the same structure. Example: 254126 |
lat | latitude of the structure in float format, example: 69.0376701416465 |
lon | longitude of the structure in float format, example: -136.835064603853 |
label | predicted structure type. Possible values: oil , wind , and unknown |
structure_start_date | the first date the structure was detected in epoch format, example: 1483228800000 |
structure_end_date | the last date the structure was detected in epoch format, example: 1709251200000 |
label_confidence | label confidence. Confidence levels of high , medium , and low are assigned to each structure, and are conditional on where the detections fell in relation to the boundaries of manually developed wind and oil polygons, and whether the label has changed from the previous month. The confidence field can be used to filter analysis. |
General API Documentation
Key Concepts: API DATASET and VESSEL ID
API DATASET
API dataset is a key parameter to identify which data you are requesting.
Global Fishing Watch is harnessing innovative technology to turn transparent data into actionable information and drive tangible change in the way that our ocean is governed. Data accessed through the Global Fishing Watch APIs is as accurate as possible, but should be used with the data caveats described in each dataset in mind.
API Dataset for 4Wings API | Description |
---|---|
public-global-fishing-effort:latest |
AIS apparent fishing effort from 2012 to 96 hours ago, check more detail about data caveats here. The filters that can be applied to this dataset include: flag , geartype and vessel_id . Example: flag in ('ESP'). |
public-global-sar-presence:latest |
SAR vessel detections which means industrial vessels between 2017 to 5 days ago that were detected with satellite imagery and classified with deep learning. For more detail check the Paper Paolo et al. 2024, Nature. Check more detail about data caveats here. The filters that can be applied to this dataset include: matched , flag , vessel_id , geartype , neural_vessel_type and shiptype . Examples: matched='false' which means all SAR vessel detections that didn't match with an AIS vessel. or neural_vessel_type='Likely Fishing' which means all SAR vessel detections that the neural model that it only has in account the thumbnails of the sar images identify as Likely Fishing (this is useful to analyze detections that had no matching with AIS vessels) . The filter neural_vessel_type accepts as possible values: "Likely non-fishing", "Likely Fishing" or "Unknown" |
API Dataset for Events API | Description |
---|---|
public-global-encounters-events:latest |
AIS Encounters events between these vessel types: fishing-carrier,fishing-support, fishing-bunker, fishing-fishing, tanker-fishing, carrier-bunker and support-banker. Check more detail about data caveats here |
public-global-loitering-events:latest |
AIS Loitering events for all vessel types. Check more detail about data caveats here |
public-global-fishing-events:latest |
AIS apparent fishing events. Check more detail about data caveats here |
public-global-port-visits-events:latest |
AIS port visits for all vessel types. Check more detail about data caveats here . This dataset points to public-global-port-visits-events:v3.1 , see details below. |
public-global-gaps-events:latest |
AIS off events for all vessel types. This dataset is in prototype stage which means it is still under quality assurance processes and there may be inaccuracies, or issues within the data that have not been resolved yet. It may also not reflect the most recent or up-to-date information, and new data points or changes in the data may not be included. Check more detail about data caveats [here].(#data-caveat) |
API Dataset for Vessels API | Description |
---|---|
public-global-vessel-identity:latest |
All vessel types based on AIS and public international, national and regional registries. Check more detail about data caveats here |
API Dataset for Datasets API | Description |
---|---|
public-fixed-infrastructure-filtered:latest |
API dataset with all offshore infrastructure between 2017 to 3 months ago that were detected with satellite imagery and classified with deep learning. Refer to the Paper Paolo et al. 2024, Nature for more details. Check more detail about data caveats here |
API DATASETS SPECIFIC VERSIONS
When you are sending latest
alias, you still get the detail of the specific API Dataset in the header of the response, for example:
- If you send this API dataset
public-global-fishing-effort:latest
- In the response, in a custom header named x-datasets you will get
public-global-fishing-effort:v3.0
In case you want to request an specific version of the API Dataset, this is the list of available versions:
4Wings API | Description |
---|---|
public-global-fishing-effort:v3.0 |
AIS apparent fishing effort generated using GFW (Global Fishing Watch) Data Pipeline version 3. The differences and impact on the data with this new version can be found here. |
public-global-fishing-effort:v20231026 |
AIS apparent fishing effort generated using GFW Data Pipeline version 20201001. The difference with the previous API dataset is that the fishing vessels are identified using a new logic which should be generally reflective of the previous fishing vessel list. More specifically, the restrictions on which fishing vessels to include in apparent fishing effort should be very close to the same. Check more detail about data caveats here. |
public-global-sar-presence:v3.0 |
SAR vessel detections which means industrial vessels between 2017 to 5 days ago that were detected with satellite imagery and classified with deep learning. We use SAR imagery from the Copernicus Sentinel-1 mission of the European Space Agency (ESA) . For more detail check the Paper Paolo et al. 2024, Nature. . Review data caveats here. AIS vessel matching using data from Data Pipeline version 3 (more information about this new version can be found here.) |
public-global-sar-presence:v20231026 |
Same as public-global-sar-presence:v3.0 but using AIS vessel matching using data from Data Pipeline version 20201001. |
Events API | Description |
---|---|
public-global-encounters-events:v3.0 |
AIS Encounters events generated using GFW Data Pipeline version 3. The differences and impact on the data with this new version can be found here. For data caveats specific to encounter events, check here. For general data caveats on events, check here |
public-global-loitering-events:v3.0 |
AIS Loitering events for all vessel types, generated using GFW Data Pipeline version 3. The differences and impact on the data with this new version can be found here. For data caveats specific to loitering events, check here. For general data caveats on events, check here |
public-global-fishing-events:v3.0 |
AIS apparent fishing events generated using GFW Data Pipeline version 3. The differences and impact on the data with this new version can be found here. For data caveats specific to fishing events, check here. For general data caveats on events, check here |
public-global-port-visits-events:v3.0 |
AIS port visits generated using GFW Data Pipeline version 3 for all vessel types. The differences and impact on the data with this new version can be found here. In this dataset, the location of a port visit is based on the average location of the port events that make up a port visit, see definition here. For data caveats specific to port visits, check here. For general data caveats on events, check here |
public-global-port-visits-events:v3.1 |
AIS port visits generated using GFW Data Pipeline version 3 for all vessel types using the a new method, instead of the average location of the port events, it uses the intermediate anchorage location, the first Port Stop or Port Gap if a Port Stop does not exist, to provide a more precise location estimate of the actual port visit by the vessel. For more details and examples refer to this FAQ. For data caveats specific to port visits, check here. For general data caveats on events, check here. The tag latest is now pointing to this new version |
public-global-gaps-events:v3.0 |
AIS off events using GFW Data Pipeline version 3 for all vessel types. The differences and impact on the data with this new version can be found here. For data caveats specific to fishing events, check here. For general data caveats on events, check here. This dataset is in prototype stage which means it is still under quality assurance processes and there may be inaccuracies, or issues within the data that have not been resolved yet. It may also not reflect the most recent or up-to-date information, and new data points or changes in the data may not be included. |
public-global-encounters-events:v20231026 |
AIS Encounters events generated using GFW Data Pipeline version 20201001 combining more vessel types: fishing-carrier,fishing-support, fishing-bunker, fishing-fishing, tanker-fishing, carrier-bunker and support-banker. The difference with the previous API dataset is that the carrier and fishing vessels are identified using a new logic which (1) makes the carrier list more restrictive given the requirements for matching AIS record (vessel_id) to a carrier vessel registry record is more precise and (2) makes the fishing list less restrictive given fishing vessel with potential offsetting and noisy data. Previously these fishing vessels with noise were filtered into the ‘other’ vessel type and excluded from this API dataset. Check more detail about data caveats here |
public-global-loitering-events:v20231026 |
AIS Loitering events for all vessel types. The difference with the previous API dataset is that you can get all vessel types loitering events now and if you filter by carrier vessels those are identified using a new logic which makes the carrier list more restrictive given the requirements for matching AIS record (vessel_id) to a carrier vessel registry record is more precise. This means there will be a fewer number of vessels identified as carriers. Check more detail about data caveats here |
public-global-fishing-events:v20231026 |
AIS apparent fishing events generated using GFW Data Pipeline version 20201001. The difference with the previous API dataset is that the fishing vessels are now identified using a new logic which is less restrictive. Fishing events are run for all vessels on any fishing vessel list (registry, inferred, AIS self reported) and known fishing vessels that were originally excluded from the fishing vessel list due to noise. They will now be identified as fishing and then events are included in this dataset. Check more detail about data caveats here |
public-global-port-visits-c2-events:v20231026 |
AIS port visits generated using GFW Data Pipeline version 20201001 for all vessel types. Check more detail about data caveats here |
public-global-gaps-events:v20231026 |
AIS off events for all vessel types. This dataset is in prototype stage which means it is still under quality assurance processes and there may be inaccuracies, or issues within the data that have not been resolved yet. It may also not reflect the most recent or up-to-date information, and new data points or changes in the data may not be included. Check more detail about data caveats here |
Vessels API | Description |
---|---|
public-global-vessel-identity:v3.0 |
API dataset with all vessel types including: support, carrier, bunker, fishing, discrepancy, cargo, passenger, seismic_vessel, gear and other using GFW Data Pipeline version 3. It combines information from GFW core AIS identity data with GFW registry database to enable an improved understanding of vessel identity over time. The differences and impact on the data with this new version can be found here. For data caveats specific to vessel identity, check here. |
public-global-vessel-identity:v20231026 |
API dataset with all vessel types including: support, carrier, bunker, fishing, discrepancy, cargo, passenger, seismic_vessel, gear and other using GFW Data Pipeline version 20201001. It combines information from GFW core AIS identity data with GFW registry database to enable an improved understanding of vessel identity over time. Check more detail about data caveats here |
Datasets API | Description |
---|---|
public-fixed-infrastructure-filtered:v1.1 |
API dataset with all offshore infrastructure between 2017 to 3 months ago that were detected with satellite imagery and classified with deep learning. Refer to the Paper Paolo et al. 2024, Nature for more details. Check more detail about data caveats here |
API DATASETS VERSIONING
In case a new API Dataset version is active and you are requesting an specific version, you will see a notification in the header response clarifying that there is a newest API Dataset version.
Old API datasets will remain available for 3 months until they are deprecated. If you request an API dataset that is deprecated, you will receive a 404 error explaining that the dataset is deprecated and that you need to use the newest one.
VESSEL ID
A unique vessel identity developed for internal use by Global Fishing Watch and API users, that combines available vessel identifiers such as name, callsign, and Maritime Mobile Service Identity (MMSI) in order to identify vessels that may not consistently transmit AIS, or the same identifiers on AIS, over time. This value will allow you to connect the different APIs. In Vessel API it is the field id
inside the object selfReportedInfo
.
Errors Codes
The GFW API uses the following error codes:
Range | Description |
---|---|
2XX |
Successful execution |
4XX |
Error on the client side |
5XX |
Errors on the server side |
Code | Meaning |
---|---|
200 | OKAY - The request has succeeded. |
202 | Accepted - The request has been accepted for processing, but the processing has not been completed. |
204 | No content - The server has successfully fulfilled the request and that there is no additional content to send in the response payload body.For example when you ask for an empty tile in /4wings/tile/heatmap/ |
401 | Unauthorized - Your API Access Token is wrong or your don't have permissions to access that dataset. |
403 | Forbidden - The server understood the request but refuses to authorize it. |
404 | Not Found - The specified data could not be found. |
422 | Unprocessable Entity -The server understands the content type of the request entity, and the syntax of the request entity is correct but was unable to process the contained instructions. For example, this error condition may occur if a a user requests in /4wings/tile/heatmap/ a zoom greater than 12 since it is semantically erroneous, we only support up to zoom level 12. |
429 | Too Many Requests - The server received more request that the user can do. For example, this error condition may occur if a user tries to do several reports at the same time. |
503 | Service Unavailable - We're temporarily offline for maintenance. Please try again later or contact us in [email protected] |
Error Code Examples
If you are asking for a wrong API dataset, you get this error:
{
"statusCode": 404,
"error": "Not Found",
"messages": [
{
"title": "Not Found",
"detail": "Dataset with id public-global-fishing-effort:latest not found"
}
]
}
If you are missing one mandatory field, for a example 'Query', you get this error:
{
"statusCode": 422,
"error": "Unprocessable Entity",
"messages": [
{
"title": "Query",
"detail": "Query param dataset is required"
}
]
}
If you have insufficient permissions, you get this error:
{
"statusCode": 403,
"error": "Forbidden",
"messages": [
{
"title": "Forbidden",
"detail": "Insufficient permissions for public-global-fishing-effort:latest datasets"
}
]
}
If you send zoom > 12 in
/4wings/tile/heatmap/
, you get this error:
{
"statusCode": 422,
"error": "Unprocessable Entity",
"messages": [
{
"title": "z",
"detail": "The tiler does not support zoom levels greater than 12"
}
]
}
If you send a report at the same time that you doing other report, you get this error:
{
"statusCode": 429,
"error": "Too Many Requests",
"messages": [
{
"title": "Too Many Requests",
"detail": "You can only generate one report at the same time. If you need this feature, contact us"
}
]
}
If you try to generate a style url (
/v3/4wings/generate-png
) and it doesn't exist data for the filters.`, you get this error:
{
"statusCode": 204
}
In 4Wings Report API, if you are sending a custom polygon that is too large, you get this error in html. In this case, we recommend sending a region id, see more details here
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<title>413 Request Entity Too Large</title>
</head>
<body text="#000000" bgcolor="#ffffff">
<h1>Error: Request Entity Too Large</h1>
<h2>Your client issued a request that was too large.</h2>
<h2>
<script>
(function () {
/*
Copyright The Closure Library Authors.
SPDX-License-Identifier: Apache-2.0
*/
var c = function (a, d, b) {
a = a + "=deleted; path=" + d;
null != b && (a += "; domain=" + b);
document.cookie = a + "; expires=Thu, 01 Jan 1970 00:00:00 GMT";
};
var g = function (a) {
var d = e,
b = location.hostname;
c(d, a, null);
c(d, a, b);
for (var f = 0; ; ) {
f = b.indexOf(".", f + 1);
if (0 > f) break;
c(d, a, b.substring(f + 1));
}
};
var h;
if (4e3 < unescape(encodeURI(document.cookie)).length) {
for (
var k = document.cookie.split(";"), l = [], m = 0;
m < k.length;
m++
) {
var n = k[m].match(/^\s*([^=]+)/);
n && l.push(n[1]);
}
for (var p = 0; p < l.length; p++) {
var e = l[p];
g("/");
for (var q = location.pathname, r = 0; ; ) {
r = q.indexOf("/", r + 1);
if (0 > r) break;
var t = q.substring(0, r);
g(t);
g(t + "/");
}
"/" != q.charAt(q.length - 1) && (g(q), g(q + "/"));
}
h = !0;
} else h = !1;
h &&
setTimeout(function () {
if (history.replaceState) {
var a = location.href;
history.replaceState(null, "", "/");
location.replace(a);
}
}, 1e3);
})();
</script>
</h2>
</body>
</html>
Most error responses have this format, except when the request entity is too large (see example on the right):
{
"statusCode": 4XXX or 5XXX,
"messages": [{
"title": "[Title]",
"detail": "[Detail]"
}],
"error": "[Generic error]"
}
Response
Responses varies in case of:
a single resource, the API returns the result directly.
a collection of resources, the API returns the next response format (except in the case that the response is not a JSON)
Total: It is the counter of total resources available
Limit: The number of resources that the API returns in the response
Offset: It is the number of resources that the API skips in the response.
NextOffset: It is the next number of resources that a user should exclude in the response to paginate correctly.
Metadata: In this property, the API should return any other valuable information. For instance, in the case of the search, the API could add information related to the query executed, terms suggestions, etc.
Entries: The list of resources.
Data caveat
How are the events estimated?
The automatic identification system (AIS) data is obtained from a combination of commercial and government sources. Learn more. The data is then used to estimate vessel identity and activity, including apparent fishing,encounters, loitering events, and port visits.
Any and all references to activity events, including fishing, encounters, loitering, AIS off (aka GAP) and port visits should be understood in the context of Global Fishing Watch's algorithms, which are best efforts to determine apparent vessel activity events based on AIS data collected via satellites and terrestrial receivers. As AIS data varies in completeness, accuracy and quality, it is possible that some events are not identified. It is also possible that some events are identified but are incorrect or do not indicate actual fishing, transshipment, or port access. For these reasons, Global Fishing Watch qualifies all designations of events, including synonyms of event terms such as "fishing effort," "fishing" or "fishing activity," as apparent rather than certain. Any/all Global Fishing Watch information about apparent events should be considered an estimate and must be relied upon solely at your own risk. Global Fishing Watch is constantly improving processes to make sure event algorithms and designations are as accurate as possible.
Encounter event
Encounters may indicate potential transshipment activity between two vessels. Encounters can occur in the vessel viewer between a carrier and fishing vessel or a fishing support vessel and a fishing vessel. AIS data is used to calculate encounters based on the distance between the two vessels, vessel speeds, and duration in a given area. An encounter is defined as a period when two vessels are detected within 500 meters of each other for at least two hours and traveling at a median speed of less than 2 knots, while at least 10 km from a coastal anchorage. Check more details here
You can read more about transshipment behavior from our report or scientific publication.
Loitering event
Loitering is when a single vessel exhibits behavior indicative of a potential encounter event. It is possible that loitering events do not indicate a potential transshipment. For example, other events in which a vessel may remain fairly stationary include maintenance or waiting outside of port for permission to dock. AIS data is used to calculate loitering events based on vessel speed and distance from shore. Loitering occurs when a carrier vessel travels at an average speed of less than 2 knots, while at least an average of 20 nautical miles from shore. Loitering events are not displayed for fishing vessels, due to the challenge in distinguishing loitering from other low speed operations related to fishing activity. Due to the individual definitions of loitering events and encounter events, it is possible for a loitering event to overlap with an encounter event, representing the same activity, or the loitering event may encompass one or more encounter events.
Check more details here
Port visit events
Movements in and out of a port are automatically detected by Global Fishing Watch and categorized according to four distinct types of events: port entry, port stop, port gap (i.e. a gap in AIS transmission while in port) and port exit. When at least two of these events occur, then a port visit is detected. Therefore, a port visit occurs when a vessel has a port entry, a port stop or port gap, and potentially followed by a port exit event, depending on the confidence of the port visit (see next question on how port visit confidence is determined). This means the vessel is within 3 km of an anchorage (port entry), and is moving between 0.5 and 0.2 knots (port stop), or is within an anchorage but has a gap in AIS transmission for at least 4 hours (port gap), and then the vessel transits more than 4 km outside of the anchorage point (port exit). Ports are based upon the Global Fishing Watch anchorages dataset, a global database of anchorage locations where vessels congregate. More information on anchorages can be found here.
Confidence levels of a port visit
- A port visit with low confidence (level = 2) indicates that only a port stop or gap event was detected using AIS within the port.Only a port stop OR gap was identified based on AIS transmission.
- Medium confidence (level = 3) indicates that a port entry or exit was detected using AIS, along with a stop or gap within the port.
- High confidence (level = 4) indicates that the vessel was identified using AIS with an entry, stop or gap, and exit within port. A port visit with a lower confidence may sometimes be a false port visit caused by noisy AIS transmission and requires a further inspection of the vessel tracks.
Definition of each por event:
PORT ENTRY: vessel that was not in port gets within 3km of anchorage point
PORT STOP: begin: speed < 0.2 knots; end: speed > 0.5 knots
PORT GAP: AIS gap > 4 hours; start is recorded 4 hours after the last message before the gap; end at next message after gap.
PORT_EXIT: vessel that was in port moves more than 4km from anchorage point
Apparent fishing events
Global Fishing Watch analyzes AIS data collected from vessels that our research has identified as known or possible commercial fishing vessels, and applies a fishing detection algorithm to determine “apparent fishing activity” based on changes in vessel speed and direction. The algorithm classifies each AIS broadcast data point for these vessels as either apparently fishing or not fishing and shows the apparent fishing effort on the Global Fishing Watch map. Fishing events use those data points as input and summarize them into one event for easier analysis. Fishing events are defined using the following restrictions:
Consecutive positions identified as fishing are grouped together into a single event
Fishing positions which appear consecutively, but are 10 km apart or more than 2 hours apart are separated into distinct events.
Fishing events within 1 hour and 2 km of another fishing event but possibly having intermittent transit points are grouped together into a single event.
Finally, the dataset is restricted by removing fishing events that are brief and fast, as these are less likely to indicate a realistic fishing event. The following short fishing events are removed:
Events less than 20 minutes
Events comprised of five or fewer positions;
Events that cover distance of less than 0.5 km (for all gears except estimated squid gear)
Events that cover distance of less than 50m (for estimated squid gear)
Abnormally fast moving vessel events with an average vessel speed of 10 knots or greater
Check more details about difference between fishing effort and fishing events here
AIS Off Event (aka GAP)
AIS devices are designed to continually broadcast a vessel’s position in order to serve as a collision avoidance system. It is not uncommon to observe hundreds or thousands of AIS positions for a vessel in a single day. Thus, when a vessel has an extended gap in AIS positions it can potentially indicate suspicious behaviour. However not all AIS signals broadcasted are received by satellite or terrestrial AIS receivers and thus it is inherently concerning to observe transmission gaps in a vessel’s AIS signal that are many hours long, especially in certain areas. Satellites must be overhead and terrestrial receivers require line of sight to receive AIS messages. When AIS messages may overlap in time, especially in areas of high vessel density, signal interference may result and prevent messages from being received by satellites. Subsequently, GFW records all AIS gap events over six hours (referred to as “naive gaps” or gap-intentional-disabling=false) and then uses a set of filters to identify those gaps we believe could be a cause of intentional AIS disabling.
To identify AIS gaps that are most likely due to intentional disabling rather than technical issues, GFW developed a classification model based on the following rules, which are explained in more detail in the Known Issues section below:
The gap event must be at least 12 hours
The gap must start at least 50 nautical miles from shore
The gap must start in an area with a satellite reception quality greater than 10 positions per day
The vessel must have at least 14 satellite positions in the 12 hours prior to the gap
Known Issues
Gap events less than 50 nautical miles from shore are unreliable due to differences in satellite and terrestrial AIS. Satellite AIS reception generally decreases closer to shore as high vessel densities lead to signal interference. At the same time, >99% of GFW’s terrestrial AIS messages are less than 50 nautical miles from shore - generally the upper range of terrestrial AIS receivers - and terrestrial AIS coverage varies considerably around the world. Through a combination of these factors, AIS gaps that start within 50 nautical miles could be due to numerous technical reasons, such as:
- Transitioning from areas with terrestrial AIS coverage to poor satellite AIS reception
- Poor satellite reception while approaching port followed by turning off AIS upon arrival. These situations are likely responsible for many of the very long AIS gaps (e.g. several months) in the data
Gaps shorter than 12 hours are unreliable due to satellite periodicity. The number of satellites over the horizon at different places on earth varies considerably hour to hour. At all latitudes under 60, the major peak is at 12 hours (one half a day) and the standard deviation of the number of satellites overhead is very high when considering time periods under 12 hours. For this reason, only gaps >=12 hours can be considered intentional disabling events. The 12 hour threshold accounts for the approximate amount of time required for the swath of an individual AIS satellite in a sun-synchronous orbit to cover the same location.
Reception Quality: The AIS reception quality estimates currently used in identifying these events are based on data for 2017-2019 from Welch et al. (2022) while we work to automate monthly reception quality estimates from then onwards.
Vessel API - Vessel identity information
- Vessel identity data is extracted from over 40 registries available either in the public domain or from authorities and researchers, including registries from regional fisheries management organizations, national registries, and lists compiled by researchers. Each of the lists has been obtained regularly since early 2019 and supplemented, when possible, with historical data to provide snapshots of a registry and its vessels over time.
- Even if vessel identities are matched to authorization lists, the vessels are only potentially authorized, as we can verify only that they were authorized to fish in that region and cannot verify that they were compliant with regulations on target species or catch quantities.
- Whether fishing by some of these vessels was truly unauthorized cannot be known, as public records may be incomplete or outdated, and in some regions, fishing is simply not internationally regulated.
Vessel Types
For vessel type a research and analysis is conducted in addition to using the original AIS data to identify the most likely value. Global Fishing Watch developed a carrier database and bunker database that is curated using a combination of sources, including: major RFMO vessel registry lists, publicly available national public registries, the IMO number, and a convolutional neural network—machine learning algorithm—used to estimate vessel class, as well as web and search images.
The fishing vessels identified from Global Fishing Watch come from its fishing database, which is collated using vessel public registry databases, reported AIS identity information, and estimated classification using a machine learning algorithm.
The passenger, seismic, cargo, and gear vessel classes identified from Global Fishing Watch come from its vessel database which is collated using vessel registry databases and estimated classification using a machine learning algorithm.
All support vessels are considered purse seine support vessels based on internal review.
Learn more about Global Fishing Watch vessel classes here.
Why am I seeing multiple ids when I search for a vessel?
Using Vessel API version 3, you get results from public registries inside object registryInfo
, AIS self reported data inside object selfReportedInfo
and a mix of sources (AIS, Registry and GFW machine learning models) inside object combinedSourcesInfo
.
So why do I see multiple ids inside selfReportedInfo
?
When processing AIS positions Global Fishing Watch algorithms try to match AIS position messages with AIS self-reported identity messages to assign vessel tracks throughout time to the correct vessel identity. When there is a new identity reported, Global Fishing Watch creates a new record.Often times, a new identity is reported when a vessel does have a real identity change (e.g, the vessel went to port where it changed its flag State and name). However, there are instances when the vessel simply changes the way it is transmitting on AIS. For example, a vessel will often transmit its name, IMO, MMSI, and callsign, but for a period of time it only transmits its MMSI and not the other identity values, which results in multiple identities for a single vessel.
- Search by Name = GABU REEFER and IMO = 8300949
- Vessel API returns 3 results:
Vessel Id | Name | IMO | MMSI | CALL SIGN | AIS TRANSMISSIONS |
---|---|---|---|---|---|
1da8dbc23-3c48-d5ce-95f1-1ffb6cc00161 | GABU REEFER | 8300949 | 613590000 | TJMC996 | Jan 24 2022 to Oct 19 2023 * (this last date will be updated depending on when do you make the call to the Vessel API) |
0b7047cb5-58c8-6e63-4bfd-96a6af515c91 | GABU REEFER | 8300949 | 214182732 | ER2732 | Feb 22 2019 to Sept 19 2022 |
58cf536b1-1fca-dac3-ad31-7411a3708dcd | GABU REEFER | 8300949 | 616852000 | D6FJ2 | Jan 02 2012 to Feb 23 2019 |
- In this example even though they are the same physical vessel, the identity reported in AIS
selfReportedInfo
is different. - The records show the vessel under the same IMO, however the vessel did not consistently transmit the same identity values. In this example, the vessel was likely transmitting under a different MMSI, different call sign and possibly a different owner.
With Vessel API version 3, you can link all these vessel ids since they are related to the same vessel from the information GFW pulled from the public registries that you can find under the object registryInfo
.
Exclusive economic zone boundaries definition
Exclusive economic zones (EEZs) extend up to 200 nautical miles from a country's coast. EEZ boundaries are shown as solid lines for “200 NM”, “Treaty”, “Median line”, “Joint regime”, “Connection Line”, “Unilateral claim (undisputed)” and dashed lines for “Joint regime”, “Unsettled”, “Unsettled median line” based on the “LINE_TYPE” field. For more detail on the methodology to create these boundaries, check https://marineregions.org/eezmethodology.php Source: marineregions.org. Flanders Marine Institute (2019). Maritime Boundaries Geodatabase: Maritime Boundaries and Exclusive Economic Zones (200NM), version 11.
Marine protected area boundaries definition
Marine protected areas (MPAs) are areas of the ocean set aside for long-term conservation. These can have different levels of protection, and the range of activities allowed or prohibited within their boundaries varies considerably. Source: World Database on Protected Areas.
What does it mean if an event is within a specific geographic area, such as an EEZ,MPA or RFMO?
For Encounters, Loitering, Port visits and AIS off (GAP) events
An event is considered to occur within a specific geographic area if the bounding box created for the event location— based on the minimum and maximum coordinates—overlaps with the bounding box of the geographic area known as Reference Layers. For example, if you select Argentina EEZ, you will see all encounter events where the bounding box created by minimum and maximum coordinates of the events occurred within the minimum and maximum coordinates of the Argentina EEZ. Because a bounding box method is used, it is possible the actual track coordinates do not overlap with the EEZ. Please investigate the highlighted events further on the map.
For apparent fishing events
An event is deemed to take place within a designated geographical region when its tracks intersect with the defined boundaries of the geographic areas referred to as Reference Layers. This determination is made using the point-in-polygon (PIP) method, which assesses whether a specific point along the event's path falls within, outside of, or precisely on the perimeter of a polygon.
It is absolutely recommended to inspect the track manually since it can happen that there are events occurring along a boundary where in many cases the vessel in question was fishing outside/along the EEZ but then barely goes inside the EEZ for a short time. This is why we encourage you to manually inspect vessels fishing in an area they aren’t supposed to be, as while many fishing events happened just barely inside an EEZ, the majority of the activity happened on the high seas. Another example is when the vessel appeared to be transiting and it was a false fishing event, or the activity happened predominantly outside the no take MPA.
How does GFW calculate that an Event has a publicly listed authorization?
Events that have publicly listed authorization information are calculated only for events on the high seas and in the 5 tuna RFMOs (IATTC, ICCAT, IOTC, CCSBT, WCPFC), SPRFMO and NPFC. Events outside these areas, and specifically in EEZs are not flagged as potential risks because Global Fishing Watch doesn’t have national registries in the database. In the future, we are exploring adding other RFMOs, contact [email protected] for any recommendation. The system only keeps the records where the authorization interval overlaps with the activity interval of the vessel(s) in the event.
Understanding authorization fields in the API:
Fishing events: .
PUBLICLY_AUTHORIZED: if there is authorization record for vessel in RFMO where event occurred at time of the event. If an event occurred in the RFMO overlap area, if the vessel is authorised to one or more of the RFMOs where the event occurred, then it is PUBLICLY_AUTHORIZED.
NOT_MATCHING_RELEVANT_PUBLIC_AUTHORIZATION: if there is no authorization record for vessel in RFMO or RFMO overlap area where event occurred at time of event.
PENDING_INFO: if an event occurred after the last registry scrape date (generally in the past month) then the event may be PENDING_INFO, as there is not up to date authorization records.
potentialRisk: true if PUBLICLY_AUTHORIZED is false and the event is not in EEZ. If vessel is in EEZ we do not flag events as potentialRisk as we do not have national registry lists.
Encounter events:
PUBLICLY_AUTHORIZED: Based on joint public authorization status. If both vessels in the encounter are publicly authorised to the same RFMO where the event took place, the event is PUBLICLY_AUTHORIZED. If the encounter is in an RFMO overlap area, both vessels must be authorised to all the RFMOs.
NOT_MATCHING_RELEVANT_PUBLIC_AUTHORIZATION: If the encounter is in an RFMO overlap area, both vessels must be authorised to at least one of the RFMOs. If the vessels in the encounter are authorised, but to different RFMOs, the vessel is flagged as a potential Risk (eg a carrier flagged to SPRFMO and fishing vessel flagged to IATTC would not be authorised to transship the same fish species).
PENDING_INFO: if an event occurred after the last registry scrape date (generally in the past month) then the event may be PENDING_INFO, as there are not up to date authorization records.
PARTIALLY_MATCHED: If the encounter is in an RFMO overlap area, both vessels must be authorised to at least one of the RFMOs.
potentialRisk: when the event has NOT_MATCHING_RELEVANT_PUBLIC_AUTHORIZATION and the event is not in EEZ then, potentialRisk is true. If the event is in EEZ we do not flag an event as potentialRisk as we do not have national registry lists.
Important caveats
Even if a vessel is PUBLICLY_AUTHORIZED from the registry the vessel should be verified by the user for the specific vessel activity of interest.
The logic GFW implemented for authorization is not the same as GFW Carrier Vessel Portal
What does it mean that an API Dataset is in Prototype stage?
It means it is still under quality assurance processes and there may be inaccuracies, or issues within the data that have not been resolved yet. It may also not reflect the most recent or up-to-date information, and new data points or changes in the data may not be included.
Insights API: Fishing detected in no-take MPAs
For details on how an Fishing event is estimated, please refers to our Data Caveats.
To create this indicator, apparent fishing events are cross-referenced with the boundaries of no take MPAs (see source here) to create this indicator. If our algorithms have detected apparent fishing activity within the boundaries of a no take MPA, then this is flagged in the API result.
Caveats: Events close to boundary lines may be reported as being inside a boundary when, in fact, they occurred outside of it. We recommend that you check the vessel positions on the Map alongside adding the MPA layer to see the boundaries and confirm exactly where the vessel was operating.
Insights API: Fishing event detected outside known authorized areas
For details on how an Fishing event is estimated, please refers to our Data Caveats.
To create this indicator, apparent fishing events are cross-referenced with authorization information that Global Fishing Watch has compiled from 7 RFMOs (CCSBT, IATTC, ICCAT, IOTC, NPFC, SPRFMO, and WCPFC) to create this risk indicator. If a vessel is believed to have fished in an RFMO where, based on our information, there is no known authorization, then this is flagged in the risk summary.
Caveats: - Events close to boundary lines may be reported as being inside a boundary when, in fact, they occurred outside of it. We recommend that you check the vessel positions on the Map to see the boundaries and confirm exactly where the vessel was operating.
This indicator only covers RFMO authorizations, it does not cover national registration or licensing lists as we do not have access to national databases at this time.
We make our best effort to provide the most accurate and up-to-date information possible. However, sometimes there can be delays, reporting or administrative errors that result in the incorrect information displayed, both at the RFMO and in Vessel Viewer. For this reason, we always recommend you refer to additional data sources or request authorization records from a vessel to confirm any findings.
Insights API: Coverage
The coverage metric is an estimate of how well a vessel's activities, i.e. where it travelled and what it did, can be captured by the vessel’s Automatic Identification System (AIS) tracking data. The transmission of AIS during a vessel’s voyage, excluding port visits, provides the vessel’s location data, speed, and identity data. The more frequently a vessel transmits this information, the more our algorithms can characterize their activity, including fishing, encounters and loitering, and AIS off events. To calculate the coverage metric, all voyages linked to a vessel in the selected time range are segmented into one hour blocks and the total number of blocks with at least one AIS transmission are counted. The coverage metric is a percentage representing the proportion of one hour blocks a vessel is in a voyage and has at least one AIS transmission. You can read more about our work on transmission gaps here.
An ‘NA’ value for coverage is because there is no reported activity for that vessel in the selected time range. This could be because of poor coverage but may also be the result of inactivity (e.g. the vessel was undergoing maintenance and had no voyages during the selected time range). In these cases, we recommend you check additional information sources and request supporting records from the vessel.
The AIS coverage metric is critical to interpreting vessel activity information. The higher the coverage, i.e. percentage, the greater confidence you can have that the activities listed are an accurate representation of the vessel’s activity. Conversely, the lower the coverage, the less confidence you can have that the activity summary represents the vessel’s actual activities. Because the coverage metric is calculated based on voyages (e.g. during the period of time the vessel is detected out of port), the coverage should be interpreted as a reflection of the vessel’s AIS reception quality while out at sea, and not reflective of AIS during port visits.
Caveats:
Coverage only calculated during voyages: The coverage calculation is limited to the period of time a vessel is detected in a voyage (e.g. the activity of a vessel out at sea, between port visits). This means that if a vessel is detected in port, this activity the vessel is active on AIS will not be factored into the coverage calculation. Some of the reasons for this are: (a) if a vessel is in port for a long period of time with its AIS on, that high coverage may be disproportionate and not reflective of the vessel’s coverage at sea, (b) vessels frequently turn off AIS once in port. If there is an issue detecting port visits for a vessel, this may affect the accuracy of the coverage calculation, given port visits are used to bound the period of time to calculate coverage for.
One hour intervals: Coverage is evaluated by looking at the frequency a vessel transmits on AIS at least once every hour. Depending on the use case or the area where a vessel is active, evaluating coverage on one hour intervals may result in low coverage. For instance, in some areas satellite reception may be low, resulting in low coverage subsequently. Fishing vessels frequently transmit Class B AIS, which has a less frequent ping rate that could result in lower coverage. These factors and others are important to consider when trying to understand the value/meaning of the coverage metric.
Coverage metric is calculated from January 1, 2017
Insights API - AIS off event (aka GAP)
For details on how AIS off event is estimated, please refers to our Data Caveats - AIS Off Event
Caveats:
This indicator only covers AIS off events that are 50 nautical miles or more from shore. Closer to shore, challenges from variable terrestrial AIS coverage and signal interference in crowded waters complicate reliable detection of disabling events.
The dataset has attempted to remove gaps that are a result of poor coverage or reception quality and similar factors that are beyond the control of the vessel.
Insights API - RFMO IUU vessel list
The regional fisheries management organization (RFMO) IUU vessel list indicates if a vessel is currently included on any RFMO list of IUU fishing vessels.
The API provides:
a counter that shows the number of times the vessel has appeared in an IUU vessel list based on GFW's historical data.
Another counter indicating the vessel's appearances in the RFMO IUU vessel list within a specified period, along with the duration of inclusion.
Data Caveats
Note that this only refers to the official RFMO IUU vessel lists, including CCAMLR, CCSBT, GFCM, IATTC, ICCAT, IOTC, NAFO, NEAFC, NPFC, SEAFO, SPRFMO, SIOFA, WCPFC. Vessels that have a history of suspected or proven IUU or other non-compliance, but have never been IUU listed by an RFMO will not be flagged in this field.
Source data is Combined IUU Vessel List from TMT but GFW has some data gaps from 1 Jan 2017, so these are the dates where we collected information:
- Sept 25 2017
- Apr 05 2018
- every month for 2020 and 2021
- Jan to Jul for 2022 and Nov 2022
- Mar, Apr, June to Oct 2023
- Jan, Mar in 2024 and every month after that
We recommend checking the original source for other time ranges and more details about caveats.
Exclusive economic zone boundaries definitions
Exclusive economic zones (EEZs) extend up to 200 nautical miles from a country's coast. For more detail on the methodology to create these boundaries, check https://marineregions.org/eezmethodology.php Source: marineregions.org. Check more details of the source here
Marine protected area boundaries definition
Marine protected areas (MPAs) are areas of the ocean set aside for long-term conservation. These can have different levels of protection, and the range of activities allowed or prohibited within their boundaries varies considerably. Source: World Database on Protected Areas. Check more details of the source here
SAR Vessel Detections Data Caveats
False positives can be produced from noise artifacts: Although we have applied sophisticated filters to remove noise (false detections and misclassifications), some false positives may still remain. This is version 1 of the dataset, and we appreciate any feedback to improve the data.
Sentinel-1 SAR data does not sample most of the open ocean. However, the vast majority of industrial activity is close to shore. Also, farther from shore, more fishing vessels use AIS (60-90%), far more than the average for all fishing vessels (about 25%). Thus, for most of the world, our detection data complemented by AIS will capture the vast majority of human activity in the global ocean.
We do not provide detections of vessels or infrastructure close to shore as it’s difficult to accurately map where the shoreline begins. We do not classify objects within 1 km of shore, because of ambiguous coastlines and rocks. Nor do we classify objects in much of the Arctic and Antarctic, where sea ice can create too many false positives; in both regions, however, vessel traffic is either very low (Antarctic) or in countries that have a high adoption of AIS (northern European or northern North American countries).
Vessel detection by SAR imagery is limited primarily by the resolution of the images (~20 m in the case of Sentinel-1 IW GRD products). As a result, we miss most vessels under 15 m in length, although an object smaller than a pixel can still be seen if it is a strong reflector, such as a vessel made of metal rather than wood or fiberglass. Especially for smaller vessels (< 25 m), detection also depends on wind speed and the state of the ocean, as a rougher sea surface will produce higher backscatter, making it difficult to separate a small target from the sea clutter. Conversely, the higher the radar incidence angle, the higher the probability of detection, as less backscatter from the background will be received by the antenna. The vessel orientation relative to the satellite antenna also matters, as a vessel perpendicular to the radar line of sight will have a larger backscatter cross section, increasing the probability of being detected.
Vessel length estimates are limited by the quality of ground truth data. Although we selected only high-confidence AIS-SAR matches to construct our training data, we found that some AIS records contained an incorrectly reported length. These errors, however, resulted in only a small fraction of imprecise training labels, and deep learning models can accommodate some noise in the training data.
Not all geographies are covered equally. Our fishing classification may be less accurate in certain regions. In areas of high traffic from pleasure crafts and other service boats, such as near cities in wealthy countries and in the fjords of Norway and Iceland, some of these smaller craft might be misclassified as fishing vessels. Conversely, some misclassification of fishing vessels as non-fishing vessels is expected in areas where all activity is dark, such as southeast asia. More importantly, however, is that many industrial fishing vessels are between 10 and 20 meters in length, and the recall of our model falls off quickly within these lengths. As a result, the total number of industrial fishing vessels is likely significantly higher than what we detect. Because our model uses vessel length from SAR, it may be possible to use methods similar to those in Kroodsma et al. (2022) to estimate the number of missing vessels. Future work can address this challenge.
SAR Fixed Infrastructure Data Caveats
Sentinel-1 and Sentinel-2 satellites do not sample most of the open ocean.
- Most industrial activity happens relatively close to shore.
- The extent and frequency of SAR acquisitions is determined by the mission priorities.
- For more info see: Paper details
We do not provide detections of infrastructure within 1 km of shore
- We do not classify objects within 1 km of shore because it is difficult to map where the shoreline begins, and ambiguous coastlines and rocks cause false positives.
- The bulk of industrial activities, including offshore development with medium-to-large oil rigs and wind farms, occur several kilometers from shore.
False positives can be produced from noise artifacts.
- Rocks, small islands, sea ice, radar ambiguities (radar echoes), and image artifacts can cause false positives
- Detections in some areas including Southern Chile, the Arctic, and the Norwegian Sea have been filtered to remove noise.
Spatial coverage varies over time, which can produce different detections results year on year Example: here. Infrastructure detentions from 2017-01-01 to current are available, and updated on a monthly basis.
Labels can change over time The label assigned to a structure is the greatest predicted label averaged across time. As we get more data, the label may change, and more accurately predict the true infrastructure type.
Global datasets aren’t perfect
- We’ve done our best to create the most accurate product possible, but there will be infrastructure that isn’t detected, or has been classified incorrectly. This will be most evident when working at the project level.
- We strongly encourage users to provide feedback to the research team so that we may improve future versions of the model. All feedback is greatly appreciated.
Reference Data
GEAR TYPES SUPPORTED
You can use the following list to filter fishing effort or other data by gear type. For more details, check our data caveats here.
- TUNA_PURSE_SEINES
- DRIFTNETS
- TROLLERS
- SET_LONGLINES
- PURSE_SEINES
- POTS_AND_TRAPS
- OTHER_FISHING
- DREDGE_FISHING
- SET_GILLNETS
- FIXED_GEAR
- TRAWLERS
- FISHING
- SEINERS
- OTHER_PURSE_SEINES
- OTHER_SEINES
- SQUID_JIGGER
- POLE_AND_LINE
- DRIFTING_LONGLINES
VESSEL TYPES SUPPORTED
You can use the following list to filter any data by gear type. For more details, check our data caveats about how we calculate each vessel type here.
- carrier
- seismic_vessel
- passenger
- other
- support
- bunker
- gear
- cargo
- fishing
- discrepancy
REGIONS
GET LIST OF EEZs
curl --location --request GET 'https://gateway.api.globalfishingwatch.org/v3/datasets/public-eez-areas/context-layers' \
-H "Authorization: Bearer [TOKEN]"
Make sure to replace [TOKEN] with your API Access Token. If the request is successful, the response returns:
[
{
"id": 5670,
"iso3": "ALB",
"label": "Albanian Exclusive Economic Zone"
},
{
"id": 8378,
"iso3": "DZA",
"label": "Algerian Exclusive Economic Zone"
},
{
"id": 5690,
"iso3": "RUS",
"label": "Russian Exclusive economic Zone"
},
{
...
},
]
GET LIST OF MPAs
curl --location --request GET 'https://gateway.api.globalfishingwatch.org/v3/datasets/public-mpa-all/context-layers' \
-H "Authorization: Bearer [TOKEN]"
Make sure to replace [TOKEN] with your API Access Token. If the request is successful, the response returns:
[
{
"id": "555512344",
"label": "100_Daeseom"
},
{
"id": "555512376",
"label": "101_Hogamseom"
},
{
"id": "555512360",
"label": "102_Galmaeseom"
},
{
...
},
]
GET LIST OF RFMOs
curl --location --request GET 'https://gateway.api.globalfishingwatch.org/v3/datasets/public-rfmo/context-layers' \
-H "Authorization: Bearer [TOKEN]"
Make sure to replace [TOKEN] with your API Access Token. If the request is successful, the response returns:
[
{
"id": "APFIC",
"label": "APFIC"
},
{
"id": "BOBP-IGO",
"label": "BOBP-IGO"
},
{
"id": "CCAMLR",
"label": "CCAMLR"
},
{
"id": "CCBSP",
"label": "CCBSP"
},
{
"id": "CCSBT",
"label": "CCSBT"
},
{
"id": "CCSBT Primary Area",
"label": "CCSBT Primary Area"
},
{
"id": "COREP",
"label": "COREP"
},
{
"id": "CPPS",
"label": "CPPS"
},
{
"id": "CRFM",
"label": "CRFM"
},
{
"id": "CTMFM",
"label": "CTMFM"
},
{
"id": "FCWC",
"label": "FCWC"
},
{
"id": "FFA",
"label": "FFA"
},
{
"id": "GFCM",
"label": "GFCM"
},
{
"id": "IATTC",
"label": "IATTC"
},
{
"id": "ICCAT",
"label": "ICCAT"
},
{
"id": "ICES",
"label": "ICES"
},
{
"id": "IOTC",
"label": "IOTC"
},
{
"id": "IPHC",
"label": "IPHC"
},
{
"id": "LTA",
"label": "LTA"
},
{
"id": "NAFO",
"label": "NAFO"
},
{
"id": "NAMMCO",
"label": "NAMMCO"
},
{
"id": "NASCO",
"label": "NASCO"
},
{
"id": "NEAFC",
"label": "NEAFC"
},
{
"id": "NPAFC",
"label": "NPAFC"
},
{
"id": "NPFC",
"label": "NPFC"
},
{
"id": "OSPESCA",
"label": "OSPESCA"
},
{
"id": "PERSGA",
"label": "PERSGA"
},
{
"id": "PICES",
"label": "PICES"
},
{
"id": "RECOFI",
"label": "RECOFI"
},
{
"id": "SEAFDEC",
"label": "SEAFDEC"
},
{
"id": "SIOFA",
"label": "SIOFA"
},
{
"id": "SPC",
"label": "SPC"
},
{
"id": "SPRFMO",
"label": "SPRFMO"
},
{
"id": "SRFC",
"label": "SRFC"
},
{
"id": "SWIOFC",
"label": "SWIOFC"
},
{
"id": "WCPFC",
"label": "WCPFC"
}
]
There are two endpoints that uses regions ids:
In Events API, an event can potentially be within a specific geographic area, such as an Exclusive economic zones (EEZs), Marine protected areas (MPAs) or Regional fisheries management organization (RFMO). In the response
regions
field you can get the list of those regions. Check more detail about the source of those areas on how we calculate if the event is within a region in our data caveats.For MPAs and EEZs, the API returns an id.In 4Wings API - Report, you can send in the body a custom polygon or you can directly send the
region id
.
In order to get the details of those regions, call the endpoints described on the right.
You can check the source we use for those regions in our data caveats.
Vessel API - Registry Codes - Data Sources
Vessel identity data is extracted from over 40 registries available either in the public domain or from authorities and researchers, including registries from regional fisheries management organizations, national registries, and lists compiled by researchers. Each of the lists has been obtained regularly since early 2019 and supplemented, when possible, with historical data to provide snapshots of a registry and its vessels over time. Where available, we collected information on vessel identity, vessel characteristics, owner name, owner nationality, and fishing authorization. The major sources of data are listed below.
We do not publicly disclose the raw information that we collect but use the acquired information uniquely for non-commercial purpose of aggregating it with other data sets.
SDK
gfwr
For a comprehensive list of changes and migration details, please check the change log.
Overview of Changes
- Updated endpoints, retaining those from v1.1.0.
- New endpoints:
get_events_stats()
andget_last_report()
. - Note: Some APIs, primarily designed for frontend applications, were not implemented.
To learn more about gfwr, visit the: Github gfwr official page
License and Rate Limits
Terms of Use
GLOBAL FISHING WATCH
1025 CONNECTICUT AVE., NW, STE. 200
WASHINGTON, DC 20036-5425
Welcome to the Global Fishing Watch ("GFW", "We", "Our", "Us”) suite of Application Program Interfaces (APIs). These Terms of Use let the user of these Services ("You", "Your") know what You get when You use Our APIs to access our websites, and what We expect in return.
The services available through Global Fishing Watch, including all data products and associated services, (collectively referred to as the “Services”), are owned and operated by Global Fishing Watch, Inc. By using the Services, You agree to be bound by these Terms of Use and any future updates (collectively, the "Terms").
1. USAGE
We provide You with access to these Services in order to promote better management of the ocean for the betterment of all people.
A. Please don’t misuse Our Services. You agree to use the Services and their contents only for lawful purposes and not to defame, harass or threaten any one or to make available any defamatory, infringing, obscene, pornographic, offensive or illegal material. You may not use the Services in any manner that could damage or overburden the Services or interfere with any other person’s use of the Services.
B. Your use of the Services does not give You any ownership rights in the intellectual property in the Services or in its contents. Some of the software used to provide the Services may be made available separately under open-source licenses.
C. Noncommercial Use Only. The Services are available for noncommercial use only in accordance with the CC BY-NC 4.0 license, including complying with the attribution requirements set forth in Section 3 below. You are welcome to use the Services provided that Your application and its use are not intended (primarily or materially) for or directed towards commercial advantage or monetary compensation. In this context, We ask that users not exceed 50,000 DAILY API requests per day and 1,550,000 per month. Users who exceed this volume may be asked to reduce usage or may receive diminished service levels. GFW reserves the right to revoke Your usage rights at any time for any reason, including if We determine that Your application or use is not consistent with such restrictions on commercial use.
D. We will continue to regularly add to, modify, and otherwise improve Our Services. By using the Services, You acknowledge that We may change the features and functions of the Services, including APIs, over time. It is Your responsibility to ensure that Your use of the Services is compatible with the current version. We ask that you also reasonably cooperate with us from time to time in providing feedback on your Use of the APIs, your purposes and the impact created, which will help us advance our noncommercial goals for the APIs.
2. ACCOUNTS AND API USAGE
A. In order to use many of the Services, You must register for an account. GFW reserves the right to reject any account registration request, in its sole discretion.
B. By requesting to open an account with the Global Fishing Watch Services, You represent and warrant to us, as of the time of your request and on a continuing basis for the duration of Your use of the Services, that: (1) You are applying on behalf of an organization or entity that supports the sustainable use of ocean resources; (2) You are authorized to act on behalf of such organization or entity; (3) the application is sent from a valid email from the organization or entity; and (4) no other application or registration for this organization or entity exists. GFW may request additional information in order to confirm these conditions are met.
C. When You use Our application program interfaces (“API(s)”), each request to an API must include one of Your Account's unique API keys.
D. Please protect the security of Your Account. When accessing or using the API, you must comply with all of our security policies and procedures at all times. You are responsible for Your use of the Services and all activity that occurs under Your Account, including any use of Your Account’s API keys.
E. You may not, and may not attempt to, reverse-engineer, decompile, disassemble, or otherwise attempt to determine or modify the source code of our API or create any derivative products from the API. Anyone who uses the API to access Account data or to perform actions on the service must authenticate with an API key.
F. You agree that your login credentials and any other required forms of authentication, where applicable, have been chosen by you, when applicable. You also agree to keep your login credentials and any other required forms of authentication, including your API keys, confidential and separate from each other, as well as separate from any other information or documents relating to your use of the service.
G. The GFW API Token is specific to You and is Your responsibility. Your token is not to be shared or published with any additional users. You may only use the API token issued to you, and your Use of any token other than the one issued to You is a violation of these Terms. You may not include Your token in a publicly available web interface such that it can be discovered by other parties using Your website and/or application. You may not permit or authorize any other person or entity to use the API token issued to you.
H. We may cancel or suspend Your access to the Services at any time and for any reason, without notice. Upon cancellation or suspension, Your right to use the Services will end. You will have the right to access to Your Content stored on the Services for a period of fifteen days following cancellation or suspension; thereafter You may not have access to Your Content stored on the Services.
I. You agree to participate in follow-up surveys and report how the APIs are used, the number of users and other benefits they provide the end-stakeholder.
3. ATTRIBUTION AND CITATION
A. In connection with any use you make of Our APIs, you agree that you will attribute Us as the source of the data in compliance with our Attribution Requirements, which are as follows:
A.1. Websites or embedded graphics. If You use Our APIs in a Website, data visualization or graphic, You must include either of the following:
“Powered by Global Fishing Watch.” and link this text to https://globalfishingwatch.org on web pages or visuals that make use of the Global Fishing Watch API(s). |
OR
“Global Fishing Watch. [2022 or current year in the Global Fishing Watch copyright notice on the home page], updated daily. [API dataset name and version], [DATE RANGE]. Data set accessed YYYY-MM-DD at https://globalfishingwatch.org/our-apis/.” |
A.2. Bibliography. If You include the use of Our API(s) in a bibliography or use the entire Site as a source, use the following citation format:
“Copyright [2022 or current year in the Global Fishing Watch copyright notice on the home page], Global Fishing Watch, Inc., https://globalfishingwatch.org/our-apis/.” |
A.3. Other products or use. If You made any other use of Our API(s), use the following citation format:
“Powered by Global Fishing Watch.” and link this text to https://globalfishingwatch.org on other products or use-cases that make use of the Global Fishing Watch API(s). |
OR
“Global Fishing Watch. [2022 or current year in the Global Fishing Watch copyright notice on the home page], updated daily. [API dataset name and version], [DATE RANGE]. Data set accessed YYYY-MM-DD at https://globalfishingwatch.org/our-apis/.” |
B. You also agree to ensure that Our Attribution Requirements are communicated and maintained by any partners or downstream users of Our Services. Aside from the Attribution Requirements, neither You nor any partners or downstream users of Our Services shall use the GFW name, logos, trademarks or other marks without GFW’s prior written consent.
4. THIRD-PARTY CONTENT
A. The Services incorporate content, data, and information from others, including You. While We may review any content, and remove it if We determine it violates the law or Our policies, We do not commit to review all content, and You should not rely on Us to do so.
B. Open data is important to Us and We make considerable effort to make many of the datasets available without restriction through the Services. Nonetheless, each dataset carries its own license and restrictions. You should review the dataset’s metadata to understand these restrictions.
C. You must comply with the licenses of Our datasets. All content displayed on or accessible through the Services is protected by United States copyright laws or their equivalents in other countries.
5. YOUR CONTENT
A. Most of Our Services are designed to help You share or publish Your content. In using Global Fishing Watch service, You may submit data, information, or other content to the Services (“Your Content”). You retain ownership of Your Content.
B. Except where expressly prohibited, You understand that We may use, display, or distribute Your Content even if You stop using the Services. For the sole purpose of enabling Your use of the Services, You grant Us a non-exclusive, worldwide, royalty-free, transferable right and license (with right to sublicense), to use, copy, display, distribute, modify, create derivative works, and store Your Content and to allow others to do so.
6. DISCLAIMERS AND LIMITATIONS
A. YOU AGREE THAT YOUR USE OF THE SERVICES AND ITS CONTENT IS AT YOUR SOLE RISK. THE SERVICES AND CONTENT ARE PROVIDED ON AN “AS IS” BASIS AND WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. TO THE FULLEST EXTENT PERMITTED BY LAW, WE DISCLAIM ALL WARRANTIES, STATUTORY, EXPRESS OR IMPLIED, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE, AND NON-INFRINGEMENT. ACTUAL CONDITIONS MAY DIFFER FROM INFORMATION PROVIDED BY THE SERVICES. WE DO NOT WARRANT THAT THE CONTENT OR SERVICES WILL BE ERROR FREE, ACCURATE OR WITHOUT INTERRUPTION.
B. WHEN USING THE SERVICES YOU MAY BE EXPOSED TO USER SUBMISSIONS AND OTHER THIRD PARTY CONTENT ("NON-GFW CONTENT"), AND SOME OF THIS CONTENT MAY BE INACCURATE, OFFENSIVE, INDECENT, OR OTHERWISE OBJECTIONABLE. WE DO NOT ENDORSE ANY NON-GFW CONTENT. UNDER NO CIRCUMSTANCES WILL GFW BE LIABLE FOR OR IN CONNECTION WITH THE NON-GFW CONTENT, INCLUDING FOR ANY INACCURACIES, ERRORS, OR OMISSIONS IN ANY NON-GFW CONTENT, ANY INTELLECTUAL PROPERTY INFRINGEMENT WITH REGARD TO ANY NON-GFWCONTENT, OR FOR ANY LOSS OR DAMAGE OF ANY KIND INCURRED AS A RESULT OF THE USE OF ANY NON-GFW CONTENT.
C. UNDER NO CIRCUMSTANCES WILL WE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL, CONSEQUENTIAL, OR EXEMPLARY DAMAGES (INCLUDING WITHOUT LIMITATION, LOSS OF PROFITS, DATA, OR USE OR COST OF COVER) RESULTING FROM YOUR USE OR THE INABILITY TO USE THE SERVICES OR THEIR CONTENTS, EVEN IF WE WERE AWARE OF THE POSSIBILITY OF SUCH DAMAGES. IN NO EVENT WILL WE HAVE ANY LIABILITY TO YOU FOR CLAIMS OR DAMAGES FOR ANY REASON IN EXCESS OF ONE HUNDRED DOLLARS ($100 USD) IN AGGREGATE FOR ALL CLAIMS OR DAMAGES. CERTAIN JURISDICTIONS DO NOT ALLOW EXCLUSIONS OR LIMITATIONS ON IMPLIED WARRANTIES OR LIMITATIONS ON LIABILITY, AND THEREFORE SOME OR ALL OF THE DISCLAIMERS, EXCLUSIONS, OR LIMITATIONS MAY NOT APPLY TO YOU, AND YOU MAY HAVE ADDITIONAL RIGHTS.
7. DMCA COMPLIANCE
If You are a copyright owner or an agent thereof, and believe that any content on the Services infringes Your copyrights, You may send a notice in writing to Global Fishing Watch E-mail: [email protected] with the following information:
A. Your signature as a person authorized to act on behalf of the owner of an exclusive right that is allegedly infringed;
B. Identification of the exact location on the Services of copyrighted work claimed to have been infringed, or, if multiple copyrighted works on the Services are covered by a single notification, a representative list of such works as located on the Services;
C. The address, telephone number, and e-mail address of the complaining party;
D. A statement that the complaining party has a good faith belief that use of the material in the manner complained of is not authorized by the copyright owner, its agent, or the law; and
E. A statement that the information in the notification is accurate, and under penalty of perjury, that the complaining party is authorized to act on behalf of the owner of an exclusive right that is allegedly infringed.
8. ADDITIONAL TERMS
A. We reserve the right to modify these Terms at any time. All changes are effective immediately upon posting on the Global Fishing Watch website. You should review these terms regularly for changes. Your continued use of the Services after any such changes constitutes Your binding acceptance of the updated Terms.
B. The laws of the District of Columbia, United States of America, excluding its conflict of laws provisions, apply to any dispute about the Services, their content or these Terms. The U.N. Convention on Contracts for the International Sale of Goods doesn't apply. If we have a disagreement related to these Terms, or Your or Our performance under them that we cannot resolve between us, then we agree to have them finally resolved in arbitration using either (i) the International Arbitration Rules of the International Dispute Resolution Centre of the American Arbitration Association, if You are located outside of the United States, in any case with one arbitrator, or (ii) the Commercial Arbitration Rules of the American Arbitration Association, if You are located in the United States. We agree to follow this paragraph if it differs from those rules. We agree that the arbitrator will not have the power to award either of us any damages that are not consistent with Section 6 (Disclaimers and Limitations) of these Terms. The arbitration will be in Washington, DC, USA, and will be conducted in English. Unless we agree or one of us shows its essential, there will not be any formal discovery in our arbitration. The arbitrators can award costs and attorney’s fees against one of us, or divide them between us. We understand that any court with jurisdiction will enforce the decisions from the arbitration and enter judgment on them.
C. You agree to indemnify, hold harmless and at your expense defend Us, Our affiliates, and Our and their respective officers, managers, and employees (“Indemnified Persons”) from and against any and all losses, claims, demands, and expenses (including reasonable attorney’s fees of counsel selected by Us) arising in connection with any (a) of Your or Your affiliates’ (i) breach of these Terms, including any representation, warranty or covenant contained herein, or (ii) willful misconduct or negligence. For the avoidance of doubt, the indemnification set forth in this Section is in addition to, and not in place of, those set forth in any terms of use or user agreement for the Service.
D. If We do not promptly enforce the Terms, We have not given up any other rights or the right to enforce them or other Terms in the future.
E. If any particular provision of these Terms is not enforceable, that doesn't affect the enforceability of any other provision of the Terms.
F. These Terms are between You and Us, and no one else can enforce them.
G. These Terms are the entire statement of the agreement between You and Us regarding the Services and their contents.
Rate Limits
Our APIs are intended for non-commercial use. In this context, we ask that users not exceed 50,000 DAILY API requests per day and 1,550,000 per month. Users which exceed this volume may be asked to reduce usage or may receive diminished service levels.
API Token
The GFW API Token is specific to you and is your responsibility. Your token is not to be shared or published with any additional users. Use of any token other than the one issue to you is a violation of these term. You may not include your token in a publicly available web interface such that it can be discovered by other parties using your website and/or application
API Release Notes
Check more detail on how our API versioning process here.
Version 3 Key dates:
26 October 2023: v3 was released in production, you can start using it. Version 3 is our 🟢 CURRENT version. Check the Migration Guide here. Version 2 is in 🟠 MAINTENANCE.
30 April 2024: v2 will be 🔴 DEPRECATED: The endpoint won’t be operational or is going to be deleted soon. No improvements or bug fixing are added.
For questions, please write to [email protected]
V3 - 2024 Nov 18
Change | API impacted | Description |
---|---|---|
SAR fixed infrastructure dataset | Dataset API | The SAR fixed infrastructure MVT data response now includes more infrastructure positions, since we removed a filter on the data. It was excluding infrastructures with cluster_detections >=3, they’re mostly labeled oil and have 2 cluster detections. This may indicate that they’re moving around, since the cluster_detections filter indicates how many times that structure has been detected in that location. Now they are added in the response. |
V3 - 2024 Nov 8
Change | API impacted | Description |
---|---|---|
SAR fixed infrastructure dataset | Dataset API | The SAR fixed infrastructure MVT data response now includes lat (latitude) and lon (longitude) fields. These coordinates provide precise geographic locations for fixed infrastructure. |
V3 - 2024 Oct 24
Change | API impacted | Description |
---|---|---|
New TMT registry source | Vessels API | We added TMT as new source in our Vessel API which also adds new object extraFields as part of registryInfo including fields like builtYear and depthM when available. |
Port visits updates | Events API | There are two important updates regarding port visits dataset: 1) We have resolved an issue affecting a small percentage of confidence 4 level port visit events. The data provided should now be more accurate. 2) We’ve updated the method for determining port visit locations to use the intermediate anchorage or the first Port Stop (or Port Gap if no Port Stop exists) for more accurate estimates. Therefore a new API dataset public-global-port-visits-events:v3.1 was created including this method. Previous one still exists, check API dataset section here. For more details of both of these data changes, please refer to this FAQ. |
New param for Events Stats | Events Stats POST endpoint | We added new param includes and vesselType . For more details check Events Stats POST endpoint here |
New postman collection | Events API and Vessel API | More examples were added to show the new changes. |
Documents explaining what API are behind Vessel Viewer | N/A | If you want to learn which APIs are used in Vessel Viewer, you can review this document showing the exact API requests done behind each page. |
V3 - 2024 Aug 12
Change | API impacted | Description |
---|---|---|
Vessel authorizations | Vessels API | Remove some logic that was merging authorizations if the end date of the one authorization and the start date of the next one are close and the source is the same. The new logic will return two or more authorizations instead of only one in these cases. For example, for vessel Milena A (IMO 7342287), originally the API returns on the registry object, one authorization for IATTC from May 1 2019 to Jun 1 2024. We fixed that and now it returns 2 auhorizations periods for IATTC from Mar 1, 2024 - Aug 1, 2024 and from May 1, 2019 - Nov 1, 2023 |
V3 - 2024 Aug 1
Change | API impacted | Description |
---|---|---|
New AIS data released | All APIs | New API datasets v3 were creating based on the new version of the AIS data pipeline version 3. For more details check the API dataset section here. Additionally, we updated the this document with a detailed comparison between the data in this API Portal, gfwr 2.0.0 and Data Download Portal. |
V3 - 2024 June 27
Change | API impacted | Description |
---|---|---|
SAR fixed infrastructure dataset | Dataset API | SAR offshore infrastructure data in MVT format between 2017 to 3 months ago that were detected with satellite imagery and classified with deep learning. Refer to the Paper Paolo et al. 2024, Nature for more details. You can find more details of the new dataset in API Dataset section. Also updated the comparison document between API Portal, gfwr and Data Download portal with this new update. |
V3 - 2024 May 31
Change | API impacted | Description |
---|---|---|
SAR vessel detection dataset | All 4Wings endpoints | We added SAR vessel detections dataset, which are industrial vessels between 2017 to 5 days ago that were detected with satellite imagery and classified with deep learning. For more detail check the Paper Paolo et al. 2024, Nature.. You can find more details of the new dataset in API Dataset section. |
V3 - 2024 April 23
Change | API impacted | Description |
---|---|---|
Data differences between API, gfwr and Data Downloads portal | N/A | We added this document with a detailed comparison between the data in this API Portal, , gfwr (version 1) and the Data Downloads portal. |
V3 - 2024 April 15
Change | API impacted | Description |
---|---|---|
Changed bins 4wings endpoint | 4wings | Implemented same behaviour of the map to calculate bins for zoom levels greater than 0. Those levels are calculated using the values of zoom 0 and divide them by 4 ^ zoom requested. |
V3 - 2024 April 11
Change | API impacted | Description |
---|---|---|
New Postman collection | All | Added a new version of our postman collection with several examples for each endpoint. |
V3 - 2024 April 10
Change | API impacted | Description |
---|---|---|
New insights and counters | Insights API | Added new vessel identity insight: if the vessel is present on an RFMO IUU vessel list and added two counters in the response. |
New field for MVT tile | 4Wings API (/tile/heatmap/) | For MVT format, added in the response a id property in each feature (cell) of the mvt that it’s a combination of `{z}/{x}/{y}/{cell} which makes the id always unique. |
V3 - 2024 April 9
Error in underlying AIS data in the Global Fishing Watch platform and APIs
If you accessed Global Fishing Watch AIS data between 26 January - 10 April 2024, there may be errors in the fishing effort and fishing event data.
The AIS error has been resolved.
Our advice is to repeat any analysis completed with the correct data. We’re sorry for any inconvenience caused.
V3 - 2024 January 31
Included endpoint to obtain last report generated by the user
Change | API impacted | Description |
---|---|---|
New last report endpoint | 4wing API (Reports) | New Last report endpoint to obtain the last report generated by the user (recommended specially in case of 429 error) |
V3 - 2024 January 03
Change | API impacted | Description |
---|---|---|
Marine Traffic new AIS source | All | AIS data has been enhanced by the new addition of Marine Traffic terrestrial receivers. The Marine Traffic data is located in three high density areas where satellite reception can be poor around the globe, specifically the Mediterranean Sea, South China Sea, and the North Sea. Learn more here. |
V3 - 2023 October 26
New major version 3 including new version of Vessel API and Insights API for vessels
Change | API impacted | Description |
---|---|---|
v3 | Vessel API - NEW VERSION | Major change in this version, it is a completely new API that includes data from regional and national registries |
v3 | Insights API - NEW API | New API including vessel indicators like AIS off events |
v3 | 4Wings API and Events API | All the enums in query params and body must be uppercase and other small but breaking changes |
For the full details about API Version 3 changes, check the Migration Guide here
V2 - 2023 March 27
Add 2 new APIs: 4Wings Stats API and Events Stats API
Change | API impacted | Description |
---|---|---|
New Stats API | 4Wings and Events API | We added new APIs to get statistics about fishing effort 4Wings Stats API and about Events worldwide or for a custom region. Events Stats API |
V2 - 2023 March 22
Support Region ID in All Events POST endpoint
Change | API impacted | Description |
---|---|---|
Support to send region id | Events API (POST) | If users don't want to send a custom polygon, now it is possible to send a specific region id based on the Reference Data. See EXAMPLE 5 in Events API POST |
V2 - 2023 January 12
Change RFMO dataset to include all RFMOs
Change | API impacted | Description |
---|---|---|
Change RFMO dataset | Reference Data - Dataset | We used to have as dataset public-tuna-rfmo and we change it to public-rfmo to include all RFMOs. |
V2 - 2022 November 11
Change behavior of dates filter in events
Change | API impacted | Description |
---|---|---|
Update behavior dates filter | Events | Now the startDate (start-date) and endDate(end-date) filters in list events and dateRange in get tile of events, their behavior change to filter the events that they are occurring inside of the interval ( [startDate, endDate) ) instead of filter the events that start or finish inside the interval |
V2 - 2022 October 19
Create new POST endpoint to obtain events with more filter options
Change | API impacted | Description |
---|---|---|
New list events endpoint | Events | New POST endpoint to obtain list of events with more filter options |
V2 - 2022 September 28
Added limitations in reports and new endpoints and filters
Change | API impacted | Description |
---|---|---|
date-range limit | Reports | Now the date range must be lower than or equal to 1 year |
Get all Events | Events | New POST endpoint with more filters for get all events |
New report options | Reports | New group by option (mmsi) and reports without spatial aggregation (spatial-aggregation) |
V2 - 2022 July 26
First public version including consistency changes.
Change | API impacted | Description |
---|---|---|
Param names | All endpoints | Params are now in lower case between "-", for example instead of endDate in v2 we have end-date |
Change to POST | 4wings/generate-png | Verb now is POST , it used to be in v1 GET |
New error format and codes | All endpoints | Standard responses and status codes for all errors |
New format for list resources | All list endpoints | New paginated format for list resources endpoints |
Sort query params | All list endpoints | Merge sortBy and sortOrder in only one query param called sort . Example: sort=+createdAt |
Pagination query params | All list endpoints | Pagination query (limit and offset) params are required instead of optional |
V1 - 2021 Jan 01
Initial alpha release.