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 19 Aug 2026
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 19 Aug 2026, 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.
Alternatives to OpenSky Network API
If OpenSky Network does not fit, these transport & vehicle apis cover similar ground. Every one was called before publishing, and each links to its own reference page with a working curl command and the response it returned.
| API | What it does | Auth | CORS | Last verified |
|---|---|---|---|---|
| NHTSA vPIC | Free NHTSA vPIC API with no key: decode any VIN, list vehicle makes and models, and get manufacturer and specification data. Tested curl example. | No key | No | 19 Aug 2026 |
| NHTSA Recalls | Free NHTSA recalls API with no key: look up open safety recalls by make, model and year, with remedy details and Park It warnings. Tested curl example. | No key | No | 19 Aug 2026 |
| Transport for London | Free Transport for London API: live tube line status, arrivals, journey planning, bike hire and stop points across London. No key for light use. Tested example. | No key | Yes | 19 Aug 2026 |
| Jolpica F1 (Ergast) | Free Formula 1 API with no key: race results, driver and constructor standings, qualifying, lap times and pit stops from 1950 onwards. Tested curl example. | No key | No | 19 Aug 2026 |
| OpenVan Fuel Prices | Free global fuel price API with no key: petrol, diesel, LPG and CNG prices for over 120 countries with local currency, weekly change and named sources. Tested example included. | No key | Yes | 21 Aug 2026 |
| Overpass (OpenStreetMap) | Free Overpass API with no key: query OpenStreetMap for any feature — shops, roads, amenities — by tag and bounding box. Immensely powerful. Tested example. | No key | No | 20 Aug 2026 |
OpenSky Network is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 19 Aug 2026; always check the official documentation before relying on this API in production, as terms and limits can change.