Find an API

Search public APIs with auth details & Postman guides

← All APIs

OpenSky Network API

opensky-network.org · Data

Data No Auth Free & Open Aviation Flight Tracking Transport

Real-time and historical flight tracking data from 6,000+ sensors worldwide. 30+ trillion ADS-B messages. Free for non-commercial research. No API key required for basic access.

Authentication

No authentication requiredFree to use with no key needed.

Sample Requests

GET Get all live flights

Get all current aircraft positions worldwide.

https://opensky-network.org/api/states/all

Hover any highlighted part to learn what it does

curl -X GET "https://opensky-network.org/api/states/all"
import requests
response = requests.get(
    "https://opensky-network.org/api/states/all",
)
print(response.json())
const url = 'https://opensky-network.org/api/states/all';

const response = await fetch(url); 
const data = await response.json();
console.log(data);
package main

import (
	"fmt"
	"io"
	"net/http"
)

func main() {
	targetURL := "https://opensky-network.org/api/states/all"
	req, _ := http.NewRequest("GET", targetURL, nil)

	client := &http.Client{}
	resp, _ := client.Do(req)
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println(string(body))
}
require "net/http"
require "json"

uri = URI("https://opensky-network.org/api/states/all")

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"

req = Net::HTTP::Get.new(uri)

res = http.request(req)
puts JSON.parse(res.body)
<?php
$url = "https://opensky-network.org/api/states/all";
$opts = ["http" => [
    "method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));
GET Flights in bounding box

Get flights over Switzerland.

https://opensky-network.org/api/states/all?lamax=47.8229&lamin=45.8389&lomax=10.5226&lomin=5.9962

Hover any highlighted part to learn what it does

curl -X GET "https://opensky-network.org/api/states/all?lamax=47.8229&lamin=45.8389&lomax=10.5226&lomin=5.9962"
import requests
params = {
    "lamax": "47.8229",
    "lamin": "45.8389",
    "lomax": "10.5226",
    "lomin": "5.9962"
}
response = requests.get(
    "https://opensky-network.org/api/states/all",
    params=params,
)
print(response.json())
const url = new URL('https://opensky-network.org/api/states/all');
url.searchParams.set('lamax', '47.8229');
url.searchParams.set('lamin', '45.8389');
url.searchParams.set('lomax', '10.5226');
url.searchParams.set('lomin', '5.9962');

const response = await fetch(url); 
const data = await response.json();
console.log(data);
package main

import (
	"fmt"
	"io"
	"net/http"
	"net/url"
)

func main() {
	baseURL, _ := url.Parse("https://opensky-network.org/api/states/all")
	q := baseURL.Query()
	q.Set("lamax", "47.8229")
	q.Set("lamin", "45.8389")
	q.Set("lomax", "10.5226")
	q.Set("lomin", "5.9962")
	baseURL.RawQuery = q.Encode()
	targetURL := baseURL.String()
	req, _ := http.NewRequest("GET", targetURL, nil)

	client := &http.Client{}
	resp, _ := client.Do(req)
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println(string(body))
}
require "net/http"
require "json"

uri = URI("https://opensky-network.org/api/states/all")
uri.query = URI.encode_www_form({
  "lamax" => "47.8229",
  "lamin" => "45.8389",
  "lomax" => "10.5226",
  "lomin" => "5.9962"
})

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"

req = Net::HTTP::Get.new(uri)

res = http.request(req)
puts JSON.parse(res.body)
<?php
$url = "https://opensky-network.org/api/states/all?" . http_build_query([
    "lamax" => "47.8229",
    "lamin" => "45.8389",
    "lomax" => "10.5226",
    "lomin" => "5.9962"
]);
$opts = ["http" => [
    "method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));

Postman Setup Guide

Get Postman ↗
  1. No API key needed for basic use
  2. GET https://opensky-network.org/api/states/all — all live flights
  3. Each state vector: [icao24, callsign, origin_country, lon, lat, altitude, velocity, ...]
  4. Filter by bounding box: ?lamin=lat_min&lomin=lon_min&lamax=lat_max&lomax=lon_max
  5. Create a free account for higher daily limits

What can you build with OpenSky Network API?

OpenSky Network API is a Data API. Developers commonly use data APIs for:

  • enriching your app with third-party datasets
  • building data pipelines and ETL workflows
  • querying and searching large datasets
  • powering research, analysis, and reporting tools
  • syncing reference data into your own systems

No authentication required. This API is open — no signup or key needed. Ideal for quick prototypes and public-facing features. OpenSky Network API is free to use, making it a low-risk choice to experiment with.

New to APIs? Read our beginner's guide

Open documentation ↗