Close Menu
    Facebook X (Twitter) Instagram
    • Home
    • Contact Us
    • About Us
    • Privacy Policy
    • Terms Of Service
    • Advertisement
    Thursday, July 16
    Facebook X (Twitter) Instagram Pinterest Vimeo
    ABS Africa TV
    • Breaking News
    • Trending
    • Africa News
    • World News
    • Features
    • Technology
    • More
      • Sports
      • Politics
      • Culture
      • Lifestyle
      • Travel
      • Business
      • Environment
      • Legal
      • Health
      • Cameroon
      • Ambazonia
      • AfroSingles
      • Environ/Climate
      • Editorial
      • The Leak Magazine
    • Donate
    Subscription
    ABS Africa TV
    Home»Breaking News»Top 10 African countries ranked by airline seat capacity in July 2026
    Breaking News

    Top 10 African countries ranked by airline seat capacity in July 2026

    Nouman mBy Nouman mJuly 15, 2026No Comments8 Mins Read
    Facebook Twitter Pinterest LinkedIn Tumblr Email
    Top 10 African countries ranked by airline seat capacity in July 2026
    Share
    Facebook Twitter LinkedIn Pinterest Email
    Post Views: 25

    Listen to article

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

    Emirates launches third daily Nairobi flight, boosting Kenya-UAE connectivity

    Mary Wambui

     · 

    1 week agoRead nextOpens a fresh page.

    Egypt leads the rankings with 2,929,200 available airline seats, followed by South Africa (2,378,200) and Morocco (2,180,200).

    Kenya has secured the eighth spot among Africa’s leading aviation markets by airline seat capacity in July 2026, offering 859,800 seats.
    The country joins North African heavyweights Egypt, Morocco, Tunisia and Algeria, alongside South Africa, Ethiopia, Nigeria, Tanzania and Ghana in the continent’s top 10.
    Egypt leads the rankings with 2,929,200 available airline seats, followed by South Africa (2,378,200) and Morocco (2,180,200). Ethiopia ranks fourth with 1,450,300 seats, while Nigeria and Algeria complete the top six with 1,224,100 and 1,114,700 seats, respectively.

    More To Read

    • Emirates launches third daily Nairobi flight, boosting Kenya-UAE connectivity
    • Governor Abdulswamad Nassir pushes for open skies policy to boost tourism, investment
    • International airlines urged to stick to safety measures in wake of Ebola outbreak
    • Kenya Airways resumes Dubai flights after two-month suspension
    • Iran war drives up costs for Africa’s airlines
    • Major boost for aviation safety as KCAA unveils series of fresh regulations

    Tunisia occupies seventh place with 886,800 seats, ahead of Kenya, while Tanzania ranks ninth with 756,200 seats. Ghana rounds off the list in tenth place with 292,500 seats, highlighting the concentration of Africa’s busiest a

    Latest Stories

    • HPV vaccine cuts cervical cancer deaths by nearly 80 per cent, landmark study finds
    • Judge awards athlete lion’s share of matrimonial property after husband fails to prove financial input
    • South Africa’s high court to hear Ramaphosa’s bid to halt impeachment inquiry
    • IEBC outlines voting process ahead of Ol Kalou by-election

    Other Topics To Read

    Top Stories Today

    • UDA rejects Gachagua’s vote-rigging claims ahead of Ol Kalou by-election
    • Court awards athlete 80 per cent of matrimonial property in landmark ruling
    • Court throws out Sh100 million land claim against three varsities in Turkana
    • DCI launches new biometric system to fast‑track good conduct certificates
    • Police probe loss of judge’s licensed firearm after its alleged recovery in Joska
    • Social media likes may have a bigger impact on people with depression, study finds

    `;
    }

    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

    DCI launches new biometric system to fast‑track good conduct certificates

    DCI launches new biometric system to fast‑track good conduct certificatesNews
    |Rachael Mutabasi
    |1 hour ago
    Judge awards athlete lion’s share of matrimonial property after husband fails to prove financial inputNews
    |Carolyne Kubwa
    |27 minutes ago
    Police probe loss of judge’s licensed firearm after its alleged recovery in JoskaNews
    |Eastleigh Voice Reporter
    |2 hours ago
    Why South Africa is Kenya’s top overseas destination for commercial property investmentBusiness
    |Alfred Onyango
    |10 hours ago

    Social media likes may have a bigger impact on people with depression, study finds

    Social media likes may have a bigger impact on people with depression, study findsHealth
    |Charity Kilei
    |2 hours ago
    Five months to go: NTSA warns unclaimed logbooks will be disposed of after deadlineNews
    |Lucy Mumbi
    |1 day ago
    ELOG flags widespread voter bribery, campaign malpractice ahead of Ol Kalou by-electionPolitics
    |Mary Wambui
    |4 hours ago
    Skills for an uncertain future: How youth can navigate a changing job marketBusiness
    |UN News
    |8 hours ago
    High Court stops IEBC from enforcing Sh1.5 million penalty against Kipipiri MP Wanjiku MuhiaPolitics
    |Carolyne Kubwa
    |1 day ago

    Government releases Sh1.8 billion cash support for 133,484 vulnerable households in eight arid counties

    Government releases Sh1.8 billion cash support for 133,484 vulnerable households in eight arid countiesNews
    |Rachael Mutabasi
    |1 day ago

    African airline countries ranked seat
    Share. Facebook Twitter Pinterest LinkedIn Tumblr Email
    Nouman m
    • Website

    Related Posts

    US mission in Somalia ‘not worth it,’ report says in push for drawdown of forces

    July 16, 2026

    Suspended PIC CEO should get benefit of doubt while probe unfolds, says governance expert

    July 16, 2026

    Malawi Scorchers Set for Morocco WAFCON Test – Africa Top Sports

    July 16, 2026
    Leave A Reply Cancel Reply

    Search
    Latest Post

    Scaloni vs De La Fuente — Teacher and pupil reunited in FIFA World Cup 2026 final

    July 16, 2026

    Thousands of Google workers demand layoff protections amid AI boom in petition to CEO

    July 16, 2026

    Trump administration caps how long international students can stay in the US

    July 16, 2026

    Trump administration tightens visa rules for foreign students

    July 16, 2026

    World’s fourth-largest cocoa producer bans raw exports to the West

    July 16, 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

    Sports

    Scaloni vs De La Fuente — Teacher and pupil reunited in FIFA World Cup 2026 final

    Technology

    Thousands of Google workers demand layoff protections amid AI boom in petition to CEO

    World News

    Trump administration caps how long international students can stay in the US

    Most Popular

    Africa News

    Trump administration tightens visa rules for foreign students

    Features

    World’s fourth-largest cocoa producer bans raw exports to the West

    Trending

    South Africa: Namibians Recount Violent Attacks After South Africa Unrest

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