International tourism, number of arrivals

Source: worldbank.org, 03.09.2025

Year: 2020

Flag Country Value Value change, % Rank
Albania Albania 2,658,000 -58.5% 37
Andorra Andorra 5,207,000 -36.8% 20
United Arab Emirates United Arab Emirates 8,084,000 -68% 15
Armenia Armenia 375,000 -80.2% 92
American Samoa American Samoa 900 -95.3% 132
Antigua & Barbuda Antigua & Barbuda 384,500 -62.9% 91
Australia Australia 1,828,000 -80.7% 46
Austria Austria 15,091,000 -52.7% 11
Azerbaijan Azerbaijan 796,000 -74.9% 68
Belgium Belgium 2,584,000 -72.3% 38
Burkina Faso Burkina Faso 67,000 -53.1% 119
Bulgaria Bulgaria 4,973,000 -60.4% 22
Bahrain Bahrain 1,909,000 -82.7% 45
Bahamas Bahamas 1,794,500 -75.2% 47
Bosnia & Herzegovina Bosnia & Herzegovina 197,000 -83.6% 103
Belarus Belarus 3,598,000 -69.6% 30
Belize Belize 487,000 -70.9% 85
Bermuda Bermuda 51,400 -93.6% 122
Bolivia Bolivia 323,300 -73.9% 97
Brunei Brunei 1,071,000 -75.9% 62
Bhutan Bhutan 29,800 -90.6% 125
China China 30,402,000 -81.3% 7
Côte d’Ivoire Côte d’Ivoire 668,000 -67.7% 72
Colombia Colombia 1,396,000 -69.2% 53
Comoros Comoros 7,000 -84.5% 130
Cape Verde Cape Verde 180,000 -76.3% 105
Costa Rica Costa Rica 1,146,500 -65.9% 58
Cuba Cuba 1,086,000 -74.6% 60
Cayman Islands Cayman Islands 660,000 -71.7% 73
Germany Germany 12,449,000 -68.5% 12
Dominica Dominica 140,000 -56.5% 109
Denmark Denmark 15,595,000 -52.9% 10
Dominican Republic Dominican Republic 2,748,000 -63.6% 35
Algeria Algeria 591,000 -75.1% 77
Spain Spain 36,410,000 -71.1% 5
Estonia Estonia 1,695,000 -72.2% 48
Ethiopia Ethiopia 518,000 -36.2% 82
Finland Finland 896,000 -72.8% 65
Fiji Fiji 168,000 -82.7% 106
France France 117,109,000 -46.2% 1
United Kingdom United Kingdom 11,101,000 -72.8% 13
Georgia Georgia 1,513,000 -80.4% 50
Gambia Gambia 246,000 -60.3% 100
Greece Greece 7,406,000 -78.2% 16
Grenada Grenada 217,000 -58.7% 102
Guatemala Guatemala 594,000 -76.8% 76
Guam Guam 328,000 -80.3% 96
Guyana Guyana 86,400 -72.6% 115
Hong Kong SAR China Hong Kong SAR China 3,569,000 -93.6% 31
Honduras Honduras 669,000 -71.1% 71
Croatia Croatia 21,608,000 -64% 8
Hungary Hungary 31,641,000 -48.5% 6
Indonesia Indonesia 4,053,000 -74.8% 26
Iran Iran 1,550,000 -83% 49
Iceland Iceland 488,000 -77.8% 84
Italy Italy 38,419,000 -59.7% 4
Jamaica Jamaica 1,329,700 -68.6% 54
Jordan Jordan 1,240,000 -76.9% 56
Japan Japan 4,115,800 -87.1% 25
Kazakhstan Kazakhstan 2,035,000 -76.1% 42
Cambodia Cambodia 1,306,000 -80.2% 55
St. Kitts & Nevis St. Kitts & Nevis 301,400 -72.8% 99
South Korea South Korea 2,519,000 -85.6% 39
Kuwait Kuwait 2,161,000 -74.8% 41
Laos Laos 886,400 -81.5% 66
St. Lucia St. Lucia 432,500 -64.5% 90
Liechtenstein Liechtenstein 58,400 -40.5% 121
Sri Lanka Sri Lanka 540,000 -73.4% 80
Lithuania Lithuania 2,284,000 -62.9% 40
Luxembourg Luxembourg 525,000 -49.6% 81
Latvia Latvia 3,204,000 -61.6% 33
Macao SAR China Macao SAR China 5,897,000 -85% 19
Morocco Morocco 2,802,000 -78.6% 34
Monaco Monaco 159,000 -56.2% 107
Moldova Moldova 29,000 -83.3% 126
Madagascar Madagascar 87,100 -82.1% 114
Maldives Maldives 555,000 -67.4% 79
Mexico Mexico 51,128,000 -47.5% 2
North Macedonia North Macedonia 118,000 -84.4% 111
Malta Malta 718,000 -79.6% 69
Myanmar (Burma) Myanmar (Burma) 903,000 -79.3% 64
Montenegro Montenegro 351,000 -86% 94
Mongolia Mongolia 66,900 -89.5% 120
Mauritius Mauritius 316,000 -77.7% 98
Malaysia Malaysia 4,333,000 -83.4% 23
Namibia Namibia 187,100 -88.7% 104
New Caledonia New Caledonia 31,000 -76.2% 124
Niger Niger 85,000 -55.7% 116
Nicaragua Nicaragua 474,000 -67.4% 87
Netherlands Netherlands 7,265,000 -63.9% 17
Norway Norway 1,397,000 -76.2% 52
Nepal Nepal 230,000 -80.8% 101
New Zealand New Zealand 996,000 -74.4% 63
Oman Oman 869,000 -75.2% 67
Panama Panama 647,000 -74.1% 74
Peru Peru 1,119,000 -78.8% 59
Philippines Philippines 1,483,000 -82% 51
Palau Palau 18,400 -80.4% 128
Papua New Guinea Papua New Guinea 39,000 -81.5% 123
Puerto Rico Puerto Rico 3,882,000 -21.3% 28
Portugal Portugal 4,208,000 -75.7% 24
Paraguay Paraguay 1,077,000 -75.3% 61
Palestinian Territories Palestinian Territories 93,000 -86.5% 112
French Polynesia French Polynesia 89,400 -70.2% 113
Qatar Qatar 582,000 -72.8% 78
Romania Romania 5,023,000 -60.8% 21
Russia Russia 6,359,000 -74% 18
Singapore Singapore 2,742,000 -85.7% 36
Solomon Islands Solomon Islands 4,400 -84.8% 131
El Salvador El Salvador 707,000 -73.2% 70
Serbia Serbia 446,000 -75.9% 89
Slovenia Slovenia 1,216,000 -74.1% 57
Sweden Sweden 1,957,000 -74.3% 44
Eswatini Eswatini 345,300 -71.8% 95
Seychelles Seychelles 124,500 -70.9% 110
Turks & Caicos Islands Turks & Caicos Islands 370,400 -76.8% 93
Chad Chad 10,400 -87.2% 129
Togo Togo 482,000 -45% 86
Trinidad & Tobago Trinidad & Tobago 141,000 -70.6% 108
Tunisia Tunisia 2,012,000 -78.7% 43
Turkey Turkey 15,971,000 -69.1% 9
Uganda Uganda 473,000 -69.3% 88
Ukraine Ukraine 3,382,000 -75.3% 32
United States United States 45,037,000 -72.8% 3
British Virgin Islands British Virgin Islands 83,000 -72.6% 117
U.S. Virgin Islands U.S. Virgin Islands 8,612,000 +315% 14
Vietnam Vietnam 3,837,000 -78.7% 29
Vanuatu Vanuatu 82,400 -67.8% 118
Samoa Samoa 23,900 -86.8% 127
South Africa South Africa 3,886,600 -73.7% 27
Zambia Zambia 502,000 -60.3% 83
Zimbabwe Zimbabwe 639,000 -72.1% 75

The number of international tourist arrivals is a critical indicator that reflects the health and vitality of the global tourism industry, which is a key driver of economic growth in many countries. For the year 2020, the indicator saw a significant contraction due to the global impact of the COVID-19 pandemic, which caused unprecedented travel restrictions and changed the dynamics of international travel. The median value for international tourism arrivals stood at approximately 877,700 in 2020, a stark contrast to the pre-pandemic figures that consistently showed billions of arrivals in prior years.

This indicator is vital for multiple reasons. Firstly, it serves as a barometer for measuring global travel trends and consumer confidence in traveling abroad. High numbers of arrivals typically correlate with economic prosperity and increased spending in hospitality, transport, and entertainment sectors. Countries with a rich cultural heritage and attractive tourist destinations depend heavily on the influx of tourists for sustaining local economies. Consequently, a robust tourism sector can contribute significantly to employment and infrastructure development.

When comparing the top and bottom five areas by tourist arrivals in 2020, the disparity is apparent. France led the world in tourist arrivals, welcoming over 117 million international travelers, followed by Mexico with around 51 million. The United States, Italy, and Spain also featured prominently, reflecting their rich cultural offerings and established tourism infrastructures. On the other end of the spectrum, destinations such as American Samoa, Solomon Islands, Comoros, Chad, and Palau reported much lower numbers, with American Samoa seeing just 900 arrivals. Such a stark difference highlights various factors, including geographic size, marketing strength, accessibility, and the level of tourism development.

Understanding the factors affecting international tourism arrivals is critical for stakeholders. Elements like political stability, economic conditions, health crises, and environmental changes can directly impact travel behavior. For instance, during the pandemic, travel restrictions and health concerns brought global tourism almost to a standstill. Additionally, climatic factors or natural disasters can discourage potential visitors, while government policies and visas can facilitate or deter international travel. These complexities underline the interconnectedness of tourism with broader socio-economic and geopolitical trends.

The relation of international tourism to other economic indicators is evident; for instance, an increase in tourism arrivals often coincides with improvements in GDP and employment rates in destination countries. Moreover, it is not only indicators of consumer spending and foreign exchange earnings but also reflects on infrastructure investments, such as airports, hotels, and recreational facilities. Furthermore, tourism contributes to tax revenues for governments, enabling them to invest in public services and development projects.

To address the challenges posed by the decline in international arrivals, countries and tourism stakeholders can adopt diverse strategies. Promoting domestic tourism while international travel restrictions remain in place can serve as a temporary solution. Additionally, enhancing digital marketing efforts and leveraging social media can attract future visitors by showcasing safe travel experiences. Adapting services and infrastructure to accommodate health guidelines can help restore traveler confidence. Moving forward, sustainability will become paramount as travelers increasingly seek eco-friendly destinations and practices that protect cultural and natural resources.

Despite the potential for recovery, certain flaws do exist in how international tourism is measured and managed. For instance, the data can sometimes be skewed or inaccurately reported, particularly in smaller nations where monitoring arrival data may not be as robust. This can lead to uneconomic prioritization of tourism in larger, more competitive markets while smaller or emerging destinations struggle for attention. Moreover, the dependency on tourism can lead to vulnerabilities in local economies, particularly when unexpected events prompt a rapid decline in visitor numbers. Therefore, a holistic approach to tourism development is essential, encompassing not just international arrivals but also local community benefits and sustainable practices.

As global tourism gradually recovers from the impacts of the pandemic, the number of international arrivals will play a pivotal role in helping economists and policymakers gauge the industry's rebound and reshape its future. Addressing the inherent flaws in tourism data collection and advocating for balanced growth opportunities across diverse destinations will ensure that international tourism remains resilient against future challenges.

                    
# Install missing packages
import sys
import subprocess

def install(package):
subprocess.check_call([sys.executable, "-m", "pip", "install", package])

# Required packages
for package in ['wbdata', 'country_converter']:
try:
__import__(package)
except ImportError:
install(package)

# Import libraries
import wbdata
import country_converter as coco
from datetime import datetime

# Define World Bank indicator code
dataset_code = 'ST.INT.ARVL'

# Download data from World Bank API
data = wbdata.get_dataframe({dataset_code: 'value'},
date=(datetime(1960, 1, 1), datetime.today()),
parse_dates=True,
keep_levels=True).reset_index()

# Extract year
data['year'] = data['date'].dt.year

# Convert country names to ISO codes using country_converter
cc = coco.CountryConverter()
data['iso2c'] = cc.convert(names=data['country'], to='ISO2', not_found=None)
data['iso3c'] = cc.convert(names=data['country'], to='ISO3', not_found=None)

# Filter out rows where ISO codes could not be matched — likely not real countries
data = data[data['iso2c'].notna() & data['iso3c'].notna()]

# Sort for calculation
data = data.sort_values(['iso3c', 'year'])

# Calculate YoY absolute and percent change
data['value_change'] = data.groupby('iso3c')['value'].diff()
data['value_change_percent'] = data.groupby('iso3c')['value'].pct_change() * 100

# Calculate ranks (higher GDP per capita = better rank)
data['rank'] = data.groupby('year')['value'].rank(ascending=False, method='dense')

# Calculate rank change from previous year
data['rank_change'] = data.groupby('iso3c')['rank'].diff()

# Select desired columns
final_df = data[['country', 'iso2c', 'iso3c', 'year', 'value',
'value_change', 'value_change_percent', 'rank', 'rank_change']].copy()

# Optional: Add labels as metadata (could be useful for export or UI)
column_labels = {
'country': 'Country name',
'iso2c': 'ISO 2-letter country code',
'iso3c': 'ISO 3-letter country code',
'year': 'Year',
'value': 'GDP per capita (current US$)',
'value_change': 'Year-over-Year change in value',
'value_change_percent': 'Year-over-Year percent change in value',
'rank': 'Country rank by GDP per capita (higher = richer)',
'rank_change': 'Change in rank from previous year'
}

# Display first few rows
print(final_df.head(10))

# Optional: Save to CSV
#final_df.to_csv("gdp_per_capita_cleaned.csv", index=False)
                    
                
                    
# Check and install required packages
required_packages <- c("WDI", "countrycode", "dplyr")

for (pkg in required_packages) {
  if (!requireNamespace(pkg, quietly = TRUE)) {
    install.packages(pkg)
  }
}

# Load the necessary libraries
library(WDI)
library(dplyr)
library(countrycode)

# Define the dataset code (World Bank indicator code)
dataset_code <- 'ST.INT.ARVL'

# Download data using WDI package
dat <- WDI(indicator = dataset_code)

# Filter only countries using 'is_country' from countrycode
# This uses iso2c to identify whether the entry is a recognized country
dat <- dat %>%
  filter(countrycode(iso2c, origin = 'iso2c', destination = 'country.name', warn = FALSE) %in%
           countrycode::codelist$country.name.en)

# Ensure dataset is ordered by country and year
dat <- dat %>%
  arrange(iso3c, year)

# Rename the dataset_code column to "value" for easier manipulation
dat <- dat %>%
  rename(value = !!dataset_code)

# Calculate year-over-year (YoY) change and percentage change
dat <- dat %>%
  group_by(iso3c) %>%
  mutate(
    value_change = value - lag(value),                              # Absolute change from previous year
    value_change_percent = 100 * (value - lag(value)) / lag(value) # Percent change from previous year
  ) %>%
  ungroup()

# Calculate rank by year (higher value => higher rank)
dat <- dat %>%
  group_by(year) %>%
  mutate(rank = dense_rank(desc(value))) %>% # Rank countries by descending value
  ungroup()

# Calculate rank change (positive = moved up, negative = moved down)
dat <- dat %>%
  group_by(iso3c) %>%
  mutate(rank_change = rank - lag(rank)) %>% # Change in rank compared to previous year
  ungroup()

# Select and reorder final columns
final_data <- dat %>%
  select(
    country,
    iso2c,
    iso3c,
    year,
    value,
    value_change,
    value_change_percent,
    rank,
    rank_change
  )

# Add labels (variable descriptions)
attr(final_data$country, "label") <- "Country name"
attr(final_data$iso2c, "label") <- "ISO 2-letter country code"
attr(final_data$iso3c, "label") <- "ISO 3-letter country code"
attr(final_data$year, "label") <- "Year"
attr(final_data$value, "label") <- "GDP per capita (current US$)"
attr(final_data$value_change, "label") <- "Year-over-Year change in value"
attr(final_data$value_change_percent, "label") <- "Year-over-Year percent change in value"
attr(final_data$rank, "label") <- "Country rank by GDP per capita (higher = richer)"
attr(final_data$rank_change, "label") <- "Change in rank from previous year"

# Print the first few rows of the final dataset
print(head(final_data, 10))