Close Menu
    Facebook X (Twitter) Instagram
    • Home
    • Contact Us
    • About Us
    • Privacy Policy
    • Terms Of Service
    • Advertisement
    Sunday, July 5
    Facebook X (Twitter) Instagram Pinterest Vimeo
    ABS Africa TV
    • Breaking News
    • Trending
    • Africa News
    • World News
    • Features
    • Technology
    • Sports
    • Politics
    • More
      • Culture
      • Lifestyle
      • Travel
      • Business
      • Environment
      • Legal
      • Health
      • Cameroon
      • Ambazonia
      • AfroSingles
      • Environ/Climate
      • Editorial
      • The Leak Magazine
    • Donate
    Subscription
    ABS Africa TV
    Home»Trending»Nairobi ranks 56th globally and 6th in Sub-Saharan Africa in new city attractiveness index
    Trending

    Nairobi ranks 56th globally and 6th in Sub-Saharan Africa in new city attractiveness index

    Anjianjei ConstantineBy Anjianjei ConstantineJuly 5, 2026No Comments10 Mins Read
    Facebook Twitter Pinterest LinkedIn Tumblr Email
    Share
    Facebook Twitter LinkedIn Pinterest Email
    Post Views: 22

    Nairobi ranks 56th globally and 6th in Sub-Saharan Africa in new city attractiveness index

    Nairobi ranks 56th globally and 6th in Sub-Saharan Africa in new city attractiveness index

    A section of the Nairobi Expressway in Kenya’s capital city. Nairobi has been ranked 56th globally and 6th in Sub-Saharan Africa in the latest Global Attractiveness Index.(Photo: Xinhua/Dong Jianghui)

    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.

    Experts argue that the ranking reflects the city’s standing as a key regional hub despite persistent structural challenges

    Nairobi has been ranked 56th globally and 6th in Sub-Saharan Africa in the latest Global Attractiveness Index.
    Unveiled on Monday during the Climate Change Business Summit in Nairobi, the index places the country’s capital 11th across the entire continent of Africa.
    Experts argue that the ranking reflects the city’s standing as a key regional hub despite persistent structural challenges.

    More To Read

    • Nairobi budget lapse leaves county on restricted spending as Governor Sakaja, MCAs clash
    • Emirates launches third daily Nairobi flight, boosting Kenya-UAE connectivity
    • Revamped Kamukunji Recreation Park set to boost sports, youth and local economy
    • It’s International Sushi Day: 11 sushi etiquette mistakes to avoid
    • Nairobi County rolls out digital system to monitor vehicles, fuel use and maintenance
    • Government to install CCTV across Nairobi, Mombasa and four other cities in crime crackdown

    The Global Attractiveness Index for Emerging and Fast-Growing Cities, developed by logistics firm DHL and the European House Ambrosetti, evaluated 80 cities worldwide based on their ability to attract and retain capital, talent and services.
    It measures performance across four pillars: economy, environment, social conditions and urban infrastructure.
    According to the findings, Nairobi continues to demonstrate a strong economic profile, ranking 39th globally in the economic dimension.

    Latest Stories

    • Invisible peacebuilders: How ‘diplomacy works’ to prevent conflict
    • Government extends security operation in Marsabit, declares multiple areas dangerous for 30 more days
    • Three arrested after Linda Mwananchi convoy attacked in Kisii as police hunt for more suspects
    • Mbappé fires France past Paraguay into World Cup quarter-finals

    The city’s diversified economy and relative affordability position it competitively among peer emerging cities, reinforcing its role as a commercial anchor in Eastern Africa.
    The report also highlights Nairobi’s environmental performance as a key strength, with the city ranking 35th globally.
    Strong air quality indicators, access to drinking water and availability of green spaces have elevated its position, marking it as one of the continent’s more environmentally competitive urban centres.

    Hennie Heymans, CEO of DHL Express Sub-Saharan Africa (L) and Pietro Maninni, CEO of The European House – Ambrosetti Africa (R) at the 2026 Global Attractiveness Index for Emerging and Fast-Growing Cities (GAI) launch. Nairobi is ranked 56th globally, 11th in Africa, and 6th in Sub-Saharan Africa. (Handout)
    However, the index underscores significant gaps in social conditions, where Nairobi ranks 73rd globally.
    Limited access to sanitation services and a high proportion of residents living in informal settlements continue to weigh heavily on its overall attractiveness.
    Infrastructure constraints further limit Nairobi’s global competitiveness, with the city placed 65th in this category.
    Weak digital connectivity and low sewerage coverage are cited as major barriers, even as basic water access remains relatively stable compared to regional peers.
    Across the continent, Johannesburg, Port Louis, Gaborone and Praia emerged as top performers.
    Looking ahead, the GAI emphasises that Africa’s urban future will be defined by how well cities balance economic dynamism with social inclusion and infrastructure reliability.
    “Africa is not short of ambition or talent. What we need now is coordinated investment, public and private, in the systems that allow cities to scale sustainably,” said Hennie Heymans, CEO of DHL Express Sub-Saharan Africa.
    “Cities such as Johannesburg, Port Louis, and Gaborone demonstrate what is possible, and Nairobi’s ranking highlights the untapped potential that can be unlocked by aligning its positive economic and environmental progress with targeted investments in social initiatives and infrastructure.”
    Pietro Maninni, CEO of The European House – Ambrosetti Africa, echoed his sentiments.
    “The GAI provides an important evidence base for policymakers, investors and business leaders. With the right reforms, digital acceleration, inclusive housing strategies, green infrastructure and modernised urban services, African cities can shift quickly into higher tiers of global competitiveness.”

    Other Topics To Read

    Top Stories Today

    • Three arrested after Linda Mwananchi convoy attacked in Kisii as police hunt for more suspects
    • Invisible peacebuilders: How ‘diplomacy works’ to prevent conflict
    • Quiet revolution behind foldable smartphones and why they’re making a comeback
    • State extends security operation in Marsabit, declares multiple areas dangerous for 30 more days
    • Mbappé fires France past Paraguay into World Cup quarter-finals
    • Cherotich, Odira shine as Kenya dominates Prefontaine Classic despite rare Kipyegon defeat

    `;
    }

    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

    Invisible peacebuilders: How ‘diplomacy works’ to prevent conflict
    Invisible peacebuilders: How ‘diplomacy works’ to prevent conflictWorld
    |UN News
    |39 minutes ago
    Morocco continue historic rise with record-breaking World Cup victory against Canada
    Morocco continue historic rise with record-breaking World Cup victory against CanadaSports
    |Erick Kariuki
    |10 hours ago
    Mbappé fires France past Paraguay into World Cup quarter-finals
    Mbappé fires France past Paraguay into World Cup quarter-finalsSports
    |Erick Kariuki
    |2 hours ago
    UK, France agree with Oman on multinational military mission to secure Strait of Hormuz
    UK, France agree with Oman on multinational military mission to secure Strait of HormuzNews
    |Mary Wambui
    |21 hours ago
    Sudan’s people subject to ‘relentless’ drone strikes in El Obeid
    Sudan’s people subject to ‘relentless’ drone strikes in El ObeidSudan
    |UN News
    |14 hours ago
    UN Rights Chief Volker Türk issues ‘Red Alert’ over escalating violence in Sudan’s El ObeidNews
    |Mary Wambui
    |1 day ago

    SHA seeks Treasury funds to clear NHIF claims above Sh10 millionHealth
    |Charity Kilei
    |16 hours ago
    Renewable energy boom cuts global fossil fuel bill by Sh62 trillion in 2025
    Renewable energy boom cuts global fossil fuel bill by Sh62 trillion in 2025Business
    |Alfred Onyango
    |1 day ago
    Cherotich, Odira shine as Kenya dominates Prefontaine Classic despite rare Kipyegon defeat
    Cherotich, Odira shine as Kenya dominates Prefontaine Classic despite rare Kipyegon defeatSports
    |Erick Kariuki
    |2 hours ago
    16 CITAM Woodley pupils stable after bee attack during Lake Baringo tour
    16 CITAM Woodley pupils stable after bee attack during Lake Baringo tourNews
    |Rachael Mutabasi
    |22 hours ago

    56th globally Nairobi Ranks SubSaharan
    Share. Facebook Twitter Pinterest LinkedIn Tumblr Email
    Anjianjei Constantine
    • Website

    Related Posts

    Sahara vs Great Green Wall: An 8,000-km green belt is being built across Africa’s Sahel region; aims to stop desert expansion

    July 5, 2026

    Despite Cape Verde heroics, round 32 hurts African teams

    July 5, 2026

    South African, Nigerian currencies rank among top global performers in 2025

    July 5, 2026
    Leave A Reply Cancel Reply

    Search
    Latest Post

    Aviation stakeholders urge MPs to reject proposed tax on air travel services

    July 5, 2026

    Report reveals alarming decline in wildlife numbers in Africa

    July 5, 2026

    Africa’s largest refinery explains why falling oil prices don’t immediately translate to cheaper petrol after $4.5 billion crude spend

    July 5, 2026

    ActionAid warns of crisis as austerity slashes African health, education workers’ pay

    July 5, 2026

    Zonal Legal Manager (Loan Against Property) Vacancy At Kotak Mahindra Bank Limited

    July 5, 2026

    Subscribe to Updates

    Get the latest creative news from FooBar about art, design and business.

    • Facebook
    • Twitter
    • Pinterest
    • Instagram
    • YouTube
    • TikTok
    ABS TV and ABS Network News is a leading Pan-African 24/7 broadcasting network delivering nonstop news, talk shows, lifestyle programs, and digital media content worldwide through Satellite, Streaming Platforms, and Roku TV.
     
    Based in the United States, we connect Africa to the world while empowering creators, journalists, and brands through innovative media and broadcasting services.
    Facebook X (Twitter) Pinterest WhatsApp Instagram

    Our Picks

    Aviation stakeholders urge MPs to reject proposed tax on air travel services

    Report reveals alarming decline in wildlife numbers in Africa

    Africa’s largest refinery explains why falling oil prices don’t immediately translate to cheaper petrol after $4.5 billion crude spend

    Most Popular

    ActionAid warns of crisis as austerity slashes African health, education workers’ pay

    Zonal Legal Manager (Loan Against Property) Vacancy At Kotak Mahindra Bank Limited

    ‘What shocked me’: Makhadzi responds to Zimbabwe backlash

    © 2026 Copyright. All Rights Reserved by ABSAFRICATV
    • Privacy Policy
    • Terms of Services

    Type above and press Enter to search. Press Esc to cancel.

    We use cookies to ensure that we give you the best experience on our website. If you continue to use this site we will assume that you are happy with it.