The World’s Best Query-Based Flight Tracking and Flight Status API

AeroAPI (formerly FlightXML) delivers customized access to developers seeking data from millions of flight status inputs for any application using REST/JSON.

Start making queries to power your application. Compare Tiers Now

주요 기능

  • Easy to integrate, flexible, and scalable
  • Modern REST-based
  • Real-time and configurable flight event alerts
  • Comprehensive developer documentation and interactive portal
  • Predictive ETAs, powered by ForesightTM
  • Customizable aviation data to meet your unique application needs
  • 99.5% uptime guarantee available
  • Compatible with all programming languages

Query Flight Data on Demand

AeroAPI is a simple, query-based API that gives software developers access to a variety of FlightAware's flight data. Users can obtain current or historical data. AeroAPI is a RESTful API delivering accurate and actionable aviation data. With the introduction of ForesightTM, customers have access to the data that powers over half of the predictive airline ETAs in the US.

Query AeroAPI for Flights Based on a Combination Of Properties Including

  • 항공편 또는 테일 번호
  • 출발지 및/또는 도착지 공항
  • 항공기 유형
  • 고도의 저-고 범위
  • 지상 속도의 저-고 범위

Retrieve Flight Data Through AeroAPI Including:

  • Flight or tail number
  • Aircraft type
  • Origin and/or destination airport
  • Time last position was received
  • 경도, 위도, 지상 속도 및 고도
  • ForesightTM, FlightAware’s predictive ETAs
  • And more

Obtain airport-centric data via the API, including:

  • Scheduled flights
  • Departed flights
  • En route flights
  • Arrived flights

AeroAPI Code Examples

import requests

apiKey = input("API Key: ")
apiUrl = ""

airport = 'KSFO'
payload = {'max_pages': 2}
auth_header = {'x-apikey':apiKey}

response = requests.get(apiUrl + f"airports/{airport}/flights",
    params=payload, headers=auth_header)

if response.status_code == 200:
    print("Error executing request")
String apiUrl = "";

String airport = "KSFO";

HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
	.uri(URI.create(apiUrl + "airports/" + airport + "/flights"))
	.headers("x-apikey", YOUR_API_KEY)
HttpResponse response = client.send(request, BodyHandlers.ofString());

if (response.statusCode() == 200) {
	System.out.println("responseBody: " + response.body());
$apiKey = "YOUR_API_KEY";
$fxmlUrl = "";

$ident = 'SWA45';
$queryParams = array(
	'max_pages' => 2
$url = $fxmlUrl . 'flights/' . $ident . '?' . http_build_query($queryParams);

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('x-apikey: ' . $apiKey));

if ($result = curl_exec($ch)) {
	echo $result;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text.Json;
using System.Text.Json.Serialization;
using System.Threading.Tasks;

namespace AeroApi4Sample
    public class FlightsResult
        public List Flights { get; set; }

    public class Flight
        public string Ident { get; set; }

        public string FaFlightId { get; set; }

        public DateTime ScheduledOut { get; set; }
        public DateTime? ActualOut { get; set; }

    public class Program
        static void Main( string[] args )
            Console.Write( "API Key: " );
            var strApiKey = Console.ReadLine();

            Console.Write( "Ident to look up (e.g., UAL47): " );
            var strIdentToLookUp = Console.ReadLine();

            var flights = GetFlights( strApiKey, strIdentToLookUp ).Result;
            if( flights == null )

            var nextFlightToDepart = flights.Where( 
                f => f.ActualOut == null 
                ).OrderBy( f => f.ScheduledOut ).First();

                    "Next departure of {0} is {1} at {2}", 

        private static async Task> GetFlights( string strApiKey, string strIdent )
            using( var client = new HttpClient() )
                    new MediaTypeWithQualityHeaderValue( "application/json" )

                FlightsResult flightResult = null;
                var response = await client.GetAsync(
                    "" + strIdent
                var contentStream = await response.Content.ReadAsStreamAsync();

                if( response.IsSuccessStatusCode )
                    flightResult = await JsonSerializer.DeserializeAsync(
                        new JsonSerializerOptions 
                            PropertyNameCaseInsensitive = true
                    Console.Error.WriteLine( "API call failed: " + response );
                    return null;

                return flightResult.Flights;

AeroAPI can also be used with Python, Ruby, Java, .NET, and other languages.

AeroAPI Query Fees

A single Query may return one-to-many results, dependent upon the type of call being made and the input parameters provided. For pricing purposes, a ‘result set’ is defined as 15 results/records. Pricing is per result set.

Note: The max_pages input parameter can be used to limit/control how many result sets will be returned, with one page being equivalent to one result set.

Note: The max_pages input parameter can be used to limit/control how many result sets will be returned, with one page being equivalent to one result set.

오늘 쿼리를 시작하세요! Compare Tiers

전세계 조직에서 사용

자주 묻는 질문

How am I charged when the API returns multiple results for one query?

In general, you are charged once per query. However, for queries that may return multiple pages of results (defined as sets of up to 15 results), you will be charge for the total number of pages returned (calculated as the per-query fee times the number of pages returned). You can control the maximum number of pages returned by the API for one query. Please refer to the API documentation for details on how to set the "max_pages" parameter.

내 AeroAPI 결제 상태를 어떻게 볼 수 있습니까?

Existing customers can visit the AeroAPI portal to see accrued charges.

What is new in version 4?

Version 4 features more detailed results on flight queries and push alerts so you get the same or more information with fewer calls. We redesigned the API to provide an easier to use RESTful interface. The all-new interactive web portal allows you to explore the API and try it without writing any code. A 99.5% uptime guarantee is also now available.

I use version 2 or version 3 of AeroAPI, what is the future of these products?

Version 2 and version 3 of AeroAPI will continue to be available to existing customers until October 31, 2023 and their respective pricing is unchanged. These legacy products are no longer available for new sign-ups. We encourage legacy AeroAPI customers to plan to adopt the new version of AeroAPI in the near future so that they will not be impacted by the end-of-life of the old products in 2023. Additionally, customers on the new version of AeroAPI will receive access to future updates of AeroAPI without changing to a new product.

I use version 2 or version 3 of AeroAPI, how can I switch to version 4?

You can get started with the new version of AeroAPI today, just sign-up on-line. As an existing AeroAPI customer, the monthly minimum fee is waived for the first 3 months of your new subscription at the Standard or Premium tier to help you get started.


FlightAware's API for flight status, flight tracking and aviation data can be accessed via REST and the API can be accessed using any programming language.


일반적인 질문에 대한 답변을 찾으려면 FAQ를 방문하시고, 자세한 정보는 토론 포럼을 확인해 주십시오.


계정을 가지고 계십니까? 사용자 정의된 기능, 비행 경보 및 더 많은 정보를 위해 지금(무료) 등록하세요!
이 웹 사이트는 쿠키를 사용합니다. 이 웹 사이트를 사용하고 탐색함으로써 귀하는 이러한 쿠기 사용을 수락하는 것입니다.
FlightAware 항공편 추적이 광고로 지원된다는 것을 알고 계셨습니까?
FlightAware.com의 광고를 허용하면 FlightAware를 무료로 유지할 수 있습니다. Flightaware에서는 훌륭한 경험을 제공할 수 있도록 관련성있고 방해되지 않는 광고를 유지하기 위해 열심히 노력하고 있습니다. FlightAware에서 간단히 광고를 허용 하거나 프리미엄 계정을 고려해 보십시오..