Why South Africa is Kenya’s top overseas destination for commercial property investment
Listen to article
3 min listen
Audio reading is not supported on this browser.
Ready
Thanks for listening. Continue with a related story, or tap the speaker icon on the next page to listen.
8 mouthwatering egg salad recipes for quick, tasty lunches
Margaret Wanjiru
·
17 hours agoRead nextOpens a fresh page.
South Africa is the most preferred international destination for Kenyan investors seeking commercial property investments outside the domestic market.
This according to the latest ‘Wealth & Investment Trends Report’ by real estate consultancy Knight Frank.
The report highlights that while Kenya remains the primary destination for commercial property investments among affluent investors, those seeking exposure beyond the country are most likely to consider South Africa as their preferred overseas market.
More To Read
- 8 mouthwatering egg salad recipes for quick, tasty lunches
- Art emerges the most sought investment of passion among Kenya’s wealthy
- Kenya’s affluent are not much of luxury spenders – report
- Uganda completes first phase of evacuations from South Africa as xenophobic violence escalates
- How to make date-filled ma’amoul biscuits at home for family and friends
- Nigeria demands probe after two citizens killed in South Africa amid rising xenophobia concerns
It acknowledges that Kenya continues to command the largest share of commercial property allocations among wealthy investors, reflecting a continued preference for familiar markets where they have stronger oversight of assets and established business networks.
The report attributes Kenya’s continued dominance to sustained urbanisation across major cities including Nairobi, Mombasa, Kisumu and Nakuru, as well as the growth of satellite towns that are creating new demand for commercial and mixed-use developments.
Infrastructure improvements, including expansion of transport networks, road systems and utility services, have also enhanced accessibility and unlocked new real estate corridors, supporting long-term property value growth.
Latest Stories
- KRA sets August 3 start date for new Advance Cargo Declaration system
- Spain outclass France to reach World Cup final as La Roja extend historic unbeaten run
- Sudan faces worsening hunger as conflict and funding cuts threaten aid response
- Lakes that ‘breathe’ ancient carbon: A surprising find in the Congo Basin
Additionally, Kenya’s medium-term economic outlook remains supportive of business expansion, which continues to drive demand for office, retail and industrial spaces.
Beyond real estate fundamentals, local market familiarity remains a major consideration for investors.
However, when looking outside Kenya, South Africa stands out as the leading choice due to the maturity of its commercial property market and the depth of its investment ecosystem.
Knight Frank says the country offers a diversified real estate landscape spanning office, retail, industrial and mixed-use assets, providing Kenyan investors with wider opportunities for portfolio expansion.
South Africa’s established infrastructure base and sophisticated financial system also support greater confidence among investors seeking international exposure.
The availability of structured investment vehicles, developed capital markets and professional asset management services further strengthens its appeal as a destination for commercial property investment.
Commenting on the findings, Mark Dunford, Chief Executive Officer of Knight Frank Kenya, said investment decisions among wealthy investors are increasingly shaped by long-term wealth preservation rather than short-term gains.
“The report also notes that investment decisions are increasingly driven by wealth preservation, resilience and sustainable returns rather than speculation,” Dunford said.
“What we are seeing is a balanced investment approach. Investors are selectively diversifying internationally where it complements their portfolios, while continuing to allocate significant capital to opportunities within Kenya across multiple asset classes.”
Other Topics To Read
Top Stories Today
- Why South Africa is Kenya’s top overseas destination for commercial property investment
- KRA sets August 3 start date for new Advance Cargo Declaration system
- Spain outclass France to reach World Cup final as La Roja extend historic unbeaten run
- WFP warns Sudan faces deeper hunger crisis as fighting continues
- Fuel prices remain unchanged as EPRA retains pump rates for another month
- Study finds Congo Basin lakes ‘breathing’ ancient carbon into atmosphere
`;
}
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
Spain outclass France to reach World Cup final as La Roja extend historic unbeaten runNews
|Erick Kariuki
|31 minutes ago
Why South Africa is Kenya’s top overseas destination for commercial property investmentBusiness
|Alfred Onyango
|32 minutes ago
Viwandani MCA Aaron Kang’ara Wangare charged over violent Donholm robbery and property damageCity Affairs
|Carolyne Kubwa
|12 hours ago
Ebola reaches major transport hub of Kisangani as DR Congo outbreak expands across five provincesHealth
|Mwangi Maina
|8 hours ago
Lakes that ‘breathe’ ancient carbon: A surprising find in the Congo BasinClimate Change
|The Conversation
|8 hours ago
IG Kanja deploys over 1,000 police officers to secure Ol Kalou by-electionNews
|Mary Wambui
|18 hours ago
Junior Starlets drawn against China, US and Samoa in U17 World CupNews
|Lucy Mumbi
|22 hours ago
Sudan faces worsening hunger as conflict and funding cuts threaten aid responseSudan
|Mwangi Maina
|44 minutes ago

KRA sets August 3 start date for new Advance Cargo Declaration systemNews
|Bashir Mbuthia
|12 minutes ago
Ex-KDF Major Peter Mugure sentenced to life for murder of wife, two childrenNews
|Carolyne Kubwa
|19 hours ago
