Live Aircraft Position Tracker avatar

Live Aircraft Position Tracker

Pricing

from $2.00 / 1,000 aircraft position collecteds

Go to Apify Store
Live Aircraft Position Tracker

Live Aircraft Position Tracker

Track every aircraft flying right now over a region, a map box, an airport, a callsign or a tail number. One row per aircraft with position, altitude, speed, heading, climb rate, route, aircraft type, operator and the tail number most trackers hide.

Pricing

from $2.00 / 1,000 aircraft position collecteds

Rating

0.0

(0)

Developer

Hamza

Hamza

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

7 days ago

Last modified

Categories

Share

See what is flying right now — over a whole region, over a box you draw yourself, into and out of one airport, or a single aeroplane you name. Every aircraft comes back as one clean row with its position, altitude, speed, heading, climb rate, route, aircraft type, operator and tail number, which most public trackers hide. Point it at Europe and get thousands of live aircraft; point it at one tail number and find out exactly where that aeroplane is this minute. No account and no login are needed — just run it.

What you can do with it

  • Power a live map or dashboard. Pull every aircraft over your region on a schedule and drive a map, a flight board or an internal ops screen.
  • Find one aeroplane. Give a tail number and get its position, altitude, route and speed right now — the fleet-tracking question that ordinary flight lookups cannot answer because they hide the registration.
  • Watch an airport. Everything currently flying to or from JFK, LHR or DXB, inbound and outbound, with how far each arrival still has to go.
  • Follow a specific flight. Track by callsign and get only that flight — near-matches such as BAW1170 when you asked for BAW117 are counted and thrown away, never handed to you as your flight.
  • Build a movements dataset. Run it every few minutes and keep the rows to build your own history of who flew where, on what aircraft, and when.
  • Spot business and private aviation. Turn on aircraft details and each row names the registered owner, manufacturer and full model — the only way to tell whose jet just landed.
  • Feed a research or logistics model. Altitude bands, climb rates, ground speed, routes and aircraft types for a whole region in one table.

What you get

One row per aircraft. A real, abridged record — every value below is what this actor produced from one collected answer, with aircraft details switched off:

{
"callsign": "UAL1",
"registration": "N81107",
"flightNumber": "UA1",
"airlineIcao": "UAL",
"aircraftType": "B789",
"originIata": "SFO",
"originAirport": "San Francisco International Airport",
"originCity": "San Francisco",
"destinationIata": "SIN",
"destinationAirport": "Singapore Changi Airport",
"destinationCity": "Singapore",
"latitude": 18.6769,
"longitude": 155.3201,
"altitudeFt": 38004,
"altitudeM": 11584,
"groundspeedKt": 516,
"groundspeedKmh": 955.6,
"verticalSpeedFpm": 0,
"headingDeg": 253,
"onGround": false,
"squawk": null,
"kmToDestination": 5912.9,
"icao24": "ab0f8b",
"positionSource": "satellite",
"isIdentityWithheld": false,
"hasFullDetail": false,
"detailStatus": "not_requested",
"trackedBy": "callsign",
"trackedValue": "UAL1",
"observedAt": "2026-08-16T15:37:36.000Z",
"collectedAt": "2026-08-16T12:57:41.208Z"
}

Coordinates are passed through exactly as the source published them — it gives two decimal places on some answers and four on others, and neither is rounded off nor padded out here. kmToDestination is the straight-line distance from that position to the destination airport: this 787 was 5,912.9 km short of Singapore when it was seen.

Switch aircraft details on and three more fields are filled in from the aircraft registry: operator, manufacturer and aircraftDescription. For the Virgin Atlantic 787 in the same run those read Virgin Atlantic Airways, Boeing and Boeing 787 9.

Alongside the table you get a run summary: how many aircraft were collected, how many reads were made, how many reads found genuinely nothing, and how many reads could not be completed. Those last two are never merged — see Limits below.

Input reference

FieldTypeDefaultWhat it does
modechoiceareaWhat to track: a map area, an airport, a flight callsign, or a tail number.
regionchoiceeuropeFor map areas: Europe, North America, South America, Africa, Middle East, Asia, Oceania, North Atlantic, the whole world, or a custom box.
north, south, west, eastnumberThe four edges of your own box, in degrees. Used when region is Custom box.
airportslist["JFK"]For airport mode: three-letter airport codes. Unknown codes are refused before the run starts.
callsignslistFor callsign mode: radio callsigns such as BAW117. Only exact matches are returned.
registrationslistFor tail-number mode: registrations such as G-VNYL or N154QS.
coveragechoicestandardStandard returns the fullest record per aircraft. Wide adds a second, broader observation network so aircraft the first does not report still appear, with route and tail-number fields left empty on those extras rather than guessed. Those extras never take the place of a fuller record: every aircraft the first network reported is delivered first, and the second network is only asked for what is left of your row limit. Applies to map areas and callsigns.
includeOperatorDetailbooleanfalseAdd the registered owner, manufacturer and full model to every aircraft. Charged separately.
maxDetailLookupsnumber250Ceiling on how many aircraft get those extra details.
includeGroundAircraftbooleantrueKeep aircraft taxiing or parked as well as airborne ones.
minAltitudeFtnumberKeep only aircraft at or above this altitude.
maxAltitudeFtnumberKeep only aircraft at or below this altitude.
airlineslistKeep only these three-letter operator codes, e.g. BAW, DLH.
aircraftTypeslistKeep only these short type codes, e.g. A320, B789.
maxRowsnumber500The run stops once this many aircraft have been collected.
tileSizeDegreesnumber20For map areas: the size of each square the region is read in. Smaller squares give more complete coverage of busy airspace and take longer.
maxAreaTilesnumber12Ceiling on how many squares are actually read. If the area needs more than this, the run reads this many squares spread evenly across the whole area and the summary records the rest as not read — Europe at the default square size needs 8, the whole world needs 162.
parallelReadsnumber3How much the run does at once. Three suits almost every job.

Output fields

FieldWhat it is
icao24The aircraft's unique transponder address — the safest key to join rows on.
registrationThe tail number painted on the aircraft.
callsignThe radio callsign the flight is operating under.
flightNumberThe commercial flight number, where the flight has one.
airlineIcaoThree-letter operator code.
operatorThe registered owner or operator, in words. Filled in when aircraft details are switched on.
operatorCodeThe operator's short code, from the same lookup.
aircraftTypeShort aircraft type code, e.g. B789.
aircraftDescriptionManufacturer and model in words, e.g. Boeing 787 9. With aircraft details on.
manufacturerAircraft manufacturer. With aircraft details on.
latitude, longitudePosition at the moment it was observed.
altitudeFt, altitudeMAltitude, in feet and in metres.
groundspeedKt, groundspeedKmhSpeed over the ground, in knots and km/h.
verticalSpeedFpmClimb or descent rate in feet per minute; negative is descending.
headingDegDirection of travel in degrees.
squawkTransponder code, where it is published.
onGroundTrue when the aircraft is on the ground rather than airborne.
isGliderTrue for gliders.
originIata, originAirport, originCity, originCountryWhere the flight started, with the airport named in full.
destinationIata, destinationAirport, destinationCity, destinationCountryWhere it is going, named in full.
kmToDestinationStraight-line distance still to fly, where the destination is known.
registrationCountryThe country the aircraft is registered in, where it is stated.
positionSourceHow the position was observed, where the source states it — for example satellite for space-based reception. Empty when it is not stated.
isIdentityWithheldTrue when the aircraft publishes no identity at all. Roughly one aircraft in nine is in this state: its tail number, flight number and route are withheld and only the position, altitude and type remain.
hasFullDetailTrue when the owner and model lookup succeeded for this aircraft.
detailStatusWhy a row has no extra detail: not requested, nothing published, or the limit was reached.
trackedBy, trackedValueWhich of your inputs produced this row.
observedAtWhen the position itself was observed.
collectedAtWhen this actor collected it.

Pricing

You pay per event, so a small run costs a small amount.

What you pay forPrice
Each aircraft returned$2.00 per 1,000
Each aircraft you asked for full owner and model details on$0.80 per 1,000

Aircraft with nothing published in the registry are never charged the detail price.

Worked example. You track everything over Europe twice an hour and cap each run at 500 aircraft, with aircraft details switched off. Each run returns about 500 aircraft, so it costs about $1.00. Over a day that is 48 runs — roughly $48. Turning aircraft details on for all 500 adds $0.40 a run.

A second example: you watch a fleet of 20 tail numbers every ten minutes with details on. A run returns at most 20 rows, so it costs about $0.04 plus $0.016$0.056 a run. Every ten minutes is 144 runs a day, so that is about $8 a day, or roughly $240 a month. Halve the frequency and you halve the bill: every twenty minutes is about $4 a day.

Limits & what this actor cannot do

  • Positions are a snapshot at the moment of collection. An aircraft moving at 500 knots covers about 15 km in a minute, so a position is already history by the time you read it. Run it more often for a fresher picture; there is no live stream.
  • Positions can lag the aircraft. What is published is what was last received from the aircraft, which is not always this second — observedAt tells you exactly how old each position is, and you should use it rather than assuming the row is current.
  • Coverage is not uniform. Reception is dense over Europe, North America and East Asia and thin over oceans, deserts and polar regions. Some aircraft over water are reported from space and some are not reported at all. An aircraft missing from the results has not necessarily landed.
  • A very large area returns what the source publishes, not everything airborne. Any single square has a ceiling on how many aircraft it will report, so busy airspace read in one big square comes back truncated. The run summary tells you which squares hit that ceiling; smaller squares fix it, at the cost of a longer run.
  • When you cap the number of aircraft, the cap is shared out across the area. Ask for 300 aircraft over Europe and you get roughly the same number from each part of it, not 300 from whichever corner answered first. Squares with less to give do not waste their share.
  • A big area is read in squares, and a limit on the squares is a limit on the coverage. If the area needs more squares than maxAreaTiles allows, the squares that are read are spread evenly across the whole area and the rest are reported as not read. The whole world at the default square size needs 162 squares, so a world run on the default limit of 12 is a sample of the planet, not a census of it — the summary says so in numbers, and an unread square is never reported as an area with no aircraft.
  • Wide coverage cannot reach across the 180° meridian. A map square that spans it can only be given to the second observation network as two areas, which it does not accept, so those squares get no second read. The main read covers them normally, and the run summary counts them rather than passing over them in silence.
  • Not every aircraft carries every field. Military, private and some general-aviation aircraft publish no tail number, no route and sometimes no callsign — about one aircraft in nine in a wide sweep. Those rows are flagged with isIdentityWithheld and the missing fields are left empty. Nothing is filled in from anywhere else, nothing is estimated, and a placeholder the source puts where a callsign should be is never passed off as one.
  • A read the source refuses is reported as a failed read, never as "no aircraft". This source answers a large share of reads with a valid, well-formed document containing nothing at all, and the actor detects it, retries, and — if it still cannot get a live answer — records the read as failed. It will never tell you an area is empty when it could not confirm that it is. The same rule covers a change in the shape of what the source publishes: aircraft that arrive in a form this actor cannot read are counted in the summary and the read is reported as failed, so a format change can never be delivered to you as an empty sky.
  • It cannot look backwards. This is a "where is it now" actor. It does not return where an aircraft was an hour ago, its flight path, or its history.
  • It cannot tell you about the flight's commercial status. No delays, no gates, no scheduled or estimated times, no bookings.
  • Tail-number and callsign lookups only find aircraft that are currently flying or on the ground with their transponder on. An aeroplane in a hangar is not visible to anyone.
  • Owner and model details come from an aircraft registry. Registries lag reality: an aircraft sold last month may still show its previous owner, and some airframes have nothing published at all.
  • Speed depends on the size of the job and on the source's own response times; no fixed throughput is promised.
  • The source's terms govern automated access. You are responsible for using the data lawfully and in line with those terms, and for handling any personal data in line with applicable privacy law.

FAQ

Do I need an account on the source site? No. Nothing to sign up for and nothing to configure.

Does it need my login or password? No. It never asks for credentials of any kind.

Can I schedule it? Yes. Scheduling every few minutes is the normal way to use it — that is how you build a live map or a movements history.

Are these positions live? They are the most recent published positions at the moment the run collected them. Every row carries observedAt so you can see for yourself how fresh it is, and a fast-moving aircraft has already travelled some distance by the time you read the row.

Why does an aircraft I can see on a map not appear in my results? Three ordinary reasons: it was outside the area or filters you set; the square it is in hit the source's per-square ceiling; or nothing in the observation network can hear it right now. The run summary distinguishes the first two.

Why do some rows have no tail number or route? Because the aircraft does not publish them. Military and many private aircraft withhold their identity — those rows are marked isIdentityWithheld — and the wide-coverage setting adds aircraft that are only reported as a position and a callsign. Those fields are left empty rather than guessed.

What happens if the source will not answer? The run retries, and any read it still cannot complete is counted as a failed read in the summary. A run where nothing could be read finishes as a failure — you will never get a green run with an empty table that quietly means "we could not look".

Can I get every aircraft in the world in one run? Yes, but you must raise the map-square limit, and the exact numbers matter. At the default square size of 20 degrees the whole world is 162 squares, while maxAreaTiles defaults to 12 — so a world run on the defaults reads 12 squares, spread evenly across the planet, and the run summary reports the other 150 as not read. For full coverage set region to the whole world, keep tileSizeDegrees at 20, set maxAreaTiles to 162 and raise maxRows. Making the squares smaller is counterproductive here: no run may read more than 200 squares, and below 18 degrees the world needs more squares than that, so smaller squares mean less of the world, not more. Smaller squares are the right tool for one busy region, not for the planet.

Why does my run say some squares were not read? Because the area you chose needs more squares than the map-square limit allows. The run reads squares spread evenly across the whole area rather than working from one corner, and the summary tells you how many squares the area needs (areaSquaresNeededForFullCover), how many were read, and how many were not. Nothing is claimed about the squares that were not read — an unread square is never reported as an area with no aircraft.