Close Menu
    Facebook X (Twitter) Instagram
    • Home
    • Contact Us
    • About Us
    • Privacy Policy
    • Terms Of Service
    • Advertisement
    Monday, July 6
    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»Breaking News»AFCON 2027 qualifiers draw set for May 19 as 48 nations begin race to East Africa
    Breaking News

    AFCON 2027 qualifiers draw set for May 19 as 48 nations begin race to East Africa

    Nouman mBy Nouman mJuly 5, 2026No Comments10 Mins Read
    Facebook Twitter Pinterest LinkedIn Tumblr Email
    Share
    Facebook Twitter LinkedIn Pinterest Email
    Post Views: 7

    AFCON 2027 qualifiers draw set for May 19 as 48 nations begin race to East Africa

    AFCON 2027 qualifiers draw set for May 19 as 48 nations begin race to East Africa

    A qualifiers draw pot for PAMOJA 2027 (Photo: CAF)

    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.

    A total of 48 national teams, including the three co-hosts, will enter the qualification race. By the end of the campaign, only 24 teams will secure places at the finals of Africa’s biggest football competition

    The road to the 2027 Africa Cup of Nations (AFCON) officially begins on Tuesday afternoon when the Confederation of African Football (CAF) conducts the draw for the qualifiers in Cairo, Egypt.
    The ceremony will take place on May 19, 2026, at 3:00 pm local time (12h00 GMT) at the headquarters of the Egyptian Football Association. It will mark the first major step toward the tournament that will be jointly hosted by Kenya, Tanzania and Uganda in June and July 2027.
    A total of 48 national teams, including the three co-hosts, will enter the qualification race. By the end of the campaign, only 24 teams will secure places at the finals of Africa’s biggest football competition.

    More To Read

    • CAF opens bidding for 2028, 2032 and 2036 AFCON tournaments
    • President Yoweri Museveni backs single East African visa for 2027 AFCON
    • From Pipeline to MLS history: How Lawrence Olum became Kenya’s quiet football pioneer
    • How the new Ngong Road flyover is fueling growth at Dagoretti Corner
    • FKF withdraws court case after FIFA, CAF intervene to resolve governance crisis
    • How climate change is threatening grassroots football in Kenya ahead of AFCON 2027

    The 48 teams will be divided into 12 groups of four during Tuesday’s draw. Each team will play the others in its group home and away across six matchdays. At the end of the group stage, the top two teams in every group will qualify automatically for the tournament.
    However, there is a special arrangement for groups that include one of the three host nations. Since Kenya, Tanzania and Uganda have already qualified automatically as hosts, their groups will allow one additional team to progress. This ensures that the overall number of teams at the finals remains balanced while still giving the hosts competitive matches during the qualification phase.
    The qualifiers will be played in three separate international windows on the FIFA calendar. The first two matchdays are scheduled between 21 September and 6 October 2026. Matchdays three and four will follow from 9 to 17 November 2026. The final two matchdays will be staged from 22 to 30 March 2027. These fixtures will determine which nations book their tickets to East Africa.

    Latest Stories

    • DCI arrests man accused of conning job seekers Sh8.6 million in fake KDF, NPS and PSC recruitment scam
    • Wajir begins construction of Baitulmaal Level 4 Hospital to expand access to healthcare
    • The world has the science to transform food systems: The next frontier is scaling it
    • Nigeria demands probe after two citizens killed in South Africa amid rising xenophobia concerns

    The 2027 AFCON itself will kick off on 19 June 2027, with the final set for 17 July 2027. It will be a historic edition of the tournament as it will be the first time three countries co-host the competition. It will also mark the return of the continental showpiece to the East African region for the first time in decades.
    Tuesday’s draw is therefore more than just a ceremony. It will shape the journey for giants of African football and emerging nations alike. Strong teams could find themselves in challenging groups, while others may see a clearer path to qualification. For the host nations, the draw will also determine the level of competition they face as they prepare to perform on home soil.
    As the balls are drawn in Cairo, the countdown to AFCON 2027 will truly begin, and the battle for a place at Africa’s premier football stage will officially be underway.

    Other Topics To Read

    Top Stories Today

    • Man arrested over Sh8.6 million fake KDF, police jobs scam
    • Saba Saba organisers notify police of peaceful march to Parliament
    • Wajir expands healthcare with new Baitulmaal Level 4 Hospital project
    • Why scaling innovation is the missing link in global food security
    • Abuja warns of diplomatic fallout after killing of Nigerians in South Africa
    • Kenya’s Stephen Yiembe lands historic UEFA Super Cup officiating role

    `;
    }

    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

    Three arrested after Linda Mwananchi convoy attacked in Kisii as police hunt for more suspectsNews
    |Lucy Mumbi
    |17 hours ago
    Karua, Matiang’i demand arrest and resignation of PS Fikirini over Cecil Ouma shootingNews
    |Rachael Mutabasi
    |7 hours ago
    Lilian Odira targets personal best and Diamond League final after dream victory in EugeneAthletics
    |Erick Kariuki
    |6 hours ago
    Saba Saba organisers notify police of planned peaceful demonstration to ParliamentNews
    |Rachael Mutabasi
    |4 hours ago
    2026 FIFA World Cup claims seven national team coachesInfographics
    |Charity Pancras
    |10 hours ago
    The world has the science to transform food systems: The next frontier is scaling itClimate Change
    |The Conversation
    |3 hours ago
    Pakistan to host next round of US-Iran talks on July 11Middle-East
    |XINHUA
    |12 hours ago
    Sudan’s people subject to ‘relentless’ drone strikes in El ObeidSudan
    |UN News
    |1 day ago
    Judiciary to publish individual performance reports for judges in transparency pushNational
    |Carolyne Kubwa
    |1 day ago
    UN agencies warn South Sudan funding shortfall pushes millions toward acute hungerRegional
    |XINHUA
    |1 day ago

    2027 AFCON Draw Nations Qualifiers
    Share. Facebook Twitter Pinterest LinkedIn Tumblr Email
    Nouman m
    • Website

    Related Posts

    KPA sports facility to host East African Community Interparliamentary Games

    July 5, 2026

    Ruto heads off to Dubai to champion Africa’s climate agenda at COP28

    July 5, 2026

    President Tinubu And The Rest Of Us

    July 5, 2026
    Leave A Reply Cancel Reply

    Search
    Latest Post

    Tourism boost as Mombasa wins bid to host East African Inter-Parliamentary Games

    July 5, 2026

    Kenya needs Sh79 trillion to achieve net zero carbon emissions by 2050 – DP Gachagua

    July 5, 2026

    MX2 South Africa Live Stream: How to Watch FIM Motocross World Championship

    July 5, 2026

    Farmers to benefit from FAO’s Sh6.5 billion climate resilience programme

    July 5, 2026

    Activists launch new case against luxury lodges in Maasai Mara

    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

    Tourism boost as Mombasa wins bid to host East African Inter-Parliamentary Games

    Kenya needs Sh79 trillion to achieve net zero carbon emissions by 2050 – DP Gachagua

    MX2 South Africa Live Stream: How to Watch FIM Motocross World Championship

    Most Popular

    Farmers to benefit from FAO’s Sh6.5 billion climate resilience programme

    Activists launch new case against luxury lodges in Maasai Mara

    Fairvest navigates property market shifts as South African real estate evolves

    © 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.