---
name: adsbiq-open-data-ingestion
description: "How to get ADSB IQ Daily Aircraft Data data into a pandas DataFrame and Parquet: access, the request, the format, limits, quirks and terms."
---

# Load one ADSB IQ aircraft day into pandas and Parquet

Source entry: https://signal-lab-jet.vercel.app/datasets/adsbiq-open-data
Provider: https://adsbiq.com/data
Checked against the provider's documentation: 2026-11-01

## Access
- No account, token or API key for GitHub release assets.
- This example uses the smallest published day, 2026-06-28, a 13 MB compressed Parquet file.

## Request
```bash
curl -LO 'https://github.com/Sky-Power-Services/adsbiq-data/releases/download/2026-06/aircraft_diffs_2026-06-28.parquet'
```

## Format
Zstd Parquet of timestamped sparse aircraft state diffs with identity, position, motion, quality, snapshot and removal fields.

## Load into pandas and Parquet
Needs Python 3 with requests, pandas and pyarrow.
```python
"""One ADSB IQ aircraft day, core columns -> pandas -> Parquet. No key."""
import io
import requests
import pandas as pd

URL = "https://github.com/Sky-Power-Services/adsbiq-data/releases/download/2026-06/aircraft_diffs_2026-06-28.parquet"
r = requests.get(URL, timeout=120)
r.raise_for_status()
df = pd.read_parquet(io.BytesIO(r.content), columns=["ts", "hex", "is_snapshot", "is_removed", "flight", "lat", "lon", "alt_baro", "gs", "track"])
df.to_parquet("adsbiq_2026_06_28_core.parquet", index=False)
times = pd.to_datetime(df["ts"], utc=True)
print(len(df), "state rows", df["hex"].nunique(), "aircraft", times.min().isoformat(), "to", times.max().isoformat())
```
Run by us on 2026-11-01 (python 3.13.5 | pandas 3.1.0 | pyarrow 26.0.0 | requests 2.34.2). Result: 1384160 state rows 7622 aircraft 2026-06-28T00:00:00.744000+00:00 to 2026-06-28T23:59:59.592000+00:00

## Limits
- Daily-file rate limit: Not stated; the data page says no rate limit.
- Recent daily files are roughly 0.5-0.6 GB compressed and contain tens of millions of rows.
- One GitHub release holds the assets for each UTC month.

## Quirks
- Non-snapshot rows populate only changed fields; forward-fill within each hex after sorting by ts.
- is_removed marks an aircraft leaving coverage and should terminate carried state until a later snapshot.
- Files use adaptive thinning rather than raw one-second observations, and straight cruise gets a heartbeat at least every 30 seconds.

## Terms and attribution
- The database is ODbL 1.0.
- Use the provider's stated attribution: ADSBiq feeder network.
- Terms page: https://github.com/Sky-Power-Services/adsbiq-data/blob/main/LICENSE

## Sources
- https://adsbiq.com/data: "Open to all: no account, no token, no rate limit."
- https://adsbiq.com/data: "Cadence: daily, ~06:10 UTC (after the prior day finalizes)."
- https://github.com/Sky-Power-Services/adsbiq-data: "Rows are time-ordered state changes, not full snapshots every tick"
- https://github.com/Sky-Power-Services/adsbiq-data: "Open Database License (ODbL-1.0). Attribution: "ADSBiq feeder network"."

## Help improve this skill
Missing a source, or see something to improve? Call the MCP tool suggest_source or feedback (or POST /api/suggest or /api/feedback). Reviewed ideas: https://signal-lab-jet.vercel.app/agent-suggestions

Information for educational purposes only. Free tiers, limits and licenses belong to the providers and may change; check the provider's own terms before using the data.
