Kenya among Africa’s most strategic tourism markets with Sh1.6 trillion impact – report
Kenya among Africa’s most strategic tourism markets with Sh1.6 trillion impact – report
Read this story aloud
Listen to the clean text version of this article
Ready
4 min listen
Audio reading is not supported on this browser.
The report shows that travel and tourism contributed $12.7 billion (Sh1.6 trillion) to Kenya’s economy in 2025, accounting for 9.3 per cent of the country’s Gross Domestic Product (GDP)
Kenya is one of Africa’s most strategically important tourism markets, according to the World Travel & Tourism Council (WTTC).
In its latest 2026 Economic Impact Research (EIR) report, the council highlights the country’s growing contribution to the continent’s tourism expansion and sustainable development agenda.
The report shows that travel and tourism contributed $12.7 billion (Sh1.6 trillion) to Kenya’s economy in 2025, accounting for 9.3 per cent of the country’s Gross Domestic Product (GDP).
More To Read
- Kenya’s tourism sector hits Sh500 billion revenue in 2025, welcomes 7.9 million visitors
The sector also supported 1.8 million jobs, representing 8.3 per cent of total employment, underscoring its significance as a major economic pillar.
WTTC says Kenya’s strong performance reflects a wider transformation across Africa, where tourism is growing faster than the broader economy and positioning the continent among the world’s fastest-growing travel destinations.
The council adds that Kenya’s strategic location, resilient tourism sector and commitment to sustainability have made it a key player in shaping Africa’s tourism future.
Latest Stories
- Mandera anti-illicit alcohol drive intensifies as officers target brewing and distribution rings
- Treasury denies claims government plans to borrow Sh1 trillion from sacco savings for infrastructure fund
- Police to mount checkpoints across Nairobi ahead of 2026 Saba Saba commemoration, warn against unlawful acts
- Government to launch forceful disarmament in Tana River County after amnesty ends
Speaking during a tourism stakeholders’ forum in Nairobi, WTTC President and Chief Executive Officer Gloria Guevara said Africa is now one of the fastest-growing tourism regions globally, and Kenya is helping lead that momentum.
“With a strong economic contribution, a balanced demand model and clear leadership in sustainable tourism, Kenya demonstrates what long-term Travel & Tourism success can look like,” Guevara said.
Kenya’s tourism growth has been driven by a balanced mix of international and domestic demand.
International visitor spending reached $5 billion (Sh646.9 billion) in 2025, accounting for 52.4 per cent of total tourism expenditure and slightly surpassing domestic visitor spending of $4.5 billion (Sh582.3 billion).
The country welcomed 2.5 million international visitors during the year, marking a 5.6 per cent increase from 2024.
The report further highlights Kenya’s tourism trade surplus, with international visitor spending exceeding outbound travel expenditure by $3.96 billion (Sh512.4 billion) in 2025.
WTTC says the surplus generated a substantial inflow of foreign exchange, strengthening economic resilience while supporting broader national development goals.
Kenya has also been singled out for its leadership in sustainable tourism.
According to the report, nearly 20 per cent of the sector’s energy consumption comes from low-carbon sources, significantly above both the global average of 5.9 per cent and the African average of 2.9 per cent.
The achievement places Kenya among the world’s leading destinations in advancing the tourism sector’s energy transition.
At the continental level, WTTC reports that travel and tourism contributed $228 billion (Sh29.5 trillion) to Africa’s economy in 2025, equivalent to seven per cent of regional GDP.
The sector is expected to grow further to $241 billion (Sh31.2 trillion) in 2026, while supporting 31.5 million jobs.
Guevara reaffirmed the council’s commitment to the region, saying.
“WTTC is proud to continue strengthening its engagement with Kenya and Africa, amplifying the region’s voice on the global stage, and supporting efforts to unlock the immense potential of Travel & Tourism as a driver of jobs, investment, and sustainable economic growth.”
Other Topics To Read
Top Stories Today
- Saba Saba 2026: Police announce checkpoints in Nairobi
- Government denies plan to tap sacco savings for National Infrastructure Fund
- Woman arrested as Mandera intensifies war on illicit alcohol trade
- Government warns Tana River gun holders as forceful disarmament looms
- Suspects held over Kisii Linda Mwananchi violence as court awaits case file
- Duale, Oduor accused of defying High Court order on KNDI appointments
`;
}
return “;
}
function commentActionsMarkup(comment, canComment) {
const likeLabel = comment.liked_by_me ? ‘Liked’ : ‘Like’;
const likeCount = Number(comment.like_count || 0) > 0
? “
: ”;
const likeButton = canComment && comment.status === ‘approved’
? “
: “;
const replyButton = canComment && comment.status === ‘approved’
? “
: ”;
return `
`;
}
function commentMarkup(comment, canComment, isReply = false) {
const pendingBadge = comment.status && comment.status !== ‘approved’
? “
: ”;
const edited = comment.is_edited
? “
: ”;
const repliesHtml = Array.isArray(comment.replies) && comment.replies.length
? `
`
: “;
return `
`;
}
function replyFormMarkup(commentId) {
return `
`;
}
function setNotice(widget, message, type = ‘info’) {
const notice = widget.querySelector(‘[data-role=”notice”]’);
if (!notice) return;
if (!message) {
notice.hidden = true;
notice.textContent = ”;
notice.classList.remove(‘is-error’);
return;
}
notice.hidden = false;
notice.textContent = message;
notice.classList.toggle(‘is-error’, type === ‘error’);
}
function setCount(widget, total) {
const count = widget.querySelector(‘[data-role=”count”]’);
if (!count) return;
const num = Number(total || 0);
count.textContent = num === 1 ? ‘1 comment’ : `${num} comments`;
}
function openReplyBox(widget, commentId) {
widget.querySelectorAll(‘[data-role=”reply-box”]’).forEach(box => {
box.hidden = true;
box.innerHTML = ”;
});
const targetItem = widget.querySelector(`.ev-comments__item[data-comment-id=”${commentId}”]`);
if (!targetItem) return;
const replyBox = targetItem.querySelector(‘[data-role=”reply-box”]’);
if (!replyBox) return;
replyBox.hidden = false;
replyBox.innerHTML = replyFormMarkup(commentId);
const textarea = replyBox.querySelector(‘textarea’);
if (textarea) textarea.focus();
}
function closeReplyBox(container) {
if (!container) return;
container.hidden = true;
container.innerHTML = ”;
}
async function initCommentsWidget(widget) {
const state = {
articleId: Number(widget.dataset.articleId),
loadUrl: widget.dataset.loadUrl,
storeUrl: widget.dataset.storeUrl,
commentsBaseUrl: widget.dataset.commentsBaseUrl,
canComment: widget.dataset.canComment === ‘1’,
page: 1,
perPage: 10,
sort: ‘newest’,
total: 0,
hasMore: false,
busy: false
};
const list = widget.querySelector(‘[data-role=”list”]’);
const loading = widget.querySelector(‘[data-role=”loading”]’);
const empty = widget.querySelector(‘[data-role=”empty”]’);
const loadMoreBtn = widget.querySelector(‘[data-role=”load-more”]’);
const sortSelect = widget.querySelector(‘[data-role=”sort”]’);
const composerForm = widget.querySelector(‘[data-role=”composer-form”]’);
async function loadComments(reset = true) {
if (state.busy) return;
state.busy = true;
setNotice(widget, ”);
loading.hidden = false;
if (reset) {
state.page = 1;
list.innerHTML = ”;
empty.hidden = true;
}
try {
const url = new URL(state.loadUrl, window.location.origin);
url.searchParams.set(‘page’, state.page);
url.searchParams.set(‘per_page’, state.perPage);
url.searchParams.set(‘sort’, state.sort);
const response = await requestJson(url.toString(), {
method: ‘GET’,
headers: {
‘Accept’: ‘application/json’,
‘X-Requested-With’: ‘XMLHttpRequest’
}
});
const items = Array.isArray(response.data) ? response.data : [];
const meta = response.meta || {};
state.total = Number(meta.total || 0);
state.hasMore = !!meta.has_more;
setCount(widget, state.total);
if (reset) {
list.innerHTML = ”;
}
if (!items.length && reset) {
empty.hidden = false;
} else {
empty.hidden = true;
list.insertAdjacentHTML(
‘beforeend’,
items.map(item => commentMarkup(item, state.canComment, false)).join(”)
);
}
loadMoreBtn.hidden = !state.hasMore;
} catch (error) {
if (!list.children.length) {
empty.hidden = false;
empty.textContent = ‘Unable to load comments right now.’;
}
setNotice(widget, error.message || ‘Unable to load comments.’, ‘error’);
} finally {
loading.hidden = true;
state.busy = false;
}
}
async function submitTopLevelComment(form) {
const textarea = form.querySelector(‘textarea[name=”content”]’);
const button = form.querySelector(‘[data-role=”submit-comment”]’);
if (!textarea) return;
const content = textarea.value.trim();
if (!content) return;
const originalText = button ? button.textContent : ”;
try {
if (button) {
button.disabled = true;
button.textContent = ‘Posting…’;
}
const response = await requestJson(state.storeUrl, {
method: ‘POST’,
headers: buildJsonHeaders(),
body: JSON.stringify({
article_id: state.articleId,
content: content,
source_url: window.location.href
})
});
textarea.value = ”;
if (response?.data) {
list.insertAdjacentHTML(
‘afterbegin’,
commentMarkup(response.data, state.canComment, false)
);
empty.hidden = true;
if ((response.data.status || ”) === ‘approved’) {
state.total += 1;
setCount(widget, state.total);
}
}
setNotice(widget, response.message || ‘Comment posted successfully.’);
} catch (error) {
setNotice(widget, error.message || ‘Unable to post comment.’, ‘error’);
} finally {
if (button) {
button.disabled = false;
button.textContent = originalText || ‘Post comment’;
}
}
}
async function submitReply(form) {
const commentId = Number(form.dataset.commentId || 0);
const textarea = form.querySelector(‘textarea[name=”content”]’);
const button = form.querySelector(‘.ev-comments__reply-submit’);
if (!commentId || !textarea) return;
const content = textarea.value.trim();
if (!content) return;
const originalText = button ? button.textContent : ”;
try {
if (button) {
button.disabled = true;
button.textContent = ‘Posting…’;
}
const response = await requestJson(`${state.commentsBaseUrl}/${commentId}/reply`, {
method: ‘POST’,
headers: buildJsonHeaders(),
body: JSON.stringify({
article_id: state.articleId,
content: content,
source_url: window.location.href
})
});
if (response?.data) {
const parentItem = widget.querySelector(`.ev-comments__item[data-comment-id=”${commentId}”]`);
if (parentItem) {
const repliesWrap = parentItem.querySelector(‘.ev-comments__replies’);
if (repliesWrap) {
repliesWrap.insertAdjacentHTML(
‘beforeend’,
commentMarkup(response.data, state.canComment, true)
);
}
}
}
closeReplyBox(form.closest(‘[data-role=”reply-box”]’));
setNotice(widget, response.message || ‘Reply posted successfully.’);
} catch (error) {
setNotice(widget, error.message || ‘Unable to post reply.’, ‘error’);
} finally {
if (button) {
button.disabled = false;
button.textContent = originalText || ‘Post reply’;
}
}
}
async function toggleLike(button) {
const commentId = Number(button.dataset.commentId || 0);
if (!commentId) return;
const originalHtml = button.innerHTML;
try {
button.disabled = true;
button.innerHTML = ‘Working…’;
const response = await requestJson(`${state.commentsBaseUrl}/${commentId}/like`, {
method: ‘POST’,
headers: buildJsonHeaders(),
body: JSON.stringify({})
});
const liked = !!response?.data?.liked;
const likeCount = Number(response?.data?.like_count || 0);
button.classList.toggle(‘is-liked’, liked);
button.innerHTML = `${liked ? ‘Liked’ : ‘Like’} ${likeCount > 0 ? “ : ”}`;
} catch (error) {
button.innerHTML = originalHtml;
setNotice(widget, error.message || ‘Unable to update like.’, ‘error’);
} finally {
button.disabled = false;
}
}
if (composerForm) {
composerForm.addEventListener(‘submit’, function (e) {
e.preventDefault();
submitTopLevelComment(composerForm);
});
}
if (sortSelect) {
sortSelect.addEventListener(‘change’, function () {
state.sort = this.value || ‘newest’;
loadComments(true);
});
}
if (loadMoreBtn) {
loadMoreBtn.addEventListener(‘click’, function () {
if (state.busy || !state.hasMore) return;
state.page += 1;
loadComments(false);
});
}
widget.addEventListener(‘click’, function (e) {
const likeBtn = e.target.closest(‘[data-action=”toggle-like”]’);
if (likeBtn) {
e.preventDefault();
toggleLike(likeBtn);
return;
}
const replyBtn = e.target.closest(‘[data-action=”toggle-reply”]’);
if (replyBtn) {
e.preventDefault();
openReplyBox(widget, Number(replyBtn.dataset.commentId || 0));
return;
}
const cancelReplyBtn = e.target.closest(‘[data-action=”cancel-reply”]’);
if (cancelReplyBtn) {
e.preventDefault();
closeReplyBox(cancelReplyBtn.closest(‘[data-role=”reply-box”]’));
}
});
widget.addEventListener(‘submit’, function (e) {
const replyForm = e.target.closest(‘.ev-comments__reply-form’);
if (replyForm) {
e.preventDefault();
submitReply(replyForm);
}
});
loadComments(true);
}
document.addEventListener(‘DOMContentLoaded’, function () {
document.querySelectorAll(‘.ev-comments’).forEach(initCommentsWidget);
});
})();
Trending
CS Duale, Attorney General Oduor face contempt case over failure to implement KNDI court orderNews
|Carolyne Kubwa
|6 hours ago
Police to mount checkpoints across Nairobi ahead of 2026 Saba Saba commemoration, warn against unlawful actsNational
|Abdirahman Khalif
|3 hours ago
Mandera anti-illicit alcohol drive intensifies as officers target brewing and distribution ringsNorthern Kenya
|Abdirahman Khalif
|3 hours ago
Treasury denies claims government plans to borrow Sh1 trillion from sacco savings for infrastructure fundNews
|Barack Oduor
|3 hours ago
Kenyans urged to join Saba Saba march to honour victims of alleged abductions, killingsNews
|Lucy Mumbi
|1 day ago
Fresh cracks emerge in United Opposition over selection of 2027 flagbearerPolitics
|Barack Oduor
|11 hours ago
Quiet revolution behind foldable smartphones and why they’re making a comebackTechnology
|Margaret Wanjiru
|1 day ago
Zamzam fires warning over ODM nomination as Mombasa succession politics intensifyPolitics
|Farhiya Hussein
|1 day ago
Suspects held over Linda Mwananchi convoy attack in Kisii remain in custody as missing files delay pleaNews
|Carolyne Kubwa
|4 hours ago
Online abuse, harassment driving women out of African politics – ReportNews
|Lucy Mumbi
|8 hours ago
