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
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-[&: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-[&:where(:not(.no-background-rest))]/field:before:bg-color-glass-tertiary group-[&:where(:not(.no-background-rest))]/field:before:shadow-[0_0_0_var(--bw-sm)_var(--col-bg-glass-sec)] group-[&: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 [&.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-[&: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-[&:where(:not(.no-background-rest))]/field:before:bg-color-glass-tertiary group-[&:where(:not(.no-background-rest))]/field:before:shadow-[0_0_0_var(--bw-sm)_var(--col-bg-glass-sec)] group-[&: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 [&.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-[&: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-[&:where(:not(.no-background-rest))]/field:before:bg-color-glass-tertiary group-[&:where(:not(.no-background-rest))]/field:before:shadow-[0_0_0_var(--bw-sm)_var(--col-bg-glass-sec)] group-[&: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 [&.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-[&: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-[&:where(:not(.no-background-rest))]/field:before:bg-color-glass-tertiary group-[&:where(:not(.no-background-rest))]/field:before:shadow-[0_0_0_var(--bw-sm)_var(--col-bg-glass-sec)] group-[&: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 [&.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-[&: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-[&:where(:not(.no-background-rest))]/field:before:bg-color-glass-tertiary group-[&:where(:not(.no-background-rest))]/field:before:shadow-[0_0_0_var(--bw-sm)_var(--col-bg-glass-sec)] group-[&: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 [&.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 [&: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 [&: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 [&: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 * *