Kenya tops global wildlife photography destinations list

Kenya tops global wildlife photography destinations list

Read this story aloud

Listen to the clean text version of this article

Ready
3 min listen
Audio reading is not supported on this browser.

According to the study, 20.69 per cent of the photos analysed and tagged ‘wildlife’ originated from Kenya, earning Nairobi the top position on the list

Kenya is the premiere global destination for wildlife spotting and photography, a recent study by Africa-based safari firm Go2Africa has revealed.
The study, which analyzed 70 million images on the photo-sharing website Flickr, involved searching for each location alongside the keyword ‘wildlife.’
By calculating the proportion of wildlife photos relative to all images of the location, the study identified the most sought-after destinations for animal photography.

More To Read

  • Panic in Maasai Mara as aircraft skids off runway after landing failure, three escape unhurt
  • Kenya tourism trends shift in 2025 as leisure travel strengthens dominance over business trips
  • Tourism regulator rejects claims of hostage situation at Maasai Mara National Reserve
  • Unforgettable trips – Bucket list adventures no Kenyan should miss

According to the study, 20.69 per cent of the photos analysed and tagged ‘wildlife’ originated from Kenya, earning Nairobi the top position on the list.
Canada, Singapore, Australia, and Botswana rounded off the top-five list of the most appealing counties for wildlife spotting and photography, with 20.42 per cent, 19.19 per cent, 17.43 per cent and 16.53 per cent of the analysed and tagged photos captured in the countries.
“Kenya has many expansive parks and landscapes that are home to its diverse population of wildlife. The Maasai Mara is the country’s most popular reserve and holds one of Africa’s richest concentrations of wildlife,” the Go2Africa website reads in part.

Latest Stories

  • Kenya reaffirms ties with Rwanda as it marks Liberation Day celebrations
  • Morocco continue historic rise with record-breaking World Cup victory against Canada
  • Serena Williams withdraws from Wimbledon doubles after knee injury, ending Venus reunion plans
  • Report records 83 harassment incidents against Christians in Israel over three months

“At the foot of Mount Kilimanjaro, Amboseli is renowned for its large herds of free-ranging African elephants and its majestic backdrop, which makes photography in the region especially breathtaking. Samburu National Reserve is famous for its abundance of unique species such as the Grevy Zebra– the largest of the three zebra species.”
Tanzania secured the sixth spot with 15.98 per cent, followed by Lithuania at 15.68 per cent, Namibia at 14.32 per cent, India at 13.27 per cent, and South Africa at 12.16 per cent, rounding out positions six to ten on the list, respectively.
The study revealed that Canada led with the highest number of wildlife photos, totaling 156,420, followed by Australia with 128,995.
Kenya documented 120,814 wildlife photos, while Singapore contributed 117,702 to the collection. Tanzania and India accounted for 87,492 and 82,063 wildlife photos, respectively.
57,882, 55,737, 56,674 and 53,789 wildlife photos were captured in Lithuania, Namibia, South Africa and Botswana, respectively, according to the study.
The study also ranked South Africa’s Kruger National Park as the best national park to spot wildlife, According to Go2Africa almost half of photographs of the park (42.54%) are of the location’s incredible wildlife, accounting for over 40,965 unique images.
Maasai Mara National Reserve came in second place with 33.53% of photos of the park featuring wildlife while Tanzania’s Serengeti National Park coming in third place with 23.37% of its photos showcasing the park’s unique wildlife.
“The Serengeti, along with the Masai Mara, are both renowned for The Great Wildebeest Migration which sees more than 2 million animals traverse through both national parks throughout the year,” said Go2Africa.

Other Topics To Read

Top Stories Today

  • Weekly new Ebola cases reach highest level since outbreak began: WHO
  • Kenya reaffirms ties with Rwanda as it marks Liberation Day celebrations
  • Serena Williams withdraws from Wimbledon doubles after knee injury, ending Venus reunion plans
  • Report records 83 harassment incidents against Christians in Israel over three months
  • Clean mobility gains ground in trucks and buses, but fossil fuels still dominate at 94 per cent – report
  • Over 1,000 Sudanese return home from Egypt under ongoing repatriation programme

`;
}

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


Kenya reaffirms ties with Rwanda as it marks Liberation Day celebrationsRegional
|Bashir Mbuthia
|2 hours ago

Over 1,000 Sudanese return home from Egypt under ongoing repatriation programmeSouth Sudan
|Bashir Mbuthia
|4 hours ago

Study finds intermittent fasting helps maintain weight loss for at least a yearHealth
|Charity Kilei
|7 hours ago

What the World Cup hydration breaks reveal about who governs men’s footballSports
|The Conversation
|10 hours ago

CAF opens bidding for 2028, 2032 and 2036 AFCON tournamentsNews
|Erick Kariuki
|16 hours ago

Morocco continue historic rise with record-breaking World Cup victory against CanadaSports
|Erick Kariuki
|3 hours ago

Somalia intelligence agency kills Al-Shabaab mortar unit leader in Basra operationSomalia
|Bashir Mbuthia
|5 hours ago

Pope Leo XIV shines spotlight on Mediterranean migration crisisWorld
|Mary Wambui
|7 hours ago

Sudan’s people subject to ‘relentless’ drone strikes in El ObeidSudan
|UN News
|6 hours ago

Clean mobility gains ground in trucks and buses, but fossil fuels still dominate at 94 per cent – reportClimate Change
|Alfred Onyango
|4 hours ago

Share.
Leave A Reply

Exit mobile version