OpenSky Network API
Free OpenSky Network API: live aircraft positions, altitude, velocity and callsigns worldwide from crowd-sourced ADS-B receivers. Tested curl example.
Endpoint tested and returned HTTP 200 on 2026-08-19
What is the OpenSky Network API?
The OpenSky Network API provides free live air traffic data — aircraft positions, altitude, velocity, heading and callsigns — collected from a community network of ADS-B receivers worldwide.
OpenSky is a research-oriented, community-run flight tracking network. Anonymous users can query live aircraft state vectors globally, filtered to a bounding box, which is enough to build a working live flight map.
The response format is unusual and catches people out: `states` is an array of arrays, not objects. Each aircraft is a positional array where index 0 is the ICAO24 address, 1 the callsign, 5 longitude, 6 latitude, 7 barometric altitude and so on. You must index by position against the documented field order.
Quick facts
- Base URL
https://opensky-network.org/api- Authentication
- Anonymous access works with tight limits. A free account raises the allowance considerably.
- Rate limit
- Anonymous users get roughly 400 credits per day and 10-second resolution; registered users get more.
- Pricing
- Free for non-commercial and research use. Commercial use requires a separate agreement.
- CORS
- Not enabled — call it from your server
- Official docs
- Read the docs
How to use the OpenSky Network API
Every request below was executed against the live API on 2026-08-19, and the response shown is the real body it returned — not an illustration.
1. Live aircraft in a bounding box
GET https://opensky-network.org/api/states/all?lamin=45.8&lomin=5.9&lamax=47.8&lomax=10.5
curl 'https://opensky-network.org/api/states/all?lamin=45.8&lomin=5.9&lamax=47.8&lomax=10.5'const res = await fetch("https://opensky-network.org/api/states/all?lamin=45.8&lomin=5.9&lamax=47.8&lomax=10.5");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);import requests
res = requests.get("https://opensky-network.org/api/states/all?lamin=45.8&lomin=5.9&lamax=47.8&lomax=10.5", timeout=20)
res.raise_for_status()
print(res.json()){
"time": 1787171296,
"states": [
[
"3455d8",
"VOE68PJ ",
"Spain",
1787171295,
1787171295,
6.3517,
45.9715,
9448.8,
false,
198.45,
218.47,
0,
null,
9906,
"1000",
false,
0
],
[
"440181",
"EJU16RZ ",
"Austria",
1787171295,
1787171295,
8.6092,
45.967,
7444.74,
false,
189.52,
142.94,
-12.68,
null,
7856.22,
"1000",
false,
0
],
[
"300a86",
"ITY311 ",
"Italy",
1787171295,
1787171295,
8.6089,
45.8202,
6362.7,
false,
201.48,
146.88,
-10.73,
null,
6728.46,
"1000",
false,
0
],
[
"3847ff",
"M01 ",
"France",
1787171294,
1787171295,
7.5266,
47.6003,
null,
true,
3.34,
241.88,
null,
null,
null,
null,
false,
0
],
[
"44cdd1",
"BEL6KU ",
"Belgium",
1787171295,
1787171295,
8.0221,
47.6174,
11887.2,
false,
237.12,
338.89,
0,
null,
12382.5,
"1000",
false,
0
],
[
"4079a9",
"TOM543 ",
"United Kingdom",
1787171295,
1787171295,
9.0246,
46.0529,
11582.4,
false,
226.91,
312.15,
0,
null,
12108.18,
"2743",
false,
0
],
[
"406752",Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
lamin / lamax | float | Optional | Minimum and maximum latitude of the bounding box. 45.8 |
lomin / lomax | float | Optional | Minimum and maximum longitude. 5.9 |
time | integer | Optional | Unix timestamp for a historical snapshot; 0 or omitted for now. 0 |
icao24 | string | Optional | Filter to one aircraft by its ICAO 24-bit address. 3455d8 |
Response fields
timeinteger- Unix timestamp of the snapshot.
statesarray- Array of ARRAYS, one per aircraft — not objects. Index by position.
states[][0]string- ICAO24 transponder address, the unique aircraft id.
states[][1]string- Callsign, space-padded — trim it before display.
states[][5] / [6]float- Longitude and latitude. Note longitude comes first.
states[][7]float- Barometric altitude in metres, or null when on the ground.
states[][9]float- Ground velocity in metres per second.
What you can build with the OpenSky Network API
- Build a live flight tracking map for a region
- Monitor aircraft over a specific airport or area
- Analyse air traffic density for research
- Trigger notifications when a specific aircraft is airborne
Common errors and how to fix them
429
Anonymous credit allowance exhausted.
Fix: Register a free account for a higher allowance, and always pass a bounding box rather than querying globally.
Reading states as objects fails
Each state is a positional array, not an object.
Fix: Index by position against the documented field order — states[i][6] is latitude, not a named property.
null values in a state array
Some fields are unavailable for some aircraft.
Fix: Null-check altitude and velocity before plotting; ground vehicles often report nulls.
OpenSky Network API — frequently asked questions
Is OpenSky's flight tracking API free?
Yes for non-commercial and research use. Anonymous access works with tight limits; a free account raises the allowance. Commercial use needs a separate agreement.
Why is the response an array of arrays?
OpenSky returns positional state vectors rather than objects, to keep payloads small. Index by position — 0 is ICAO24, 1 callsign, 5 longitude, 6 latitude, 7 altitude.
How do I avoid hitting the rate limit?
Always pass a bounding box with lamin/lamax/lomin/lomax rather than requesting global state, and poll no more often than every 10 seconds.
Does it cover every aircraft?
No. Coverage depends on community ADS-B receivers, so it is excellent over Europe and North America and patchy over oceans and remote regions. Military aircraft are often absent.
Tools that pair with this API
JSON Formatter
Format, beautify and minify JSON online with 2-space, 4-space or tab indentation. Sort keys alphabetically and catch syntax errors instantly — free and private.
Unit Converter
Convert between units of length, weight, temperature, area, volume, speed, time and data storage instantly, with a swap button and common conversion tables.
OpenSky Network is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-19; always check the official documentation before relying on this API in production, as terms and limits can change.