Real time position data

How often is the aircraft position updated and which is the best api call to use to track an individual aircraft/flight.


Aircraft position update frequency will vary depending on the type of coverage it is currently in. If it under FAA Radar then it is usually only once per minute. If under ADS-B coverage then it may be multiple times per minute. The position frequency will also vary depending on the phase of flight it is currently in, with fewer positions being stored during cruise, and more during low altitude or heading changes.

Getting the general status of a flight is best done with FlightInfoEx. Once you know the flight status, you can use retrieve positions for it using GetLastTrack or SearchBirdseyePositions.

Is the time stamp with the data when that position was valid?

Any options other than polling say every 60 seconds?

Is there a way to tell if the position data is ADS-B or radar?


FlightXML is primarily a polling-based interface, with pushed-based deliveries only available for flight alert events (filed, departure, arrival, etc). FlightXML doesn’t currently provide indication of the facility or source of positional data, unfortunately.

If you believe you have a strong business need for tracking live positions with the lowest possible latency (particularly of large numbers of aircraft), we do have a new socket-based streaming service called “firehose” that may be able to meet your needs. Let me know if that resembles your use case.

Where can we find details of the firehose server?


Ian, you can find info on ADS-B Firehose here:

Hi, I have few questions and I hope this is the right place to ask :arrow_right:

  1. when using Search with some -latlong box and a restriction for number of results howMany, how do you order the results? Order by what?

  2. is it possible to filter results with boolean “or”? I mean something like Search -idents X* or Y*?

  3. what is the best way of real-time tracking of higher number (~100) of airborne planes? They don’t have to be from the same airline, or type, or … just random planes


  1. Results are ordered by an internal mechanism and is not user-customizable. I’d recommend you specify a howMany value that will capture all of the results you want in a single request, rather than trying to use the offset argument since the data is changing so frequently.

  2. A generic “OR” expression is not possible, but some of the search clauses allow you to specify multiple terms. For your example of searching for any of multiple idents, you can use a search expression of “-idents UAL*” if all of the flights are the same airline prefix, or you can explicitly enumerate several: “-idents {N1234 N2345 N4567}” or “-idents {X* Y*}”

  3. At some point with large numbers of aircraft, it’ll be more efficient and cost-effective to consider using our Firehose API product, which will give you a streaming connection to all messages as they are received by us, rather than relying on the polling based webservice interface of FlightXML.

However, until you decide that is necessary, you can continue to use FlightXML with requests that periodically poll the status of flights to first identify which ones are currently flying, or have filed a flight plan that is in the near future. You can do that either individually with FlightInfoEx or a few at a time with Search. For those active aircraft, you can poll just new positions with SearchBirdseyePositions with “{= fp yyyyyy} {> clock xxxxx}” of the last time you checked for positions.

  1. I am just curious. is it possible to describe briefly that non user-customizable mechanism? maybe I am completely wrong, but I expect you pull that data from some database and you don’t just return random subset of planes. if the latlon box contains some 100 planes and you return 15 of them, it will probably be somehow ordered. e.i. alphabetically by callsign/ident, maybe by lat or lon, or …

  2. completely answered. thanks

  3. I will think about it. for now I see Firehose more expensive than “brute force” solution with FlightXML

The sort order for the “Search” function is the “clock” field (effectively the last modified timestamp), which unfortunately is not very practical for paging purposes for data that is being updated so frequently. However, that choice ensures if you are intentionally doing count-limited query you will be receiving the flights that always have fresh data.

great. all questions answered. thanks again :bulb: