Bowmark AIdocs

American Airlines

American Airlines' own site — its published fares and award availability, flight status, reservation lookup, seat maps, baggage allowance and fee…

American Airlines' own site — its published fares and award availability, flight status, reservation lookup, seat maps, baggage allowance and fee schedules. Flight status, reservation lookup and the published baggage allowance for a route are live and browserless; the rest are declared stubs.

Domain: aa.com

Also known as: American Airlines, American, AA, aa.com, AAdvantage

Prefer the capability

bowmark.flights covers this provider and routes around it when it is having a bad day. Reach for this page when you need aa.com specifically.

Call it directly

bowmark.providers.aa.getFlightStatus({ date, flightNumber?, origin?, destination? }): Promise<aaFlightStatusResult>
bowmark.providers.aa.getBaggageAllowance({ origin, destination }: aaBaggageAllowanceArgs): Promise<aaBaggageAllowance>
bowmark.providers.aa.retrieveBooking({ recordLocator, lastName }: aaRetrieveBookingArgs): Promise<aaReservation>

Functions

FunctionWhat it does
getFlightStatusAn American Airlines flight's live status.
getBaggageAllowanceAmerican Airlines' published baggage allowance and fees for a ROUTE.
retrieveBookingReads an existing American Airlines reservation by its six-letter record locator (PNR) and the passenger's last name — nothing is signed into, and both are the caller's own details, passed…

Types

interface aaFlight {
  flightNumber: string;
  airlineCode: string;
  flightStatus: string | null;
  flightStatusKey: string | null;
  flightStatusColor: string | null;
  canceled: boolean;
  diverted: boolean;
  inFlight: boolean;
  landed: boolean;
  departure: aaAirportInfo;
  arrival: aaAirportInfo;
  equipment: aaEquipment;
  disruptionMessage: string | null;
  codeShare: boolean;
  operatedBy: string | null;
  marketingCarrier: string | null;
  wifiAvailable: boolean | null;
  powerPortAvailable: boolean | null;
}

interface aaAirportInfo {
  airportCode: string;
  cityName: string | null;
  gate: string | null;
  terminal: string | null;
  state: string | null;
  country: string | null;
  baggageClaim: string | null;
  scheduledTime: string | null;
  estimatedTime: string | null;
  actualTime: string | null;
  scheduledBoardingTime: string | null;
  estimatedBoardingTime: string | null;
}

interface aaEquipment {
  tailNumber: string | null;
  equipmentCode: string | null;
  iataName: string | null;
  displayName: string | null;
}

interface aaFlightStatusResult {
  date: string;
  flightNumber: string | null;
  origin: string | null;
  destination: string | null;
  flights: aaFlight[];
}

interface aaReservation {
  recordLocator: string;
  status: string | null;
  bookingTime: string | null;
  passengers: aaReservationPassenger[];
  itinerary: aaReservationSlice[];
}

interface aaReservationPassenger {
  firstName: string | null;
  lastName: string | null;
  passengerID: string | null;
  paxType: string | null;
  loyaltyNumber: string | null;
  ticketNumbers: string[];
}

interface aaReservationSlice {
  segments: aaReservationSegment[];
}

interface aaReservationSegment {
  flightNumber: string | null;
  marketingCarrierCode: string | null;
  operatingCarrierCode: string | null;
  cabinType: string | null;
  bookingCode: string | null;
  departureDateTime: string | null;
  legs: aaReservationLeg[];
}

interface aaReservationLeg {
  originAirportCode: string | null;
  originCity: string | null;
  destinationAirportCode: string | null;
  destinationCity: string | null;
}

interface aaRetrieveBookingArgs {
  /** Exactly six letters — American's own record-locator format. */
  recordLocator: string;
  /** The passenger's last name, exactly as it appears on the reservation. */
  lastName: string;
}

interface aaBaggageAllowanceArgs {
  /** The country flown FROM — an ISO-3166 alpha-2 code ("US", "GB") or a country
   * name in any capitalisation. Not an airport code: American publishes bag fees
   * by region and its regions are lists of countries, and no surface on its
   * estate resolves an airport to one. */
  origin: string;
  /** The country flown TO, same forms. */
  destination: string;
}

interface aaBaggageAllowance {
  origin: aaBaggageEndpoint;
  destination: aaBaggageEndpoint;
  /** Which row of American's fee table this trip landed on, and how. */
  feeRegion: {
    label: string;
    matchedOn: "country" | "region" | "region-members";
    matchedEndpoint: "origin" | "destination";
  };
  checkedBagFees: aaCheckedBagFee[];
  checkedBagLimits: aaCheckedBagLimits;
  carryOn: aaCarryOnAllowance;
  freeCheckedBags: aaFreeCheckedBagRule[];
  /** Null when American's own bag-count rule names neither end of the trip. */
  maxCheckedBags: number | null;
  maxCheckedBagsRules: aaMaxCheckedBagsRule[];
  footnotes: string[];
  sources: string[];
}

interface aaBaggageEndpoint {
  input: string;
  countryCode: string;
  countryName: string;
  /** Null for a country American files under no bag region — Mexico is the live
   * case, and the fee table names it directly instead. */
  region: string | null;
}

interface aaCheckedBagFee {
  /** "1", "2", "3", "4+". */
  bag: string;
  /** The cell verbatim, e.g. "$0 / $85*". */
  display: string;
  /** Every dollar figure in the cell, in the order printed. */
  amountsUsd: number[];
  footnoteMarkers: string[];
}

interface aaCheckedBagLimits {
  maxLinearInches: number | null;
  maxLinearCm: number | null;
  maxWeightPounds: number | null;
  maxWeightKilos: number | null;
  notes: string[];
}

interface aaCarryOnAllowance {
  carryOnBags: number;
  personalItems: number;
  carryOnMaxInches: number[];
  carryOnMaxCm: number[];
  personalItemMaxInches: number[];
  personalItemMaxCm: number[];
}

interface aaFreeCheckedBagRule {
  bags: number;
  qualifiers: string[];
}

interface aaMaxCheckedBagsRule {
  count: number;
  applies: string[];
}
flightsFlights — the capability this provider backs.
cheapflightsAlso backs the same capability.
google_flightsAlso backs the same capability.
kayakAlso backs the same capability.
momondoAlso backs the same capability.