FlightByte vs AeroDataBox
Closer than the names suggest. AeroDataBox is a broad, inexpensive aviation catalogue with a push alert API attached. FlightByte is the alert. If a flight alert has to arrive, be trusted, and be acted on, the difference is in the delivery contract rather than the data.
In thirty seconds
subscription.completed; metadata carries your booking id.withLocation=true400 with the legsorigin selector; never a guess.AeroDataBox figures from its pricing page, Flight Alert API guide and OpenAPI specification, checked October 15, 2026. Plans change; if something here is out of date, tell us and we will fix it.
AeroDataBox pricing, free tier and API key
What each plan costs, what you get without paying, and how a key is issued, from AeroDataBox’s own pages on October 15, 2026. Three channels sell the same API at different prices: direct, RapidAPI and API.Market.
| Plan | Price | Included | Notes |
|---|---|---|---|
| Starter (direct) | $19 / month | 40,000 units | 5 requests a second, 180 days of history, commercial use |
| Growth (direct) | $99 / month | 400,000 units | 10 requests a second, 365 days of history, priority e-mail |
| Scale (direct) | $499 / month | 4,000,000 units | 20 requests a second, B2B sublicensing |
| Basic (marketplace) | Free on RapidAPI, 7-day trial on API.Market | 400 units | Non-commercial, attribution required |
| Pro (marketplace) | $7.50 API.Market, $8 RapidAPI | 5,000 units | 1 to 2 requests a second |
| Ultra (marketplace) | $37.50 API.Market, $40 RapidAPI | 50,000 units | 3 to 4 requests a second |
| Mega (marketplace) | $187.50 API.Market, $200 RapidAPI | 500,000 units | The only plan with priced overage, about $0.0004 a unit |
A single-day flight status call is 2 units and a date range is 6; on several plans a status call that returns a US flight plan counts double. Direct overage is listed as coming soon. Marketplace prices changed for new subscribers in September 2026, and API.Market also sells Pro 2 and Ultra 2.
AeroDataBox free tier
There is no free direct plan; a new account has none attached. The marketplace Basic plan carries 400 units, free on RapidAPI and a seven-day trial on API.Market. Since the September 2026 terms update it is non-commercial and needs attribution.
The other free route is feeding ADS-B data to AeroDataBox, which earns direct units that do not expire.
AeroDataBox API key: how to get one
- Create an account on aerodatabox.com and attach a direct plan.
- Create a key under API keys; it can be pinned to IP or CIDR ranges.
- Send it as the
X-Api-Keyheader toapi.aerodatabox.com.
Through a marketplace the key is the marketplace’s: X-RapidAPI-Key with X-RapidAPI-Host on RapidAPI, x-api-market-key on API.Market.
- Hobby, $9 / month
- 100 flights · 4,000 lookups
- Starter, $19 / month
- 500 flights · 20,000 lookups
- Growth, $49 / month
- 2,000 flights · 80,000 lookups
- Scale, $99 / month
- 5,000 flights · 200,000 lookups
- Free tier
- 3 flights a month, commercial use
- Getting a key: sign up
- free key on screen in a minute; paid plans by email
- Where the key goes
- x-api-key header
When AeroDataBox is the better choice
It covers far more of aviation than FlightByte does, and for three jobs it is the right pick.
You need the catalogue
Airports by text, location or IP; aircraft by tail number with a photo; airline fleets; runway data; airport delay statistics. FlightByte only carries the airport data that belongs to a flight.
You need history or a schedule
Flight history and schedules by date range, airport departures and arrivals for any window. FlightByte keeps a live window and a delivery log for the flights it watched.
You count units, not flights
At $19 for 40,000 units and two units a call, a status call costs about a tenth of a cent. If you are building a board for a whole airport, that is the right price model.
When FlightByte is
When a particular booking depends on a particular flight, and something in your product has to happen when it changes.
A subscription is a booking
One flight, one date, your metadata attached. It activates when the flight appears, ends itself when the flight lands, and never sends you tomorrow’s instance of the same number.
Delivery you can defend
Signed with a timestamp, retried eight times with backoff, suspended after twenty straight failures, every attempt logged with status and latency. When a driver says the message never came, you can look.
Changes, not snapshots
Twenty-three typed events with from, to, delta and a sentence. Branch on delay.increased or arrival.gate.changed instead of diffing two flight objects.
What watching 500 flights a month costs, and what is left to build
Using the Flight Alert API rather than polling, which is the fair comparison. A subscription per flight number, a few dozen notifications per flight, one credit each.
- Starter plan
- $19
- 500 flights, a few dozen alerts each
- ≈ 10–20k units, inside Starter
- Neighbouring days of the same number
- billed too
- Plus
- date filter, dedupe, diff, retries, sender check, log
- 500 watched flights
- 500 line items
- Starter covers all 500
- $19
- or Growth (2,000) for headroom
- $49
- Plus
- nothing; delivery is the product
At 500 flights the two invoices are the same, $19. The difference is the right-hand column of the AeroDataBox list: the pieces you would otherwise write, and keep running. See pricing.
Moving over
The models are cousins: both split airport, times and aircraft per side, both give UTC and local. FlightByte keeps estimated and actual apart instead of one revisedTime, separates gate and runway, and adds a phase you can branch on.
| AeroDataBox | FlightByte | Note |
|---|---|---|
number | carrier.iata + flightNumber | “KL 1395” becomes KL and 1395; flightKey adds the date and the leg. |
status | status.phase | See the status map below. |
codeshareStatus | operatedBy, codeshares[] | The operating carrier and the list of marketed numbers. |
departure.scheduledTime.utc | departure.times.scheduledGate.utc | Also .local and .timezone. |
departure.revisedTime | departure.times.estimatedGate or actualGate | FlightByte tells you which one it is. |
departure.predictedTime | departure.bestTimeUtc | The best time known right now, not a prediction. |
departure.runwayTime | departure.times.estimatedRunway or actualRunway | |
departure.terminal | departure.terminal | Same on arrival. |
departure.gate | departure.gate | Same on arrival. |
arrival.baggageBelt | arrival.baggage | And an arrival.baggage.changed event when it is assigned. |
departure.checkInDesk | — | Not carried. |
departure.airport.iata | departure.airport.iata | Plus icao, name, city, timezone and a country with flag URLs. |
departure.airport.municipalityName | departure.airport.city | |
departure.airport.countryCode | departure.airport.country.code | |
departure.quality[] | — | The subscription is pending until live data exists, then active. |
aircraft.reg | equipment.tailNumber | |
aircraft.model | equipment.name | equipment.iata is the type code. |
aircraft.image | — | No aircraft photos. |
airline.iata | carrier.iata | carrier.name alongside. |
lastUpdatedUtc | fetchedAt | When this snapshot was taken. |
location | — | No position data. |
| AeroDataBox status | FlightByte status.phase | Note |
|---|---|---|
Expected | scheduled | |
CheckIn, Boarding, GateClosed | boarding | One phase for gate activity. |
Departed | departed | Off the gate. |
EnRoute, Approaching | en_route | |
Arrived | landed, arrived | On the runway versus at the gate. |
Delayed | any phase with status.delayed | Delay is a flag on the phase, not a phase; delay.increased fires as it grows. |
Canceled | cancelled | A flight.reinstated event exists for the ones that come back. |
CanceledUncertain | — | Not modelled; the timeline carries the airline’s wording. |
Diverted | diverted, redirected | The new airport is under diverted. |
Unknown | — | The subscription stays pending until the flight resolves. |
The subscription call. The shape you know, with a date and your own metadata on it. The filter for which days, the deduplication and the retries stop being your code.
# AeroDataBox
POST https://api.aerodatabox.com/subscriptions/webhook/FlightByNumber/TK1848?useCredits=true
X-Api-Key: $AERODATABOX_KEY
{
"url": "https://yourapp.com/hooks/flights?token=…",
"maxDeliveryRetries": 2
}
# every TK1848 from 6 h ago to 72 h ahead,
# until you DELETE the subscription# FlightByte
POST https://api.flightbyte.dev/v1/subscriptions
x-api-key: $FLIGHTBYTE_KEY
{
"carrier": "TK",
"flightNumber": "1848",
"date": "2026-09-12",
"webhookUrl": "https://yourapp.com/hooks/flights",
"events": ["flight.departed", "flight.arrived",
"delay.increased", "arrival.gate.changed"],
"metadata": { "bookingId": "BK-1042" }
}
# this flight, this date, signed deliveries,
# ends itself with subscription.completedThe quickstart has the receiver in Node and Python; Webhooks lists all 23 change types.
Questions people ask before switching
How much does the AeroDataBox API cost?
Does AeroDataBox have a free tier?
How do I get an AeroDataBox API key?
X-Api-Key header. Through a marketplace the key is the marketplace's: X-RapidAPI-Key on RapidAPI, x-api-market-key on API.Market.Is AeroDataBox still on RapidAPI?
AeroDataBox has webhooks now. Why pay for FlightByte's?
Is AeroDataBox cheaper?
Can I use both?
Watch your first flight tonight.
Nine dollars, a hundred flights, every event, signed. The migration map above is the whole afternoon.
A free key in a minute, no card. On a paid plan? Request a key