GeezerVison is showing www.flightaware.com — AeroAPI | Flight status & tracking data API | FlightAware AeroAPI®Data as you want it, when you want it.AeroAPI® is a simple and cost-effective query-based API that delivers data on demand from millions of flight status inputs. With over 60 distinct endpoints, you can customize your data delivery to meet your needs. Flight information. On demand. On your budget.With our usage-based pricing model, you can access accurate and precise aviation data, current and historical. Request data as needed for full control over total cost. Tap into millions of flight status inputs to track everything from ETAs to last position, full track, flight status, ground speed and altitude. You can even set up alerts to be notified of the information you need in real time. FeaturesWhy AeroAPI?- Easy to integrate
- Modern REST-based API that is compatible with all programming languages.
- Access to historical data
- With data stretching back to 2011, post-flight analysis has never been easier.
- Comprehensive online documentation
- Robust developer documentation and sample code, including an interactive portal to quickly test and evaluate all 60+ endpoints.
- Customized approach
- Flexible and scalable to your specific needs, we only deliver (and you only pay for) the data you request.
- Flight alerting
- Real-time alerting on the flight events that mean the most to you, including departure, arrival, cancels, flight hold detections, and custom configuration for notification of impending departure/arrival.
 FLIGHTAWARE FORESIGHT Use AeroAPI to access FlightAware's Foresight predictive technology. Foresight harnesses robust historical and real-time aviation data, weather data, and advanced ML to deliver powerful, predictive insights that optimize operations and anticipate risk across nearly every flight on the planet. Set an alert, get an alert. In addition to requesting data when you need it, you can also request to be notified when a specific event occurs. Need to know when a flight arrives? When it takes off? If it’s diverted? You can even ask AeroAPI to alert you when a flight has entered or left a holding pattern. Historical data Seamless integration of historical flight data from January 1, 2011 onward along with current and predictive flight data, all from a single API. Flexible access by flight identifier, tail number, airport, or airline operator of interest makes data gathering for post operational analysis quick and efficient. Analyze a problematic airport or a weather event. Identify historical trends on how an aircraft, flight, or airport performs over time. Study flight activity prior to an incident. In addition to actual flight times and status, get actual track flown for any flight - including all positions along with speed and altitude. Find the right tier for your needsChoose the appropriate tier based on your use case and data needs, taking note of limitations on usage and storage restrictions. PersonalGet startedStorage and distribution of derivative works for personal or academic purposes only. - Current flight status and tracks
StandardGet startedStorage and distribution of derivative works for business or business-to-consumer purposes. Everything in Personal tier plus: - Historical data access
- Flight Alerting
- Email support
PremiumGet startedStorage and distribution of derivative works for business, business-to-consumer commercial purposes, and all Business-to-Business commercial purposes. Everything in Standard tier plus: - Advanced data sets, including Aireon spaced-based ADS-B
- Foresight Predictions
- Enterprise grade services with both email and phone support
| Personal | Standard | Premium |
|---|
Included APIs |
|---|
| Not included in Personal | Included in Standard | Included in Premium | | Not included in Personal | Not included in Standard | Included in Premium | Aireon Space-Based ADS-B* | Not included in Personal | Not included in Standard | Included in Premium | | Not included in Personal | Included in Standard | Included in Premium | | Included in Personal | Included in Standard | Included in Premium | | * Contact us to enable this feature. Some restrictions for use apply. | Pricing Details |
|---|
| Per-query usage fees (up to $5 free per month, or $10 free per month for ADS-B feeders) | Standard includes:Per-query usage fees (subject to monthly minimum) | Premium includes:Per-query usage fees (subject to monthly minimum) | | Personal includes:No minimum | Standard includes:$100/month | Premium includes:$1,000/month | | Personal includes:10 result sets/minute | Standard includes:5 result sets/second | Premium includes:100 result sets/second | History Results set rate limit | Not included in Personal | Standard includes:500,000 result sets/month | Premium includes:500,000 result sets/month | | Not included in Personal | Included in Standard | Included in Premium | Authorized Users |
|---|
| Personal includes:Storage and distribution of derivative works for personal or academic purposes only. | Standard includes:Storage and distribution of derivative works for business or business-to-consumer purposes. | Premium includes:Storage and distribution of derivative works for business, business-to-consumer commercial purposes, and all Business-to-Business commercial purposes. | Internal Use for Business | Not included in Personal | Included in Standard | Included in Premium | Commercialization for Business to Consumer (B2C) | Not included in Personal | Included in Standard | Included in Premium | Commercialization for Business to Business (B2B) | Not included in Personal | Not included in Standard | Included in Premium | Internal Use for Personal | Included in Personal | Included in Standard | Included in Premium | | Included in Personal | Included in Standard | Included in Premium | General |
|---|
| Not included in Personal | Not included in Standard | Premium includes:99.5% | | Not included in Personal | Included in Standard | Included in Premium | | Not included in Personal | Not included in Standard | Included in Premium | | Not included in Personal | Not included in Standard | Included in Premium |
Included APIs - FlightAware Foresight*
-
- No
- Aireon Space-Based ADS-B*
-
- No
- Historical Flight Data
-
- No
* Contact us to enable this feature. Some restrictions for use apply.Pricing Details - Monthly minimum fee
-
- No minimum
- Result set rate limit
-
- 10 result sets/minute
- History Results set rate limit
-
- No
Authorized Users - Overview
-
- Storage and distribution of derivative works for personal or academic purposes only.
- Internal Use for Business
-
- No
- Commercialization for Business to Consumer (B2C)
-
- No
- Commercialization for Business to Business (B2B)
-
- No
- Internal Use for Personal
-
- Yes
- Academic
-
- Yes
General - Up-time guarantee
-
- No
- E-mail Support
-
- No
- Phone Support
-
- No
- Invoicing Available
-
- No
Included APIs - FlightAware Foresight*
-
- No
- Aireon Space-Based ADS-B*
-
- No
- Historical Flight Data
-
- Yes
* Contact us to enable this feature. Some restrictions for use apply.Pricing Details - Monthly minimum fee
-
- $100/month
- Result set rate limit
-
- 5 result sets/second
- History Results set rate limit
-
- 500,000 result sets/month
Authorized Users - Overview
-
- Storage and distribution of derivative works for business or business-to-consumer purposes.
- Internal Use for Business
-
- Yes
- Commercialization for Business to Consumer (B2C)
-
- Yes
- Commercialization for Business to Business (B2B)
-
- No
- Internal Use for Personal
-
- Yes
- Academic
-
- Yes
General - Up-time guarantee
-
- No
- E-mail Support
-
- Yes
- Phone Support
-
- No
- Invoicing Available
-
- No
Included APIs - FlightAware Foresight*
-
- Yes
- Aireon Space-Based ADS-B*
-
- Yes
- Historical Flight Data
-
- Yes
* Contact us to enable this feature. Some restrictions for use apply.Pricing Details - Monthly minimum fee
-
- $1,000/month
- Result set rate limit
-
- 100 result sets/second
- History Results set rate limit
-
- 500,000 result sets/month
Authorized Users - Overview
-
- Storage and distribution of derivative works for business, business-to-consumer commercial purposes, and all Business-to-Business commercial purposes.
- Internal Use for Business
-
- Yes
- Commercialization for Business to Consumer (B2C)
-
- Yes
- Commercialization for Business to Business (B2B)
-
- Yes
- Internal Use for Personal
-
- Yes
- Academic
-
- Yes
General - Up-time guarantee
-
- 99.5%
- E-mail Support
-
- Yes
- Phone Support
-
- Yes
- Invoicing Available
-
- Yes
Trusted Globally by Leading OrganizationsQuery fees breakdownA single query can return multiple results, depending on the call type and input. Pricing is based on result sets, with one set equaling 15 records. Prices may change.Compare tiers| Function | Pricing |
|---|
| GET /flights/search Search for flights | $0.050/result set | GET /flights/search Search for flights $0.050/result set | | GET /flights/search/positions Search for flight positions | $0.050/result set | GET /flights/search/positions Search for flight positions $0.050/result set | | GET /flights/search/count Get count of flights matching search parameters | $0.020/result set | GET /flights/search/count Get count of flights matching search parameters $0.020/result set | | GET /flights/search/advanced Search for flights using advanced syntax | $0.050/result set | GET /flights/search/advanced Search for flights using advanced syntax $0.050/result set | | GET /flights/{ident} Get information for a flight | $0.005/result set | GET /flights/{ident} Get information for a flight $0.005/result set | | GET /flights/{ident}/canonical Get the canonical ident of a flight | $0.001/result set | GET /flights/{ident}/canonical Get the canonical ident of a flight $0.001/result set | | POST /flights/{ident}/intents Submit a Flight Intent | $0.000/result set | POST /flights/{ident}/intents Submit a Flight Intent $0.000/result set | | GET /flights/{id}/position Get flight's current position | $0.010/result set | GET /flights/{id}/position Get flight's current position $0.010/result set | | GET /flights/{id}/track Get flight's track | $0.012/result set | GET /flights/{id}/track Get flight's track $0.012/result set | | GET /flights/{id}/route Get flight's filed route | $0.010/result set | GET /flights/{id}/route Get flight's filed route $0.010/result set | | GET /flights/{id}/map Get an image of a flight's track on a map | $0.030/result set | GET /flights/{id}/map Get an image of a flight's track on a map $0.030/result set |
| Function | Pricing |
|---|
| GET /foresight/flights/{ident} Get information for a flight, including Foresight data | $0.015/result set | GET /foresight/flights/{ident} Get information for a flight, including Foresight data $0.015/result set | | GET /foresight/flights/search/advanced Search for flights, responses include Foresight data | $0.060/result set | GET /foresight/flights/search/advanced Search for flights, responses include Foresight data $0.060/result set | | GET /foresight/flights/{id}/position Get flight's current position, including Foresight data | $0.020/result set | GET /foresight/flights/{id}/position Get flight's current position, including Foresight data $0.020/result set |
| Function | Pricing |
|---|
| GET /airports Get all airports | $0.005/result set | GET /airports Get all airports $0.005/result set | | GET /airports/nearby Get airports near a location | $0.004/result set | GET /airports/nearby Get airports near a location $0.004/result set | | GET /airports/delays Get delay information for all airports with delays | $0.050/result set | GET /airports/delays Get delay information for all airports with delays $0.050/result set | | GET /airports/{id} Get static information about an airport | $0.015/result set | GET /airports/{id} Get static information about an airport $0.015/result set | | GET /airports/{id}/canonical Get the canonical code of an airport | $0.001/result set | GET /airports/{id}/canonical Get the canonical code of an airport $0.001/result set | | GET /airports/{id}/nearby Get airports near an airport | $0.004/result set | GET /airports/{id}/nearby Get airports near an airport $0.004/result set | | GET /airports/{id}/delays Get airport delay information | $0.010/result set | GET /airports/{id}/delays Get airport delay information $0.010/result set | | GET /airports/{id}/flights Get all flights for a given airport | $0.020/result set | GET /airports/{id}/flights Get all flights for a given airport $0.020/result set | | GET /airports/{id}/flights/arrivals Get flights that have recently arrived at an airport | $0.005/result set | GET /airports/{id}/flights/arrivals Get flights that have recently arrived at an airport $0.005/result set | | GET /airports/{id}/flights/departures Get flights that have recently departed from an airport | $0.005/result set | GET /airports/{id}/flights/departures Get flights that have recently departed from an airport $0.005/result set | | GET /airports/{id}/flights/scheduled_departures Get future flights departing from an airport | $0.005/result set | GET /airports/{id}/flights/scheduled_departures Get future flights departing from an airport $0.005/result set | | GET /airports/{id}/flights/scheduled_arrivals Get future flights arriving at an airport | $0.005/result set | GET /airports/{id}/flights/scheduled_arrivals Get future flights arriving at an airport $0.005/result set | | GET /airports/{id}/flights/to/{dest_id} Get flights with a specific origin and destination | $0.050/result set | GET /airports/{id}/flights/to/{dest_id} Get flights with a specific origin and destination $0.050/result set | | GET /airports/{id}/flights/counts Get flight counts for an airport | $0.100/result set | GET /airports/{id}/flights/counts Get flight counts for an airport $0.100/result set | | GET /airports/{id}/weather/observations Get weather conditions for given airport | $0.002/result set | GET /airports/{id}/weather/observations Get weather conditions for given airport $0.002/result set | | GET /airports/{id}/weather/forecast Get weather forecast for given airport | $0.002/result set | GET /airports/{id}/weather/forecast Get weather forecast for given airport $0.002/result set | | GET /airports/{id}/routes/{dest_id} Get routes between 2 airports | $0.020/result set | GET /airports/{id}/routes/{dest_id} Get routes between 2 airports $0.020/result set |
| Function | Pricing |
|---|
| GET /operators Get all operators. | $0.002/result set | GET /operators Get all operators. $0.002/result set | | GET /operators/{id} Get static information for an operator. | $0.015/result set | GET /operators/{id} Get static information for an operator. $0.015/result set | | GET /operators/{id}/canonical Get the canonical code of an operator for API usage. | $0.001/result set | GET /operators/{id}/canonical Get the canonical code of an operator for API usage. $0.001/result set | | GET /operators/{id}/flights Get all of an operator's flights | $0.030/result set | GET /operators/{id}/flights Get all of an operator's flights $0.030/result set | | GET /operators/{id}/flights/scheduled Get scheduled flights | $0.005/result set | GET /operators/{id}/flights/scheduled Get scheduled flights $0.005/result set | | GET /operators/{id}/flights/arrivals Get arrived flights | $0.005/result set | GET /operators/{id}/flights/arrivals Get arrived flights $0.005/result set | | GET /operators/{id}/flights/enroute Get en route flights | $0.005/result set | GET /operators/{id}/flights/enroute Get en route flights $0.005/result set | | GET /operators/{id}/flights/counts Get flight counts for operator | $0.100/result set | GET /operators/{id}/flights/counts Get flight counts for operator $0.100/result set |
| Function | Pricing |
|---|
| Push Alert Delivery Alert delivery callback from FlightAware | $0.020/result set | Push Alert Delivery Alert delivery callback from FlightAware $0.020/result set | | GET /alerts Get all configured alerts | $0.000/result set | GET /alerts Get all configured alerts $0.000/result set | | POST /alerts Create new alert | $0.000/result set | POST /alerts Create new alert $0.000/result set | | GET /alerts/{id} Get specific alert | $0.000/result set | GET /alerts/{id} Get specific alert $0.000/result set | | PUT /alerts/{id} Modify specific alert | $0.000/result set | PUT /alerts/{id} Modify specific alert $0.000/result set | | DELETE /alerts/{id} Delete specific alert | $0.000/result set | DELETE /alerts/{id} Delete specific alert $0.000/result set | | GET /alerts/endpoint Get configured alert callback URL | $0.000/result set | GET /alerts/endpoint Get configured alert callback URL $0.000/result set | | PUT /alerts/endpoint Set alert callback URL | $0.000/result set | PUT /alerts/endpoint Set alert callback URL $0.000/result set | | DELETE /alerts/endpoint Remove and disable default account-wide alert callback URL | $0.000/result set | DELETE /alerts/endpoint Remove and disable default account-wide alert callback URL $0.000/result set |
| Function | Pricing |
|---|
| GET /history/flights/{ident} Get information for a historical flight | $0.020/result set | GET /history/flights/{ident} Get information for a historical flight $0.020/result set | | GET /history/flights/{id}/track Get historical information for a flight's track | $0.060/result set | GET /history/flights/{id}/track Get historical information for a flight's track $0.060/result set | | GET /history/flights/{id}/map Get an image of a historical flight's track on a map | $0.140/result set | GET /history/flights/{id}/map Get an image of a historical flight's track on a map $0.140/result set | | GET /history/flights/{id}/route Get historical flight's filed route | $0.040/result set | GET /history/flights/{id}/route Get historical flight's filed route $0.040/result set | | GET /history/airports/{id}/flights/arrivals Get historical flights that were planned to arrive at an airport | $0.020/result set | GET /history/airports/{id}/flights/arrivals Get historical flights that were planned to arrive at an airport $0.020/result set | | GET /history/airports/{id}/flights/departures Get historical flights that were planned to depart from an airport | $0.020/result set | GET /history/airports/{id}/flights/departures Get historical flights that were planned to depart from an airport $0.020/result set | | GET /history/airports/{id}/flights/to/{dest_id} Get historical flights with a specific origin and destination | $0.120/result set | GET /history/airports/{id}/flights/to/{dest_id} Get historical flights with a specific origin and destination $0.120/result set | | GET /history/aircraft/{registration}/last_flight Get aircraft's last known flight | $0.200/result set | GET /history/aircraft/{registration}/last_flight Get aircraft's last known flight $0.200/result set | | GET /history/operators/{id}/flights Get historical flights for a given operator | $0.020/result set | GET /history/operators/{id}/flights Get historical flights for a given operator $0.020/result set |
| Function | Pricing |
|---|
| GET /aircraft/{ident}/blocked Check if a given ident is blocked | $0.020/result set | GET /aircraft/{ident}/blocked Check if a given ident is blocked $0.020/result set | | GET /aircraft/{ident}/owner Get the owner of an aircraft | $0.002/result set | GET /aircraft/{ident}/owner Get the owner of an aircraft $0.002/result set | | GET /aircraft/types/{type} Get information about an aircraft type | $0.100/result set | GET /aircraft/types/{type} Get information about an aircraft type $0.100/result set | | GET /schedules/{date_start}/{date_end} Get scheduled flights | $0.020/result set | GET /schedules/{date_start}/{date_end} Get scheduled flights $0.020/result set | | GET /disruption_counts/{entity_type} Get global flight disruption statistics | $0.020/result set | GET /disruption_counts/{entity_type} Get global flight disruption statistics $0.020/result set | | GET /disruption_counts/{entity_type}/{id} Get flight disruption statistics for a particular entity | $0.020/result set | GET /disruption_counts/{entity_type}/{id} Get flight disruption statistics for a particular entity $0.020/result set |
| Function | Pricing |
|---|
| GET /account/usage Get AeroAPI usage statistics for account | $0.000/result set | GET /account/usage Get AeroAPI usage statistics for account $0.000/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. Volume DiscountingAll Premium and Standard tier accounts are eligible for volume discounting. The first $1000 of usage per month is always billed at list price, followed by each incremental level of usage being discounted at a more generous level. For monthly usage above $64,000 the discount is set at 94% off, which will enable you to continue to grow your applications and take full advantage of new features with minimal variance in total monthly cost.Compare tiers| Pricing | Discount |
|---|
| $0 - $1,000 / month | No Discount | $0 - $1,000 / month No Discount | | $1,000 - $2,000 | 30% Discount | $1,000 - $2,000 30% Discount | | $2,000 - $4,000 | 51% Discount | $2,000 - $4,000 51% Discount | | $4,000 - $8,000 | 65% Discount | $4,000 - $8,000 65% Discount | | $8,000 - $16,000 | 76% Discount | $8,000 - $16,000 76% Discount | | $16,000 - $32,000 | 83% Discount | $16,000 - $32,000 83% Discount | | $32,000 - $64,000 | 88% Discount | $32,000 - $64,000 88% Discount | | Above $64,000 | 94% Discount | Above $64,000 94% Discount |
Please contact FlightAware for more information regarding additional discounting available with 3 or 4 year term commitments. code snippetsQuery Flight Data on Demand with AeroAPI AeroAPI is a RESTful API that lets developers query live and historical flight data. From flight positions to predictive ETAs powered by FlightAware Foresight, it delivers the data you need to build aviation-ready applications. - Comprehensive data
- Retrieve flight positions, historical tracks, airport activity, and predictive ETAs.
- Flexible queries
- Search flights by tail number, origin/destination, aircraft type, altitude, or groundspeed.
- Industry leading predictions
- Access the same data powering over half the airline ETAs in the US.
- Truly global coverage
- Combining ~41k FlightAware ADSB receivers with Aireon spaced-based ADSB sourced data
import requests
apiKey = input("API Key: ")
apiUrl = "https://aeroapi.flightaware.com/aeroapi/"
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(response.json())
else:
print("Error executing request")
String YOUR_API_KEY = "API_KEY_HERE";
String apiUrl = "https://aeroapi.flightaware.com/aeroapi/";
String airport = "KSFO";
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(apiUrl + "airports/" + airport + "/flights"))
.headers("x-apikey", YOUR_API_KEY)
.build();
HttpResponse<String> response = client.send(request, BodyHandlers.ofString());
if (response.statusCode() == 200) {
System.out.println("responseBody: " + response.body());
}
<?php
$apiKey = "YOUR_API_KEY";
$fxmlUrl = "https://aeroapi.flightaware.com/aeroapi/";
$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));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
if ($result = curl_exec($ch)) {
curl_close($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<Flight> Flights { get; set; }
}
public class Flight
{
public string Ident { get; set; }
[JsonPropertyName("fa_flight_id")]
public string FaFlightId { get; set; }
[JsonPropertyName("scheduled_out")]
public DateTime ScheduledOut { get; set; }
[JsonPropertyName("actual_out")]
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 )
{
return;
}
var nextFlightToDepart = flights.Where(
f => f.ActualOut == null
).OrderBy( f => f.ScheduledOut ).First();
Console.WriteLine(
string.Format(
"Next departure of {0} is {1} at {2}",
strIdentToLookUp,
nextFlightToDepart.FaFlightId,
nextFlightToDepart.ScheduledOut
)
);
}
private static async Task<List<Flight>> GetFlights( string strApiKey, string strIdent )
{
using( var client = new HttpClient() )
{
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue( "application/json" )
);
client.DefaultRequestHeaders.Add(
"x-apikey",
strApiKey
);
FlightsResult flightResult = null;
var response = await client.GetAsync(
"https://aeroapi.flightaware.com/aeroapi/flights/" + strIdent
);
var contentStream = await response.Content.ReadAsStreamAsync();
if( response.IsSuccessStatusCode )
{
flightResult = await JsonSerializer.DeserializeAsync<FlightsResult>(
contentStream,
new JsonSerializerOptions
{
PropertyNameCaseInsensitive = true
}
);
}
else
{
Console.Error.WriteLine( "API call failed: " + response );
return null;
}
return flightResult.Flights;
}
}
}
}
Data Delivery Options FlightAware offers two powerful APIs for integrating real-time aviation data into your custom application - meeting virtually any business need. Firehose delivers real-time streaming data, while AeroAPI offers on-demand access to the same aviation intelligence, plus comprehensive historical data access. Get in touch about AeroAPIQuestions & AnswersIs global flight data available?
FlightAware tracks flights globally, all of which are available through AeroAPI. How do I know how much using AeroAPI will cost me?
It is a usage-based API. You pay only for what you need, on demand. Each query is charged individually. For queries that may return multiple pages of results (a page is defined as up to 15 records), you will be charged 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. How can I view my AeroAPI billing status?
Are there any new features?
We regularly add new features, with release notes published here. Have an idea? FlightAware welcomes user feedback for future enhancements. See all FAQs |