A melhor API de rastreamento e status de voo baseada em consulta do mundo
A AeroAPI (antes FlightXML) oferece acesso personalizado a desenvolvedores que buscam dados de milhões de entradas de status de voo para qualquer aplicativo que use REST/JSON.
A AeroAPI (antes FlightXML) oferece acesso personalizado a desenvolvedores que buscam dados de milhões de entradas de status de voo para qualquer aplicativo que use REST/JSON.
New
Even greater access to historical flight data. Get all flight history for any airport of interest in a single call with AeroAPI’s newly introduced history endpoints, making post-operational analysis quick and easy.
AeroAPI é uma API simples, baseada em consultas, que possibilita aos desenvolvedores de software acesso a uma variedade de dados de voo do FlightAware. Os usuários podem obter dados atuais ou históricos. AeroAPI é uma API RESTful que fornece dados de aviação precisos e acionáveis. Com a introdução da ForesightTM, os clientes têm acesso aos dados que alimentam mais da metade dos ETAs preditivos de companhias aéreas nos EUA.
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;
}
}
}
}
Uma única consulta pode retornar resultados de um para muitos, dependendo do tipo de chamada que esteja sendo feita e dos parâmetros de entrada fornecidos. Para fins de precificação, um 'conjunto de resultados' é definido como 15 resultados/registros. O preço é estabelecido por conjunto de resultados.
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.
All 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.
Please contact FlightAware for more information regarding additional discounting available with 3 or 4 year term commitments.
Em geral, você é cobrado uma vez por consulta. No entanto, para consultas que retornem várias páginas de resultados (definidas como conjuntos de até 15 resultados), você será cobrado pelo número total de páginas retornadas (calculado como a taxa por consulta vezes o número de páginas retornadas). Você pode limitar o número máximo de páginas retornadas pela API por consulta. Confira a documentação da API para obter detalhes sobre como definir o parâmetro "max_pages".
Os clientes atuais podem visitar o portal da AeroAPI para visualizar as cobranças acumuladas.
A API do FlightAware para status de voo, rastreamento de voo e dados de aviação pode ser acessada via REST e através de qualquer linguagem de programação.
Visite as Perguntas mais frequentes para ver as respostas a perguntas gerais ou consulte nosso Fórum de discussão para obter informações mais detalhadas.