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 26FAO 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" # LinuxTo 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 downloadload_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 releaseIt 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")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 divisionFor 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:
📖 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
