www.britishairways.com Open in urlscan Pro
23.201.252.217  Public Scan

Submitted URL: http://ba.com/
Effective URL: https://www.britishairways.com/travel/home/public/en_gb
Submission: On August 21 via api from RU — Scanned from GB

Form analysis 11 forms found in the DOM

Name: searchForm

<form data-ng-submit="submitSearch()" name="searchForm" class="search-form ng-pristine ng-valid" data-ng-class="{'hasValue': hasSearchValue}"><input tabindex="0" id="search-input" class="header-search-input ng-pristine ng-untouched ng-valid ng-empty"
    data-ng-class="{'hasValue': hasSearchValue}" data-ng-model="searchValue" data-ng-focus="focusEvent($event, 'searchSelect')" data-ng-keyup="escape($event)" style=""> <button tabindex="0" type="submit" class="search site-search-submit"
    data-ng-class="{'hasValue': hasSearchValue}" aria-label="Submit"><img data-ng-src="/cms/global/assets/images/site/icon/header_search.svg" alt="Search" src="/cms/global/assets/images/site/icon/header_search.svg"></button></form>

Name: dualForm-3POST https://www.britishairways.com/travel/managebooking/public/en_gb

<form method="post" action="https://www.britishairways.com/travel/managebooking/public/en_gb" id="dualForm-3" class="sub-nav-form ng-pristine ng-valid ng-valid-maxlength" name="dualForm-3">
  <fieldset>
    <legend class="acc-reader ng-binding">My booking</legend><input name="eId" type="hidden" id="dualFormEID" autocomplete="off">
    <div ba-text-input="" data-field-title="'header-beta-olci-booking-ref'" data-value="global.bookingRef" data-clear="false" class="ng-isolate-scope">
      <div class="field"><label data-ng-class="{'focusedLabel': labelMove}" for="dualFormbookingRef" class="ng-binding">Booking reference</label>
        <div data-ng-transclude="" data-ng-keydown="checkClear('focus', event)"><input tabindex="0" spellcheck="false" autocomplete="off" size="29" maxlength="6" type="text" name="bookingRef" id="dualFormbookingRef" data-ng-model="global.bookingRef"
            data-nd-bind="global.bookingRef" class="ng-pristine ng-untouched ng-valid ng-scope ng-empty ng-valid-maxlength"></div><button class="clear-button hidden" data-ng-class="{'hidden': !showClear}" aria-label="clear field"
          type="button"></button>
      </div>
    </div>
    <div ba-text-input="" data-field-title="'header-beta-olci-lastname'" data-value="global.lastname" data-clear="false" class="ng-isolate-scope">
      <div class="field"><label data-ng-class="{'focusedLabel': labelMove}" for="dualFormlastname" class="ng-binding">Last name of passenger</label>
        <div data-ng-transclude="" data-ng-keydown="checkClear('focus', event)"><input tabindex="0" spellcheck="false" autocomplete="off" size="29" maxlength="59" type="text" name="lastname" id="dualFormlastname" data-ng-model="global.lastname"
            data-ng-bind="global.lastname" class="ng-pristine ng-untouched ng-valid ng-binding ng-scope ng-empty ng-valid-maxlength"></div><button class="clear-button hidden" data-ng-class="{'hidden': !showClear}" aria-label="clear field"
          type="button"></button>
      </div>
    </div>
    <div class="row dual-form-button-row"><button tabindex="0" class="button btn-primary dual-form-button-mmb ng-binding ng-isolate-scope" type="submit" data-ba-resource-bundle-static="" data-key="header-beta-find-mmb"
        data-ng-click="updateFormParams('mmb', $event)">Find my booking</button> <button tabindex="0" class="button btn-primary dual-form-button-olci ng-binding ng-isolate-scope" type="submit" data-ba-resource-bundle-static=""
        data-key="header-beta-check-in" data-ng-click="updateFormParams('olci', $event)">Online check-in</button></div>
  </fieldset>
</form>

Name: searchForm

<form name="searchForm" novalidate="novalidate" class="ng-pristine ng-invalid ng-invalid-required">
  <div aria-labelledby="flightTab" id="flightPanel" role="tabpanel" class="search-form"><!-- ngIf: !flightOnly -->
    <div class="row ng-scope" data-ng-if="!flightOnly">
      <div class="small-12 medium-12 columns search-type">
        <div class="row">
          <div class="small-12 columns"><!-- ngIf: userChoice === 'Flight' && isNotStaffCug && (showFlightHotelUpsell || showFlightCarUpsell) --></div>
        </div>
        <div class="row"><!-- ngIf: cugName -->
          <div class="small-12 medium-8 large-6 columns padding-zero-for-small float-left">
            <p class="selected ng-binding ng-isolate-scope" data-ba-resource-bundle-static="" data-key="Searchbar-flights" aria-hidden="true">Flights</p>
            <p data-adobe-add-tracking-to-child-href="">
              <a class="multicity-link ng-binding ng-isolate-scope" data-ng-click="SP.redirectToMultiCity('click')" data-ng-keydown="SP.redirectToMultiCity($event)" data-ba-resource-bundle-static="" data-key="Searchbar-multiCity" tabindex="0">Multi City &amp; Round the World</a>
            </p>
            <p data-ba-resource-bundle-static="" data-key="Searchbar-concur" data-ng-show="concur" data-ng-click="SP.setUserChoice('Concur', 'click')" tabindex="0" data-ng-keydown="SP.setUserChoice('Concur',$event)"
              data-ng-class="{'selected' : (userChoice === 'Concur')}" class="ng-binding ng-isolate-scope ng-hide">Corporate booking</p>
          </div>
          <div class="small-12 medium-4 large-6 columns padding-zero-for-small"><span class="flexible-search show-for-medium-up float-right">
              <div class="title ng-binding">Need Inspiration?</div><a class="link ng-binding" data-ng-click="SP.redirectToFlexibleSearch()" tabindex="0">Explore all our flight destinations <span data-icon=""></span></a>
            </span> <span class="concur-heading ng-hide" data-ng-show="userChoice === 'Concur'"><span data-ba-resource-bundle-static="" data-key="Searchbar-sync" class="ng-binding ng-isolate-scope">Connected to</span> <img
                data-ng-src="images/SAP_Concur_Logo.png" alt="concur Logo" src="/apps/ba-home/images/SAP_Concur_Logo.png"></span> <!-- ngIf: userChoice === 'Flight' && isNotStaffCug && (showFlightHotelUpsell || showFlightCarUpsell) --></div>
        </div>
      </div>
    </div><!-- end ngIf: !flightOnly --><!-- ngIf: flightOnly -->
    <div class="row">
      <div class="small-12 large-12 columns search-section">
        <div class="row">
          <div class="large-4 columns">
            <div class="row">
              <div class="small-12 columns from-to-field"><!-- ngIf: userChoice === 'Flight' || userChoice === 'Concur' -->
                <div data-ng-if="userChoice === 'Flight' || userChoice === 'Concur'" data-typeahead="" data-input-value="" data-label-key="typeahead-from" data-value-field="locationValue" data-class-name="from inverted "
                  data-error-message="errorMessage.origin" data-get-suggestions="SP.updateOriginSuggestions(value, next)" data-suggestion-selected="SP.updateOrigin(selection)" data-flight-not-available-error="errorMessage.flightNotAvailable"
                  data-user-choice="SP.userChoice" data-field-name="from" data-aria-label-key="typeahead-searchBarFromFieldAriaLabel" data-availability-error="errorMessage.showInvalidWarning" data-tab-index="0"
                  class="search-field first-search-field ng-scope ng-isolate-scope">
                  <div data-click-and-touch-off="" data-click-and-touch-off-callback="loseFocus()" data-click-and-touch-off-if="!hideSuggestion" class="typeahead-field" id="typeahead-from"
                    data-ng-class="{'did-you-mean-error' : (errorMessage === 'typeahead-weCantRecognise' &amp;&amp; suggestions.length > 0 &amp;&amp; !isServiceFailed)}"><input type="text" name="searchEntry" data-ng-model="inputValue"
                      data-ng-change="updateSuggestions(inputValue, '')" data-ng-keydown="navigate($event, activeIndex)" data-ng-required="true" autocomplete="off" id="from" tabindex="0" role="textbox" class="from inverted "
                      data-ng-disabled="eligibilityErrorState" aria-label="From, search bar Departure field" aria-live="polite" data-select-content-on-focus=""
                      data-ng-class="{'invalid-field' : (errorMessage || availabilityError), 'invalid-field flight-error' : (flightNotAvailableError === 'FlightNotAvailable')}" required="required"> <label for="from" aria-hidden="true"
                      class="ng-binding">From <span data-ba-resource-bundle-static="" data-key="locationPlaceHolder" class="ng-binding ng-isolate-scope">type 3 letters</span></label> <!-- ngIf: showSuggestions() -->
                    <div class="search-bar-dropdown ng-hide" data-ng-show="errorMessage || showSuggestions()" data-ng-class="{'invalid-warning': errorMessage}">
                      <!-- ngIf: errorMessage || isServiceFailed --><!-- ngIf: errorMessage === 'typeahead-weCantRecognise' && suggestions.length > 0 && !isServiceFailed -->
                      <!-- ngIf: errorMessage === 'typeahead-weCantRecognise' && suggestions.length > 0 && !isServiceFailed -->
                      <ul data-ng-show="showSuggestions()" class="resultsContainer choicesContainer ng-hide" tabindex="-1" role="listbox"><!-- ngRepeat: suggestion in suggestions track by $index --></ul>
                    </div>
                  </div>
                </div><!-- end ngIf: userChoice === 'Flight' || userChoice === 'Concur' -->
              </div>
            </div>
            <div class="row">
              <div class="small-12 columns from-to-field"><!-- ngIf: userChoice === 'Flight' || userChoice==='Concur' -->
                <div data-ng-if="userChoice === 'Flight' || userChoice==='Concur'" data-typeahead="" data-input-value="" data-label-key="typeahead-to" data-value-field="locationValue" data-class-name="to inverted "
                  data-error-message="errorMessage.destination" data-get-suggestions="SP.updateDestinationSuggestions(value, next)" data-suggestion-selected="SP.updateDestination(selection)"
                  data-flight-not-available-error="errorMessage.flightNotAvailable" data-user-choice="userChoice" data-field-name="to" data-aria-label-key="typeahead-searchBarToFieldAriaLabel" data-availability-error="errorMessage.showInvalidWarning"
                  data-tab-index="0" class="search-field ng-scope ng-isolate-scope">
                  <div data-click-and-touch-off="" data-click-and-touch-off-callback="loseFocus()" data-click-and-touch-off-if="!hideSuggestion" class="typeahead-field" id="typeahead-to"
                    data-ng-class="{'did-you-mean-error' : (errorMessage === 'typeahead-weCantRecognise' &amp;&amp; suggestions.length > 0 &amp;&amp; !isServiceFailed)}"><input type="text" name="searchEntry" data-ng-model="inputValue"
                      data-ng-change="updateSuggestions(inputValue, '')" data-ng-keydown="navigate($event, activeIndex)" data-ng-required="true" autocomplete="off" id="to" tabindex="0" role="textbox" class="to inverted "
                      data-ng-disabled="eligibilityErrorState" aria-label="To, search bar Destination field" aria-live="polite" data-select-content-on-focus=""
                      data-ng-class="{'invalid-field' : (errorMessage || availabilityError), 'invalid-field flight-error' : (flightNotAvailableError === 'FlightNotAvailable')}" required="required"> <label for="to" aria-hidden="true"
                      class="ng-binding">To <span data-ba-resource-bundle-static="" data-key="locationPlaceHolder" class="ng-binding ng-isolate-scope">type 3 letters</span></label> <!-- ngIf: showSuggestions() -->
                    <div class="search-bar-dropdown ng-hide" data-ng-show="errorMessage || showSuggestions()" data-ng-class="{'invalid-warning': errorMessage}">
                      <!-- ngIf: errorMessage || isServiceFailed --><!-- ngIf: errorMessage === 'typeahead-weCantRecognise' && suggestions.length > 0 && !isServiceFailed -->
                      <!-- ngIf: errorMessage === 'typeahead-weCantRecognise' && suggestions.length > 0 && !isServiceFailed -->
                      <ul data-ng-show="showSuggestions()" class="resultsContainer choicesContainer ng-hide" tabindex="-1" role="listbox"><!-- ngRepeat: suggestion in suggestions track by $index --></ul>
                    </div>
                  </div>
                </div><!-- end ngIf: userChoice === 'Flight' || userChoice==='Concur' -->
              </div>
            </div><!-- ngIf: errorMessage.flightNotAvailable --><!-- ngIf: errorMessage.availabilityError --><!-- ngIf: errorMessage.unexpectedError -->
          </div>
          <div class="small-6 large-2 columns date-container outbound">
            <div class="outbound date-selection" tabindex="0" id="flight-outbound-date-selector" data-ng-click="openDatepicker(false)" data-ng-keydown="openDatepicker(false, $event)" aria-label="Outbound date selector, 21 August" role="button">
              <div class="journey-type bold ng-binding ng-isolate-scope" data-ba-resource-bundle-static="" data-key="Searchbar-outbound" aria-hidden="true">Outbound</div>
              <div class="date h1 ng-binding" aria-hidden="true">21</div>
              <p class="month ng-binding" aria-hidden="true">August</p>
            </div>
          </div>
          <div class="small-6 large-2 columns date-container"><!-- ngIf: journeyDates.length > 1 -->
            <div class="date-selection" tabindex="0" data-ng-click="openDatepicker(true)" data-ng-keydown="openDatepicker(true, $event)" id="flight-inbound-date-selector" aria-label="Return date selector,  Add return" role="button">
              <!-- ngIf: journeyDates.length <= 1 -->
              <div class="journey-type bold ng-binding ng-scope ng-isolate-scope" data-ng-if="journeyDates.length <= 1" data-ba-resource-bundle-static="" data-key="Searchbar-addReturn" aria-hidden="true">Add a return</div>
              <!-- end ngIf: journeyDates.length <= 1 --><!-- ngIf: journeyDates.length > 1 --><!-- ngIf: journeyDates.length <= 1 -->
              <div data-ng-if="journeyDates.length <= 1" class="date add-date h1 ng-scope" aria-hidden="true"><span aria-hidden="true" data-icon=""></span></div><!-- end ngIf: journeyDates.length <= 1 --><!-- ngIf: journeyDates.length > 1 -->
            </div>
          </div>
          <div class="large-2 columns drop-down-container">
            <div class="row">
              <div class="small-12 medium-6 large-12 columns drop-down-container" data-ng-hide="(userChoice === 'Concur' || isConcur)">
                <div id="sb-Flight-pax-mix" class="drop-down-selection" tabindex="0" data-ng-click="togglePaxMixPicker()" data-ng-keypress="keyPress($event, togglePaxMixPicker)" title="1 Adult" aria-label="Passenger selector, 1 Adult" role="button">
                  <img data-ng-src="images/avatar_standard.svg" aria-hidden="true" alt="" src="/apps/ba-home/images/avatar_standard.svg"> <span class="label-font-style ng-binding ng-isolate-scope" data-ba-resource-bundle-static=""
                    data-key="Searchbar-passengers" aria-hidden="true">Passengers</span> <span class="selection input-text-styling ng-binding" aria-hidden="true">1 Adult</span></div>
              </div><!-- ngIf: (userChoice === 'Concur' || isConcur) -->
              <div class="small-12 medium-6 large-12 columns drop-down-container">
                <div id="sb-flight-travel-class" class="drop-down-selection" tabindex="0" data-ng-click="toggleTravelClassPicker()" data-ng-keypress="keyPress($event, toggleTravelClassPicker)" title="Economy"
                  aria-label="Travel class selector, Economy" role="button"><span class="travel-class-icon" aria-hidden="true" data-icon=""></span> <span class="label-font-style ng-binding ng-isolate-scope" data-ba-resource-bundle-static=""
                    data-key="Searchbar-travelClass" aria-hidden="true">Travel class</span> <span class="selection input-text-styling ng-binding" aria-hidden="true">Economy</span></div>
              </div>
            </div>
            <div class="row"><!-- ngIf: (userChoice === 'Concur') --></div>
          </div>
          <!-- ngIf: (showFlightHotelUpsell || showFlightCarUpsell) && userSelection.selectedCabin === SP.SearchBarConstants.DEFAULT_CABIN_CLASS --><!-- ngIf: showFlightOnlyUpsell && (userSelection.selectedCabin === SP.SearchBarConstants.DEFAULT_CABIN_CLASS) --><!-- ngIf: !(showFlightOnlyUpsell) -->
          <div class="large-2 small-12 columns search-button-container ng-scope" data-ng-if="!(showFlightOnlyUpsell)"><button type="button" data-ng-click="SP.submitSearchForm()" aria-disabled="true" class="primary search-button disabled" tabindex="0"
              data-ng-class="{'disabled' : !SP.isSearchEnabled()}" data-icon=""><span class="hide-for-large-up ng-binding ng-isolate-scope" data-ba-resource-bundle-static="" data-key="Searchbar-searchButtonAriaLabel">Search</span></button>
            <!-- ngIf: isHotlineInformationRetrieved --> <button class="hide-for-medium-up close-button ng-binding ng-isolate-scope" data-ng-click="expandSearchBar()" data-ba-resource-bundle-static="" data-key="Searchbar-closeSearch"
              tabindex="0">Close</button></div><!-- end ngIf: !(showFlightOnlyUpsell) -->
        </div><!-- ngIf: SP.isFlexiEnabled() -->
        <div class="row ng-scope" data-ng-if="SP.isFlexiEnabled()">
          <div class="small-12 hide-for-medium-up"><span class="flexible-search">
              <div class="title ng-binding">Need Inspiration?</div><a class="link ng-binding" data-ng-click="SP.redirectToFlexibleSearch()" tabindex="0">Explore all our flight destinations <span data-icon=""></span></a>
            </span></div>
        </div><!-- end ngIf: SP.isFlexiEnabled() -->
        <div class="row show-for-large-up"><!-- ngIf: errorMessage.availabilityError --><!-- ngIf: errorMessage.unexpectedError --></div><!-- ngIf: isHotlineInformationRetrieved -->
      </div>
    </div>
  </div>
</form>

<form class="ng-pristine ng-valid">
  <div data-pop-up-directive="" data-show="isPaxMixPickerOpen" data-restrict-exit-functionality="true" role="dialog" data-selector-id="'sb-'+userChoice+'-pax-mix'" data-pop-up-id="'sb-'+userChoice+'-pax-mix-pop-up'"
    data-position-adjustment-values="popUpAdjustmentValues" data-disable-position-adjustment="disablePositionAdjustment" data-pop-up-height="430" data-pop-up-width="400" data-ng-keydown="escapePopUp($event, 'pax')" aria-labelledby="pax-mix-header"
    aria-modal="false" aria-hidden="true" aria-live="assertive" class="ng-isolate-scope">
    <div class="pop-up ng-hide" data-ng-show="show" data-ng-keydown="keyPress($event)" tabindex="-1">
      <div class="pop-up-overlay" data-ng-click="hidePopUp()"></div>
      <div data-trap-focus="" data-focus-first-element="show" data-override-auto-focus="true" id="sb-Flight-pax-mix-pop-up" data-ng-show="show" class="pop-up-dialog ng-isolate-scope pop-up-animation ng-hide" data-ng-style="applyDialogPosition()"
        ng-class="{'pop-up-animation' : (disablePositionAdjustment !== true)}" data-ng-transclude="" style="top: 0px; left: 0px;">
        <div id="pax-mix-header" class="pop-up-dialog-heading bold ng-binding ng-scope ng-isolate-scope" data-ba-resource-bundle-static="" data-key="Searchbar-paxMixPickerHeading">Who are you travelling with?</div>
        <div class="pop-up-dialog-content ng-scope ng-isolate-scope" data-passenger-supermix="" id="passenger-mix" data-supermix="passengers.mix" data-rule-set="passengers.rules" data-resource-callback="getResourcesForPassengerMix(errorKey)">
          <!-- ngIf: hasRooms() --><!-- ngIf: showPassengerRefinementInfo -->
          <div class="passenger-supermix" data-ng-class="{'passenger-supermix-multi-passenger': hasRooms()}"><!-- ngRepeat: passengerMix in supermix.group track by $index -->
            <div class="passenger-mix ng-pristine ng-valid ng-scope" data-ng-repeat="passengerMix in supermix.group track by $index" data-ng-form="" data-name="supermixForm">
              <div class="passenger-mix-information ng-hide" data-ng-show="hasRooms()">
                <div class="passenger-mix-header"><span class="passenger-mix-title bold ng-binding ng-isolate-scope" data-ba-resource-bundle-static="" data-key="pax-room" data-supplant="{'S1':$index + 1}">Room 1</span></div>
                <div class="passenger-mix-header">
                  <p data-ng-class="{'passenger-mix-summary-hide': !shouldShowSummary(supermixForm, passengerMix.showSummary)}" class="passenger-mix-summary ng-binding passenger-mix-summary-hide" data-ng-bind-html="getRoomSummary(passengerMix)">
                    1&nbsp;Adult</p>
                  <a class="passenger-mix-edit-link small-text ng-binding ng-isolate-scope ng-hide" data-ng-click="toggleRoomDetails($index, passengerMix)" data-ng-keydown="callOnKeyDown($event, 'toggleRoomDetails', $index)" data-ng-show="shouldShowSummary(supermixForm, passengerMix.showSummary)" tabindex="0" data-ba-resource-bundle-static="" data-key="edit-link-text" role="link" aria-label="Link to edit room details 1">Edit</a>
                </div>
              </div>
              <div class="passenger-mix-directive ng-isolate-scope" data-ng-class="{'passenger-mix-directive-hide': shouldShowSummary(supermixForm, passengerMix.showSummary)}" data-passenger-mix-two="" data-parent-index="$index"
                data-passengers="passengerMix" data-submitted="submitted" data-index="$index" data-rule-set="ruleSet" data-supermix="supermix" data-resource-callback="paxResourceCallback(errorKey)"><!-- ngRepeat: passenger in passengers -->
                <div data-ng-repeat="passenger in passengers" class="ba-passenger-mix ng-pristine ng-valid ng-scope" data-ng-form="" data-name="paxMixForm" data-click-and-touch-off="" data-click-and-touch-off-if="passenger.errors.length > 0"
                  data-click-and-touch-off-callback="clearPassengerErrors()">
                  <div class="passenger-submix">
                    <div class="row spinner ng-pristine ng-untouched ng-valid ng-isolate-scope ng-not-empty" id="AdultKey0" data-spinner="" data-label="passenger.displayKeyPlural" data-sub-label="passenger.ageRange" data-parent-index="$index"
                      data-value="passenger.value" data-override="spinnerCallback(newVal, index, optionalOverride)" data-ng-model="passenger.value" data-get-aria-label="ariaLabel($index)">
                      <div class="columns small-2 right-padding-zero"><span class="h1 spinner-value ng-binding" data-ng-class="{'spinner-value-zero': value===0}" tabindex="-1" aria-live="assertive" aria-label="number of Adults is now 1">1</span>
                      </div><!-- ngIf: label || subLabel -->
                      <div class="columns small-5 left-padding-zero ng-scope" data-ng-if="label || subLabel"><!-- ngIf: label -->
                        <div class="p bold spinner-main-label ng-binding ng-scope" data-ng-if="label">Adults</div><!-- end ngIf: label --><!-- ngIf: subLabel -->
                        <div class="small-text spinner-sub-label ng-binding ng-scope" data-ng-if="subLabel">16+ years</div><!-- end ngIf: subLabel -->
                      </div><!-- end ngIf: label || subLabel -->
                      <div class="columns small-5">
                        <div class="spinner-button-container"><button type="button" class="spinner-button decrease disable" data-ng-class="{'disable': isMinusDisabled}" data-type="decrease" data-ng-click="minus()" data-ng-attr-tabindex="{{minusTab}}"
                            aria-label="decrease number of Adults" aria-description="16+ years" data-icon="" tabindex="-1"></button> <button type="button" class="spinner-button increase" data-ng-class="{'disable': isPlusDisabled}"
                            data-type="increase" data-ng-click="plus()" data-ng-attr-tabindex="{{plusTab}}" aria-label="increase number of Adults" aria-description="16+ years" data-icon="" tabindex="0"></button></div>
                      </div>
                    </div><!-- ngIf: requiresAgeList(passenger) -->
                    <div class="error-messages ng-isolate-scope ng-hide" data-ba-page-messages="" role="alert" data-ng-show="passenger.errors.length > 0" data-message-type-class="'information'"
                      data-message-description="getResource(passenger.errors[0]).resourceKey | baResourceBundleDynamic: getResource(passenger.errors[0]).supplants" data-inverted="true"><!-- ngIf: pageDisabled === true -->
                      <div class="page-messages information inverted" data-ng-class="{'page-message-disabled': pageDisabled, 'inverted': inverted === 'true'}">
                        <!-- ngIf: messageTitle --><!-- ngIf: messageTitleLiteral --><!-- ngIf: messageDescription -->
                        <p ng-bind-html="messageDescription" data-ng-if="messageDescription" class="ng-binding ng-scope">Resource Not Found!</p><!-- end ngIf: messageDescription -->
                        <div data-ng-transclude=""></div>
                      </div>
                    </div>
                  </div>
                </div><!-- end ngRepeat: passenger in passengers -->
                <div data-ng-repeat="passenger in passengers" class="ba-passenger-mix ng-pristine ng-valid ng-scope" data-ng-form="" data-name="paxMixForm" data-click-and-touch-off="" data-click-and-touch-off-if="passenger.errors.length > 0"
                  data-click-and-touch-off-callback="clearPassengerErrors()">
                  <div class="passenger-submix">
                    <div class="row spinner ng-pristine ng-untouched ng-valid ng-isolate-scope ng-not-empty" id="YoungAdultKey0" data-spinner="" data-label="passenger.displayKeyPlural" data-sub-label="passenger.ageRange" data-parent-index="$index"
                      data-value="passenger.value" data-override="spinnerCallback(newVal, index, optionalOverride)" data-ng-model="passenger.value" data-get-aria-label="ariaLabel($index)">
                      <div class="columns small-2 right-padding-zero"><span class="h1 spinner-value ng-binding spinner-value-zero" data-ng-class="{'spinner-value-zero': value===0}" tabindex="-1" aria-live="assertive"
                          aria-label="number of Young adults is now 0">0</span></div><!-- ngIf: label || subLabel -->
                      <div class="columns small-5 left-padding-zero ng-scope" data-ng-if="label || subLabel"><!-- ngIf: label -->
                        <div class="p bold spinner-main-label ng-binding ng-scope" data-ng-if="label">Young adults</div><!-- end ngIf: label --><!-- ngIf: subLabel -->
                        <div class="small-text spinner-sub-label ng-binding ng-scope" data-ng-if="subLabel">12 - 15 years</div><!-- end ngIf: subLabel -->
                      </div><!-- end ngIf: label || subLabel -->
                      <div class="columns small-5">
                        <div class="spinner-button-container"><button type="button" class="spinner-button decrease disable" data-ng-class="{'disable': isMinusDisabled}" data-type="decrease" data-ng-click="minus()" data-ng-attr-tabindex="{{minusTab}}"
                            aria-label="decrease number of Young adults" aria-description="12 - 15 years" data-icon="" tabindex="-1"></button> <button type="button" class="spinner-button increase" data-ng-class="{'disable': isPlusDisabled}"
                            data-type="increase" data-ng-click="plus()" data-ng-attr-tabindex="{{plusTab}}" aria-label="increase number of Young adults" aria-description="12 - 15 years" data-icon="" tabindex="0"></button></div>
                      </div>
                    </div><!-- ngIf: requiresAgeList(passenger) -->
                    <div class="error-messages ng-isolate-scope ng-hide" data-ba-page-messages="" role="alert" data-ng-show="passenger.errors.length > 0" data-message-type-class="'information'"
                      data-message-description="getResource(passenger.errors[0]).resourceKey | baResourceBundleDynamic: getResource(passenger.errors[0]).supplants" data-inverted="true"><!-- ngIf: pageDisabled === true -->
                      <div class="page-messages information inverted" data-ng-class="{'page-message-disabled': pageDisabled, 'inverted': inverted === 'true'}">
                        <!-- ngIf: messageTitle --><!-- ngIf: messageTitleLiteral --><!-- ngIf: messageDescription -->
                        <p ng-bind-html="messageDescription" data-ng-if="messageDescription" class="ng-binding ng-scope">Resource Not Found!</p><!-- end ngIf: messageDescription -->
                        <div data-ng-transclude=""></div>
                      </div>
                    </div>
                  </div>
                </div><!-- end ngRepeat: passenger in passengers -->
                <div data-ng-repeat="passenger in passengers" class="ba-passenger-mix ng-pristine ng-valid ng-scope" data-ng-form="" data-name="paxMixForm" data-click-and-touch-off="" data-click-and-touch-off-if="passenger.errors.length > 0"
                  data-click-and-touch-off-callback="clearPassengerErrors()">
                  <div class="passenger-submix">
                    <div class="row spinner ng-pristine ng-untouched ng-valid ng-isolate-scope ng-not-empty" id="ChildKey0" data-spinner="" data-label="passenger.displayKeyPlural" data-sub-label="passenger.ageRange" data-parent-index="$index"
                      data-value="passenger.value" data-override="spinnerCallback(newVal, index, optionalOverride)" data-ng-model="passenger.value" data-get-aria-label="ariaLabel($index)">
                      <div class="columns small-2 right-padding-zero"><span class="h1 spinner-value ng-binding spinner-value-zero" data-ng-class="{'spinner-value-zero': value===0}" tabindex="-1" aria-live="assertive"
                          aria-label="number of Children is now 0">0</span></div><!-- ngIf: label || subLabel -->
                      <div class="columns small-5 left-padding-zero ng-scope" data-ng-if="label || subLabel"><!-- ngIf: label -->
                        <div class="p bold spinner-main-label ng-binding ng-scope" data-ng-if="label">Children</div><!-- end ngIf: label --><!-- ngIf: subLabel -->
                        <div class="small-text spinner-sub-label ng-binding ng-scope" data-ng-if="subLabel">2 - 11 years</div><!-- end ngIf: subLabel -->
                      </div><!-- end ngIf: label || subLabel -->
                      <div class="columns small-5">
                        <div class="spinner-button-container"><button type="button" class="spinner-button decrease disable" data-ng-class="{'disable': isMinusDisabled}" data-type="decrease" data-ng-click="minus()" data-ng-attr-tabindex="{{minusTab}}"
                            aria-label="decrease number of Children" aria-description="2 - 11 years" data-icon="" tabindex="-1"></button> <button type="button" class="spinner-button increase" data-ng-class="{'disable': isPlusDisabled}"
                            data-type="increase" data-ng-click="plus()" data-ng-attr-tabindex="{{plusTab}}" aria-label="increase number of Children" aria-description="2 - 11 years" data-icon="" tabindex="0"></button></div>
                      </div>
                    </div><!-- ngIf: requiresAgeList(passenger) -->
                    <div class="error-messages ng-isolate-scope ng-hide" data-ba-page-messages="" role="alert" data-ng-show="passenger.errors.length > 0" data-message-type-class="'information'"
                      data-message-description="getResource(passenger.errors[0]).resourceKey | baResourceBundleDynamic: getResource(passenger.errors[0]).supplants" data-inverted="true"><!-- ngIf: pageDisabled === true -->
                      <div class="page-messages information inverted" data-ng-class="{'page-message-disabled': pageDisabled, 'inverted': inverted === 'true'}">
                        <!-- ngIf: messageTitle --><!-- ngIf: messageTitleLiteral --><!-- ngIf: messageDescription -->
                        <p ng-bind-html="messageDescription" data-ng-if="messageDescription" class="ng-binding ng-scope">Resource Not Found!</p><!-- end ngIf: messageDescription -->
                        <div data-ng-transclude=""></div>
                      </div>
                    </div>
                  </div>
                </div><!-- end ngRepeat: passenger in passengers -->
                <div data-ng-repeat="passenger in passengers" class="ba-passenger-mix ng-pristine ng-valid ng-scope" data-ng-form="" data-name="paxMixForm" data-click-and-touch-off="" data-click-and-touch-off-if="passenger.errors.length > 0"
                  data-click-and-touch-off-callback="clearPassengerErrors()">
                  <div class="passenger-submix">
                    <div class="row spinner ng-pristine ng-untouched ng-valid ng-isolate-scope ng-not-empty" id="InfantKey0" data-spinner="" data-label="passenger.displayKeyPlural" data-sub-label="passenger.ageRange" data-parent-index="$index"
                      data-value="passenger.value" data-override="spinnerCallback(newVal, index, optionalOverride)" data-ng-model="passenger.value" data-get-aria-label="ariaLabel($index)">
                      <div class="columns small-2 right-padding-zero"><span class="h1 spinner-value ng-binding spinner-value-zero" data-ng-class="{'spinner-value-zero': value===0}" tabindex="-1" aria-live="assertive"
                          aria-label="number of Infants is now 0">0</span></div><!-- ngIf: label || subLabel -->
                      <div class="columns small-5 left-padding-zero ng-scope" data-ng-if="label || subLabel"><!-- ngIf: label -->
                        <div class="p bold spinner-main-label ng-binding ng-scope" data-ng-if="label">Infants</div><!-- end ngIf: label --><!-- ngIf: subLabel -->
                        <div class="small-text spinner-sub-label ng-binding ng-scope" data-ng-if="subLabel">under 2 years</div><!-- end ngIf: subLabel -->
                      </div><!-- end ngIf: label || subLabel -->
                      <div class="columns small-5">
                        <div class="spinner-button-container"><button type="button" class="spinner-button decrease disable" data-ng-class="{'disable': isMinusDisabled}" data-type="decrease" data-ng-click="minus()" data-ng-attr-tabindex="{{minusTab}}"
                            aria-label="decrease number of Infants" aria-description="under 2 years" data-icon="" tabindex="-1"></button> <button type="button" class="spinner-button increase" data-ng-class="{'disable': isPlusDisabled}"
                            data-type="increase" data-ng-click="plus()" data-ng-attr-tabindex="{{plusTab}}" aria-label="increase number of Infants" aria-description="under 2 years" data-icon="" tabindex="0"></button></div>
                      </div>
                    </div><!-- ngIf: requiresAgeList(passenger) -->
                    <div class="error-messages ng-isolate-scope ng-hide" data-ba-page-messages="" role="alert" data-ng-show="passenger.errors.length > 0" data-message-type-class="'information'"
                      data-message-description="getResource(passenger.errors[0]).resourceKey | baResourceBundleDynamic: getResource(passenger.errors[0]).supplants" data-inverted="true"><!-- ngIf: pageDisabled === true -->
                      <div class="page-messages information inverted" data-ng-class="{'page-message-disabled': pageDisabled, 'inverted': inverted === 'true'}">
                        <!-- ngIf: messageTitle --><!-- ngIf: messageTitleLiteral --><!-- ngIf: messageDescription -->
                        <p ng-bind-html="messageDescription" data-ng-if="messageDescription" class="ng-binding ng-scope">Resource Not Found!</p><!-- end ngIf: messageDescription -->
                        <div data-ng-transclude=""></div>
                      </div>
                    </div>
                  </div>
                </div><!-- end ngRepeat: passenger in passengers -->
              </div>
            </div><!-- end ngRepeat: passengerMix in supermix.group track by $index -->
          </div>
        </div><button class="primary pop-up-dialog-button ng-binding ng-scope ng-isolate-scope" data-ng-click="togglePaxMixPicker()" data-ba-resource-bundle-static="" data-key="Searchbar-paxMixPickerDialogButtonText">Confirm</button>
      </div>
    </div>
  </div>
</form>

<form class="ng-pristine ng-valid">
  <div data-pop-up-directive="" data-show="isTravelClassPickerOpen" data-restrict-exit-functionality="true" role="dialog" data-selector-id="getSelectorElement('travel-class')" data-pop-up-id="getSelectorElement('travel-class')-pop-up"
    data-pop-up-height="430" data-pop-up-width="400" data-position-adjustment-values="popUpAdjustmentValues" data-disable-position-adjustment="disablePositionAdjustment" data-ng-keydown="escapePopUp($event, 'class')"
    aria-labelledby="travel-class-header" aria-modal="false" aria-hidden="true" aria-live="assertive" class="ng-isolate-scope">
    <div class="pop-up ng-hide" data-ng-show="show" data-ng-keydown="keyPress($event)" tabindex="-1">
      <div class="pop-up-overlay" data-ng-click="hidePopUp()"></div>
      <div data-trap-focus="" data-focus-first-element="show" data-override-auto-focus="true" id="NaN" data-ng-show="show" class="pop-up-dialog ng-isolate-scope pop-up-animation ng-hide" data-ng-style="applyDialogPosition()"
        ng-class="{'pop-up-animation' : (disablePositionAdjustment !== true)}" data-ng-transclude="" style="top: 0px; left: 0px;">
        <div id="travel-class-header" class="pop-up-dialog-heading bold ng-binding ng-scope ng-isolate-scope" data-ba-resource-bundle-static="" data-key="Searchbar-travelClassHeading">What is your travel class?</div>
        <div class="pop-up-dialog-content ng-scope">
          <div data-cabin-type="" data-selected-value="userSelection.tempCabin" data-available-results="cabinType.availableCabinTypes" data-input-name="Cabin Type" class="ng-isolate-scope">
            <legend class="hidden-field-legend ng-binding">Cabin Type</legend>
            <div class="row"><!-- ngRepeat: item in availableResults track by item.value -->
              <div class="columns small-12 ng-scope" data-ng-repeat="item in availableResults track by item.value"><input type="radio" id="M" class="radio-selector ng-pristine ng-untouched ng-valid ng-empty" data-ng-model="$parent.selectedValue"
                  data-ng-value="item.value" name="Cabin Type" data-dynamic-name="" checked="" value="M"> <label for="M" class="radio-button bold ng-binding">Economy</label></div><!-- end ngRepeat: item in availableResults track by item.value -->
              <div class="columns small-12 ng-scope" data-ng-repeat="item in availableResults track by item.value"><input type="radio" id="W" class="radio-selector ng-pristine ng-untouched ng-valid ng-empty" data-ng-model="$parent.selectedValue"
                  data-ng-value="item.value" name="Cabin Type" data-dynamic-name="" checked="" value="W"> <label for="W" class="radio-button bold ng-binding">Premium economy</label></div>
              <!-- end ngRepeat: item in availableResults track by item.value -->
              <div class="columns small-12 ng-scope" data-ng-repeat="item in availableResults track by item.value"><input type="radio" id="J" class="radio-selector ng-pristine ng-untouched ng-valid ng-empty" data-ng-model="$parent.selectedValue"
                  data-ng-value="item.value" name="Cabin Type" data-dynamic-name="" checked="" value="J"> <label for="J" class="radio-button bold ng-binding">Business</label></div><!-- end ngRepeat: item in availableResults track by item.value -->
              <div class="columns small-12 ng-scope" data-ng-repeat="item in availableResults track by item.value"><input type="radio" id="F" class="radio-selector ng-pristine ng-untouched ng-valid ng-empty" data-ng-model="$parent.selectedValue"
                  data-ng-value="item.value" name="Cabin Type" data-dynamic-name="" checked="" value="F"> <label for="F" class="radio-button bold ng-binding">First</label></div><!-- end ngRepeat: item in availableResults track by item.value -->
            </div>
          </div>
          <div data-ticket-type-directive="" data-selected-value="userSelection.tempTicketType" data-available-results="ticketType.availableTicketTypes" data-input-name="Ticket Type" class="ng-isolate-scope">
            <form class="ng-pristine ng-valid"><!-- ngIf: isLoggedOn && availableResults.length>2 --><!-- ngIf: !isLoggedOn || availableResults.length<=2 -->
              <div class="ticket-type-container row ng-scope" data-ng-if="!isLoggedOn || availableResults.length<=2">
                <div class="columns small-12">
                  <div class="ticket-type-button-container"><label class="switch"><input id="ticketTypeSelector" type="checkbox" class="ticket-type-checkbox ng-pristine ng-untouched ng-valid ng-empty" data-ng-model="$parent.selectedValue"
                        aria-label="Flexible ticket?" data-ng-true-value="'FLEXIBLE'" data-ng-false-value="'LOWEST'" data-ng-keydown="switchCheckBox($event, 'ticketTypeSelector')"> <span class="slider round"></span></label></div>
                  <div>
                    <div class="bold ng-binding ng-isolate-scope" data-ba-resource-bundle-static="" data-key="Searchbar-flexibleTicket">Flexible ticket?</div>
                    <div class="penalty-fee-text small ng-binding ng-isolate-scope" data-ba-resource-bundle-static="" data-key="Searchbar-noPenaltyFee">Change your flight with no penalty fee</div>
                  </div>
                </div>
              </div><!-- end ngIf: !isLoggedOn || availableResults.length<=2 -->
            </form>
          </div>
        </div><button class="primary pop-up-dialog-button ng-binding ng-scope ng-isolate-scope" data-ng-click="toggleTravelClassPicker()" data-ba-resource-bundle-static="" data-key="Searchbar-travelClassDialogButtonText">Confirm</button>
      </div>
    </div>
  </div>
</form>

<form class="ng-pristine ng-valid"><!-- ngIf: isLoggedOn && availableResults.length>2 --><!-- ngIf: !isLoggedOn || availableResults.length<=2 -->
  <div class="ticket-type-container row ng-scope" data-ng-if="!isLoggedOn || availableResults.length<=2">
    <div class="columns small-12">
      <div class="ticket-type-button-container"><label class="switch"><input id="ticketTypeSelector" type="checkbox" class="ticket-type-checkbox ng-pristine ng-untouched ng-valid ng-empty" data-ng-model="$parent.selectedValue"
            aria-label="Flexible ticket?" data-ng-true-value="'FLEXIBLE'" data-ng-false-value="'LOWEST'" data-ng-keydown="switchCheckBox($event, 'ticketTypeSelector')"> <span class="slider round"></span></label></div>
      <div>
        <div class="bold ng-binding ng-isolate-scope" data-ba-resource-bundle-static="" data-key="Searchbar-flexibleTicket">Flexible ticket?</div>
        <div class="penalty-fee-text small ng-binding ng-isolate-scope" data-ba-resource-bundle-static="" data-key="Searchbar-noPenaltyFee">Change your flight with no penalty fee</div>
      </div>
    </div>
  </div><!-- end ngIf: !isLoggedOn || availableResults.length<=2 -->
</form>

Name: mmbFormToolsPOST https://www.britishairways.com/travel/managebooking/public/en_gb?source=PHP-Find-Booking

<form method="post" action="https://www.britishairways.com/travel/managebooking/public/en_gb?source=PHP-Find-Booking" id="mmbFormTools" name="mmbFormTools" class="row ng-pristine ng-valid ng-valid-maxlength" ng-submit="mmbSubmit($event)">
  <div class="form-title"><span data-ba-resource-bundle-static="" data-key="travelToolBarFindBooking" class="ng-binding ng-isolate-scope">Manage My Booking</span></div><input value="104002" name="eId" type="hidden" autocomplete="off">
  <div class="input-field small-12 columns"><input autocomplete="off" autocorrect="off" data-ng-model="bookingRefMMBTool" size="25" maxlength="6" type="text" name="bookingRef" id="bookingRefMMBTool" aria-label="Booking reference"
      class="ng-pristine ng-untouched ng-valid ng-empty ng-valid-maxlength"> <label for="bookingRefMMBTool" class="ng-binding">Booking reference</label></div>
  <div class="input-field small-12 columns"><input spellcheck="false" autocomplete="off" data-ng-model="lastnameMMBTool" size="25" maxlength="59" type="text" name="lastname" id="lastnameMMBTool" aria-label="Last name"
      class="ng-pristine ng-untouched ng-valid ng-empty ng-valid-maxlength"> <label for="lastnameMMBTool" class="ng-binding">Last name</label></div><button class="button primary small-12 medium-6 right-align columns ng-binding ng-isolate-scope"
    type="submit" data-ba-resource-bundle-static="" data-key="travelToolBarFindBookingButton">Continue</button>
</form>

Name: checkinFormToolsPOST https://www.britishairways.com/travel/managebooking/public/en_gb?source=PHP-Start-OLCI

<form method="post" action="https://www.britishairways.com/travel/managebooking/public/en_gb?source=PHP-Start-OLCI" id="checkinFormTools" name="checkinFormTools" class="row ng-pristine ng-valid ng-valid-maxlength" ng-submit="olciSubmit($event)">
  <div class="form-title"><span data-ba-resource-bundle-static="" data-key="travelToolBarOnlineCheckin" class="ng-binding ng-isolate-scope">Ready to check in?</span>
    <p data-ba-resource-bundle-static="" data-key="travelToolBarOnlineCheckinInfo" class="ng-binding ng-isolate-scope">Online check-in opens 24 hours before your flight departs</p>
  </div><input value="104510" name="eId" type="hidden" autocomplete="off">
  <div class="input-field small-12 columns"><input spellcheck="false" autocomplete="off" data-ng-model="bookingRefCheckinTool" size="25" maxlength="6" type="text" name="bookingRef" id="bookingRefCheckinTool" aria-label="Booking reference"
      class="ng-pristine ng-untouched ng-valid ng-empty ng-valid-maxlength"> <label for="bookingRefCheckinTool" class="ng-binding">Booking reference</label></div>
  <div class="input-field small-12 columns"><input spellcheck="false" autocomplete="off" data-ng-model="lastnameCheckinTool" size="25" maxlength="59" type="text" name="lastname" id="lastnameCheckinTool" aria-label="Last name"
      class="ng-pristine ng-untouched ng-valid ng-empty ng-valid-maxlength"> <label for="lastnameCheckinTool" class="ng-binding">Last name</label></div><button class="button primary small-12 medium-6 right-align columns ng-binding ng-isolate-scope"
    type="submit" data-ba-resource-bundle-static="" data-key="travelToolBarOnlineCheckinButton">Check in</button>
</form>

Name: rtadFormToolsPOST

<form method="post" id="rtadFormTools" name="rtadFormTools" class="row ng-pristine ng-valid ng-valid-maxlength ng-valid-required" ng-submit="rtadSubmit($event)">
  <div class="form-title"><span class="label-text ng-binding ng-isolate-scope" data-ba-resource-bundle-static="" data-key="travelToolBarRtad">Flight status</span>
    <p data-ba-resource-bundle-static="" data-key="travelToolBarRtadInfo" class="ng-binding ng-isolate-scope">Check the latest status of our flights over the next 10 days</p>
  </div>
  <div class="flex-row radio-group">
    <div class="input-field input-radio small-12 medium-4 columns"><label class="ng-binding"><input id="rtadDep" name="flightArrDep" type="radio" value="true" data-ng-model="travelToolbarCtrl.flightArrDep"
          class="ng-pristine ng-untouched ng-valid ng-not-empty"> Departing</label></div>
    <div class="input-field input-radio small-12 medium-4 columns"><label class="ng-binding"><input id="rtadArr" name="flightArrDep" type="radio" value="false" data-ng-model="travelToolbarCtrl.flightArrDep"
          class="ng-pristine ng-untouched ng-valid ng-not-empty"> Arriving</label></div>
  </div>
  <div class="input-field small-12 columns"><input data-ng-model="travelToolbarCtrl.flightNum" spellcheck="false" autocomplete="off" size="29" maxlength="4" type="text" name="flightNum" id="flightNum" aria-label="Flight Number"
      class="flight-number-input ng-pristine ng-untouched ng-valid ng-empty ng-valid-maxlength"> <span class="flight-number-label ng-binding ng-isolate-scope" data-ba-resource-bundle-static="" data-key="travelToolBarBA">BA</span> <label
      for="flightNum" class="ng-binding">Flight Number</label></div>
  <div class="input-field small-12 columns">
    <div class="input-select-wrap"><select id="select-dropdown" name="flightDate" required="" aria-required="true" data-ng-model="travelToolbarCtrl.flightDate" class="ng-pristine ng-untouched ng-valid ng-not-empty ng-valid-required">
        <option value="2023-08-20" class="ng-binding">Sun 20 Aug</option>
        <option ng-selected="selected" value="2023-08-21" class="ng-binding">Mon 21 Aug (Today)</option><!-- ngRepeat: futureDate in travelToolbarCtrl.future track by $index -->
        <option ng-repeat="futureDate in travelToolbarCtrl.future track by $index" value="2023-08-22" class="ng-binding ng-scope">Tue 22 Aug</option><!-- end ngRepeat: futureDate in travelToolbarCtrl.future track by $index -->
        <option ng-repeat="futureDate in travelToolbarCtrl.future track by $index" value="2023-08-23" class="ng-binding ng-scope">Wed 23 Aug</option><!-- end ngRepeat: futureDate in travelToolbarCtrl.future track by $index -->
        <option ng-repeat="futureDate in travelToolbarCtrl.future track by $index" value="2023-08-24" class="ng-binding ng-scope">Thu 24 Aug</option><!-- end ngRepeat: futureDate in travelToolbarCtrl.future track by $index -->
        <option ng-repeat="futureDate in travelToolbarCtrl.future track by $index" value="2023-08-25" class="ng-binding ng-scope">Fri 25 Aug</option><!-- end ngRepeat: futureDate in travelToolbarCtrl.future track by $index -->
        <option ng-repeat="futureDate in travelToolbarCtrl.future track by $index" value="2023-08-26" class="ng-binding ng-scope">Sat 26 Aug</option><!-- end ngRepeat: futureDate in travelToolbarCtrl.future track by $index -->
        <option ng-repeat="futureDate in travelToolbarCtrl.future track by $index" value="2023-08-27" class="ng-binding ng-scope">Sun 27 Aug</option><!-- end ngRepeat: futureDate in travelToolbarCtrl.future track by $index -->
        <option ng-repeat="futureDate in travelToolbarCtrl.future track by $index" value="2023-08-28" class="ng-binding ng-scope">Mon 28 Aug</option><!-- end ngRepeat: futureDate in travelToolbarCtrl.future track by $index -->
        <option ng-repeat="futureDate in travelToolbarCtrl.future track by $index" value="2023-08-29" class="ng-binding ng-scope">Tue 29 Aug</option><!-- end ngRepeat: futureDate in travelToolbarCtrl.future track by $index -->
        <option ng-repeat="futureDate in travelToolbarCtrl.future track by $index" value="2023-08-30" class="ng-binding ng-scope">Wed 30 Aug</option><!-- end ngRepeat: futureDate in travelToolbarCtrl.future track by $index -->
        <option ng-repeat="futureDate in travelToolbarCtrl.future track by $index" value="2023-08-31" class="ng-binding ng-scope">Thu 31 Aug</option><!-- end ngRepeat: futureDate in travelToolbarCtrl.future track by $index -->
      </select><span class="icon select-arrow" aria-hidden="true"><img data-ng-src="/cms/global/assets/images/site/icon/header_nav_arrow_up.svg" src="/cms/global/assets/images/site/icon/header_nav_arrow_up.svg"></span></div>
  </div>
  <div class="row rtad-more-options-wrapper"><button class="button primary small-12 medium-6 columns ng-binding ng-isolate-scope" type="submit" ng-click="travelToolbarCtrl.submitRtad()" data-ba-resource-bundle-static=""
      data-key="travelToolBarRtadButton">Find flight</button>
    <div class="small-12 medium-6 columns more-options ng-hide" ng-show="showRtad">
      <a href="/travel/flightstatus/public/en_gb/search/" data-ng-click="rtadRouteClick($event)" data-ba-resource-bundle-static="" data-key="travelToolBarMore" class="ng-binding ng-isolate-scope">Search by route</a></div>
  </div>
</form>

<form data-ng-submit="authenticate(username, password)" class="ng-pristine ng-valid">
  <div class="login-error ng-hide" data-ng-show="errorType === 'password'"><img ng-src="/cms/global/assets/images/ba_home_site/brand/warning-red.svg" alt="Warning" src="/cms/global/assets/images/ba_home_site/brand/warning-red.svg"> <span
      data-ba-resource-bundle-static="" data-key="loginErrorDetails" class="ng-binding ng-isolate-scope">Sorry, we don't recognise those details.</span> <span data-ba-resource-bundle-static="" data-key="loginErrorDetails2"
      class="ng-binding ng-isolate-scope">Please check and try again.</span></div>
  <div class="login-error ng-hide" data-ng-show="errorType === 'locked'"><img ng-src="/cms/global/assets/images/ba_home_site/brand/warning-red.svg" alt="Warning" src="/cms/global/assets/images/ba_home_site/brand/warning-red.svg"> <span
      data-ba-resource-bundle-static="" data-key="loginLocked" class="ng-binding ng-isolate-scope">We have locked your account temporarily to keep it safe and secure. For more information please refer to the email or letter you received from
      us.</span></div>
  <div class="login-error ng-hide" data-ng-show="errorType === 'system'"><img class="warning" ng-src="/cms/global/assets/images/ba_home_site/brand/warning-red.svg" alt="Warning" src="/cms/global/assets/images/ba_home_site/brand/warning-red.svg">
    <span data-ba-resource-bundle-static="" data-key="systemNotResponding" class="ng-binding ng-isolate-scope">Sorry, our systems are not responding</span></div>
  <div class="login-error ng-hide" data-ng-show="errorType === 'login'"><img class="warning" ng-src="/cms/global/assets/images/ba_home_site/brand/warning-red.svg" alt="Warning" src="/cms/global/assets/images/ba_home_site/brand/warning-red.svg"> <span
      data-ba-resource-bundle-static="" data-key="loginError" class="ng-binding ng-isolate-scope">You have made too many login attempts.</span> <span data-ba-resource-bundle-static="" data-key="loginError2" class="ng-binding ng-isolate-scope">Your
      account is now locked for up to 24 </span> <span data-ba-resource-bundle-static="" data-key="loginError3" class="ng-binding ng-isolate-scope">hours unless you reset your password.</span></div>
  <div class="row collapse loginuser-wrapper">
    <div class="small-12 large-12 large-offset-0 medium-12 columns"><input class="loginuser inverted ng-pristine ng-untouched ng-valid ng-empty" id="userAp" type="text" autocapitalize="off" autocorrect="off"
        data-ng-class="messageuser ? 'mandatory': ''" name="user" aria-describedby="login-header" data-ng-model="username" aria-label="Login ID / Username"> <label for="userAp" data-ba-resource-bundle-static="" data-key="placeholderUser"
        class="ng-binding ng-isolate-scope">Email or username</label>
      <div class="field-error ng-hide" data-ng-show="messageuser"><img class="warning" alt="Warning" data-ng-src="/cms/global/assets/images/ba_home_site/brand/warning-red.svg" src="/cms/global/assets/images/ba_home_site/brand/warning-red.svg"> <span
          data-ba-resource-bundle-static="" data-key="errorMessage" class="ng-binding ng-isolate-scope">Please complete this field</span></div>
    </div>
    <div class="large-12 small-12 medium-12 columns"><input type="password" id="passAp" class="input-password inverted ng-pristine ng-untouched ng-valid ng-empty" data-ng-class="messagepass ? 'mandatory': ''" name="pass" data-ng-model="password"
        autocomplete="off" aria-label="PIN / Password"> <label for="passAp" data-ba-resource-bundle-static="" data-key="placeholderPass" class="ng-binding ng-isolate-scope">PIN or password</label>
      <div class="field-error pwd ng-hide" data-ng-show="messagepass"><img class="warning" alt="Warning" data-ng-src="/cms/global/assets/images/ba_home_site/brand/warning-red.svg" src="/cms/global/assets/images/ba_home_site/brand/warning-red.svg">
        <span data-ba-resource-bundle-static="" data-key="errorMessage" class="ng-binding ng-isolate-scope">Please complete this field</span></div>
    </div>
    <div class="large-12 small-12 medium-12 columns"><button class="primary ng-binding ng-isolate-scope" type="submit" data-ba-resource-bundle-static="" data-key="login">Log in</button></div>
    <div class="medium-2 columns"></div>
  </div>
</form>

POST

<form action="" method="POST" data-submit-form-directive="" class="ng-pristine ng-valid ng-isolate-scope"><!-- ngRepeat: (key,val) in formData.params --></form>

Text Content

By continuing to use ba.com you will be agreeing to the website Terms and
Conditions and the Use of Cookies while using the website and our services.
Please also read our Privacy Policy under which, to the extent stated, you
consent to the processing of your personal data.

Accept

Skip to main content
Search for

 * 
   
   Log in
 * 



Log in


MAIN MENU

   
   
 * Discover
   
   
   BA
   
   About BA
   
   BA Better World
   
   The BA experience
   
   Travel classes
   
   What's new
   
   On Business
   
   Partners and alliances
   
   
   
   EXECUTIVE CLUB
   
   Join the Club
   
   About the Club
   
   About Avios
   
   Collecting Avios
   
   Spending Avios
   
   Avios credit cards
   
   
   
   FLIGHTS AND DESTINATIONS
   
   Explore our destinations
   
   
   
   Flights to New York
   
   Flights to Los Angeles
   
   Flights to San Francisco
   
   
   
   Routes and timetables
   
   Before you fly
   
   Baggage essentials
   
   Airport information
   
   
   
   HOLIDAYS
   
   Discover BA holidays
   
   
   
   Holiday Finder
   
   City breaks
   
   
   
   All Inclusive holidays
   
   
   
   
   
   Other holiday types
   
   New York holidays
   
   Dubai holidays
   
   Tenerife holidays
   
   
   
   
   
   
   
   
   
   
   
   
   
   OFFERS AND DEALS
   
   Special offers
   
   
   
   Find our cheapest flights
   
   
   
   
   
   
   
   Last-minute deals
   
   
   
   
   
   
   
   Planning ahead
   
   
   
   EXTRAS
   
   London airport hotels
   
   Airport parking
   
   Travel insurance
   
   Meet and assist
   

   
   
   
 * Book
   
   
   FLIGHTS
   
   Book a flight
   
   Book a flight with Avios
   
   
   
   FLIGHTS AND MORE
   
   Flight + Hotel
   
   Flight + Car
   
   Find a hotel
   
   Hire a car
   
   Book an experience
   

   
   
   
 * Manage
   
   
   MY BOOKING
   
   My booking
   Booking reference
   
   Last name of passenger
   
   Find my booking Online check-in
   
   Flight status
   
   Flight information
   
   
   
   EXECUTIVE CLUB
   
   Log in to my Executive Club
   
   Join the Club
   
   
   

   
   
   
 * Help
   
   
   CUSTOMER SUPPORT
   
   Please visit our Help centre for more support if you have a question about
   your booking or flight.
   
   
   Help centre
   
   
   
   BOOKINGS
   
   Delays, cancellations and refunds
   
   Lost baggage
   
   Vouchers
   
   
   
   ASSISTANCE
   
   Contacts and FAQs
   
   Flight status
   
   Disability and mobility assistance
   
   Medical conditions and pregnancy
   
   Travel assistance
   
   Checking in and boarding
   
   
   
   TRAVEL NEWS
   
   UK rail disruptionCheck country COVID-19 entry requirements
   
   More travel news
   

   
   
   
   

Change country/region and language, United Kingdom - English

Skip to Navigation



JUST A MOMENT



read more

read less

 * Flight
 * 
   Flight + Hotel
 * 
   Flight + Car

Search for a flight

Flights

Multi City & Round the World

Corporate booking

Need Inspiration?
Explore all our flight destinations Connected to
From type 3 letters

To type 3 letters

Outbound
21

August

Add a return

Passengers 1 Adult
Travel class Economy

Search Close
Need Inspiration?
Explore all our flight destinations

Who are you travelling with?
Room 1

1 Adult

Edit
1
Adults
16+ years


Resource Not Found!


0
Young adults
12 - 15 years


Resource Not Found!


0
Children
2 - 11 years


Resource Not Found!


0
Infants
under 2 years


Resource Not Found!


Confirm
What is your travel class?
Cabin Type
Economy
Premium economy
Business
First
Flexible ticket?
Change your flight with no penalty fee
Confirm
When would you like to go?
August 2023

MTWTFSS

use tab to navigate through the dates in this month, or tab back up to change
the month above with the next and previous buttons
1


2


3


4


5


6


7


8


9


10


11


12


13


14


15


16


17


18


19


20


21


22


23


24


25


26


27


28


29


30


31






LAST-MINUTE BEACH HOLIDAYS

Your next break could be closer than you think. Search our last-minute deals for
inspiration.


SPAIN HOLIDAYS


PORTUGAL HOLIDAYS

from £282 pp
from London, Sep 2023
from £313 pp
from London, Sep 2023


SPAIN HOLIDAYS

from £282 pp
from London, Sep 2023


PORTUGAL HOLIDAYS

from £313 pp
from London, Sep 2023



SPAIN HOLIDAYS

from £282 pp
from London, Sep 2023


PORTUGAL HOLIDAYS

from £313 pp
from London, Sep 2023

Book now

23kg baggage pp | ATOL protection

Manage My Booking
Check in
Check flight status
Manage My Booking
Booking reference
Last name
Continue
Ready to check in?

Online check-in opens 24 hours before your flight departs

Booking reference
Last name
Check in
Flight status

Check the latest status of our flights over the next 10 days

Departing
Arriving
BA Flight Number
Sun 20 AugMon 21 Aug (Today)Tue 22 AugWed 23 AugThu 24 AugFri 25 AugSat 26
AugSun 27 AugMon 28 AugTue 29 AugWed 30 AugThu 31 Aug
Find flight
Search by route


read more

read less

read more

read less

YOUR ACCOUNT

Sorry, we don't recognise those details. Please check and try again.
We have locked your account temporarily to keep it safe and secure. For more
information please refer to the email or letter you received from us.
Sorry, our systems are not responding
You have made too many login attempts. Your account is now locked for up to 24
hours unless you reset your password.
Email or username
Please complete this field
PIN or password
Please complete this field
Log in

Forgot your details?

SIGN UP

Book flights quicker, pay with Avios and earn rewards as an Executive Club
member.

Sign up

Special offers



Cheap flights



All-inclusive



Summer holidays



Last-minute



City breaks



Beach holidays



Business class


EUROPEAN CITY BREAKS

Experience the energy and excitement of the world's great cities.


FLIGHTS


FLIGHT + 2 NIGHTS HOTEL

from £35 each-way
from London, Jan 2024
from £169 pp
from London, Mar 2024


FLIGHTS

from £35 each-way
from London, Jan 2024


FLIGHT + 2 NIGHTS HOTEL

from £169 pp
from London, Mar 2024

Search city breaks

Holiday deposits from £60pp | Generous baggage allowance


JUST ANNOUNCED: NEW ROUTES

We're adding three exciting new routes to our schedule. Travel this autumn from
London Heathrow.

Find out where


TRENDING DESTINATIONS

Orlando



Malaga



Faro



Nice


DISCOVER YOUR USA

There's always something new waiting to be explored. Book a trip to look forward
to with amazing deals on flights.


FLIGHTS TO NEW YORK


FLIGHTS TO BOSTON

from £415 return
from London, Oct 2023
from £419 return
from London, Oct 2023


FLIGHTS TO NEW YORK

from £415 return
from London, Oct 2023


FLIGHTS TO BOSTON

from £419 return
from London, Oct 2023

Search USA flights


COLLECT 5,000 BONUS AVIOS

When you apply through the link below & spend £1,000 in your first three months
of Cardmembership. New Cardmembers only. No annual fee.

British Airways American Express® Credit Card

Rep 30.0% APR Var.

Terms apply. 18+ subject to status.

Apply now


BEFORE YOU FLY

Check your baggage allowance, entry requirements and discover additional
services to help your trip go smoothly.

Plan your journey


USING YOUR VOUCHER

Find out how to book a flight or holiday using your voucher. Vouchers are valid
for travel up to 30 September 2024.

More on vouchers

Terms and Conditions apply.


IF YOU NEED TO CONTACT US

We’re always here to help. Our friendly Customer Services team are on hand to
answer all of your queries.

How to contact us



read more

read less




PLEASE WAIT WHILE WE BUILD YOUR PERFECT TRIP THIS MAY TAKE A FEW MOMENTS...


CHOOSE FROM OUR EXTENSIVE RANGE OF HOTELS, CARS AND EXPERIENCES

   
   
 * Help and contacts |
   
   
   
 * Accessibility and site help |
   
   
   
 * Website security |
   
   
   
 * Privacy policy |
   
   
   
 * Legal |
   
   
   
 * About BA |
   
   
   
   
   
 * Media Centre |
   
   
   
   
   
 * Customer Commitment |
   
   
   
 * Careers |
   
   
   
 * Sustainability |
   
   
   
 * Modern Slavery statement |
   
   
   
 * Iberia.com |
   
   
   
   
   
 * Holidays |
   
   
   
 * Tenerife holidays |
   
   
   
 * Flights |
   
   
   
 * Flights to Spain |
   
   
   
   
   
   
   
   
   
   

   
   
 * 
   
   
   
 * 
   
   
   
 * 
   
   
   
 * 
   
   
   
   

© British Airways - all rights reserved

British Airways


BEFORE YOU CONTINUE

We use cookies to improve your experience on ba.com and show personalised
content, depending on your settings. See our Privacy Policy for more.

Customise
Agree to all cookies

Choose your cookie preferences
 

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

Essential

Our website can’t operate properly without essential cookies. We only collect
the minimum personal information needed to provide services on ba.com. You can
disable these cookies in your browser but parts of ba.com may not work.

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

Analytics

We use analytical cookies to measure how you use our website and help improve
ba.com.

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

Marketing

We use marketing cookies to display personalised advertisements on other sites
you may visit. We work with approved partners to deliver relevant content and
measure the effectiveness of these advertisements.

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

Functional

These cookies let us save the choices you make and some of the information you
provide when browsing ba.com. They don’t track your browsing activity on other
websites. Without functional cookies, ba.com may not work reliably.

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

Accept all cookies
Confirm your choices