Historical flight status API
The flight already left.
Know exactly what happened.
A historical flight status API: query any past flight by number and date and get actual block times, aircraft and arrival delay — resolved into a single, boring, dependable record.
Try it
Recent flights, loaded from the same table the endpoint reads.
Departure
MAN
MAN (MAN)
Arrival
BCN
BCN (BCN)
Aircraft
B738
Registration
—
Record
Historical
Process
Three steps, zero ambiguity
Name the flight
Enter the carrier code and number — LH400, BA249, UA935. The parser normalizes spacing and case for you.
Pick the date
Any past departure date. The query resolves against the historical archive, not the live schedule.
Read the record
Actual departure and arrival, block time, aircraft and delay — returned as one immutable record.
Built like an instrument panel
Every leg, on record
Scheduled versus actual on both ends, aircraft, registration and carrier for each historical departure and arrival.
One query shape
Flight number plus a date. No airport codes, no carrier lookup tables, no pagination games.
Sealed resolve
You send a number and a date. You get a settled record. How we produce it stays ours — not a vendor list, not a walkthrough.
Built for audits
Settled records are frozen in Postgres with delay math included, ready for claims, invoicing and reconciliation.
API
One request, one record
The console on this page is the product. Send the same query with your key and you get one resolved record back — no SDK, no vendor accounts, no pagination.
lookup.sh
# resolve a settled flight
curl -sS 'https://flight-api.dev/api/v1/flights/status\
?flightNumber=LH400&flightDate=2026-03-12'\
-H 'x-api-key: flt_…'
# → 200
{
"selected": { "status": "delayed", "delayMinutes": 74 },
"meta": { "cached": true }
}New · Webhooks
Stop polling. We push every board change.
Subscribe an https endpoint to any of the 52 airports we watch and every flight on their arrival and departure boards is POSTed to you — new legs, delays, cancellations, diversions, gate and time moves. Signed with HMAC-SHA256, retried with backoff, and never metered against your credits.
Watched boards
Boards are read every 30 minutes. The machine-readable catalogue lives at /api/v1/airports.
Popular queries
Routes people look up most
Counted from the archive — long-haul records with compensation-relevant delays lead the charts.
1,240
Carriers
9,800
Airports
10 yrs
History
Sealed
Resolver
FAQ
Fine print, upfront
How far back does the archive go?
Roughly 10 years of departures and arrivals, across 1,240 carriers and 9,800 airports. Once a flight is more than three UTC days old and ended in a disruption, we freeze the record — so the answer you query today matches what you queried last quarter.
How is a record resolved?
A closed resolver we own. One request, one record. Internals are not part of the contract and do not ship in the payload.
What counts as a delay?
We compute drift on both ends: actual versus scheduled for departure and arrival. The headline delay is the arrival drift in minutes, which is what most compensation and audit rules reference.
Can I get pushed data instead of polling?
Yes. Register an https endpoint against any of the airports we watch and every flight on their arrival and departure boards is POSTed to you as it changes — signed with HMAC-SHA256, retried with backoff, and not billed against your credits.
Is this for live tracking?
No — deliberately. Flights inside the three-day settle window are resolved live but never cached, and a flight still in the air returns a clean not_found until the record finalizes.
Ready when you are
Start with one flight.
Create an account, mint a key and resolve your first record in a single request.
Get access