The Moment
At some point, I wanted to represent flights more meaningfully within the product. Not just as simple entries, but in a way that reflected the journey itself — timings, duration, and enough context to make it feel real. It seemed like a straightforward next step. After all, flight data is widely available, and there are many APIs that provide it. But once I started looking into it more seriously, it became clear that this was not a simple plug-and-play decision.
The Tension
On the surface, there were many options. Each one appeared capable of solving the problem. But as I went deeper, the trade-offs became more apparent. Some were powerful, but came with complexity and cost. Others were easier to use, but limited in flexibility. A few seemed like a good balance initially, but introduced constraints that would shape how the product could evolve later. What made it challenging was not the lack of options, but the absence of a clear right choice.
What I Did and Changed
I mapped out the options in a simple way — not from a technical perspective, but from a practical one. What did each option actually enable? What did it complicate? And most importantly, what would it mean for the product experience? The more I looked at it, the clearer it became that the more powerful the API, the more complexity it introduced. The simpler the API, the less control or reliability it provided. There was no perfect option — only trade-offs. That led me to change my approach. Instead of asking which API should I integrate, I started asking what the user actually needs to feel like this is a real journey.
Flight API Evaluation
| API / Option | Strength | Trade-off | Summary |
|---|---|---|---|
| AeroDataBox | Rich flight data with detailed aviation information | Pricing scales quickly, more suited for aviation-focused use cases | Strong capability, but more than what was needed for a simple travel experience |
| Amadeus | Comprehensive ecosystem across flights, hotels, and pricing | Requires onboarding, quotas, and added setup complexity | Enterprise-grade, but heavy for a solo build |
| Skyscanner | Strong for route discovery and pricing insights | Limited flexibility in how data is structured and presented | Useful for search, less suited for a customised product flow |
| Aviationstack | Simple and easy to get started with | Data depth and consistency can vary | Good for prototyping, less reliable for richer use cases |
| FlightAware | Strong real-time tracking capabilities | Focused more on live tracking than planning context | Valuable in specific scenarios, but not aligned to this use case |
The Insight
The best solution is not the most complete one. It is the one that aligns with the experience you are trying to create.
Broad Reflection
This decision had less to do with technology, and more to do with judgement. Sometimes, the better decision is to step back and simplify. To build just enough for the experience to work well, and leave room to evolve later. In this case, not choosing the most powerful option turned out to be the more appropriate choice.