www.busbud.com Open in urlscan Pro
151.101.65.55  Public Scan

Submitted URL: https://www.busbud.com/en/bus-johannesburg/c-sem/ke7fyn
Effective URL: https://www.busbud.com/en/za/bus-johannesburg/c-sem/ke7fyn
Submission: On December 13 via api from US — Scanned from US

Form analysis 1 forms found in the DOM

<form id="search-form" novalidate="" class="group flex flex-wrap lg:rounded-md lg:bg-color-canvas-primary lg:shadow-md" data-testid="search-form-hydrated" data-variant="landing-page" data-one-way-only="false">
  <div class="w-full lg:w-10/24 relative flex flex-wrap max-lg:mb-100 max-lg:rounded-md max-lg:bg-color-canvas-primary max-lg:shadow-md lg:flex-nowrap lg:border-r-width-sm lg:border-r-color-primary">
    <div
      class="w-full sm:w-10/24 max-sm:after:content-[''] max-sm:after:w-[6rem] max-sm:after:absolute max-sm:after:top-012 max-sm:after:right-012 max-sm:after:bg-gradient-to-l max-sm:after:rounded-md max-sm:after:h-[calc(100%-4px)] sm:p-050 max-md:relative"
      id="origin-dropdown-wrapper">
      <div id="origin-dropdown" class="h-full w-full">
        <div class="group/field flex flex-col gap-y-075 no-background-rest h-full w-full"><label class="group/field-container relative flex items-center ps-100 pe-100 cursor-text" for="origin-city-input"><span
              class="grow peer grid *:col-span-full *:row-span-full ps-050 pe-050 before:absolute before:inset-0 before:rounded-md before:transition-[background-color,box-shadow] min-h-700 group-[&amp;:hover:not(:focus-within)]/field-container:before:bg-color-glass-primary group-active/field-container:before:bg-color-canvas-primary group-focus-within/field-container:before:bg-color-canvas-primary group-[&amp;:where(:not(.no-background-rest))]/field:before:bg-color-glass-tertiary group-[&amp;:where(:not(.no-background-rest))]/field:before:shadow-[0_0_0_var(--bw-sm)_var(--col-bg-glass-sec)] group-[&amp;:hover:not(:focus-within)]/field-container:before:shadow-[0_0_0_var(--bw-sm)_var(--col-b-prim),0_0_0_var(--bw-lg)_var(--col-b-prim),inset_0_var(--bw-lg)_4px_-3px_theme(borderColor.color-primary)] group-active/field-container:before:shadow-[0_0_0_theme(borderWidth.width-sm)_theme(borderColor.color-scheme-brand-primary-400),0_0_0_theme(borderWidth.width-lg)_theme(borderColor.color-scheme-brand-primary-200),inset_0_.25rem_.25rem_-.188rem_theme(borderColor.color-primary)] group-focus-within/field-container:before:shadow-[0_0_0_var(--bw-sm)_var(--col-brand-prim-400),0_0_0_var(--bw-lg)_var(--col-brand-prim-200),inset_0_var(--bw-lg)_4px_-3px_theme(borderColor.color-primary)]"><input
                class="z-[1] peer w-full appearance-none bg-color-static-transparent outline-none pt-[1.6875rem] pb-[0.5625rem] text-size-100 leading-125 cursor-text text-color-primary placeholder:text-color-tertiary [&amp;.is-placeholder]:text-color-tertiary"
                id="origin-city-input" name="origin" placeholder="Leaving from…" autocomplete="off" type="text" value=""><span
                class="z-[1] self-start justify-self-start max-w-full truncate pointer-events-none transition-all text-color-secondary peer-focus:text-color-scheme-brand-primary-600 text-size-75 leading-100 font-weight-bold translate-y-[0.5625rem] peer-focus:text-size-75 peer-focus:leading-100 peer-focus:font-weight-bold peer-focus:translate-y-[0.5625rem]">Origin</span></span></label>
        </div>
      </div>
    </div>
    <div class="sm:w-2/24 absolute bottom-0 right-0 top-0 z-[2] flex items-center justify-center pl-400 pr-300 sm:static sm:self-center sm:p-0"><button aria-label="Swap locations" id="swap-cities-icon" role="button"
        class="focus-visible:outline-none focus-visible:ring aria-disabled:cursor-default rotate-45 rounded-md border-width-sm border-color-primary bg-color-canvas-primary p-100 active:bg-color-canvas-secondary sm:border-color-static-transparent sm:p-075 sm:hover:border-color-primary"
        type="button" data-testid="swap-cities-button"><svg fill="none" height="24" width="24" aria-hidden="true" class="rotate-45 text-icon-color-primary sm:-rotate-45">
          <use href="/pubweb-assets/horizon/Icons/1.12.8/ArrowLeftRight/md.svg#root"></use>
        </svg></button></div>
    <div
      class="w-full sm:w-12/24 max-sm:after:content-[''] max-sm:after:w-[6rem] max-sm:after:absolute max-sm:after:top-012 max-sm:after:right-012 max-sm:after:bg-gradient-to-l max-sm:after:rounded-md max-sm:after:h-[calc(100%-4px)] sm:p-050 max-sm:relative max-sm:border-t-width-sm max-sm:border-t-color-primary"
      id="destination-dropdown-wrapper">
      <div id="destination-dropdown" class="h-full w-full">
        <div class="group/field flex flex-col gap-y-075 no-background-rest h-full w-full"><label class="group/field-container relative flex items-center ps-100 pe-100 cursor-text" for="destination-city-input"><span
              class="grow peer grid *:col-span-full *:row-span-full ps-050 pe-050 before:absolute before:inset-0 before:rounded-md before:transition-[background-color,box-shadow] min-h-700 group-[&amp;:hover:not(:focus-within)]/field-container:before:bg-color-glass-primary group-active/field-container:before:bg-color-canvas-primary group-focus-within/field-container:before:bg-color-canvas-primary group-[&amp;:where(:not(.no-background-rest))]/field:before:bg-color-glass-tertiary group-[&amp;:where(:not(.no-background-rest))]/field:before:shadow-[0_0_0_var(--bw-sm)_var(--col-bg-glass-sec)] group-[&amp;:hover:not(:focus-within)]/field-container:before:shadow-[0_0_0_var(--bw-sm)_var(--col-b-prim),0_0_0_var(--bw-lg)_var(--col-b-prim),inset_0_var(--bw-lg)_4px_-3px_theme(borderColor.color-primary)] group-active/field-container:before:shadow-[0_0_0_theme(borderWidth.width-sm)_theme(borderColor.color-scheme-brand-primary-400),0_0_0_theme(borderWidth.width-lg)_theme(borderColor.color-scheme-brand-primary-200),inset_0_.25rem_.25rem_-.188rem_theme(borderColor.color-primary)] group-focus-within/field-container:before:shadow-[0_0_0_var(--bw-sm)_var(--col-brand-prim-400),0_0_0_var(--bw-lg)_var(--col-brand-prim-200),inset_0_var(--bw-lg)_4px_-3px_theme(borderColor.color-primary)]"><input
                class="z-[1] peer w-full appearance-none bg-color-static-transparent outline-none pt-[1.6875rem] pb-[0.5625rem] text-size-100 leading-125 cursor-text text-color-primary placeholder:text-color-tertiary [&amp;.is-placeholder]:text-color-tertiary"
                id="destination-city-input" name="destination" placeholder="Going to…" autocomplete="off" type="text" value="Johannesburg, Gauteng, South Africa"><span
                class="z-[1] self-start justify-self-start max-w-full truncate pointer-events-none transition-all text-color-secondary peer-focus:text-color-scheme-brand-primary-600 text-size-75 leading-100 font-weight-bold translate-y-[0.5625rem] peer-focus:text-size-75 peer-focus:leading-100 peer-focus:font-weight-bold peer-focus:translate-y-[0.5625rem]">Destination</span></span></label>
        </div>
      </div>
    </div>
  </div>
  <div class="w-full lg:w-14/24 relative flex flex-wrap sm:max-lg:rounded-md sm:max-lg:bg-color-canvas-primary sm:max-lg:shadow-md md:flex-nowrap">
    <div class="w-full sm:w-21/24 md:w-19/24 lg:w-18/24 xl:w-18/24 flex flex-wrap sm:flex-nowrap">
      <div class="w-full sm:w-14/24 md:w-17/24 lg:w-16/24 xl:w-14/24 flex flex-wrap max-sm:mb-100 max-sm:rounded-md max-sm:bg-color-canvas-primary max-sm:shadow-md sm:border-r-width-sm sm:border-r-color-primary">
        <div class="w-12/24 sm:p-050">
          <div class="group/field flex flex-col gap-y-075 no-background-rest h-full w-full"><label class="group/field-container relative flex items-center ps-100 pe-100 cursor-text" for="outbound-date-input"><span
                class="grow peer grid *:col-span-full *:row-span-full ps-050 pe-050 before:absolute before:inset-0 before:rounded-md before:transition-[background-color,box-shadow] min-h-700 group-[&amp;:hover:not(:focus-within)]/field-container:before:bg-color-glass-primary group-active/field-container:before:bg-color-canvas-primary group-focus-within/field-container:before:bg-color-canvas-primary group-[&amp;:where(:not(.no-background-rest))]/field:before:bg-color-glass-tertiary group-[&amp;:where(:not(.no-background-rest))]/field:before:shadow-[0_0_0_var(--bw-sm)_var(--col-bg-glass-sec)] group-[&amp;:hover:not(:focus-within)]/field-container:before:shadow-[0_0_0_var(--bw-sm)_var(--col-b-prim),0_0_0_var(--bw-lg)_var(--col-b-prim),inset_0_var(--bw-lg)_4px_-3px_theme(borderColor.color-primary)] group-active/field-container:before:shadow-[0_0_0_theme(borderWidth.width-sm)_theme(borderColor.color-scheme-brand-primary-400),0_0_0_theme(borderWidth.width-lg)_theme(borderColor.color-scheme-brand-primary-200),inset_0_.25rem_.25rem_-.188rem_theme(borderColor.color-primary)] group-focus-within/field-container:before:shadow-[0_0_0_var(--bw-sm)_var(--col-brand-prim-400),0_0_0_var(--bw-lg)_var(--col-brand-prim-200),inset_0_var(--bw-lg)_4px_-3px_theme(borderColor.color-primary)]"><input
                  class="z-[1] peer w-full appearance-none bg-color-static-transparent outline-none pt-[1.6875rem] pb-[0.5625rem] text-size-100 leading-125 cursor-text text-color-primary placeholder:text-color-tertiary [&amp;.is-placeholder]:text-color-tertiary"
                  id="outbound-date-input" placeholder=" " readonly="" type="text" value="Sat, Dec 14"><span
                  class="z-[1] self-start justify-self-start max-w-full truncate pointer-events-none transition-all text-color-secondary peer-focus:text-color-scheme-brand-primary-600 text-size-75 leading-100 font-weight-bold translate-y-[0.5625rem] peer-focus:text-size-75 peer-focus:leading-100 peer-focus:font-weight-bold peer-focus:translate-y-[0.5625rem]">Date</span></span></label>
          </div>
        </div>
        <div class="w-12/24 border-l-width-sm border-l-color-primary sm:p-050">
          <div class="group/field flex flex-col gap-y-075 no-background-rest h-full w-full"><label class="group/field-container relative flex items-center ps-100 pe-100 cursor-text" for="return-date-input"><span
                class="grow peer grid *:col-span-full *:row-span-full ps-050 pe-050 before:absolute before:inset-0 before:rounded-md before:transition-[background-color,box-shadow] min-h-700 group-[&amp;:hover:not(:focus-within)]/field-container:before:bg-color-glass-primary group-active/field-container:before:bg-color-canvas-primary group-focus-within/field-container:before:bg-color-canvas-primary group-[&amp;:where(:not(.no-background-rest))]/field:before:bg-color-glass-tertiary group-[&amp;:where(:not(.no-background-rest))]/field:before:shadow-[0_0_0_var(--bw-sm)_var(--col-bg-glass-sec)] group-[&amp;:hover:not(:focus-within)]/field-container:before:shadow-[0_0_0_var(--bw-sm)_var(--col-b-prim),0_0_0_var(--bw-lg)_var(--col-b-prim),inset_0_var(--bw-lg)_4px_-3px_theme(borderColor.color-primary)] group-active/field-container:before:shadow-[0_0_0_theme(borderWidth.width-sm)_theme(borderColor.color-scheme-brand-primary-400),0_0_0_theme(borderWidth.width-lg)_theme(borderColor.color-scheme-brand-primary-200),inset_0_.25rem_.25rem_-.188rem_theme(borderColor.color-primary)] group-focus-within/field-container:before:shadow-[0_0_0_var(--bw-sm)_var(--col-brand-prim-400),0_0_0_var(--bw-lg)_var(--col-brand-prim-200),inset_0_var(--bw-lg)_4px_-3px_theme(borderColor.color-primary)]"><input
                  class="z-[1] peer w-full appearance-none bg-color-static-transparent outline-none pt-[1.6875rem] pb-[0.5625rem] text-size-100 leading-125 cursor-text text-color-primary placeholder:text-color-tertiary [&amp;.is-placeholder]:text-color-tertiary"
                  id="return-date-input" placeholder="Optional" readonly="" type="text" value=""><span
                  class="z-[1] self-start justify-self-start max-w-full truncate pointer-events-none transition-all text-color-secondary peer-focus:text-color-scheme-brand-primary-600 text-size-75 leading-100 font-weight-bold translate-y-[0.5625rem] peer-focus:text-size-75 peer-focus:leading-100 peer-focus:font-weight-bold peer-focus:translate-y-[0.5625rem]">Return
                  Date</span></span></label></div>
        </div>
      </div>
      <div data-testid="passenger-info-input" class="w-full sm:w-10/24 md:9/24 xl:w-11/24 max-sm:mb-100 max-sm:rounded-md max-sm:bg-color-canvas-primary max-sm:shadow-md sm:border-r-width-sm sm:border-r-color-primary relative sm:p-050">
        <div class="group/field flex flex-col gap-y-075 no-background-rest h-full w-full"><label class="group/field-container relative flex items-center ps-100 pe-100 cursor-text" for="passenger-input"><span
              class="grow peer grid *:col-span-full *:row-span-full ps-050 pe-050 before:absolute before:inset-0 before:rounded-md before:transition-[background-color,box-shadow] min-h-700 group-[&amp;:hover:not(:focus-within)]/field-container:before:bg-color-glass-primary group-active/field-container:before:bg-color-canvas-primary group-focus-within/field-container:before:bg-color-canvas-primary group-[&amp;:where(:not(.no-background-rest))]/field:before:bg-color-glass-tertiary group-[&amp;:where(:not(.no-background-rest))]/field:before:shadow-[0_0_0_var(--bw-sm)_var(--col-bg-glass-sec)] group-[&amp;:hover:not(:focus-within)]/field-container:before:shadow-[0_0_0_var(--bw-sm)_var(--col-b-prim),0_0_0_var(--bw-lg)_var(--col-b-prim),inset_0_var(--bw-lg)_4px_-3px_theme(borderColor.color-primary)] group-active/field-container:before:shadow-[0_0_0_theme(borderWidth.width-sm)_theme(borderColor.color-scheme-brand-primary-400),0_0_0_theme(borderWidth.width-lg)_theme(borderColor.color-scheme-brand-primary-200),inset_0_.25rem_.25rem_-.188rem_theme(borderColor.color-primary)] group-focus-within/field-container:before:shadow-[0_0_0_var(--bw-sm)_var(--col-brand-prim-400),0_0_0_var(--bw-lg)_var(--col-brand-prim-200),inset_0_var(--bw-lg)_4px_-3px_theme(borderColor.color-primary)]"><input
                class="z-[1] peer w-full appearance-none bg-color-static-transparent outline-none pt-[1.6875rem] pb-[0.5625rem] text-size-100 leading-125 cursor-text text-color-primary placeholder:text-color-tertiary [&amp;.is-placeholder]:text-color-tertiary"
                id="passenger-input" placeholder="1 passenger" readonly="" type="text" aria-label="1 passenger" value="1 passenger"><span
                class="z-[1] self-start justify-self-start max-w-full truncate pointer-events-none transition-all text-color-secondary peer-focus:text-color-scheme-brand-primary-600 text-size-75 leading-100 font-weight-bold translate-y-[0.5625rem] peer-focus:text-size-75 peer-focus:leading-100 peer-focus:font-weight-bold peer-focus:translate-y-[0.5625rem]">Passengers</span></span></label>
        </div>
      </div>
    </div>
    <div class="w-full sm:w-3/24 md:w-5/24 lg:w-7/24 xl:w-6/24 whitespace-nowrap" data-cy="search-submit" id="search-submit-button"><span class="h-full sm:hidden"><button aria-label="Search"
          class="focus-visible:outline-none focus-visible:ring aria-disabled:cursor-default inline-flex items-center justify-center max-w-full ps-150 pe-150 py-150 rounded-md hover:-translate-y-006 active:translate-y-006 backdrop-blur-lg bg-color-scheme-brand-primary-500 shadow-sm hover:bg-color-scheme-brand-primary-400 hover:shadow-sm active:bg-color-scheme-brand-primary-600 [&amp;:not(:focus-visible)]:active:shadow-none text-color-primary-inverse hover:text-color-primary-inverse active:text-color-primary-inverse h-full w-full"
          type="submit" data-testid="submit-button"><span class="shrink-0 text-icon-color-primary-inverse"><svg fill="none" height="24" width="24" aria-hidden="true">
              <use href="/pubweb-assets/horizon/Icons/1.12.8/MagnifyingGlass/md.svg#root"></use>
            </svg></span><span class="ps-100 pe-100 py-025 font-weight-bold leading-125 text-size-112">Search</span></button></span><span class="hidden h-full sm:inline md:hidden"><button aria-label="Search"
          class="focus-visible:outline-none focus-visible:ring aria-disabled:cursor-default inline-flex items-center justify-center p-150 rounded-md hover:-translate-y-006 active:translate-y-006 backdrop-blur-lg bg-color-scheme-brand-primary-500 shadow-sm hover:bg-color-scheme-brand-primary-400 hover:shadow-sm active:bg-color-scheme-brand-primary-600 [&amp;:not(:focus-visible)]:active:shadow-none text-icon-color-primary-inverse h-full w-full rounded-bl-none rounded-tl-none"
          type="submit" data-testid="submit-iconbutton"><svg fill="none" height="32" width="32" aria-hidden="true">
            <use href="/pubweb-assets/horizon/Icons/1.12.8/MagnifyingGlass/lg.svg#root"></use>
          </svg></button></span><span class="hidden h-full md:block"><button aria-label="Search"
          class="focus-visible:outline-none focus-visible:ring aria-disabled:cursor-default inline-flex items-center justify-center max-w-full ps-200 pe-200 py-150 rounded-md hover:-translate-y-006 active:translate-y-006 backdrop-blur-lg bg-color-scheme-brand-primary-500 shadow-sm hover:bg-color-scheme-brand-primary-400 hover:shadow-sm active:bg-color-scheme-brand-primary-600 [&amp;:not(:focus-visible)]:active:shadow-none text-color-primary-inverse hover:text-color-primary-inverse active:text-color-primary-inverse h-full w-full rounded-bl-none rounded-tl-none xl:rounded-bl-none xl:rounded-tl-none"
          type="submit" data-testid="submit-button"><span class="shrink-0 text-icon-color-primary-inverse"><svg fill="none" height="32" width="32" aria-hidden="true">
              <use href="/pubweb-assets/horizon/Icons/1.12.8/MagnifyingGlass/lg.svg#root"></use>
            </svg></span><span class="ps-100 pe-100 py-075 font-weight-bolder leading-125 text-size-112">Search</span></button></span></div>
  </div>
</form>

Text Content

We use cookies

We use cookies and other tracking technologies to improve your browsing
experience on our website, to show you personalized content and targeted ads, to
analyze our website traffic, and to understand where our visitors are coming
from.


I agreeChange my preferences
Skip to search formSkip to contentSkip to footer
 * Buses
    * Durban → Johannesburg
    * Johannesburg → Durban
    * Johannesburg → Cape Town
    * Cape Town → Johannesburg
    * Pretoria → Durban

 * Places
    * Johannesburg → Johannesburg Airport
    * Durban → Durban Airport
    * Pietermaritzburg → Johannesburg Airport
    * Johannesburg Airport → Johannesburg
    * Johannesburg Airport → Gaborone

 * English
    * Deutsch
    * English
    * English (Canada)
    * English (UK)
    * Español (España)
    * Español (Latinoamérica)
    * Español (Mexico)
    * Français
    * Français (Canada)
    * Italiano
    * Nederlands
    * Polski
    * Português (Brasil)
    * Português (Portugal)
    * Русский
    * Svenska
    * Türkçe
    * 中文简体

 * Help
 * Sign in

Search for
Buses
Durban → JohannesburgJohannesburg → DurbanJohannesburg → Cape TownCape Town →
JohannesburgPretoria → Durban
Places
Johannesburg → Johannesburg AirportDurban → Durban AirportPietermaritzburg →
Johannesburg AirportJohannesburg Airport → JohannesburgJohannesburg Airport →
Gaborone
Useful links
Sign in

--------------------------------------------------------------------------------

LanguageEnglish
DeutschEnglishEnglish (Canada)English (UK)Español (España)Español
(Latinoamérica)Español (Mexico)FrançaisFrançais
(Canada)ItalianoNederlandsPolskiPortuguês (Brasil)Português
(Portugal)РусскийSvenskaTürkçe中文简体

--------------------------------------------------------------------------------


BUS TICKETS TO JOHANNESBURG

Find and book bus tickets to Johannesburg with convenient travel options and
reliable operators

Origin

Destination
Date
Return Date
Passengers
SearchSearch
Search accommodations


Daily DeparturesAverage priceAverage trip durationBuses from Midrand to
JohannesburgDaily Departures2Average price$25Average trip duration40mCheck
schedulesBuses from Durban to JohannesburgDaily Departures2Average
price$31Average trip duration8h 30mCheck schedulesBuses from Bloemfontein to
JohannesburgDaily Departures2Average price$33Average trip duration5h 35mCheck
schedulesBuses from Kimberley to JohannesburgDaily Departures2Average
price$37Average trip duration7h 15mCheck schedules

COMPLETE YOUR JOURNEY

Discover tours and activities in Johannesburg

See more

Bus companiesPopular bus stations and stops


WHAT BUS COMPANIES OPERATE FROM JOHANNESBURG?

 * 
 * 
 * 
 * 
 * 
 * 


WHERE ARE THE POPULAR STOPS IN JOHANNESBURG?

Bus stations in Johannesburg
A - Johannesburg Airport

Johannesburg AirportMap
B - Park City Transit Centre, Johannesburg Station


Park City Transit Centre, Johannesburg Station (Bay21), 96 Rissik St,
Johannesburg, 2000, South Africa

Park City Transit Centre, Johannesburg StationMap
C - Bethrams


Mozambique Touring Serices, 37 Bezuidenhout St, Troyeville, Johannesburg, 2094,
South Africa

BethramsMap
D - Eaglecity Kerk Street


84 Kerk St, Johannesburg, 2000, South Africa

Eaglecity Kerk StreetMap
E - Kerk Street


77 Nugget St, Hillbrow, Johannesburg, 2001, South Africa

Kerk StreetMap
Trusted by 75M+ travelers every year looking for bus and train tickets
Serving 2M+ bus and train routes in more than 85 countries
Dedicated customer service from booking to travel
 * South Africa
 * Bus to Johannesburg

--------------------------------------------------------------------------------

follow us

 * Instagram
 * Facebook
 * Twitter

--------------------------------------------------------------------------------

Global coverage

 * All bus and train routes
 * All stations
 * All cities with bus routes
 * All cities with train routes
 * All points of interest
 * All service disruptions pages
 * Bus and Train companies

--------------------------------------------------------------------------------

Company

 * About
 * Partner with us
 * Join our Affiliate Program
 * Become an API Partner
 * Blog
 * Help

--------------------------------------------------------------------------------

© 2024 Busbud Inc., All rights reserved

 * Terms of use
 * Privacy
 * Refund policy

Help

 * 
 *