Runway lights at dusk under a gradient sky
June 2, 2026

Why we compute active runways instead of just reporting wind

Ask an aviation API for wind at an airport and you'll get three numbers: direction, speed, sometimes a gust value. That's the raw measurement, and it's correct, and it's also not the question most people building on top of it actually have.

The question is usually: which runway is in use right now? A flight tracker wants to draw the right approach path. A dispatcher's tool wants to flag a tailwind departure before it becomes a problem. A training app wants to quiz a student on runway selection against real, current conditions. None of those are served by a raw wind report — they're served by an answer.

So /v1/airports/{icao_code}/runways/active computes one.

The method

Every runway at an airport has a true heading — 28L points at roughly 284°, its reciprocal 10R at roughly 104°. Given current wind direction and speed, we compare the wind vector against every runway heading on file and pick the runway (or runway pair, for airports that use them independently for arrivals and departures) whose heading is closest to a headwind.

That comparison alone isn't enough to be useful, though, which is why the response isn't just "runway 28L." It's:

{
  "ident": "28L",
  "is_arrival": true,
  "is_departure": true,
  "confidence": 0.94
}

Three things matter here beyond the runway identifier itself:

is_arrival / is_departure are separate flags. Busy airports often run different runways for arrivals and departures at the same time — reporting a single "active runway" would be actively wrong for one of those two use cases half the time.

confidence is not decoration. Runway selection isn't always a clean call. Calm wind, a runway configuration change in progress, or a crosswind that's genuinely ambiguous between two usable runways all lower the confidence score. A dashboard showing a big obvious "28L" and a debugging tool deciding whether to trust that number for an automated action have different tolerances for ambiguity — the score lets you set your own threshold instead of us silently picking one for you.

Why this is worth building

The value is in not making every developer who needs "which runway" re-derive it from "what's the wind" themselves, badly, once per project.

That's the shape of most of what we build: take data that's technically public but operationally annoying to turn into an answer, and return the answer.