bolster.data_sources.nisra.tourism.visitor_statistics
NISRA Quarterly Tourism Visitor Statistics Data Source.
Provides access to quarterly visitor statistics for Northern Ireland covering overnight trips, nights spent, and expenditure across geographic markets.
Data includes: - Overnight trips by visitor origin (GB, Europe, N.America, ROI, NI residents) - Nights spent (bednights) by market - Visitor expenditure by market (£ millions) - Reason for visit breakdowns (holiday, business, visiting friends/relatives) - Historical trends from 2015 onwards
Data is compiled from multiple sources: - Northern Ireland Passenger Survey (NIPS) - Central Statistics Office Inbound Tourism data - Continuous Household Survey - Household Travel Survey
- Data Source:
Mother Page: https://www.nisra.gov.uk/publications/quarterly-tourism-statistics-publications
This page lists quarterly tourism statistics publications. The module automatically scrapes to find the latest quarterly report Excel file.
Update Frequency: Quarterly (published ~6 weeks after quarter end) Geographic Coverage: Northern Ireland (by visitor origin market) Reference Period: Rolling 12-month and year-to-date
Example
>>> from bolster.data_sources.nisra.tourism import visitor_statistics
>>> df = visitor_statistics.get_latest_visitor_statistics()
>>> 'market' in df.columns
True
>>> 'expenditure' in df.columns
True
Attributes
Functions
Scrape NISRA tourism publications page to find the latest quarterly file. |
|
|
Get the latest quarterly visitor statistics by market. |
Validate visitor statistics data integrity. |
|
|
Get visitor statistics for a specific market. |
Get total visitor statistics across all markets. |
|
Compare domestic (NI residents) vs external visitor statistics. |
|
Calculate average expenditure per trip by market. |
|
Calculate average nights per trip by market. |
|
Get summary of all markets with derived metrics. |
Module Contents
- bolster.data_sources.nisra.tourism.visitor_statistics.TOURISM_PUBLICATIONS_URL = 'https://www.nisra.gov.uk/publications/quarterly-tourism-statistics-publications'[source]
- bolster.data_sources.nisra.tourism.visitor_statistics.MARKET_NAMES = ['Great Britain', 'Other Europe', 'North America', 'Other Overseas', 'Republic of Ireland', 'NI...[source]
- bolster.data_sources.nisra.tourism.visitor_statistics.get_latest_visitor_statistics_publication_url()[source]
Scrape NISRA tourism publications page to find the latest quarterly file.
The publications page directly lists Excel files for each quarter in the format: “NI Tourism Q3 2025” linking to .xlsx files.
- Returns:
//…”, “Q3 2025”)
- Return type:
Tuple of (excel_file_url, publication_period) e.g. (“https
- Raises:
NISRADataNotFoundError – If publication or file not found
- bolster.data_sources.nisra.tourism.visitor_statistics.get_latest_visitor_statistics(force_refresh=False)[source]
Get the latest quarterly visitor statistics by market.
Retrieves comprehensive visitor statistics including trips, nights spent, and expenditure broken down by visitor origin market.
- Parameters:
force_refresh (bool) – If True, bypass cache and download fresh data
- Returns:
market: Visitor origin (Great Britain, Other Europe, etc.)
trips: Number of overnight trips
nights: Number of nights spent
expenditure: Visitor spending (£ millions)
period: Measurement period (12-month rolling, year-to-date)
year: Reference year
quarter: Reference quarter
- Return type:
DataFrame with columns
- Raises:
NISRADataNotFoundError – If publication not found
NISRAValidationError – If data parsing fails
Example
>>> df = get_latest_visitor_statistics() >>> 'market' in df.columns True
- bolster.data_sources.nisra.tourism.visitor_statistics.validate_visitor_statistics(df)[source]
Validate visitor statistics data integrity.
- Parameters:
df (pandas.DataFrame) – DataFrame to validate
- Returns:
True if valid, False otherwise
- Return type:
- bolster.data_sources.nisra.tourism.visitor_statistics.get_visitor_statistics_by_market(df, market)[source]
Get visitor statistics for a specific market.
- Parameters:
df (pandas.DataFrame) – Visitor statistics DataFrame
market (str) – Market name (e.g., “Great Britain”, “Republic of Ireland”)
- Returns:
Series with statistics for the market, or None if not found
- Return type:
pandas.Series | None
Example
>>> df = get_latest_visitor_statistics() >>> gb = get_visitor_statistics_by_market(df, "Great Britain") >>> gb is not None True
- bolster.data_sources.nisra.tourism.visitor_statistics.get_total_visitor_statistics(df)[source]
Get total visitor statistics across all markets.
- Parameters:
df (pandas.DataFrame) – Visitor statistics DataFrame
- Returns:
Series with total statistics, or None if not found
- Return type:
pandas.Series | None
- bolster.data_sources.nisra.tourism.visitor_statistics.get_domestic_vs_external(df)[source]
Compare domestic (NI residents) vs external visitor statistics.
- Parameters:
df (pandas.DataFrame) – Visitor statistics DataFrame
- Returns:
DataFrame with domestic and external totals and percentages
- Return type:
Example
>>> df = get_latest_visitor_statistics() >>> comparison = get_domestic_vs_external(df) >>> 'category' in comparison.columns True
- bolster.data_sources.nisra.tourism.visitor_statistics.get_expenditure_per_trip(df)[source]
Calculate average expenditure per trip by market.
- Parameters:
df (pandas.DataFrame) – Visitor statistics DataFrame
- Returns:
DataFrame with market and expenditure_per_trip columns
- Return type:
Example
>>> df = get_latest_visitor_statistics() >>> spend = get_expenditure_per_trip(df) >>> 'expenditure_per_trip' in spend.columns True
- bolster.data_sources.nisra.tourism.visitor_statistics.get_nights_per_trip(df)[source]
Calculate average nights per trip by market.
- Parameters:
df (pandas.DataFrame) – Visitor statistics DataFrame
- Returns:
DataFrame with market and nights_per_trip columns
- Return type:
Example
>>> df = get_latest_visitor_statistics() >>> duration = get_nights_per_trip(df) >>> 'nights_per_trip' in duration.columns True
- bolster.data_sources.nisra.tourism.visitor_statistics.get_market_summary(df)[source]
Get summary of all markets with derived metrics.
- Parameters:
df (pandas.DataFrame) – Visitor statistics DataFrame
- Returns:
DataFrame with market summary including percentages and per-trip metrics
- Return type:
Example
>>> df = get_latest_visitor_statistics() >>> summary = get_market_summary(df) >>> 'market' in summary.columns True