www.hawaiianairlines.com
Open in
urlscan Pro
23.201.160.238
Public Scan
Submitted URL: https://hawaiienairlines.com/
Effective URL: https://www.hawaiianairlines.com/?cjdata=MXxOfDB8WXww&AID=10955535&PID=7753339&SID=d8d919b6c35dc02f86445eba9b2eac20&source=cj&HAC...
Submission: On December 30 via api from US — Scanned from US
Effective URL: https://www.hawaiianairlines.com/?cjdata=MXxOfDB8WXww&AID=10955535&PID=7753339&SID=d8d919b6c35dc02f86445eba9b2eac20&source=cj&HAC...
Submission: On December 30 via api from US — Scanned from US
Form analysis
5 forms found in the DOM<form role="dialog" ng-submit="submitSearch()" class="modal-search ng-pristine ng-valid">
<section>
<i aria-hidden="true" class="search-icon ha-icon fontIcon16-search"></i>
<input type="text" aria-label="Type your question here" role="search" id="help-search" class="search search-textarea bodycopy-sans-1 ng-pristine ng-untouched ng-valid ng-empty" ng-model="searchText" ng-change="search()"
ng-keypress="'$event.which === 13 ? submitSearch()'" placeholder="Type your question here">
<button type="submit" class="search btn-primary search-submit-btn disabled"><span class="sr-only">Disabled</span>Search</button>
<a href="" class="search search-modal-icon" ng-click="$modalCancel()">
<i aria-hidden="true" class="close ha-icon icon-close"></i>
<span class="sr-only">close</span>
</a>
</section>
<aside>
<h5>Frequently Asked Questions </h5>
<ul>
<li>
<a class="search" href="http://hawaiianair.custhelp.com/app/answers/detail/a_id/1890">What do I need to do to change or cancel my reservation?<span class="sr-only">Opens external link to page that may not meet accessibility guidelines</span></a>
</li>
<li><a class="search" href="http://hawaiianair.custhelp.com/app/answers/detail/a_id/80">How much are baggage fees on my flight?<span class="sr-only">Opens external link to page that may not meet accessibility guidelines</span></a></li>
<li><a class="search" href="http://hawaiianair.custhelp.com/app/answers/detail/a_id/957">How do I check in online?<span class="sr-only">Opens external link to page that may not meet accessibility guidelines</span></a></li>
</ul>
<a class="search btn-secondary btn-sm" href="http://hawaiianair.custhelp.com/">Read more FAQs<span class="sr-only">Opens external link to page that may not meet accessibility guidelines</span></a>
</aside>
<input type="hidden" name="__RequestVerificationToken" value="X2BpEQbJvbGAdQXrkLsfjOTJTYMtASUfF2q7CNKbtBpIDKyCeYsTD6-HeoBcn5lr3MQFKw2">
</form>
Name: flightSearch — POST /book/home
<form name="flightSearch" action="/book/home" method="post" novalidate="" ng-submit="submit($event)" class="onMauve ng-pristine ng-invalid ng-invalid-required ng-valid-date ng-valid-pattern ng-valid-maxlength ng-valid-ha-passenger-count">
<div class="ha-booking-form">
<div ha-booking-form="" theme="b" multi-city="true" search-position="right" expanded="false" enable1aonlegacy="Enable1AOnLegacy"
default-destination-image="//img.s-hawaiianairlines.com/static/images/brand/airplanes/airbus-a330/a330-plane-hero.jpg?version=d2c0&sc_lang=en">
<div class="text-left closed theme-b col-12 on-mauve"
ng-class="{active: expanded, expanded: expanded, closed: !expanded, 'theme-a': theme == 'a', 'theme-b': theme == 'b', 'theme-c': theme == 'c', 'on-mauve': theme != 'a', 'col-12': true, 'col-10': false, 'form-submitted': flightSearch.$submitted, loaded: loaded}">
<!--Trip Type Button Group-->
<div class="row trip-type-and-recents trip-type-hidden" ng-class="{'trip-type-hidden': !expanded }" aria-hidden="true">
<div class="col-12">
<div class="tab-group" role="tablist">
<!-- ngIf: roundTrip --><a id="triptype2" ng-if="roundTrip" ng-focus="focusTripTypeSelection()" ng-click="setTripType(2)" ng-class="{active: tripType==2}" class="tab-group-btn btn-lg ng-scope active" href="" role="tab" aria-selected="true">Roundtrip</a><!-- end ngIf: roundTrip -->
<!-- ngIf: oneWay --><a id="triptype1" ng-if="oneWay" ng-click="setTripType(1)" ng-class="{active: tripType==1}" class="tab-group-btn btn-lg ng-scope" href="" role="tab" aria-selected="false">One-Way</a><!-- end ngIf: oneWay -->
<!-- ngIf: multiCity --><a id="triptype0" ng-if="multiCity" ng-click="setTripType(0)" ng-focus="focusBackOnTripType()" ng-class="{active: tripType==0}" class="tab-group-btn btn-lg ng-scope" href="" role="tab" aria-selected="false">Multi-City</a><!-- end ngIf: multiCity -->
</div>
<input id="FlightQueryTypeId" name="FlightQueryTypeId" style="display: none" value="2">
<!--Recent Searches-->
<!-- ngIf: !enableTCR && recentSearchesSwitch && expanded -->
</div>
</div>
<!-- ngIf: tripType != 0 -->
<ul id="multiSegment" class="multicitySegmentContainer list-unstyled ng-scope" ng-if="tripType != 0" role="tabpanel" aria-labelledby="triptype2">
<li>
<!--New City Pairs-->
<!-- ngIf: legs[0].invalidPair || legs[1].invalidPair -->
<!-- ngIf: isNoFlightsError -->
<div ha-airport-pair="" class="row ng-scope">
<div class="col-12">
<div id="origin" ha-airport-input="" name="FlightSearchSegmentList[0].OriginDisplay" origin="" ng-model="legs[0].origin" label="From" placeholder="City, Airport or Island" required="true" pin-title="Select to view origin airports"
class="ng-pristine ng-untouched ng-isolate-scope ng-empty ng-invalid ng-invalid-required">
<div>
<div has-autofill="" ng-class="{invalid: (invalid && !isFocused)}"> <label class="ha-label required-asterisk ha-form-lg inline"
ng-class="{'required-asterisk':required, 'ha-form-lg': !size || size=='large', 'ha-form-sm':size=='small', 'inline': labelStyle=='inline' || !labelStyle || labelStyle !=='eyebrow', 'wrap-on-mobile': labelStyle=='inlineWrapOnMobile'}">
<!-- ngIf: label --><span ng-if="label" class="ng-binding ng-scope">From<!-- ngIf: required --><span class="mandatory-flag ng-scope" ng-if="required">*</span><!-- end ngIf: required --></span><!-- end ngIf: label --> <input
type="hidden" name="FlightSearchSegmentList[0].OriginDisplayCode" ng-value="ngModel.Code"> <!-- ngIf: $root.isMobile --><input role="combobox" aria-owns="airportMatch-4733" aria-expanded="false"
placeholder="City, Airport or Island" id="origin" type="text" name="FlightSearchSegmentList[0].OriginDisplay" autocomplete="off" ng-model="ngModel" allow-non-english="true"
ha-typeahead="airport as airport.DisplayName for airport in getMatchingAirports($viewValue)" typeahead-editable="false" typeahead-min-length="3" typeahead-wait-ms="150" typeahead-on-select="onSelect($item, $model, $label)"
ng-required="required" ng-disabled="disabled" ng-focus="onFocus($event)" ng-blur="onBlur($event)" ng-class="{'has-pin':!hideWhereweflyPin}" ha-errors=""
class="ng-pristine ng-untouched ng-empty ng-invalid ng-invalid-required has-pin" aria-autocomplete="list" required="required" aria-invalid="true"><!--ha-errors for=FlightSearchSegmentList[0].OriginDisplay-->
<div class="location-dropdown">
<div class="ha-typeahead-results" role="textbox" id="airportMatch-4733">
<div ha-typeahead-popup="" id="typeahead-17-3202" matches="matches" active="activeIdx" select="select(activeIdx)" query="query" position="position" class="ng-isolate-scope">
<ul class="typeahead-matches ng-hide" ng-show="isOpen()" ng-style="{top: position.top+'px', left: position.left+'px'}" style="display: block;" role="listbox" aria-hidden="true">
<!-- ngRepeat: match in matches track by $index -->
</ul>
<!-- ngIf: matches[0].model -->
</div>
</div>
</div>
<!-- ngIf: !hideWhereweflyPin --><a href="" ha-location-modal="hawaii" ng-if="!hideWhereweflyPin" ng-click="pinClicked()" title="Select to view origin airports" filter-fn="" city-list-type="normal" class="ha-airport-input-pin ng-scope ng-isolate-scope"> <i class="ha-icon fontIcon32-mapPin"></i> </a><!-- end ngIf: !hideWhereweflyPin -->
<em for="airportInput-4733"></em>
</label> </div>
</div>
</div>
<!--ha-airport requires a hidden input to hold the chosen value 'Code' only needed for form posting-->
<input type="text" name="FlightSearchSegmentList[0].OriginCityCode" ng-model="legs[0].origin.Code" style="display: none;" autocomplete="off" ha-errors="" class="ng-pristine ng-untouched ng-valid ng-empty"
aria-invalid="false"><!--ha-errors for=FlightSearchSegmentList[0].OriginCityCode-->
<!--2nd hidden input necessary to faciliate both round trip legs used in the post controller-->
<!-- ngIf: tripType!=1 --><input type="text" name="FlightSearchSegmentList[1].DestinationCityCode" ng-model="legs[0].origin.Code" ng-if="tripType!=1" style="display: none;" autocomplete="off" ha-errors=""
class="ng-pristine ng-untouched ng-valid ng-scope ng-empty" aria-invalid="false"><!--ha-errors for=FlightSearchSegmentList[1].DestinationCityCode--><!-- end ngIf: tripType!=1 -->
<div id="destination" ha-airport-input="" name="FlightSearchSegmentList[0].DestinationDisplay" destination="" ng-model="legs[0].destination" label="To" placeholder="City, Airport or Island" required="true"
pin-title="Select to view destination airports" class="ng-pristine ng-untouched ng-isolate-scope ng-empty ng-invalid ng-invalid-required">
<div>
<div has-autofill="" ng-class="{invalid: (invalid && !isFocused)}"> <label class="ha-label required-asterisk ha-form-lg inline"
ng-class="{'required-asterisk':required, 'ha-form-lg': !size || size=='large', 'ha-form-sm':size=='small', 'inline': labelStyle=='inline' || !labelStyle || labelStyle !=='eyebrow', 'wrap-on-mobile': labelStyle=='inlineWrapOnMobile'}">
<!-- ngIf: label --><span ng-if="label" class="ng-binding ng-scope">To<!-- ngIf: required --><span class="mandatory-flag ng-scope" ng-if="required">*</span><!-- end ngIf: required --></span><!-- end ngIf: label --> <input
type="hidden" name="FlightSearchSegmentList[0].DestinationDisplayCode" ng-value="ngModel.Code"> <!-- ngIf: $root.isMobile --><input role="combobox" aria-owns="airportMatch-680" aria-expanded="false"
placeholder="City, Airport or Island" id="destination" type="text" name="FlightSearchSegmentList[0].DestinationDisplay" autocomplete="off" ng-model="ngModel" allow-non-english="true"
ha-typeahead="airport as airport.DisplayName for airport in getMatchingAirports($viewValue)" typeahead-editable="false" typeahead-min-length="3" typeahead-wait-ms="150" typeahead-on-select="onSelect($item, $model, $label)"
ng-required="required" ng-disabled="disabled" ng-focus="onFocus($event)" ng-blur="onBlur($event)" ng-class="{'has-pin':!hideWhereweflyPin}" ha-errors=""
class="ng-pristine ng-untouched ng-empty ng-invalid ng-invalid-required has-pin" aria-autocomplete="list" required="required" aria-invalid="true"><!--ha-errors for=FlightSearchSegmentList[0].DestinationDisplay-->
<div class="location-dropdown">
<div class="ha-typeahead-results" role="textbox" id="airportMatch-680">
<div ha-typeahead-popup="" id="typeahead-19-6356" matches="matches" active="activeIdx" select="select(activeIdx)" query="query" position="position" class="ng-isolate-scope">
<ul class="typeahead-matches ng-hide" ng-show="isOpen()" ng-style="{top: position.top+'px', left: position.left+'px'}" style="display: block;" role="listbox" aria-hidden="true">
<!-- ngRepeat: match in matches track by $index -->
</ul>
<!-- ngIf: matches[0].model -->
</div>
</div>
</div>
<!-- ngIf: !hideWhereweflyPin --><a href="" ha-location-modal="hawaii" ng-if="!hideWhereweflyPin" ng-click="pinClicked()" title="Select to view destination airports" filter-fn="" city-list-type="normal" class="ha-airport-input-pin ng-scope ng-isolate-scope"> <i class="ha-icon fontIcon32-mapPin"></i> </a><!-- end ngIf: !hideWhereweflyPin -->
<em for="airportInput-680"></em>
</label> </div>
</div>
</div>
<!--ha-airport requires a hidden input to hold the chosen value 'Code' only needed for form posting-->
<input type="text" name="FlightSearchSegmentList[0].DestinationCityCode" ng-model="legs[0].destination.Code" style="display: none;" autocomplete="off" class="ng-pristine ng-untouched ng-valid ng-empty">
<!--2nd hidden input necessary to faciliate both round trip legs used in the post controller-->
<!-- ngIf: tripType!=1 --><input type="text" name="FlightSearchSegmentList[1].OriginCityCode" ng-model="legs[0].destination.Code" ng-if="tripType!=1" style="display: none;" autocomplete="off"
class="ng-pristine ng-untouched ng-valid ng-scope ng-empty"><!-- end ngIf: tripType!=1 -->
<!-- ngIf: legs[0].isMiles && !enableTCR -->
<!-- ngIf: tripType!=1 && legs[1].isMiles && !enableTCR -->
<a id="flight_arrow" class="btn-lg btn-primary open-sticky" ng-click="setExpanded()"><span>Continue</span><i class="ha-icon fontIcon-angle-right"></i></a>
</div>
</div>
<!--Date Controls-->
<div class="row roundtrip" ha-range-datepicker="range_datepicker_config" ng-class="{roundtrip:tripType===2}">
<div class="col-6 depart">
<label class="ha-label inline ha-form-lg" for="DepartureDate">
<span class="required" aria-hidden="true">Depart</span>
<span class="sr-only" id="departLabel">Departure Date, </span>
<input name="FlightSearchSegmentList[0].DepartureDate" type="hidden" ng-value="departDate[0] | date: 'yyyy-MM-dd'">
<input id="DepartureDate" name="_FlightSearchSegmentList[0].DepartureDate" placeholder="MM/DD/YYYY" required="" ha-errors="" ng-model="departDate[0]" ha-datepicker2="_configs.start" aria-labelledby="departLabel"
allow-non-english="true" class="ng-pristine ng-untouched ng-scope ng-valid-date ng-empty ng-invalid ng-invalid-required" autocomplete="off" aria-invalid="true"><!--ha-errors for=_FlightSearchSegmentList[0].DepartureDate-->
<div class="datepicker">
<div ha-calendar="_configs.start" ha-calendar-model="departDate[0]" class="ng-scope double-wide">
<header>
<h2> Departure Date </h2>
<div class="calendar-messages" tabindex="-1" role="alert"></div>
</header>
<div class="buttons">
<a role="button" tabindex="-1" class="prev"></a>
<a role="button" tabindex="-1" class="next"></a>
</div>
<ol class="months" ng-swipe-left="next()" ng-swipe-right="prev()">
<li class="list-inline ng-scope" date="2024-12">
<table class="month">
<caption>December 2024</caption>
<thead>
<tr>
<th>Sun</th>
<th>Mon</th>
<th>Tue</th>
<th>Wed</th>
<th>Thu</th>
<th>Fri</th>
<th>Sat</th>
</tr>
</thead>
<tbody class="notranslate">
<tr>
<td date="2024-12-01" class="past disabled">1</td>
<td date="2024-12-02" class="past disabled">2</td>
<td date="2024-12-03" class="past disabled">3</td>
<td date="2024-12-04" class="past disabled">4</td>
<td date="2024-12-05" class="past disabled">5</td>
<td date="2024-12-06" class="past disabled">6</td>
<td date="2024-12-07" class="past disabled">7</td>
</tr>
<tr>
<td date="2024-12-08" class="past disabled">8</td>
<td date="2024-12-09" class="past disabled">9</td>
<td date="2024-12-10" class="past disabled">10</td>
<td date="2024-12-11" class="past disabled">11</td>
<td date="2024-12-12" class="past disabled">12</td>
<td date="2024-12-13" class="past disabled">13</td>
<td date="2024-12-14" class="past disabled">14</td>
</tr>
<tr>
<td date="2024-12-15" class="past disabled">15</td>
<td date="2024-12-16" class="past disabled">16</td>
<td date="2024-12-17" class="past disabled">17</td>
<td date="2024-12-18" class="past disabled">18</td>
<td date="2024-12-19" class="past disabled">19</td>
<td date="2024-12-20" class="past disabled">20</td>
<td date="2024-12-21" class="past disabled">21</td>
</tr>
<tr>
<td date="2024-12-22" class="past disabled">22</td>
<td date="2024-12-23" class="past disabled">23</td>
<td date="2024-12-24" class="past disabled">24</td>
<td date="2024-12-25" class="past disabled">25</td>
<td date="2024-12-26" class="past disabled">26</td>
<td date="2024-12-27" class="past disabled">27</td>
<td date="2024-12-28" class="past disabled">28</td>
</tr>
<tr>
<td date="2024-12-29" class="past disabled">29</td>
<td date="2024-12-30" class="today">30</td>
<td date="2024-12-31" class="future">31</td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
</li>
<li class="list-inline ng-scope" date="2025-01">
<table class="month">
<caption>January 2025</caption>
<thead>
<tr>
<th>Sun</th>
<th>Mon</th>
<th>Tue</th>
<th>Wed</th>
<th>Thu</th>
<th>Fri</th>
<th>Sat</th>
</tr>
</thead>
<tbody class="notranslate">
<tr>
<td></td>
<td></td>
<td></td>
<td date="2025-01-01" class="future">1</td>
<td date="2025-01-02" class="future">2</td>
<td date="2025-01-03" class="future">3</td>
<td date="2025-01-04" class="future">4</td>
</tr>
<tr>
<td date="2025-01-05" class="future">5</td>
<td date="2025-01-06" class="future">6</td>
<td date="2025-01-07" class="future">7</td>
<td date="2025-01-08" class="future">8</td>
<td date="2025-01-09" class="future">9</td>
<td date="2025-01-10" class="future">10</td>
<td date="2025-01-11" class="future">11</td>
</tr>
<tr>
<td date="2025-01-12" class="future">12</td>
<td date="2025-01-13" class="future">13</td>
<td date="2025-01-14" class="future">14</td>
<td date="2025-01-15" class="future">15</td>
<td date="2025-01-16" class="future">16</td>
<td date="2025-01-17" class="future">17</td>
<td date="2025-01-18" class="future">18</td>
</tr>
<tr>
<td date="2025-01-19" class="future">19</td>
<td date="2025-01-20" class="future">20</td>
<td date="2025-01-21" class="future">21</td>
<td date="2025-01-22" class="future">22</td>
<td date="2025-01-23" class="future">23</td>
<td date="2025-01-24" class="future">24</td>
<td date="2025-01-25" class="future">25</td>
</tr>
<tr>
<td date="2025-01-26" class="future">26</td>
<td date="2025-01-27" class="future">27</td>
<td date="2025-01-28" class="future">28</td>
<td date="2025-01-29" class="future">29</td>
<td date="2025-01-30" class="future">30</td>
<td date="2025-01-31" class="future">31</td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
</li>
</ol>
</div>
</div>
<i class="ha-icon fontIcon16-calendar"></i>
</label>
</div>
<div class="col-6 return" ng-show="tripType!=1">
<label class="ha-label inline ha-form-lg" for="ReturnDate">
<span class="required" aria-hidden="true">Return</span>
<span class="sr-only" id="returnLabel">Return Date, </span>
<input name="FlightSearchSegmentList[1].DepartureDate" type="hidden" ng-value="returnDate[0] | date: 'yyyy-MM-dd'">
<input id="ReturnDate" name="_FlightSearchSegmentList[1].DepartureDate" placeholder="MM/DD/YYYY" ng-required="tripType!=1" ha-errors="" ng-model="returnDate[0]" ha-datepicker2="_configs.end" aria-labelledby="returnLabel"
allow-non-english="true" class="ng-pristine ng-untouched ng-scope ng-valid-date ng-empty ng-invalid ng-invalid-required" autocomplete="off" required="required"
aria-invalid="true"><!--ha-errors for=_FlightSearchSegmentList[1].DepartureDate-->
<div class="datepicker">
<div ha-calendar="_configs.end" ha-calendar-model="returnDate[0]" class="ng-scope double-wide">
<header>
<h2> Return Date </h2>
<div class="calendar-messages" tabindex="-1" role="alert"></div>
</header>
<div class="buttons">
<a role="button" tabindex="-1" class="prev"></a>
<a role="button" tabindex="-1" class="next"></a>
</div>
<ol class="months" ng-swipe-left="next()" ng-swipe-right="prev()">
<li class="list-inline ng-scope" date="2024-12">
<table class="month">
<caption>December 2024</caption>
<thead>
<tr>
<th>Sun</th>
<th>Mon</th>
<th>Tue</th>
<th>Wed</th>
<th>Thu</th>
<th>Fri</th>
<th>Sat</th>
</tr>
</thead>
<tbody class="notranslate">
<tr>
<td date="2024-12-01" class="past disabled">1</td>
<td date="2024-12-02" class="past disabled">2</td>
<td date="2024-12-03" class="past disabled">3</td>
<td date="2024-12-04" class="past disabled">4</td>
<td date="2024-12-05" class="past disabled">5</td>
<td date="2024-12-06" class="past disabled">6</td>
<td date="2024-12-07" class="past disabled">7</td>
</tr>
<tr>
<td date="2024-12-08" class="past disabled">8</td>
<td date="2024-12-09" class="past disabled">9</td>
<td date="2024-12-10" class="past disabled">10</td>
<td date="2024-12-11" class="past disabled">11</td>
<td date="2024-12-12" class="past disabled">12</td>
<td date="2024-12-13" class="past disabled">13</td>
<td date="2024-12-14" class="past disabled">14</td>
</tr>
<tr>
<td date="2024-12-15" class="past disabled">15</td>
<td date="2024-12-16" class="past disabled">16</td>
<td date="2024-12-17" class="past disabled">17</td>
<td date="2024-12-18" class="past disabled">18</td>
<td date="2024-12-19" class="past disabled">19</td>
<td date="2024-12-20" class="past disabled">20</td>
<td date="2024-12-21" class="past disabled">21</td>
</tr>
<tr>
<td date="2024-12-22" class="past disabled">22</td>
<td date="2024-12-23" class="past disabled">23</td>
<td date="2024-12-24" class="past disabled">24</td>
<td date="2024-12-25" class="past disabled">25</td>
<td date="2024-12-26" class="past disabled">26</td>
<td date="2024-12-27" class="past disabled">27</td>
<td date="2024-12-28" class="past disabled">28</td>
</tr>
<tr>
<td date="2024-12-29" class="past disabled">29</td>
<td date="2024-12-30" class="today">30</td>
<td date="2024-12-31" class="future">31</td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
</li>
<li class="list-inline ng-scope" date="2025-01">
<table class="month">
<caption>January 2025</caption>
<thead>
<tr>
<th>Sun</th>
<th>Mon</th>
<th>Tue</th>
<th>Wed</th>
<th>Thu</th>
<th>Fri</th>
<th>Sat</th>
</tr>
</thead>
<tbody class="notranslate">
<tr>
<td></td>
<td></td>
<td></td>
<td date="2025-01-01" class="future">1</td>
<td date="2025-01-02" class="future">2</td>
<td date="2025-01-03" class="future">3</td>
<td date="2025-01-04" class="future">4</td>
</tr>
<tr>
<td date="2025-01-05" class="future">5</td>
<td date="2025-01-06" class="future">6</td>
<td date="2025-01-07" class="future">7</td>
<td date="2025-01-08" class="future">8</td>
<td date="2025-01-09" class="future">9</td>
<td date="2025-01-10" class="future">10</td>
<td date="2025-01-11" class="future">11</td>
</tr>
<tr>
<td date="2025-01-12" class="future">12</td>
<td date="2025-01-13" class="future">13</td>
<td date="2025-01-14" class="future">14</td>
<td date="2025-01-15" class="future">15</td>
<td date="2025-01-16" class="future">16</td>
<td date="2025-01-17" class="future">17</td>
<td date="2025-01-18" class="future">18</td>
</tr>
<tr>
<td date="2025-01-19" class="future">19</td>
<td date="2025-01-20" class="future">20</td>
<td date="2025-01-21" class="future">21</td>
<td date="2025-01-22" class="future">22</td>
<td date="2025-01-23" class="future">23</td>
<td date="2025-01-24" class="future">24</td>
<td date="2025-01-25" class="future">25</td>
</tr>
<tr>
<td date="2025-01-26" class="future">26</td>
<td date="2025-01-27" class="future">27</td>
<td date="2025-01-28" class="future">28</td>
<td date="2025-01-29" class="future">29</td>
<td date="2025-01-30" class="future">30</td>
<td date="2025-01-31" class="future">31</td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
</li>
</ol>
</div>
</div>
<i class="ha-icon fontIcon16-calendar"></i>
</label>
</div>
</div>
</li>
</ul><!-- end ngIf: tripType != 0 -->
<!-- ngIf: tripType == 0 -->
<!--Alerts and Passenger Counts-->
<div class="row">
<div class="row">
<!-- ngIf: formSubmitted && flightSearch.$error.haPassengerCount -->
<!-- ngIf: formSubmitted && flightSearch.$error.haDates -->
<!-- ngIf: formSubmitted && tripType==0 && flightSearch.$error.haDuplicateLegs -->
<!-- ngIf: tripType != 0 && showChartError && flightSearch.$invalid -->
<div class="row">
<div class="col-2 ha-passenger-count-input">
<label class="ha-label">
<span>Adults</span>
<select name="AdultCount" id="adultCount" ng-options="item for item in passengerCount track by item" ng-model="pax.adultCount" ng-disabled="enableTCR || (disableAdultFieldForNITP && $parent.selectedPromoId!=null)"
ha-errors="" class="ng-pristine ng-untouched ng-valid ng-not-empty" aria-invalid="false">
<option label="0" value="0">0</option>
<option label="1" value="1" selected="selected">1</option>
<option label="2" value="2">2</option>
<option label="3" value="3">3</option>
<option label="4" value="4">4</option>
<option label="5" value="5">5</option>
<option label="6" value="6">6</option>
<option label="7" value="7">7</option>
</select><!--ha-errors for=AdultCount-->
</label>
<!-- ngIf: enableTCR || (disableAdultFieldForNITP && $parent.selectedPromoId!=null) -->
</div>
<div class="col-2 ha-passenger-count-input" ng-show="$switch('BookingWidget:displaychilddropdown') && !enableTCR && children">
<label class="ha-label" ng-init="pax.childCount = pax.childCount || passengerCount[0]">
<!-- ngIf: $language!='ja-jp' --><span ng-if="$language!='ja-jp'" class="ng-scope">Children (2-11 years of age at time of travel)
<i id="infantPaxIcon" ng-hide="infantInfoContentCheck()" ng-disabled="isCorporate && !isAffiliate" class="ha-icon fontIcon-info-circle info-icon" ng-click="infantInfoModal()"></i></span><!-- end ngIf: $language!='ja-jp' -->
<!-- ngIf: $language=='ja-jp' -->
<select name="ChildCount" id="childCount" ng-options="item as item for item in passengerCount track by item" ng-model="pax.childCount" ng-disabled="(disableAdultFieldForNITP && $parent.selectedPromoId!=null)"
class="ng-pristine ng-untouched ng-valid ng-not-empty">
<option label="0" value="0" selected="selected">0</option>
<option label="1" value="1">1</option>
<option label="2" value="2">2</option>
<option label="3" value="3">3</option>
<option label="4" value="4">4</option>
<option label="5" value="5">5</option>
<option label="6" value="6">6</option>
<option label="7" value="7">7</option>
</select>
</label>
</div>
<div class="col-8">
<!-- ngIf: $switch('BookingWidget:displaychilddropdown') && isChildCountInvalid && childCountWarning && !intl -->
<!-- ngIf: $switch('BookingWidget:displaychilddropdown') && isChildCountInvalid && childCountWarning && intl -->
</div>
</div>
<!-- ngIf: showHelp -->
</div>
<!-- ngIf: milesRadioButton && !enableTCR -->
<!-- ngIf: tripType !== 0 -->
<div class="row ng-scope" ng-show="1" ng-if="tripType !== 0 ">
<div class="col-3 options-col">
<fieldset class="ha-check-or-radio-set">
<ul>
<li>
<input type="checkbox" name="flexibleDatesCalendar" id="flexibleDatesCalendar" ng-disabled="paymentType.type == 1" ng-checked="flexibleDatesCalendarChecked" ng-model="flightSearch.IsflexibleDatesCalendar" value="true" tabindex="0"
class="ng-pristine ng-untouched ng-valid ng-empty">
<label for="flexibleDatesCalendar"><span class="refundable-fares">Flexible dates calendar</span></label>
</li>
</ul>
</fieldset>
</div>
</div><!-- end ngIf: tripType !== 0 -->
<!--Buttons-->
<div ng-switch="" on="searchPosition">
<!-- ngSwitchDefault: -->
<div ng-switch-default="" class="ng-scope">
<div class="row top-padding" ng-class="{'options-col':promoCodeOptionEnabled}">
<!-- ngIf: enableTCR -->
<div class="promo-code-option" ng-hide="promoCode.isValidPromoCode">
<div class="col-3 col-sm-7">
<label class="ha-label">
<span>Promo Code (optional)</span>
<input type="text" ng-disabled="flightSearch.IsflexibleDatesCalendar" name="PromoCode" ng-pattern="/^[a-zA-Z0-9_-]{1,15}$/" ha-restrict-spaces="" ng-model="promoCode.Code" maxlength="15"
ha-errors="{pattern: 'Promo code must be at most 12 alphanumeric characters.', promoCodeNotFound: 'Promo code not found.'}" class="ng-pristine ng-untouched ng-valid ng-empty ng-valid-pattern ng-valid-maxlength"
aria-invalid="false"><!--ha-errors for=PromoCode-->
</label>
</div>
</div>
<div class="text-right col-12" ng-class="{'col-12': !enableTCR && !promoCodeOptionEnabled, 'col-6': enableTCR}">
<!-- ngIf: btnSearchFlights --><button ng-if="btnSearchFlights" ng-disabled="isSearchDisabled" ng-class="{disabled: ActivateValidationSpinner}" class="btn-primary btn-cta-search ng-scope"> Search Flights
</button><!-- end ngIf: btnSearchFlights -->
<span class="sr-only">Opens external link to page that may not meet accessibility guidelines</span>
<!-- ngIf: btnSearchFlightsPlusHotels && tripType==2 && isEN && !enableTCR && !flightSearch.IsRefundableCheck && paymentType.type != 1 && paymentType.type != 3 && !$root.selectedPromoId --><button type="button"
ng-disabled="isSearchDisabled"
ng-if="btnSearchFlightsPlusHotels && tripType==2 && isEN && !enableTCR && !flightSearch.IsRefundableCheck && paymentType.type != 1 && paymentType.type != 3 && !$root.selectedPromoId"
ng-click="searchFlightsPlusHotels($event)" class="btn-primary btn-cta-search ng-scope"> Search Flights & Hotels <span class="sr-only">Opens external link to page that may not meet accessibility guidelines</span>
</button><!-- end ngIf: btnSearchFlightsPlusHotels && tripType==2 && isEN && !enableTCR && !flightSearch.IsRefundableCheck && paymentType.type != 1 && paymentType.type != 3 && !$root.selectedPromoId -->
<!-- ngIf: btnSearchFlightsPlusHotels && tripType==2 && (isJP()|| isKR()) && !enableTCR && !flightSearch.IsRefundableCheck && paymentType.type != 1 && paymentType.type != 3 && !$root.selectedPromoId -->
</div>
</div>
</div><!-- end ngSwitchWhen: -->
<!-- ngSwitchWhen: left -->
<!-- ngIf: !!etcoRemoved -->
</div>
</div>
</div>
</div>
</div>
<input type="hidden" name="__RequestVerificationToken" value="X2BpEQbJvbGAdQXrkLsfjOTJTYMtASUfF2q7CNKbtBpIDKyCeYsTD6-HeoBcn5lr3MQFKw2">
</form>
Name: itineraryLookup — POST /my-account/my-trips/manage-trip-itinerary
<form class="card--form on-mauve ng-pristine ng-invalid ng-invalid-required ng-valid-pattern" id="itinerary-lookup" name="itineraryLookup" novalidate="" autocomplete="off" action="/my-account/my-trips/manage-trip-itinerary" method="post">
<div class="row">
<div class="col-6">
<label class="ha-label ha-form-lg">
<span class="required">Last Name</span>
<input type="text" name="last_name" ng-model="lastName" ng-pattern="/^[a-zA-Z-\s]{0,30}$/" placeholder="Last Name" ha-errors="" required="" autocorrect="off"
class="ng-pristine ng-untouched ng-empty ng-invalid ng-invalid-required ng-valid-pattern" aria-invalid="true"><!--ha-errors for=last_name-->
</label>
</div>
<div class="col-6">
<label class="ha-label ha-form-lg">
<span class="required">Confirmation Code or E-Ticket Number</span>
<input type="text" name="code_or_ticket" ng-model="confirmationCode" ng-pattern="/^[a-zA-Z0-9]{6}$|^[0-9]{13}$|^(((PB|pb|Pb|pB)[a-zA-Z0-9]{13,13})|\d{12,14})$/" placeholder="Confirmation Code or E-Ticket Number" ha-errors="" required=""
autocorrect="off" autocapitalize="characters" ng-blur="trackExitAction('popo')" class="ng-pristine ng-untouched ng-empty ng-invalid ng-invalid-required ng-valid-pattern" aria-invalid="true"><!--ha-errors for=code_or_ticket-->
</label>
</div>
</div>
<div class="row">
<div class="col">
<button type="submit" class="continue btn-silver btn-lg">Continue</button>
</div>
</div>
<input type="hidden" name="__RequestVerificationToken" value="X2BpEQbJvbGAdQXrkLsfjOTJTYMtASUfF2q7CNKbtBpIDKyCeYsTD6-HeoBcn5lr3MQFKw2">
</form>
Name: flightStatusByNumber — GET https://flightstatus.hawaiianairlines.com/
<form name="flightStatusByNumber" id="flightStatusByNumber" class="flight-status-by-number card--form onMauve ng-pristine ng-invalid ng-invalid-required ng-valid-pattern" novalidate="" action=" https://flightstatus.hawaiianairlines.com/"
method="get">
<div class="row">
<div class="col-6">
<label ha-label="" class="ha-label inline ha-form-lg">
<input type="text" name="FlightNumber" ng-model="FlightNumber" placeholder="Flight Number" ng-pattern="/^(ha|HA)?[0-9]{1,4}$/" required="" ha-errors="{pattern: 'Invalid flight number'}"
class="ng-pristine ng-untouched ng-empty ng-invalid ng-invalid-required ng-valid-pattern" aria-invalid="true"><!--ha-errors for=FlightNumber-->
<span class="required">Flight Number</span>
</label>
</div>
</div>
<div class="container-spacer-2">
<div class="col">
<fieldset class="ha-check-or-radio-set horizontal stacked-on-mobile well-style">
<legend class="required">Departing</legend>
<ul>
<li>
<input type="radio" name="DepartureDate" id="DepartureDateYesterday" value="12/29/2024" tabindex="0" ng-model="$root.DepartureDate" required="" class="ng-pristine ng-untouched ng-empty ng-invalid ng-invalid-required">
<label for="DepartureDateYesterday" class="ng-binding">Sunday, December 29, 2024</label>
</li>
<li>
<input type="radio" name="DepartureDate" id="DepartureDateToday" value="12/30/2024" tabindex="0" ng-model="$root.DepartureDate" required="" class="ng-pristine ng-untouched ng-empty ng-invalid ng-invalid-required">
<label for="DepartureDateToday" class="ng-binding">Monday, December 30, 2024</label>
</li>
<li>
<input type="radio" name="DepartureDate" id="DepartureDateTomorrow" value="12/31/2024" tabindex="0" ng-model="$root.DepartureDate" required="" class="ng-pristine ng-untouched ng-empty ng-invalid ng-invalid-required">
<label for="DepartureDateTomorrow" class="ng-binding">Tuesday, December 31, 2024</label>
</li>
</ul>
</fieldset>
</div>
</div>
<div class="row">
<div class="col">
<button class="btn-silver btn-lg check-status" type="submit">Check Flight Status</button>
</div>
</div>
<input type="hidden" name="__RequestVerificationToken" value="X2BpEQbJvbGAdQXrkLsfjOTJTYMtASUfF2q7CNKbtBpIDKyCeYsTD6-HeoBcn5lr3MQFKw2">
</form>
Name: EmailSubscribeFooterForm — POST /MyAccount/EmailOnly/EmailOnlyRegistration
<form action="/MyAccount/EmailOnly/EmailOnlyRegistration" name="EmailSubscribeFooterForm" id="EmailSubscribeFooterForm" autocomplete="off" method="post" novalidate=""
class="ng-pristine ng-invalid ng-invalid-required ng-valid-pattern ng-valid-email ng-valid-maxlength">
<h4>Sign Up for Deals</h4>
<p>Get notifications for low fares & special deals.</p>
<input type="hidden" name="selectedcountryCode" value="USA">
<input type="hidden" name="isLowFareselected" value="true">
<div class="card--form">
<label class="ha-label ha-form-lg form-group">
<span class="sr-only">Email Address</span>
<input type="email" name="emailAddress" placeholder="Email Address" ng-model="emailAddress" ng-pattern="/^[\w\d\.\-]+@[a-zA-Z\d\.\-]+\.[a-zA-Z]{2,15}$/" required="" ha-errors=""
class="ng-pristine ng-untouched ng-empty ng-invalid ng-invalid-required ng-valid-pattern ng-valid-email" aria-invalid="true"><!--ha-errors for=emailAddress-->
</label>
<div class="wrap">
<label class="ha-label ha-form-lg form-group">
<span class="sr-only">Zip/Postal code</span>
<input type="text" name="zipCode" placeholder="Zip/Postal code" ng-model="zipCode" maxlength="10" ng-pattern="/[a-zA-Z0-9- ]/gi" required="" ha-errors=""
class="ng-pristine ng-untouched ng-empty ng-invalid ng-invalid-required ng-valid-pattern ng-valid-maxlength" aria-invalid="true"><!--ha-errors for=zipCode-->
</label>
<button type="submit" class="btn-primary">Subscribe</button>
</div>
</div>
<input type="hidden" name="__RequestVerificationToken" value="X2BpEQbJvbGAdQXrkLsfjOTJTYMtASUfF2q7CNKbtBpIDKyCeYsTD6-HeoBcn5lr3MQFKw2">
</form>
Text Content
Hawaiian Airlines - Flights to Hawaii, Plane Tickets & Airfare Skip to Content * Hawaiian Airlines * Help CenterOpens external link to page that may not meet accessibility guidelines * Optional Fees * Contact Us * Search * USD * United States (USD) * 日本 (JPY) * 한국어 (KRW) * Australia (AUD) * New Zealand (NZD) * Book * Manage Flights * Our Airline * Island Guide * HawaiianMiles * Sign In * Join Now DisabledSearch close FREQUENTLY ASKED QUESTIONS * What do I need to do to change or cancel my reservation?Opens external link to page that may not meet accessibility guidelines * How much are baggage fees on my flight?Opens external link to page that may not meet accessibility guidelines * How do I check in online?Opens external link to page that may not meet accessibility guidelines Read more FAQsOpens external link to page that may not meet accessibility guidelines mi EARN 70,000 BONUS HAWAIIANMILES TWO FREE CHECKED BAGS ON ELIGIBLE FLIGHTS ONE TIME 50% OFF COMPANION DISCOUNT 3X HAWAIIANMILES ON ELIGIBLE HAWAIIAN AIRLINES PURCHASES APPLY NOWOPENS EXTERNAL LINK TO PAGE THAT MAY NOT MEET ACCESSIBILITY GUIDELINES SEE TERMS & CONDITIONSOPENS EXTERNAL LINK TO PAGE THAT MAY NOT MEET ACCESSIBILITY GUIDELINES FOR DETAILS. Flights Vacation Deals Hotels Cars Check-In My Trips Flight Status Close Roundtrip One-Way Multi-City * From* To* Continue Depart Departure Date, DEPARTURE DATE 1. December 2024 SunMonTueWedThuFriSat 1234567 891011121314 15161718192021 22232425262728 293031 2. January 2025 SunMonTueWedThuFriSat 1234 567891011 12131415161718 19202122232425 262728293031 Return Return Date, RETURN DATE 1. December 2024 SunMonTueWedThuFriSat 1234567 891011121314 15161718192021 22232425262728 293031 2. January 2025 SunMonTueWedThuFriSat 1234 567891011 12131415161718 19202122232425 262728293031 Adults 01234567 Children (2-11 years of age at time of travel) 01234567 * Flexible dates calendar Promo Code (optional) Search Flights Opens external link to page that may not meet accessibility guidelines Search Flights & Hotels Opens external link to page that may not meet accessibility guidelines Close SEARCH FOR FLIGHTS Passengers may check-in up to 24 hours in advance, but no less than 60 minutes prior to departure. Last Name Confirmation Code or E-Ticket Number Continue Close FIND FLIGHT By Flight Number By Route Flight Number Departing * Sunday, December 29, 2024 * Monday, December 30, 2024 * Tuesday, December 31, 2024 Check Flight Status Special offer Earn 60,000 70,000 Bonus HawaiianMiles Terms apply Learn more and apply › New route Get ready for daily non-stop flights from Seattle to Tokyo Search flights*1 › Free Wi-Fi Enjoy free, fast Wi-Fi on select flights Stay connected › HawaiianMiles offer Buy miles now and reach your next flight award faster Purchase miles › Exclusive offer Get to your gate faster with CLEAR® Plus at a special discounted rate Find out more › New service Experience our new Premium Airport Service at HNL Treat yourself › New aircraft Get ready, our new Boeing 787 is ready for takeoff Step inside › Extra Comfort Treat yourself to the Extra Comfort you deserve See the difference › Rental cars Save up to 35% off base rates, plus earn 1000 bonus miles on rentals of 2+ days Search car deals › Vacation packages Build the perfect trip with our Hawaii vacation deals and save Start your search › Photo 1 of 4: {getAltText()}Photo 2 of 4: {getAltText()}Photo 3 of 4: {getAltText()}Photo 4 of 4: {getAltText()} Manage your trip Flight changes, cancellations, find travel credit. Select one Make changes to your flight Flight status Check in Find travel credit Rebook with credit Cancel flight Go FOR YOUR NEXT TRIP VACATION DEALS VACATION DEALS Welcome to the easier way to plan your vacation. Save time and money when you book your flight, hotel or car rental together, and earn HawaiianMiles on every package. Browse vacation deals HAWAII ACTIVITIES HAWAII ACTIVITIES We've partnered with FareHarbor to curate a selection of the best tours and activities Hawaii and North America have to offer. Browse activities* TRAVEL PONO TRAVEL PONO Travel Pono means to explore with care, offering your kokua (help) to preserve our natural resources, cultures and communities. See how you can help HAWAIIANMILES NEVER EXPIRE HAWAIIANMILES NEVER EXPIRE You earned them, you keep them. With HawaiianMiles that never expire, our guests can explore even more by redeeming for free flights and benefits. Explore more THE HAWAIIAN AIRLINES® BANK OF HAWAII WORLD ELITE MASTERCARD® Opens external link to page that may not meet accessibility guidelines Special offer Earn 60,000 70,000 Bonus HawaiianMiles Two free checked bags One-time 50%-off companion discount $100 annual companion discount Apply nowOpens external link to page that may not meet accessibility guidelines Apply nowOpens external link to page that may not meet accessibility guidelines $99 annual fee See Terms & ConditionsOpens external link to page that may not meet accessibility guidelines for details. TWO BELOVED BRANDS. TAKING YOU FURTHER. We’re proud to announce Hawaiian Airlines has joined Alaska Airlines, with exciting new things coming soon. Learn more YOUR GUIDE TO HAWAII READ MORE WITH HANA HOU! BEST TIME TO VISIT HAWAII 8 AMAZING HIKES OF HAWAII TAKE A RAINBOW-THEMED TRIP HAWAII'S TOP CRACK SEED STORES EXPLORE THE NAPALI COAST BY BOAT ROMANTIC DATES FOR LOVEBIRDS WHERE TO LISTEN TO LIVE MUSIC Your guide to the Hawaiian Islands MORE FROM HAWAIIAN AIRLINES FLY WITH DISNEY’S “MOANA 2” FLY WITH DISNEY’S “MOANA 2” Join us as we celebrate the new big-screen adventure with special livery designs featuring Moana, Maui and the crew. Set sail THE HAWAIIAN AIRLINES APP THE HAWAIIAN AIRLINES APP Download our app for faster check-ins, real-time notifications and more; all at your convenience. Get it now SEND YOUR ALOHA WITH HAWAIIAN AIRLINES GIFT CARDS SEND YOUR ALOHA WITH HAWAIIAN AIRLINES GIFT CARDS You’ll make every occasion extra special. Send the gift of travel to your loved one’s mailbox or inbox, no wrapping paper needed. Send a giftOpens external link to page that may not meet accessibility guidelines Opens external link to page that may not meet accessibility guidelines FLY WITH VERIFIED CARBON OFFSETS FLY WITH VERIFIED CARBON OFFSETS Your next trip can help keep forests standing. Simply add carbon offsets to your flight purchase. Learn howOpens external link to page that may not meet accessibility guidelines Opens external link to page that may not meet accessibility guidelines Back to Top Earn 70,000 Bonus HawaiianMiles Apply nowOpens external link to page that may not meet accessibility guidelines Apply nowOpens external link to page that may not meet accessibility guidelines $99 annual fee See Terms and ConditionsOpens external link to page that may not meet accessibility guidelines for details. GET OUR NEW APP Opens external link to page that may not meet accessibility guidelines Opens external link to page that may not meet accessibility guidelines SUPPORT * Contact Us * Updated Bag Fees * Help CenterOpens external link to page that may not meet accessibility guidelines * Legal * All Fees * Terms of Use * Team KokuaOpens external link to page that may not meet accessibility guidelines * Guests with Disabilities ABOUT US * Contract of Carriage * Customer Service Plan * Careers * Tarmac Delay Plan * Investor RelationsOpens external link to page that may not meet accessibility guidelines * Privacy * CargoOpens external link to page that may not meet accessibility guidelines * Shop Our StoreOpens external link to page that may not meet accessibility guidelines * Fare Deals * Gift CardsOpens external link to page that may not meet accessibility guidelines * Report Sexual Misconduct SIGN UP FOR DEALS Get notifications for low fares & special deals. Email Address Zip/Postal code Subscribe Visit us on Facebook Opens external link to page that may not meet accessibility guidelines Visit us on Twitter Opens external link to page that may not meet accessibility guidelines Visit us on Instagram Opens external link to page that may not meet accessibility guidelines Visit us on YouTube Opens external link to page that may not meet accessibility guidelines * *1 Subject to government approval © 2024 HAWAIIAN AIRLINES. ALL RIGHTS RESERVED [SC8.2.7] Close Earn 60,000 70,000 Bonus HawaiianMiles Every purchase brings you closer to your next getaway, plus enjoy exclusive travel perks offered to cardmembers. No, I'll pass on this offerYes, I'm ready to learn moreApply Now See Terms & Conditions for details.