Skip to contents
📦 Data: FAO Global Capture Production, release 2026.1.0 (published by FAO on 2026-03-30; catches 1950–2024), downloaded from Capture_2026.1.0.zip. Licence CC BY 4.0. fao_data_info() shows the release you use and how to cite it.

📚 The data

faofishingreport uses the FAO Global Capture Production statistics: the yearly catch of every country, by species item and FAO major fishing area, since 1950. Only capture fisheries are included (no aquaculture), in tonnes live weight. FAO compiles them from the reports of national offices and estimates the catch of countries that did not report (FAO 2026; Garibaldi 2012).

data <- load_fao_data()
c(rows = nrow(data), first_year = min(data$Year), last_year = max(data$Year),
  countries = length(unique(data$Country..Name.)),
  species = length(unique(data$ASFIS.species..Name.)),
  areas = length(unique(data$FAO.major.fishing.area..Name.)))
#>       rows first_year  last_year  countries    species      areas 
#>    1024698       1950       2024        248       3797         26

FAO publishes a new release about once a year, adding one more year and revising earlier years. The package comes with a recent release, and can download newer ones directly from the FAO statistics server, where each release is a file Capture_<version>.zip.

The functions of this page:

Function What it does
check_fao_update() Lists the releases on the FAO server and compares the newest with the data on your computer
download_fao_data() Downloads a release and converts it to the package format
load_fao_data() Loads a downloaded release or the bundled data
fao_data_info() The release used, its download link, licence and citation
fao_data_dir() The folder where downloaded releases are kept
fao_translate() Chinese and bilingual names of countries, species and areas

🔎 Check for a new release

check_fao_update() lists the releases on the FAO server and compares the newest with the data bundled with the package and the data you have downloaded:

check_fao_update()
#> FAO Global Capture Production
#>   Latest online release: 2026.1.0 (published 2026-03-30)
#>   Bundled with package:  2026.1.0
#>   Downloaded locally:    none
#>   Your data is up to date.
Argument Meaning Default
data_dir Folder where downloaded releases are stored fao_data_dir()
quiet TRUE prints nothing, e.g. in scripts FALSE

It also returns, invisibly, a list:

Element Content
latest Newest release online
bundled Release bundled with the package
local Newest downloaded release (NA if none)
update_available TRUE if the newest online release is newer than the bundled and downloaded data
releases All releases online: version, publication date, size and download url
releases <- check_fao_update(quiet = TRUE)
releases$update_available
#> [1] FALSE
tail(releases$releases, 3)
#>     version       date size                                                          url
#> 9  2024.1.0 2024-04-04 4.5M https://www.fao.org/fishery/static/Data/Capture_2024.1.0.zip
#> 10 2025.1.0 2025-09-04 5.0M https://www.fao.org/fishery/static/Data/Capture_2025.1.0.zip
#> 11 2026.1.0 2026-03-30 5.5M https://www.fao.org/fishery/static/Data/Capture_2026.1.0.zip

⬇️ Download a release

download_fao_data() downloads a release (about 5 MB), converts it to the package format and saves it on your computer. Downloading again is not needed: later calls read the saved file.

download_fao_data()                       # the latest release
download_fao_data(version = "2023.1.1")   # an older release, e.g. to reproduce a report
download_fao_data(overwrite = TRUE)       # download again
Argument Meaning Default
version Release to download, e.g. "2026.1.0", or "latest" for the newest release online. A release that is not on the FAO server gives an error listing the available ones "latest"
data_dir Folder where the release is saved fao_data_dir()
overwrite FALSE reads a release that was already downloaded from disk; TRUE downloads it again FALSE
quiet Hide the progress messages FALSE

It returns the data invisibly. The conversion keeps the quantities in tonnes live weight, matches countries and species through their FAO codes to the names used by the package, and records the release, its publication date, the download link and the download date (attr(data, "fao_version"), attr(data, "release_date"), attr(data, "source_url"), attr(data, "download_date")). Each release is saved as three files:

File Content
Global_Production_long_<version>.rds The catch data
fao_names_<version>.rds Official Chinese names of countries, species and areas
fao_groups_<version>.rds Species groups (ISSCAAP, taxonomic level), country groups and area groups

📂 Choose the data folder

fao_data_dir() has no arguments; it returns the folder where download_fao_data() (and download_fishbase_data()) save data and where all functions look for them. It is the first of:

Order Source Set with
1 The data_dir setting fao_settings(data_dir = "D:/shared/fao_data") (this R session)
2 The environment variable FAOFISHINGREPORT_DATA_DIR A line FAOFISHINGREPORT_DATA_DIR=<folder> in the .Renviron file of your home folder (every R session)
3 The user data folder of R, tools::R_user_dir("faofishingreport", "data") Default
fao_data_dir()
#> [1] "C:/Users/<you>/AppData/Roaming/R/data/R/faofishingreport"          # Windows
#> [1] "~/Library/Application Support/org.R-project.R/R/faofishingreport"  # macOS
#> [1] "~/.local/share/R/faofishingreport"                                 # Linux

To keep the data elsewhere, for example in a folder shared by your team, set data_dir once. Downloads then go there, and every function reads from there:

fao_settings(data_dir = "D:/shared/fao_data")
download_fao_data()

🧭 Which release is used

All functions use the newest data available: the newest downloaded release, or the bundled data if it is newer. fishing_area_data(), country_analysis() and fao_report() can be told which release to use with data_version:

FAO27 <- fishing_area_data("Atlantic, Northeast")                            # newest
FAO27 <- fishing_area_data("Atlantic, Northeast", data_version = "bundled")  # bundled
FAO27 <- fishing_area_data("Atlantic, Northeast", data_version = "2023.1.1") # a download

load_fao_data() returns the whole data set, with the same choices:

data <- load_fao_data()                  # newest
data <- load_fao_data("2023.1.1")        # a downloaded release
Argument Meaning Default
version "latest": the newest of the downloaded releases and the bundled data; "bundled": the data bundled with the package; or a release such as "2025.1.0" that was downloaded or is the bundled one (any other release gives an error listing the downloaded ones) "latest"
data_dir Folder where downloaded releases are stored fao_data_dir()

It returns a data frame with the eight columns described below, and prints which release it loaded.

📝 Release information and citation

fao_data_info() tells which release the analyses use, when FAO published it, the years it covers, the file it was downloaded from, the licence and a citation for reports. It has the same arguments as load_fao_data() (version, default "latest", and data_dir, default fao_data_dir()):

fao_data_info()
#> FAO Global Capture Production
#>   Release:   2026.1.0 (published by FAO on 2026-03-30)
#>   Years:     1950-2024
#>   File:      https://www.fao.org/fishery/static/Data/Capture_2026.1.0.zip
#>   Obtained:  bundled with faofishingreport, downloaded from FAO on 2026-10-10
#>   Licence:   CC BY 4.0 (https://www.fao.org/contact-us/terms/db-terms-of-use/en)
#>   Citation:  FAO. 2026. Global Capture Production 1950-2024, release 2026.1.0. In: Fisheries and Aquaculture [online]. Rome. [Cited 10 October 2026]. https://www.fao.org/fishery/collection/capture/en. Licence: CC BY 4.0.
fao_data_info()$citation           # the citation only
fao_data_info("2025.1.0")          # a downloaded release

It returns a list:

Element Content
release The release, e.g. "2026.1.0"
release_date Date of publication on the FAO server
years First and last year of the data
source "bundled" (with the package) or "downloaded"
url The release file on the FAO server
download_date Date the data was downloaded from FAO
licence, terms "CC BY 4.0" and the FAO terms of use of statistical databases
citation A citation of the release for reports

📋 Data format

Every release is converted to the same eight columns, so all analyses work with any release:

show_table(data, n = 6)
Country..Name. ASFIS.species..Name. FAO.major.fishing.area..Name. Unit..Name. Unit Year Production Production.Type
Afghanistan Freshwater fishes nei Asia - Inland waters Tonnes - live weight TLW, Number 1950 100 actual
Afghanistan Freshwater fishes nei Asia - Inland waters Tonnes - live weight TLW, Number 1951 100 actual
Afghanistan Freshwater fishes nei Asia - Inland waters Tonnes - live weight TLW, Number 1952 100 actual
Afghanistan Freshwater fishes nei Asia - Inland waters Tonnes - live weight TLW, Number 1953 100 actual
Afghanistan Freshwater fishes nei Asia - Inland waters Tonnes - live weight TLW, Number 1954 100 actual
Afghanistan Freshwater fishes nei Asia - Inland waters Tonnes - live weight TLW, Number 1955 200 actual
Column Content
Country..Name. Country (FAO short name, e.g. “Korea, Republic of”)
ASFIS.species..Name. Species item (ASFIS English name; items not identified to species end in “nei”)
FAO.major.fishing.area..Name. FAO major fishing area
Unit..Name., Unit Always tonnes live weight
Year Year
Production Catch in tonnes
Production.Type Status of the value, from the FAO status flag: actual (official), estimate (estimated by the country or FAO), neligible (below 0.5 t), provisional, suppressed, international organization

✂️ Analyse your own subsets

The analysis functions take a data frame with these columns, so any subset can be analysed. fishing_area_data() is the easiest way to get one fishing area, but you can also build subsets yourself:

# The catch of several fishing areas together, e.g. the whole Atlantic
atlantic <- subset(data, grepl("^Atlantic", FAO.major.fishing.area..Name.))
unique(atlantic$FAO.major.fishing.area..Name.)
#> [1] "Atlantic, Southeast"       "Atlantic, Eastern Central"
#> [3] "Atlantic, Western Central" "Atlantic, Southwest"      
#> [5] "Atlantic, Antarctic"       "Atlantic, Northeast"      
#> [7] "Atlantic, Northwest"
# The species groups of the whole Atlantic since 2000
species_group_composition(subset(atlantic, Year >= 2000), label = "Atlantic since 2000")
Atlantic_since_2000_group_isscaap.png
Atlantic_since_2000_group_isscaap_share.png

The summary analyses, such as species_group_composition() and peak_trend(), share these arguments (their own arguments are described in 📈 Composition, stock status and trends):

Argument Meaning Default
area_data The catch data: fishing_area_data()$area_data or any subset of load_fao_data()
plot Save the charts in figures/png/summary/ TRUE
table Save the tables in tables/ TRUE
lang "en", "zh" or "both" NULL: the language of fao_settings()
pptx Also save editable PowerPoint files in figures/pptx/summary/ FALSE, or pptx of fao_settings()
plot_show Also draw each chart in the plot window (e.g. the Plots pane of RStudio) as it is saved FALSE, or plot_show of fao_settings()
label Name used in the output file names NULL: the fishing area (or country) of the data

More examples:

# One country in all areas
china <- subset(data, Country..Name. == "China")
peak_trend(china, by = "area", label = "China")

# One species in all areas
skipjack <- subset(data, ASFIS.species..Name. == "Skipjack tuna")
peak_trend(skipjack, by = "area", label = "Skipjack tuna")

# Only the last 30 years of area 27
FAO27_recent <- subset(FAO27$area_data, Year >= 1995)
fishing_area_species(FAO27_recent)

To find the exact names of countries, species and areas:

head(sort(unique(data$Country..Name.)), 10)
#>  [1] "Afghanistan"         "Albania"             "Algeria"            
#>  [4] "American Samoa"      "Andorra"             "Angola"             
#>  [7] "Anguilla"            "Antigua and Barbuda" "Argentina"          
#> [10] "Armenia"
grep("tuna", unique(data$ASFIS.species..Name.), value = TRUE)
#>  [1] "Atlantic bluefin tuna"    "Frigate and bullet tunas"
#>  [3] "Bullet tuna"              "Skipjack tuna"           
#>  [5] "Yellowfin tuna"           "Dogtooth tuna"           
#>  [7] "Bigeye tuna"              "Pacific bluefin tuna"    
#>  [9] "Southern bluefin tuna"    "Longtail tuna"           
#> [11] "Frigate tuna"             "True tunas nei"          
#> [13] "Blackfin tuna"            "Slender tuna"

🌐 Chinese names

Chinese names come from the FAO code lists published with each release and from the FAO ASFIS species list; names without an official Chinese name are filled from the package’s own tables, and otherwise stay in English. fao_translate() shows them:

fao_translate(c("Norway", "Spain", "Korea, Republic of"), "country", "zh")
#> [1] "挪威"     "西班牙"   "大韩民国"
fao_translate(c("Atlantic cod", "Skipjack tuna"), "species", "both")
#> [1] "大西洋鳕 Atlantic cod" "鲣 Skipjack tuna"
fao_translate("Atlantic, Northeast", "area", "zh")
#> [1] "东北大西洋"
Argument Meaning Default
x English names, as in the FAO data
type Kind of name: "country", "species" or "area" "country"
lang "zh" (Chinese), "both" (Chinese and English) or "en" (unchanged) "zh"

It returns the names in the same order. Different English names that share one Chinese name keep their English name as well (e.g. two species items with the same Chinese name), so they stay apart in charts and tables.

Many species items have no Chinese name in the FAO lists. For the items that are one species, the package uses the Chinese common name of the species in FishBase or SeaLifeBase: the name given for China, in simplified characters, preferring the name FishBase marks as preferred (Froese and Pauly 2026; Palomares and Pauly 2026). FAO names always come first. The table, with the other names of each species and their source, is inst/extdata/species_names_zh_fishbase.csv, made by data-raw/build_species_names_zh.R from the FishBase tables that the rfishbase package reads:

fao_translate(c("Pacific cod", "Yellowfin sole", "Pacific ocean perch"), "species", "zh")
#> [1] "太平洋鳕"            "糙鲽"                "Pacific ocean perch"

The Pacific ocean perch keeps its English name: FishBase has no simplified Chinese name for China for it.

FAO gives no Chinese names for ISSCAAP species groups, major groups and income groups; the package’s translations are in inst/extdata/group_names_zh.csv, and all chart labels in inst/extdata/chart_labels.csv. Edit these files in the package source and reinstall to change the wording.

🧩 Extension: catch by division

This and the next section use FAO datasets other than global capture production; they are an extension of the package and not part of the Word report.

For four regions FAO also publishes the catch by division, the parts of an FAO area used by regional fishery bodies: GFCM (area 37, e.g. 37.1.1 Balearic, 37.2.1 Adriatic, 37.4.2 Black Sea), CECAF (area 34), the Southeast Atlantic (area 47) and RECOFI (the Gulf, the Sea of Oman and the southwestern Arabian Sea, part of area 51). load_fao_divisions() downloads the newest release the first time (about 5 MB), keeps it in the data folder, and returns it in the format above with three more columns: Division, Division..Name. and Region.

med <- load_fao_divisions("GFCM")
pelagic_demersal(med, by = "division")          # one P/D series per division
mean_temperature_catch(med, by = "division")    # MTC and SST of each division

For GFCM, CECAF and the Southeast Atlantic, the catch summed over the divisions equals that of the FAO area for nearly all records. Some codes are not places: “37.0.0 Tunas” holds tunas reported for the whole area and “37.9.0 Not known” catch whose division is not known.

🧩 Extension: trade and employment data

FAO also publishes the trade of aquatic products and the employment in fisheries and aquaculture. load_fao_trade() (exports, imports and re-exports by country, commodity and year from 1976, about 16 MB) and load_fao_employment() (people by country, work area, working time and sex from 1995, under 1 MB) download them the first time and keep them in the data folder, like load_fao_divisions(). Trade quantities are product weight, not live weight, and employment counts people, not full-time equivalents. See 🚢 Trade and employment for the analyses that join them to the catch: catch_trade(), employment_summary() and catch_per_fisher().

trade <- load_fao_trade()
employment <- load_fao_employment()

⚠️ Notes on the data

  • Recent years are often estimated. When a country has not yet reported, FAO estimates its catch. In area 34 (Eastern Central Atlantic), about a third of the 2024 catch is estimated, against less than 1% in area 27; these values are usually revised in the next release. data_quality() shows this for any area.
  • “nei” items (“not elsewhere included”) are catches not identified to species, e.g. “Marine fishes nei”. They are a large share of the catch in some areas.
  • Former countries such as the USSR (until 1991) appear as separate countries.
  • Releases differ: FAO revises past years when countries send corrected or more complete data (Garibaldi 2012; Zeller and Pauly 2018), so results from different releases can differ. Note the release used in reports (fao_data_info()). compare_releases() lists the records revised between two releases (see 🔬 Shocks, collapses, synchrony and fleets).
  • Use of the data: the FAO statistics are published under the CC BY 4.0 licence and the FAO terms of use of statistical databases; cite the release you use.

🔄 For maintainers: update the bundled data

The bundled data, Chinese names and groups are rebuilt from the latest FAO release with:

Rscript data-raw/update_bundled_data.R

📖 References

CWP (Coordinating Working Party on Fishery Statistics). CWP Handbook of Fishery Statistics. Rome: FAO. https://www.fao.org/cwp-on-fishery-statistics/handbook/en/

FAO (2026). FishStat: Global capture production 1950–2024 (release 2026.1.0). In: FishStatJ. https://www.fao.org/fishery/statistics/software/fishstatj/en. Licence: CC-BY-4.0. Release file: https://www.fao.org/fishery/static/Data/Capture_2026.1.0.zip; all releases: https://www.fao.org/fishery/static/Data/

FAO (2026). Fishery and Aquaculture Statistics – Yearbook 2024. FAO Yearbook of Fishery and Aquaculture Statistics. Rome: FAO. doi:10.4060/ce1217en

FAO. ASFIS List of Species for Fishery Statistics Purposes. Rome: FAO. https://www.fao.org/fishery/collection/asfis/en

FAO. Global Capture Production. Fisheries and Aquaculture Division, Rome. https://www.fao.org/fishery/collection/capture/en

FAO. Terms of use of FAO statistical databases. https://www.fao.org/contact-us/terms/db-terms-of-use/en

Froese, R. and Pauly, D. (Eds.) (2026). FishBase. World Wide Web electronic publication, version 06/2026. https://www.fishbase.se

Garibaldi, L. (2012). The FAO global capture production database: a six-decade effort to catch the trend. Marine Policy 36(3): 760–768. doi:10.1016/j.marpol.2011.10.024

Palomares, M. L. D. and Pauly, D. (Eds.) (2026). SeaLifeBase. World Wide Web electronic publication, version 06/2026. https://www.sealifebase.se

Zeller, D. and Pauly, D. (2018). The ‘presentist bias’ in time-series data: implications for fisheries science and policy. Marine Policy 90: 14–19. doi:10.1016/j.marpol.2018.01.015