OpenSky Network Flights API
Endpoints for retrieving flight records including arrivals, departures, and flights by aircraft.
Endpoints for retrieving flight records including arrivals, departures, and flights by aircraft.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/opensky:opensky-flights-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: OpenSky Network REST Flights API
description: REST API for retrieving real-time and historical ADS-B aircraft state vectors, flight tracks, and airport arrival and departure data from the OpenSky Network crowd-sourced receiver network. Intended for non-commercial research and educational use.
version: 1.0.0
termsOfService: https://opensky-network.org/about/terms-of-use
contact:
name: OpenSky Network
email: contact@opensky-network.org
url: https://opensky-network.org/about/contact
license:
name: OpenSky Network Terms of Use
url: https://opensky-network.org/about/terms-of-use
servers:
- url: https://opensky-network.org/api
description: OpenSky Network REST API
security:
- {}
- bearerAuth: []
tags:
- name: Flights
description: Endpoints for retrieving flight records including arrivals, departures, and flights by aircraft.
paths:
/flights/all:
get:
operationId: getFlightsAll
summary: Get flights in time interval
description: Retrieve flights for a given time interval. The time interval must not exceed 2 hours. Returns all flights that were seen within the time interval.
tags:
- Flights
parameters:
- name: begin
in: query
required: true
schema:
type: integer
description: Start of time interval to retrieve flights for as Unix time (seconds since epoch).
- name: end
in: query
required: true
schema:
type: integer
description: End of time interval to retrieve flights for as Unix time (seconds since epoch). Must be within 2 hours of begin.
responses:
'200':
description: Successful response with an array of flights.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/FlightObject'
'400':
description: Bad request. The time interval may exceed the 2-hour maximum.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: No flights found for the given time interval.
content: {}
'429':
description: Too many requests. Credit limit exhausted.
headers:
X-Rate-Limit-Retry-After-Seconds:
schema:
type: integer
description: Number of seconds to wait before retrying.
/flights/aircraft:
get:
operationId: getFlightsByAircraft
summary: Get flights by aircraft
description: Retrieve flights for a particular aircraft within a given time interval. The time interval must not exceed 2 days. Returns all flights for the specified aircraft in the given time range.
tags:
- Flights
parameters:
- name: icao24
in: query
required: true
schema:
type: string
description: Unique ICAO 24-bit address of the transponder in lower-case hex string representation (e.g. 3c6444).
- name: begin
in: query
required: true
schema:
type: integer
description: Start of time interval to retrieve flights for as Unix time (seconds since epoch).
- name: end
in: query
required: true
schema:
type: integer
description: End of time interval to retrieve flights for as Unix time (seconds since epoch). Must be within 2 days of begin.
responses:
'200':
description: Successful response with an array of flights for the specified aircraft.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/FlightObject'
'400':
description: Bad request. The time interval may exceed the 2-day maximum.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: No flights found for the given aircraft and time interval.
content: {}
'429':
description: Too many requests. Credit limit exhausted.
headers:
X-Rate-Limit-Retry-After-Seconds:
schema:
type: integer
description: Number of seconds to wait before retrying.
/flights/arrival:
get:
operationId: getFlightsByArrivalAirport
summary: Get arrivals by airport
description: Retrieve flights arriving at a specific airport within a given time interval. The time interval must not exceed 2 days. Returns all flights that arrived at the specified airport in the given time range.
tags:
- Flights
parameters:
- name: airport
in: query
required: true
schema:
type: string
description: ICAO identifier for the airport (e.g. EDDF for Frankfurt Airport).
- name: begin
in: query
required: true
schema:
type: integer
description: Start of time interval to retrieve flights for as Unix time (seconds since epoch).
- name: end
in: query
required: true
schema:
type: integer
description: End of time interval to retrieve flights for as Unix time (seconds since epoch). Must be within 2 days of begin.
responses:
'200':
description: Successful response with an array of arrival flights.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/FlightObject'
'400':
description: Bad request. The time interval may exceed the 2-day maximum.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: No arrivals found for the given airport and time interval.
content: {}
'429':
description: Too many requests. Credit limit exhausted.
headers:
X-Rate-Limit-Retry-After-Seconds:
schema:
type: integer
description: Number of seconds to wait before retrying.
/flights/departure:
get:
operationId: getFlightsByDepartureAirport
summary: Get departures by airport
description: Retrieve flights departing from a specific airport within a given time interval. The time interval should cover more than 2 days of UTC boundaries for best results. Returns all flights that departed from the specified airport in the given time range.
tags:
- Flights
parameters:
- name: airport
in: query
required: true
schema:
type: string
description: ICAO identifier for the airport (typically uppercase, e.g. EDDF for Frankfurt Airport).
- name: begin
in: query
required: true
schema:
type: integer
description: Start of time interval to retrieve flights for as Unix time (seconds since epoch).
- name: end
in: query
required: true
schema:
type: integer
description: End of time interval to retrieve flights for as Unix time (seconds since epoch).
responses:
'200':
description: Successful response with an array of departure flights.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/FlightObject'
'400':
description: Bad request. Invalid parameters.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: No departures found for the given airport and time interval.
content: {}
'429':
description: Too many requests. Credit limit exhausted.
headers:
X-Rate-Limit-Retry-After-Seconds:
schema:
type: integer
description: Number of seconds to wait before retrying.
components:
schemas:
FlightObject:
type: object
description: A flight record representing a single flight detected by the OpenSky Network.
properties:
icao24:
type: string
description: Unique ICAO 24-bit address of the transponder in hex string representation. All letters are lower case.
example: 3c6444
firstSeen:
type: integer
description: Estimated time of departure for the flight as Unix time (seconds since epoch).
example: 1517220000
estDepartureAirport:
type: string
nullable: true
description: ICAO code of the estimated departure airport. Can be null if the airport could not be identified.
example: EDDF
lastSeen:
type: integer
description: Estimated time of arrival for the flight as Unix time (seconds since epoch).
example: 1517223600
estArrivalAirport:
type: string
nullable: true
description: ICAO code of the estimated arrival airport. Can be null if the airport could not be identified.
example: EGLL
callsign:
type: string
nullable: true
description: Callsign of the vehicle (8 chars). Can be null if no callsign has been received. If the vehicle transmits multiple callsigns during the flight, the one seen most frequently is used.
example: 'DLH400 '
estDepartureAirportHorizDistance:
type: integer
nullable: true
description: Horizontal distance of the last received airborne position to the estimated departure airport in meters.
example: 1250
estDepartureAirportVertDistance:
type: integer
nullable: true
description: Vertical distance of the last received airborne position to the estimated departure airport in meters.
example: 304
estArrivalAirportHorizDistance:
type: integer
nullable: true
description: Horizontal distance of the last received airborne position to the estimated arrival airport in meters.
example: 1800
estArrivalAirportVertDistance:
type: integer
nullable: true
description: Vertical distance of the last received airborne position to the estimated arrival airport in meters.
example: 152
departureAirportCandidatesCount:
type: integer
description: Number of other possible departure airports in short distance to estDepartureAirport.
example: 0
arrivalAirportCandidatesCount:
type: integer
description: Number of other possible arrival airports in short distance to estArrivalAirport.
example: 1
Error:
type: object
properties:
message:
type: string
description: Human-readable error message.
securitySchemes:
bearerAuth:
type: http
scheme: bearer
bearerFormat: JWT
description: OAuth2 client credentials Bearer token obtained from https://auth.opensky-network.org/auth/realms/opensky-network/protocol/openid-connect/token. Tokens expire after 30 minutes.
externalDocs:
description: OpenSky Network REST API Documentation
url: https://openskynetwork.github.io/opensky-api/rest.html