API Documentation
RESTful API for real-time aircraft positions with enrichment from public records, community data, and proprietary inference models.
Authentication
API access is automatic for active feeders — authenticated by IP. No key needed.
curl https://adsbiq.com/api/v2/all
Not a feeder? Install in 60 seconds to get access.
Endpoints
/api/v2/all
Full aircraft snapshot — all currently tracked aircraft.
/api/v2/hex/{hex}
Single aircraft by ICAO 24-bit hex (e.g., ad5d5c).
/api/v2/reg/{reg}
Aircraft by registration (e.g., N960NK).
/api/v2/type/{type}
Aircraft by ICAO type designator (e.g., B738, A20N).
/api/v2/callsign/{callsign}
Aircraft by callsign (e.g., NKS3205).
/api/v2/lat/{lat}/lon/{lon}/dist/{nm}
Aircraft within radius (nautical miles). Example: /api/v2/lat/26.68/lon/-80.10/dist/50
/api/v2/squawk/{code}
Aircraft by squawk code (e.g., 7700).
/api/v2/signal
Real-time RSSI signal stats (no auth required). Returns avg, median, p10, p90, aircraft count.
/api/v2/signal/history
Last 5 minutes of signal readings (2s intervals, ~150 points). For chart priming.
/api/v2/stats
Lightweight network stats (no auth). Returns aircraft_count and messages.
/api/v2/history?date=YYYY-MM-DD&hour=HH
Presigned S3 download URLs for historical Parquet archives. Platinum tier only. URLs expire after 1 hour. hour is optional (0-23); omit for full day.
Response Format
{
"now": 1774187176.0,
"messages": 6505606,
"total": 51,
"ctime": 1774187176.3,
"ptime": 1774187175.9,
"ac": [
{
"hex": "ad5d5c",
"type": "adsb_icao",
"flight": "NKS3205 ",
"category": "A3",
"squawk": "1770",
"emergency": "none",
"lat": 26.224091,
"lon": -80.960739,
"alt_baro": 33350,
"alt_geom": 34725,
"baro_rate": 1472,
"geom_rate": 1504,
"gs": 457.4,
"ias": 277,
"tas": 458,
"mach": 0.776,
"track": 2.26,
"track_rate": 0.0,
"roll": -0.7,
"mag_heading": 5.27,
"true_heading": 358.36,
"nav_qnh": 1012.8,
"nav_altitude_mcp": 35008,
"oat": -44,
"tat": -16,
"rssi": -23.1,
"messages": 1140,
"seen": 0.3,
"seen_pos": 0.98,
"r": "N960NK",
"route_origin": "FLL",
"route_dest": "MCI",
"enrichment": {
"reg": "N960NK",
"msn": "11002",
"manufacturer": "Airbus",
"model": "A320-271N",
"icao_type": "A20N",
"engine": "PW PW1100G",
"engine_count": 2,
"engine_cat": "Turbo-fan",
"aircraft_cat": "Fixed Wing Multi Engine",
"year_built": 2022,
"operator": "Spirit Airlines",
"owner": "UMB BANK N A TRUSTEE",
"country": "US",
"is_ga": false,
"reg_status": "V",
"data_conflict": false
}
}
]
}
Envelope
| Field | Description |
|---|---|
now | Unix epoch (UTC, 1dp) when readsb wrote this snapshot (feeder Pi clock) |
messages | Total ADS-B messages received since receiver start |
total | Number of aircraft in this response |
ctime | Unix epoch (UTC, 1dp) when the API server generated this response |
ptime | Unix epoch (UTC, 1dp) when the cache daemon last processed the data |
ADS-B Position & Flight Data
| Field | Type | Description |
|---|---|---|
hex | string | ICAO 24-bit address (lowercase hex) |
type | string | Source: adsb_icao, mlat, tisb, adsr |
flight | string | Callsign (8 chars, space-padded) |
r | string | Registration (e.g., N960NK) |
lat/lon | float | Position (WGS84 decimal degrees) |
alt_baro | int | Barometric altitude (feet) or "ground" |
alt_geom | int | Geometric (GPS) altitude (feet) |
gs | float | Ground speed (knots) |
ias | int | Indicated airspeed (knots) |
tas | int | True airspeed (knots) |
mach | float | Mach number |
track | float | Track angle (degrees, 0=north) |
track_rate | float | Rate of turn (degrees/second) |
calc_track | float | Calculated track from position history |
roll | float | Roll angle (degrees, negative=left) |
mag_heading | float | Magnetic heading (degrees) |
true_heading | float | True heading (degrees) |
baro_rate | int | Barometric vertical rate (ft/min) |
geom_rate | int | Geometric vertical rate (ft/min) |
seen | float | Seconds since last message from this aircraft |
seen_pos | float | Seconds since last position update |
rssi | float | Signal strength (dBFS, typically -1 to -35) |
messages | int | Total messages received from this aircraft |
Navigation & Avionics
| Field | Type | Description |
|---|---|---|
squawk | string | Transponder squawk code |
emergency | string | Emergency status (none, general, downed, etc.) |
category | string | Emitter category (A1-A7, B1-B7, C1-C3) |
nav_qnh | float | Altimeter setting (hPa/mbar) |
nav_altitude_mcp | int | Selected altitude — MCP/FCU (feet) |
nav_altitude_fms | int | Selected altitude — FMS (feet) |
nav_heading | float | Selected heading (degrees) |
nav_modes | array | Active nav modes: autopilot, vnav, lnav, tcas, althold, approach |
alert | int | Alert flag (0 or 1) |
spi | int | Special Position Identification (0 or 1) |
nic | int | Navigation Integrity Category (0-11) |
rc | int | Containment radius (meters) |
nic_baro | int | NIC supplement for baro altitude |
nac_p | int | Navigation Accuracy — Position |
nac_v | int | Navigation Accuracy — Velocity |
sil | int | Source Integrity Level |
sil_type | string | SIL supplement: perhour or persample |
gva | int | Geometric Vertical Accuracy |
sda | int | System Design Assurance |
version | int | ADS-B version (0, 1, or 2) |
dbFlags | int | Bitmask: 1=military, 2=interesting, 4=PIA, 8=LADD |
mlat | array | Fields derived from multilateration |
tisb | array | Fields derived from TIS-B |
Meteorological (from aircraft avionics — BDS 4,4 / 4,5)
| Field | Type | Description |
|---|---|---|
oat | float | Outside air temperature (°C) |
tat | float | Total air temperature (°C) |
wd | int | Wind direction (degrees) |
ws | int | Wind speed (knots) |
Route (from TFMS flight plans)
| Field | Type | Description |
|---|---|---|
route_origin | string | Origin airport IATA code |
route_dest | string | Destination airport IATA code |
Enrichment (ADSBiq aircraft intelligence layer)
The enrichment object is present when we have data. Derived from public records, community data, and inference models. Pass ?include_sources=true to see provenance.
| Field | Type | Description |
|---|---|---|
reg | string | Registration from database |
msn | string | Manufacturer Serial Number |
manufacturer | string | Airframe manufacturer (Boeing, Airbus, Embraer, etc.) |
model | string | Full model (e.g., A320-271N, 737-8) |
icao_type | string | ICAO type designator (e.g., A20N, B738) |
engine | string | Engine type and variant (e.g., PW PW1100G) |
engine_count | int | Number of engines |
engine_cat | string | Engine category (Turbo-fan, Turbo-prop, Piston) |
aircraft_cat | string | Aircraft category (Fixed Wing Multi Engine, Rotorcraft, etc.) |
year_built | int | Year of manufacture |
build_date | string | Build date (YYYY-MM-DD) when available |
operator | string | Current operating airline/entity |
owner | string | Registered owner or lessor |
country | string | Country of registration (ISO 2-letter) |
is_ga | bool | General aviation flag |
reg_status | string | Registration status (V=Valid, D=Deregistered, etc.) |
data_conflict | bool | True if sources disagree on key fields |
_sources | array | Data provenance (requires ?include_sources=true) |
Compression
Send Accept-Encoding: gzip for ~80% smaller payloads.
curl -H "Accept-Encoding: gzip" --compressed https://adsbiq.com/api/v2/all
Rate Limits
API is exclusively for active feeders.
- Active feeders: 60 req burst / 10 per minute sustained
- Non-feeders: 403. Become a feeder to get access.
Exceeding limits returns 429. Non-feeders get 403.
Historical Data (S3 Parquet Archive)
All aircraft observations are archived as compressed Parquet files at 15-minute intervals in S3. Each file contains deduplicated, timestamped observations with three precision clocks:
| Column | Description |
|---|---|
ts_aircraft | When the aircraft transmitted (derived: file_now - seen_pos). UTC ms precision. |
ts_received | Server's atomic-synced UTC clock at poll time (chrony/AWS NTP). |
ts_readsb | Feeder's clock when it wrote the snapshot (may drift). |
Use /api/v2/history?date=2026-03-22&hour=14 to get time-limited download URLs. Each URL expires after 1 hour.
curl "https://adsbiq.com/api/v2/history?date=2026-03-22&hour=14"
Historical API access is available to Platinum tier feeders. Start feeding to begin earning tier progress.