Inbound trends by market

Use the interactive charts below to see how tourism to the UK from different markets has evolved over recent years, as well as explore data for overseas visits, nights and spend. 

Tourism trends by market

The International Passenger Survey (IPS) was suspended on 16 March 2020 due to the coronavirus (COVID-19) pandemic until the start of 2021. The ONS have made every effort to produce high-quality estimates for the periods when IPS data is not being collected but have not been able to produce a full set of results. See the 2020 inbound page for more information.

The 2021 data is ‘incomplete’ as Eurotunnel data was unavailable for Q1 to Q3 but modelled for Q4. In addition, interviewing at Dover restarted from Q3 2021 and pseudo records for the Irish land border were also removed in 2021. More info can be found on the 2021 inbound page.

For 2022, Eurotunnel data was modelled for the first half of the year and the latest data can be found on the monthly and quarterly pages. Interviewing at Eurostar was not affected by Covid-19 restrictions in 2021 or the first half of 2022. The ONS restarted IPS interviews at all ports from July 2022.

Due to the above, no data from 2020 onwards is available on the interactive chart.

Use our interactive charts below for UK data on visits, nights, and spend, as well as filter by age, gender, journey purpose (e.g. holiday, business), season, mode of transport, length of stay and whether package/independent travel. You can also download files showing:

View our dedicated sections on UK nations, regions and counties as well as towns for data on specific locations within Britain.

 

Applied filters:

{{ item.title }}
Display:

Drag to change year on charts and tables.

Touch the data points to see the values.

OVERVIEW OF UK VISITOR STATISTICS {{activeYear.name}}

Number of visits

{{totalVisits | fixUnits}}

{{ totalVisitsPerc == 'Infinity' ? '-' : totalVisitsPerc >= 0 ? '+' + totalVisitsPerc.toFixed(2) + '%' : totalVisitsPerc.toFixed(2) + '%' }}

{{item.name}} {{item.data | fixUnits}}

Total expenditure (GBP)

{{totalSpend | spendUnits}}

{{ totalSpendPerc == 'Infinity' ? '-' : totalSpendPerc >= 0 ? '+' + totalSpendPerc.toFixed(2) + '%' : totalSpendPerc.toFixed(2) + '%' }}

{{item.name}} {{item.data | spendUnits}}

Total nights spent

{{totalNights | fixUnits}}

{{ totalNightsPerc == 'Infinity' ? '-' : totalNightsPerc >= 0 ? '+' + totalNightsPerc.toFixed(2) + '%' : totalNightsPerc.toFixed(2) + '%' }}

{{item.name}} {{item.data | fixUnits}}

Average length of stay (Nights)

{{avgStay.toFixed(2)}}

{{ isNaN(avgStayPerc) ? '-' : avgStayPerc >= 0 ? '+' + avgStayPerc.toFixed(2) + '%' : avgStayPerc.toFixed(2) + '%' }}

{{item.name}} {{item.data.toFixed(2)}}

Average spend per visit (GBP)

{{avgSpend | spendUnits(0, 'hideUnit')}}

{{ isNaN(avgSpendPerc) ? '-' : avgSpendPerc >= 0 ? '+' + avgSpendPerc.toFixed(2) + '%' : avgSpendPerc.toFixed(2) + '%' }}

{{item.name}} {{item.data | spendUnits(0, 'hideUnit')}}

* Change from {{Number(activeYear.name) - 1}}

{{seasonalityBox.title}}

{{yearSeasonality | spendUnits}} {{filteredDataWording ? '(Filtered total)' : '(Total)'}}

{{yearSeasonality | fixUnits}} {{filteredDataWording ? '(Filtered total)' : '(Total)'}}

Quarter {{activeDisplay}} %
{{ item.name }} {{ item.data[0] | spendUnits }} {{ item.data[0] | fixUnits }} {{ (item.data[0] * 100 / yearSeasonality).toFixed(2) }}%
{{item}} {{ seasonalityBox.data_pie.series[index] | spendUnits }} {{ seasonalityBox.data_pie.series[index] | fixUnits }} {{ (seasonalityBox.data_pie.series[index] * 100 / yearSeasonality).toFixed(2) }}%
{{item.name}} {{ item.data[index] | spendUnits }} {{ item.data[index] | fixUnits }} {{ (item.data[index] * 100 / yearSeasonality).toFixed(2) }}%

{{journeyBox.title}}

{{yearPurpose | spendUnits}} {{filteredDataWording ? '(Filtered total)' : '(Total)'}}

{{yearPurpose | fixUnits}} {{filteredDataWording ? '(Filtered total)' : '(Total)'}}

Purpose {{activeDisplay}} %
{{ item.name }} {{ item.data[0] | spendUnits }} {{ item.data[0] | fixUnits }} {{ (item.data[0] * 100 / yearPurpose).toFixed(2) }}%
{{item}} {{ journeyBox.data_pie.series[index] | spendUnits }} {{ journeyBox.data_pie.series[index] | fixUnits }} {{ (journeyBox.data_pie.series[index] * 100 / yearPurpose).toFixed(2) }}%
{{item.name}} {{ item.data[index] | spendUnits }} {{ item.data[index] | fixUnits }} {{ (item.data[index] * 100 / yearPurpose).toFixed(2) }}%

{{durationBox.title}}

{{yearDuration | spendUnits}} {{filteredDataWording ? '(Filtered total)' : '(Total)'}}

{{yearDuration | fixUnits}} {{filteredDataWording ? '(Filtered total)' : '(Total)'}}

Duration {{activeDisplay}} %
{{ item.name }} {{ item.data[0] | spendUnits }} {{ item.data[0] | fixUnits }} {{ (item.data[0] * 100 / yearDuration).toFixed(2) }}%
{{item}} {{ durationBox.data_pie.series[index] | spendUnits }} {{ durationBox.data_pie.series[index] | fixUnits }} {{ (durationBox.data_pie.series[index] * 100 / yearDuration).toFixed(2) }}%
{{item.name}} {{ item.data[index] | spendUnits }} {{ item.data[index] | fixUnits }} {{ (item.data[index] * 100 / yearDuration).toFixed(2) }}%