#ads-b #aviation #adsbx #adsbexchange #planetracking


Library for parsing the ADS-B Exchange API JSON

20 releases (major breaking)

15.0.0 Oct 22, 2023
14.0.0 Apr 24, 2023
13.1.0 Apr 23, 2023
12.0.0 Jul 23, 2022
0.1.0 Feb 24, 2021

#2 in #aviation

Download history 8/week @ 2023-07-19 7/week @ 2023-07-26 5/week @ 2023-08-02 11/week @ 2023-08-09 25/week @ 2023-08-16 41/week @ 2023-08-23 2/week @ 2023-08-30 26/week @ 2023-09-06 3/week @ 2023-09-13 4/week @ 2023-09-20 4/week @ 2023-09-27 4/week @ 2023-10-04 5/week @ 2023-10-11 29/week @ 2023-10-18 34/week @ 2023-10-25 15/week @ 2023-11-01

83 downloads per month

MIT license

639 lines

pipeline status


This is a Rust library for parsing the JSON returned by the ADS-B Exchange API. It currently supports version 2 of the API.

Goals & thoughts

The goal of this library is to be a fast, type-safe interface to all the data returned by both v1 and v2 of the ADS-B Exchange API.

The ADS-B JSON format evolves pretty continuously, not always in a backwards compatible way. Currently I prefer to use this library in a mode where it errors out if it even sees an unexpected field in the JSON, because it helps highlight those changes when they occur, but that makes more sense for me, as a developer of the library than it probably does for users. I'm not sure serde offers a way to choose at runtime whether to turn off those strict checks.


Alpha, unstable. Handles all of v2 of the ADS-B Exchange API. Does not handle v1 at all.

Currently parses about 250,000-300,000 aircraft objects per second.



cargo build

Build examples in release mode:

cargo build --release --examples fetch

Run unit and integration tests:

cargo test

Run example code:

ADSBX_API_KEY=xxx cargo run --example fetch -- --url https://adsbexchange.com/api/aircraft/v2/all


Got 3734 aircraft.
Aircraft {
    adsb_version: None,
    aircraft_type: Some(
    baro_rate: Some(
    barometric_altitude: Some(
    calc_track: None,
    call_sign: Some(
        "NKS907  ",

Run benchmarks:

cargo bench


~64K SLoC