OpenSky Network

App · Travel & Places · 8 actions

Track aircraft with the OpenSky Network, a community of receivers that share live ADS-B data. Find what is flying over a place right now, look up an aircraft by its transponder address, replay the path it flew, and list the arrivals and departures at any airport.

Actions

ActionWhat it does
Find aircraft in an areaList the aircraft OpenSky can see within a radius of a point, nearest first, each with its position, altitude, speed and heading.
Get aircraft seen by your receiversList the aircraft the connected account's own OpenSky receivers can see.
Get an aircraft's positionLook up where one or more aircraft are right now from their ICAO 24-bit transponder addresses.
Get an aircraft's trackGet the path one aircraft flew as a list of waypoints, each with its position, altitude and heading.
List an aircraft's flightsList the flights one aircraft made in a window of up to two days, with the airports it flew between.
List arrivals at an airportList the flights that landed at an airport during a window of up to two days, with where each one came from.
List departures from an airportList the flights that left an airport during a window of up to two days, with where each one went.
List flights in a time windowList every flight the whole network saw in a window of up to two hours, each with its estimated departure and arrival airports.

Find aircraft in an area

List the aircraft OpenSky can see within a radius of a point, nearest first, each with its position, altitude, speed and heading. Leave the centre empty to look worldwide.

Inputs

Centre latitudelatitudenumber
Latitude of the point to look around, in degrees. Leave this and the longitude empty to look worldwide.From -90 to 90.
Centre longitudelongitudenumber
Longitude of the point to look around, in degrees.From -180 to 180.
Radius (km)radius_kmnumber
How far around the centre point to look, in kilometres. A smaller radius also costs fewer of the day's API credits.From 1 to 20000. Default: 100.
As ofat_timedate and time
Positions as they were at this moment. Leave empty for right now. OpenSky keeps live positions for one hour.
Flight statusflight_statustext
Keep only aircraft that are airborne, or only those on the ground.One of: any, airborne, on_ground (On the ground). Default: any.
Aircraft categoriescategorieslist
Keep only these kinds of aircraft. Leave empty for all of them. Not every transponder broadcasts its category, and those aircraft are left out whenever this filter is used.One or more of: no_information (No information at all), no_adsb_category (No ADS-B emitter category information), light (Light (< 15500 lbs)), small (Small (15500 to 75000 lbs)), large (Large (75000 to 300000 lbs)), high_vortex_large (High vortex large (aircraft such as B-757)), heavy (Heavy (> 300000 lbs)), high_performance (High performance (> 5g acceleration and 400 kts)), rotorcraft, glider (Glider / sailplane), and 11 more.
How many aircraftlimitnumber
The most aircraft to return. However many were cut, the full number that matched still comes back as Total matched.From 1 to 10000. Default: 100.

Outputs

aircraftlist
The aircraft in the area, nearest to the centre first
countnumber
How many rows were returned
observed_attext
The moment these positions describe (ISO 8601, UTC). Feed it back into 'As of' to re-read the same snapshot.
total_matchednumber
How many matched before the limit was applied
Example output
{
  "aircraft": [
    {
      "baro_altitude_ft": 20650.0,
      "baro_altitude_m": 6294.12,
      "callsign": "DLH9LF",
      "category": "Large (75000 to 300000 lbs)",
      "distance_km": 4.2,
      "geo_altitude_ft": 21875.0,
      "geo_altitude_m": 6667.5,
      "icao24": "3c675a",
      "last_contact_at": "2026-08-15T09:35:10Z",
      "latitude": 50.0264,
      "longitude": 8.5431,
      "on_ground": false,
      "origin_country": "Germany",
      "position_source": "ADS-B",
      "position_updated_at": "2026-08-15T09:35:10Z",
      "sensors": [],
      "spi": false,
      "squawk": "1000",
      "true_track": 170.3,
      "velocity_knots": 397.7,
      "velocity_ms": 204.59,
      "vertical_rate_ft_per_min": 1088.6,
      "vertical_rate_ms": 5.53
    }
  ],
  "count": 1,
  "observed_at": "2026-08-15T09:35:10Z",
  "total_matched": 1
}

Get aircraft seen by your receivers

List the aircraft the connected account's own OpenSky receivers can see. This costs no API credits and has no history limit, but it only works for accounts that feed data to OpenSky.

Inputs

Receiver serial numbersserialslist
Only report what these receivers of yours can see. Leave empty for all of them. Serial numbers are listed on your OpenSky account page.
Aircraft addressesicao24list
Only report these aircraft, as ICAO 24-bit addresses. Leave empty for everything your receivers can see.
As ofat_timedate and time
Positions as they were at this moment. Leave empty for right now. Your own receivers' history has no one-hour limit.
Flight statusflight_statustext
Keep only aircraft that are airborne, or only those on the ground.One of: any, airborne, on_ground (On the ground). Default: any.
Aircraft categoriescategorieslist
Keep only these kinds of aircraft. Leave empty for all of them. Not every transponder broadcasts its category, and those aircraft are left out whenever this filter is used.One or more of: no_information (No information at all), no_adsb_category (No ADS-B emitter category information), light (Light (< 15500 lbs)), small (Small (15500 to 75000 lbs)), large (Large (75000 to 300000 lbs)), high_vortex_large (High vortex large (aircraft such as B-757)), heavy (Heavy (> 300000 lbs)), high_performance (High performance (> 5g acceleration and 400 kts)), rotorcraft, glider (Glider / sailplane), and 11 more.
How many aircraftlimitnumber
The most aircraft to return. However many were cut, the full number that matched still comes back as Total matched.From 1 to 10000. Default: 100.

Outputs

aircraftlist
The aircraft your own receivers can currently see
countnumber
How many rows were returned
observed_attext
The moment these positions describe (ISO 8601, UTC). Feed it back into 'As of' to re-read the same snapshot.
total_matchednumber
How many matched before the limit was applied
Example output
{
  "aircraft": [
    {
      "baro_altitude_ft": 20650.0,
      "baro_altitude_m": 6294.12,
      "callsign": "DLH9LF",
      "category": "Large (75000 to 300000 lbs)",
      "distance_km": null,
      "geo_altitude_ft": 21875.0,
      "geo_altitude_m": 6667.5,
      "icao24": "3c675a",
      "last_contact_at": "2026-08-15T09:35:10Z",
      "latitude": 50.0264,
      "longitude": 8.5431,
      "on_ground": false,
      "origin_country": "Germany",
      "position_source": "ADS-B",
      "position_updated_at": "2026-08-15T09:35:10Z",
      "sensors": [],
      "spi": false,
      "squawk": "1000",
      "true_track": 170.3,
      "velocity_knots": 397.7,
      "velocity_ms": 204.59,
      "vertical_rate_ft_per_min": 1088.6,
      "vertical_rate_ms": 5.53
    }
  ],
  "count": 1,
  "observed_at": "2026-08-15T09:35:10Z",
  "total_matched": 1
}

Get an aircraft's position

Look up where one or more aircraft are right now from their ICAO 24-bit transponder addresses. An aircraft that is switched off or out of range is simply not returned.

Inputs

Aircraft addressesicao24listRequired
One or more ICAO 24-bit addresses: six hexadecimal characters each, for example 3c675a. Every action here returns this address, so it can be chained from a search or from a flight.
As ofat_timedate and time
Positions as they were at this moment. Leave empty for right now. OpenSky keeps live positions for one hour.

Outputs

aircraftlist
The aircraft that were found. An aircraft that is switched off or out of range is simply absent.
countnumber
How many rows were returned
observed_attext
The moment these positions describe (ISO 8601, UTC). Feed it back into 'As of' to re-read the same snapshot.
total_matchednumber
How many matched before the limit was applied
Example output
{
  "aircraft": [
    {
      "baro_altitude_ft": 20650.0,
      "baro_altitude_m": 6294.12,
      "callsign": "DLH9LF",
      "category": "Large (75000 to 300000 lbs)",
      "distance_km": null,
      "geo_altitude_ft": 21875.0,
      "geo_altitude_m": 6667.5,
      "icao24": "3c675a",
      "last_contact_at": "2026-08-15T09:35:10Z",
      "latitude": 50.0264,
      "longitude": 8.5431,
      "on_ground": false,
      "origin_country": "Germany",
      "position_source": "ADS-B",
      "position_updated_at": "2026-08-15T09:35:10Z",
      "sensors": [],
      "spi": false,
      "squawk": "1000",
      "true_track": 170.3,
      "velocity_knots": 397.7,
      "velocity_ms": 204.59,
      "vertical_rate_ft_per_min": 1088.6,
      "vertical_rate_ms": 5.53
    }
  ],
  "count": 1,
  "observed_at": "2026-08-15T09:35:10Z",
  "total_matched": 1
}

Get an aircraft's track

Get the path one aircraft flew as a list of waypoints, each with its position, altitude and heading. Leave the time empty for the track of a flight happening right now, or give a moment inside a past flight (up to 30 days back) for that flight's track.

Inputs

Aircraft addressicao24textRequired
The aircraft's ICAO 24-bit address: six hexadecimal characters, for example 3c675a. Every action here returns this address, so it can be chained from a search or from a flight.
A moment during the flightat_timedate and time
Any moment between the flight taking off and landing. Leave empty for the flight happening right now. OpenSky keeps tracks for 30 days.

Outputs

callsigntext
The callsign flown for the whole track. Can be empty.
end_timetext
When the track ends (ISO 8601, UTC)
icao24text
The aircraft's ICAO 24-bit address in hex
start_timetext
When the track begins (ISO 8601, UTC)
waypoint_countnumber
How many waypoints the track has. Zero means OpenSky has no track for that aircraft at that moment.
waypointslist
The path flown, in order
Example output
{
  "callsign": "DLH9LF",
  "end_time": "2026-08-13T07:38:02Z",
  "icao24": "3c675a",
  "start_time": "2026-08-13T06:12:41Z",
  "waypoint_count": 1,
  "waypoints": [
    {
      "baro_altitude_ft": 400.0,
      "baro_altitude_m": 121.92,
      "latitude": 50.0264,
      "longitude": 8.5431,
      "on_ground": false,
      "time": "2026-08-13T06:12:41Z",
      "true_track": 249.8
    }
  ]
}

List an aircraft's flights

List the flights one aircraft made in a window of up to two days, with the airports it flew between. Flights are worked out overnight, so the most recent day may not be there yet.

Inputs

Aircraft addressicao24textRequired
The aircraft's ICAO 24-bit address: six hexadecimal characters, for example 3c675a. Every action here returns this address, so it can be chained from a search or from a flight.
Fromstart_timedate and timeRequired
The start of the window to look in.
Toend_timedate and timeRequired
The end of the window to look in. OpenSky answers this one for windows of up to two days.
How many flightslimitnumber
The most flights to return, earliest departure first. However many were cut, the full number that matched still comes back as Total matched.From 1 to 10000. Default: 100.

Outputs

countnumber
How many rows were returned
flightslist
The aircraft's flights, earliest departure first
total_matchednumber
How many matched before the limit was applied
Example output
{
  "count": 1,
  "flights": [
    {
      "arrival_airport": "EGLL",
      "arrival_airport_altitude_m": 122.0,
      "arrival_airport_distance_m": 2380.0,
      "arrival_time": "2026-08-13T07:38:02Z",
      "callsign": "DLH9LF",
      "departure_airport": "EDDF",
      "departure_airport_altitude_m": 91.0,
      "departure_airport_distance_m": 1420.0,
      "departure_time": "2026-08-13T06:12:41Z",
      "duration_minutes": 85.3,
      "icao24": "3c675a",
      "other_arrival_airport_candidates": 0,
      "other_departure_airport_candidates": 0
    }
  ],
  "total_matched": 1
}

List arrivals at an airport

List the flights that landed at an airport during a window of up to two days, with where each one came from. Arrivals are worked out overnight, so the most recent day may not be there yet.

Inputs

AirportairporttextRequired
The airport's four-letter ICAO code, for example EDDF for Frankfurt. IATA codes such as FRA are not accepted. Flights that landed here are returned.
Fromstart_timedate and timeRequired
The start of the window to look in.
Toend_timedate and timeRequired
The end of the window to look in. OpenSky answers this one for windows of up to two days.
How many flightslimitnumber
The most flights to return, earliest departure first. However many were cut, the full number that matched still comes back as Total matched.From 1 to 10000. Default: 100.

Outputs

countnumber
How many rows were returned
flightslist
The flights that landed there, earliest departure first
total_matchednumber
How many matched before the limit was applied
Example output
{
  "count": 1,
  "flights": [
    {
      "arrival_airport": "EGLL",
      "arrival_airport_altitude_m": 122.0,
      "arrival_airport_distance_m": 2380.0,
      "arrival_time": "2026-08-13T07:38:02Z",
      "callsign": "DLH9LF",
      "departure_airport": "EDDF",
      "departure_airport_altitude_m": 91.0,
      "departure_airport_distance_m": 1420.0,
      "departure_time": "2026-08-13T06:12:41Z",
      "duration_minutes": 85.3,
      "icao24": "3c675a",
      "other_arrival_airport_candidates": 0,
      "other_departure_airport_candidates": 0
    }
  ],
  "total_matched": 1
}

List departures from an airport

List the flights that left an airport during a window of up to two days, with where each one went. Departures are worked out overnight, so the most recent day may not be there yet.

Inputs

AirportairporttextRequired
The airport's four-letter ICAO code, for example EDDF for Frankfurt. IATA codes such as FRA are not accepted. Flights that took off from here are returned.
Fromstart_timedate and timeRequired
The start of the window to look in.
Toend_timedate and timeRequired
The end of the window to look in. OpenSky answers this one for windows of up to two days.
How many flightslimitnumber
The most flights to return, earliest departure first. However many were cut, the full number that matched still comes back as Total matched.From 1 to 10000. Default: 100.

Outputs

countnumber
How many rows were returned
flightslist
The flights that left there, earliest departure first
total_matchednumber
How many matched before the limit was applied
Example output
{
  "count": 1,
  "flights": [
    {
      "arrival_airport": "EGLL",
      "arrival_airport_altitude_m": 122.0,
      "arrival_airport_distance_m": 2380.0,
      "arrival_time": "2026-08-13T07:38:02Z",
      "callsign": "DLH9LF",
      "departure_airport": "EDDF",
      "departure_airport_altitude_m": 91.0,
      "departure_airport_distance_m": 1420.0,
      "departure_time": "2026-08-13T06:12:41Z",
      "duration_minutes": 85.3,
      "icao24": "3c675a",
      "other_arrival_airport_candidates": 0,
      "other_departure_airport_candidates": 0
    }
  ],
  "total_matched": 1
}

List flights in a time window

List every flight the whole network saw in a window of up to two hours, each with its estimated departure and arrival airports. Flights are worked out overnight, so ask for a window that has already been processed rather than the last few hours.

Inputs

Fromstart_timedate and timeRequired
The start of the window to look in.
Toend_timedate and timeRequired
The end of the window to look in. OpenSky answers this one for windows of up to two hours.
How many flightslimitnumber
The most flights to return, earliest departure first. However many were cut, the full number that matched still comes back as Total matched.From 1 to 10000. Default: 100.

Outputs

countnumber
How many rows were returned
flightslist
The flights that finished in the window, earliest departure first
total_matchednumber
How many matched before the limit was applied
Example output
{
  "count": 1,
  "flights": [
    {
      "arrival_airport": "EGLL",
      "arrival_airport_altitude_m": 122.0,
      "arrival_airport_distance_m": 2380.0,
      "arrival_time": "2026-08-13T07:38:02Z",
      "callsign": "DLH9LF",
      "departure_airport": "EDDF",
      "departure_airport_altitude_m": 91.0,
      "departure_airport_distance_m": 1420.0,
      "departure_time": "2026-08-13T06:12:41Z",
      "duration_minutes": 85.3,
      "icao24": "3c675a",
      "other_arrival_airport_candidates": 0,
      "other_departure_airport_candidates": 0
    }
  ],
  "total_matched": 1
}

On this page